View
216
Download
0
Category
Preview:
Citation preview
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
1
Introdução ao Processamento e Síntese de imagens - Preenchimento de Polígonos
Júlio Kiyoshi Hasegawa Fontes:
Rogers, D. F. – Procedural Elements for Computer Graphics Traina, A. J. M. & Oliveira , M. C. F. (2004)
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
2
Representação de Áreas - Preenchimento de Polígonos É um processo de coloração do interior de uma dada região. Tais regiões ou
áreas podem ser descritas de duas maneiras:
•Pixel – Descrição da tonalidade dos pixels em termos dos pixels fronteira que
a delimitam. Geralmente por preenchimento com semente - “seed fill”.
o“SEED FILL” - preenche um polígono utilizando-se de um pixel inicial
(semente),
•Geométrico - Descrição dos objetos (contorno), tais como segmentos de
reta, polígonos, circunferências, etc. Geralmente utiliza a conversão por
varredura - “scan conversion”
o“SCAN CONVERSION” - procura determinar, por linha (scan line), se um
ponto (pixel) está ou não dentro do contorno definido pelo polígono.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
3
A tarefa de preencher um polígono pode ser dividida em duas etapas:
1.Decidir qual pixel que será pintado para preencher o polígono;
2.Decidir o valor (cor) do pixel a ser pintado.
Alguns Problemas: - muitas operações, o mais simples dos algoritmos deve percorrer todos os pixels; - os contornos das curvas devem ser representados por segmentos de retas (discretização);
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
4
Otimizações possíveis:
- usando "bounding box" (caixa limitante), que é o menor retângulo que
contém o polígono descrito, assim, somente os pontos dentro do
"bounding box" são verificados.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
5
Polígonos convertidos por varredura
Coerência espacial: todos os pixels dentro do polígono têm as mesmas características.
Coerência "Scan line": numa imagem raster pixels adjacentes sobre uma linha (scan line) têm as mesmas características.
A característica muda quando a “scan line” intercepta uma aresta do polígono.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
6
"Scan line" 2 intercepta o polígono em x = 1 e x = 8 dividindo-a em três regiões:
x < 1 - pixel fora do polígono; 1 ≤ x ≤ 8 - pixel dentro do polígono; x > 8 - pixel fora do polígono.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
7
"Scan line" 4 é dividida em cinco regiões:
x < 1 - pixel fora do polígono; 1 ≤ x < ≤ 4 - pixel dentro do polígono; 4 < x < 6 - pixel fora do polígono; 6 ≤ x ≤ 8 - pixel dentro do polígono; x > 8 - pixel fora do polígono.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
8
Procedimento adotado para preencher uma "scan line"
•do início da "scan line" até a primeira interseção: ativar com a cor do fundo.
•para o par de pixels da interseção: ativar (pintar) todos os pixels com a cor do polígono.
•entre os pares de interseção: ativar (pintar) todos os pixels com a cor do fundo.
•da última interseção até o fim da "scan line": ativar com a cor do fundo.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
9
Definição exata do pixel Ex: definido um retângulo com as seguintes coordenadas dos cantos: (1,1), (5,1), (5,4), (1,4) - representando (X, Y) / Área = 4x3 = 12 têm-se os seguintes intervalos em y: 1 ≤ y ≤ 4; resultando nas seguintes "scan lines" 1, 2, 3 e 4.
para cada "scan line" ativo os seguintes pixels:
x<1 - pixel fora (cor do fundo) x≤1 - pixel fora (cor do fundo)
1≤x≤5 - pixel dentro (cor do polígono) 1<x<5 - pixel dentro (cor do polígono) x>5 - pixel fora (cor do fundo) x≥5 - pixel fora (cor do fundo) Área = 5 x 4 = 20 Área = 3 x 4 = 12
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
10
Exercício 1: Pintar o retângulo considerando como origem o canto inferior
esquerdo, utilizando as técnicas descritas:
5
4
3
2
1
0
0 1 2 3 4 5
- Analisar o resultado - deve resultar em 20 pixels ativos
"scan line" 1 a 4 têm interseções com a aresta do polígono em 1 e 5.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
11
Exercício 2: Realizar o mesmo exercício considerando o centro de pixel
como origem - somando 0,5 unidade nas coordenadas dos pixels.
5
4
3
2
1
0
0 1 2 3 4 5
- têm-se os seguintes intervalos: 1 ≤ y ≤ 4,
- resultando nas seguintes:
"scan line" 1 + 0.5 = 1.5
"scan line" 2 + 0.5 = 2.5
"scan line" 3 + 0.5 = 3.5
"scan line" 4 + 0.5 = 4.5 - fora dos limites das "scan lines"
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
12
Ativando os seguintes pixels por "scan lines"
x < 1 - pixel fora (cor do fundo);
1 ≤ x ≤ 5 - pixel dentro (cor do polígono);
x > 5 - pixel fora (cor do fundo)
como a "scan line" inicia-se com o pixel 0.5 e finaliza com o pixel 5.5, tem-se a
seguinte situação:
pixel 0.5 - fundo;
pixel 1.5 - cor polígono;
pixel 2.5 - cor polígono;
pixel 3.5 - cor polígono;
pixel 4.5 - cor polígono;
pixel 5.5 - cor fundo; fora do limite definido como polígono (5).
As arestas horizontais são negligenciadas, pois elas são preenchidas
quando do preenchimento do polígono.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
13
Definição “exata” de um ponto na imagem
0 1 2 3 4 5 6 7 8 9
10 posições
Encontrar a posição central 52
10
2==⇒= meio
Colunameio
| |
0 1 2 3 4 5 6 7 8 9
Fazendo 5,42
9
2
1==⇒
−= meioColuna
meio
| |
0 1 2 3 4 5 6 7 8 9
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
14
Problemas quando a "scan line" intercepta o vértice do polígono.
Caso A: "Scan line" y = 3.5 - intercepta o polígono na coluna 2, 2 e 8, resultando
em 3 interseções:
•Algoritmo: têm-se dois pares de interseções: 2 ≤ x ≤ 2 e 8 ≤ x ≤ último pixel.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
15
•usando o critério de preenchimento analisado tem-se para "scan-line" 3:
ox < 2 - pixels 0 e 1 cor do fundo;
o2 ≤ x ≤ 2 - pixel 2 cor do polígono;
o2 < x < 8 - pixels 3, 4, 5, 6 e 7 cor do fundo;
o8 ≤ x ≤ fim - pixels 8 e 9 cor do polígono.
Obs: todos os pixels à direita do pixel 2 da “scan line” são pintados
- solução: conta-se somente uma interseção no vértice do polígono na "scan
line".
•resultando em:
ox < 2 - pixels 0 e 1 cor do fundo;
o2 ≤ x ≤ 8 - pixel 2 a 8 na cor do polígono;
ox > 8 - pixel 9 na cor do fundo.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
16
Caso B: "Scan line" y = 1.5 - no caso de contar somente uma interseção, fica:
•x < 5 - pixels com a cor do fundo;
•5 ≤ x ≤ fim - pixels com a cor do polígono;
Há problemas ... Neste caso consideramos duas interseções na "scan line".
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
17
Solução Geral: •Encontrar todas as interseções válidas da scan line com todas as arestas dos
polígonos
oConsideram-se duas interseções nos vértices de máxima ou mínima dos
polígonos.
oNos outros vértices considera-se somente uma interseção.
•para o par de pixels da interseção: ativar (pintar) com a cor do polígono todos
os pixels.
•entre os pares de interseções: ativar (pintar) com a cor do fundo todos os
pixels.
•do início da "scan line" até a primeira interseção: ativar com a cor do fundo.
•da última interseção até o fim da "scan line": ativar com a cor do fundo.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
18
Algoritmo de preenchimento de arestas no espaço imagem
- problemas nos algoritmos geométricos: grande volume de processamento na
etapa de ordenação de várias listas.
- Procedimento:
- na interseção da scan line com a aresta do polígono (PI, PJ), complementa
todos os pixels cujo ponto médio estão a direita de (PI, PJ):
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
19
- não ativa pixels (5,3), (6,4), (7,5)
- este procedimento ativa o pixels se o polígono está à esquerda do centro do
pixel.
- desvantagem: cada pixel pode ser manipulado várias vezes.
- Manipulações podem ser minimizadas utilizando-se uma barreira (fence)
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
20
Algoritmo de preenchimento de arestas no espaço imagem com barreira:
P/ cada scan-line que intercepta uma aresta do polígono:
- se a interseção está a direita da barreira, complementar todos os pixels cujo
centro está a esquerda ou sobre a interseção da scan line/aresta e a direita
da barreira.
- se a interseção está a esquerda da barreira, complementar todos os pixels
cujo centro está a direita da interseção da scan line/aresta e a esquerda da
barreira.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
22
8-conectada: pesquisa com 8
movimentos
Algoritmo de crescimento de regiões
- Assume-se que pelo menos um pixel no interior da região é conhecida.
- o algoritmo encontra e pinta ou preenche todos os pixels do interior da região.
A caracterização de uma região definida por um contorno pode ser 4-conectada
ou 8-conectada.
4-conectada: toda a região pode
ser pesquisada por 4 movimentos
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
23
8-conectada preenche uma 4-conectada
com 8-conectada detecta um objeto
com 4-conectada detecta dois objetos.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
24
5
4 Borba
3
2 Semente (seed)
1
0
0 1 2 3 4 5
Preencher – Prioridade de movimento (4 conc.), ex: baixo, esquerda, cima e
direita ou sul, oeste, norte, leste.
8 conectada = sul, sudoeste, oeste, noroeste, norte, nordeste, leste, sudeste.
Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa
25
Preenchimento de regiões com pixel base (seed fill)
Desenvolvido usando uma pilha: vetor em que os valores podem ser
seqüencialmente manipulados.
Utilizando a estrutura de programação (ex: linguagem c)
•Pilha - LIFO (Last-In-First-Out) – (último a entrar 1o a sair).
•Fila - FIFO (First-In First-Out) - (1º a entrar 1o a sair – ex: fila do caixa).
Procedimento:
•colocar o pixel semente sobre a pilha
•enquanto a pilha não estiver vazia:
• remover um pixel da pilha – define o sentido de caminhamento
overificar se é pixel de contorno ou se já foi ativado, nestes dois casos
ignorá-los;
ocaso não seja nenhum dos dois casos ativá-lo;
Recommended