24
Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Embed Size (px)

Citation preview

Page 1: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Computação Gráfica - Amostragem

Profa. Mercedes Gonzales Márquez

Page 2: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Tópicos

Conceito de Amostragem Amostragem ou Rasterização de Segmentos

Page 3: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Primitivas geométricas são contínuas; tela é discreta (pixels).

Solução: Exibir a imagem contínua ou vetorial de um polígono em uma janela de pixels precisamos transformá-la em um conjunto de amostras (i, j), onde i e j são coordenadas inteiras de cada elemento desse arranjo.

Amostragem - Problema

Page 4: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Mostrar como um computador consegue transformar a projeção de uma cena 3D em um padrão de arranjo de amostras compatível com o padrão de pixels dos dispositivos de saída. Essa transformação deve acontecer com um número mínimo possível de artefatos visuais.

Amostragem - Objetivo

Page 5: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Algoritmo DDA (Analisador do diferencial digital – digital differential analyzer) Como o nome já disse, o incremento nas coordenadas de um ponto (xk, yk) para

obter o ponto subsequente (xk+1, yk+1) é dado em função do diferencial.

Rasterização de Segmentos

Page 6: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Observe o comportamento das retas segundo sua inclinação m. Como elas são quando

(a) |m|<1 (-1<m<1)

(b) |m|>1 (-1>m>1)

Rasterização de Segmentos

Page 7: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Para |m| ≤ 1, as coordenadas x crescem mais rapidamente que as coordenadas y. Portanto, a amostragem é feita incrementando unitariamente na direção x. Com isso,

Rasterização de Segmentos

11 kk xx

myy kk 1

)1.(Form

Page 8: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Para |m| > 1, faz-se incremento unitário na direção y. Neste caso temos

Rasterização de Segmentos

mxx

yy

kk

kk

1

1

1

1

)2.(Form

Page 9: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Para |m| <= 1, // DDA line rasterizer.

void DDA(int i1, int j1, int i2, int j2) // Assume i2 > i1.{

float y = j1;

float m = float(j2 - j1)/(i2 - i1); // Assume -1 <= m <= 1.

glBegin(GL_POINTS);

for(int x = i1; x <= i2; x++) {

glVertex2i(x, round(y));

y += m;

}

glEnd();

}

Rasterização de Segmentos

Page 10: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

EXERCÎCIO:

(a) Acrescente no programa DDA.cpp o trecho de código que considere os segmentos de reta com inclinação m>1 e m<-1 (|m|>1).

(b) O que acontece quando aplicamos a mesma formulação para todos os valores de m?

Aplique a form.1 para os casos quando |m|>1 e a form.2 para os casos quando |m|<1. Relate os resultados.

Rasterização de Segmentos

Page 11: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Algoritmo Bresenham: Idéia básica: Em vez de computar o valor do próximo y em ponto flutuante, decidir se

o próximo pixel vai ter coordenadas (x + 1, y) ou (x + 1, y + 1) Decisão requer que se avalie se a linha passa acima ou abaixo do

ponto médio (x + 1, y + ½)

Rasterização de Segmentos

Page 12: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Para as retas do 1º octante (m<=1), dado um pixel (xi,yi) sobre a reta, o próximo pixel é para direita, E (xi+1, yi) ou para Direita acima, NE (xi+1, yi+1).

Rasterização de Segmentos

NE

E

M

Page 13: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

A equação da reta em termos de sua inclinação pode ser escrita como: Para determinar um método que calcule de que lado da reta está do ponto M, consideramos sua função implícita,

resultando em

onde Com isso verificamos que se :

- F(x,y) = 0, o ponto está sobre a linha

- F(x,y) > 0, o ponto está abaixo da linha

- F(x,y) < 0, o ponto está acima da linha

Rasterização de Segmentos

Bxx

yy

0...),( BxyxxyyxF0),( cbyaxyxF

Bxcexbya .,

Page 14: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Em particular para o ponto-médio M, basta calcular F(M) = F(xp + 1,yp + 1/2) e verificar o seu sinal. F(M)= a(xp + 1) + b(yp + 1/2) + c Se F(M) > 0, escolhemos o pixel NE Se F(M) < 0, escolhemos o pixel E Se F(M) = 0 pode-se escolher qualquer um deles

Façamos d=F(M)

Rasterização de Segmentos

Page 15: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Se E for escolhido, M é incrementado de 1 na direção x.

Subtraindo dold de dnew para obter a diferença incremental, tem-se dnew = dold + a.

Rasterização de Segmentos

Page 16: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Se NE for escolhido, M é incrementado de 1 em ambas as direções, x e y.

Subtraindo dold de dnew para obter a diferença incremental, tem-se dnew = dold + a + b.

Rasterização de Segmentos

Page 17: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Como o primeiro pixel corresponde ao ponto (x1,y1), pode-se calcular diretamente o valor inicial de d para escolher entre E e NE. O primeiro ponto-médio está em (x1 + 1,y1 + 1/2), assim temos:

Como F(x1, y1) está sobre a reta, temos que F(x1 , y1) = 0, daí o resultado acima.

Rasterização de Segmentos

Page 18: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Rasterização de Segmentos

Algoritmo

Page 19: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Rasterização de Segmentos

Exercícios:

(1) Implemente o algoritmo

(2) Teste para diversos segmentos pertencentes ao primeiro octante.

(3) Compare os resultados do item (2) com os resultados do algoritmo DDA.

Page 20: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

O processo de determinar quais pixels serão desenhados no preenchimento é chamado conversão de varredura (scan conversion). A scan line 4 na figura abaixo, por exemplo, pode ser dividida nas regiões x < 1 (fora do polígono), 1 <= x <= 4 (dentro do polígono), 4<x<6 (fora do polígono), 6 <= x 8 (dentro do polígono) e x > 8 (fora do polígono).

Rasterização de Polígonos

Page 21: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Detalhes sobre o algoritmo de conversão de linhas ou varredura por linha (scan line) pode ser encontrado no livro no formato eletrônico   Síntese de Imagens: Uma Introdução ao Mundo de Desenho e Pintura dos Sistemas Digitais pag.218. 

Rasterização de Polígonos

Page 22: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Um dos problemas encontrados nos processos de rasterização apresentados é a presença de bordas serrilhadas, jagged ou stair step pattern em inglês, nas imagens como mostrado na figura abaixo.

Rasterização de Polígonos

Page 23: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Como podemos atenuar tais artefatos para gera imagens visualmente mais agradáveis? A idéia se baseia em uma observação simples: quando estivermos muito afastados da tela de exibição, não distinguimos as bordas serrilhadas. Isso decorre da nossa limitada acuidade visual. O que percebemos de fato é o resultado da combinação de cores de vários pixels em torno do pixel da borda quando a imagem estiver muito distante.

Portanto, uma solução seria emular esta “combinação”, atenuando as fortes transições de luminâncias nas bordas, com uso de mais de uma amostra por pixel.

Rasterização de Polígonos

Page 24: Computação Gráfica - Amostragem Profa. Mercedes Gonzales Márquez

Efeito Anti Aliasing

Rasterização de Polígonos