introdução ao processamento e síntese de imagens ... · = meio coluna meio | | ... 8 conectada =...

26
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)

Upload: trandien

Post on 24-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

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

21

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;

Introdução ao Processamento e Síntese de imagens. Prof. Júlio Kiyoshi Hasegawa

26

ofazer os deslocamentos (4 ou 8 conectado), colocando-os na pilha.

• Voltar para a pilha