Você está na página 1de 13

Rasterização,

Anti-aliasing e Preenchimento
Alex F. V. Machado
alexcataguases@hotmail.com
Rasterização: Revisão
1. O que é rasterização?
2. Que métricas podemos usar para definir se um algoritmo de
rasterização de seguimentos de reta é melhor do que um outro?
3. Quais foram os algorimos de rasterização de seguimentos de retas
estudados?
4. Aplique o algoritmo de Bresenham para unir os pontos das
seguintes imagens, posteriormente defina sua forma de aplicação.
Amostragem, Aliasing, e Anti-aliasing

 A linha, que no universo físico é contínua, é amostrada em uma


matriz finita 2D de pixels.
 Tal discretização pode causar distorções visuais como
cisalhamento ou efeito de escada.

 Essas distorções são chamadas de aliasing.


 Para reduzir o problema de aliasing, usa-se uma técnica
chamada anti-aliasing.
 A técnica consiste em uma superamostragem (uma vez que o
aliasing é causada por uma subamostragem)
SUPERAMOSTRAGEM

 Superamostragem = Amostrar um objeto numa resolução maior do


que será reconstruído.

dividir os pixels em sub-


pixels (i.e. 9), aplicar o
algoritmo de Bresenham
nesses sub-pixels

contar o número de
sub-pixels “acesos”
por pixel

O pixel será aceso com 1 3 3


intensidade proporcional
ao número de sub-pixels 3 3 2
acesos.
Exemplo de Anti-aliasing em Linhas

 Observe que quando a cor de fundo não é preto, o anti-aliasing


deve fazer uma composição da intensidade com a cor de fundo.

 Anti-aliasing é necessário não só para linhas, mas também para


polígonos e texturas (o que já é mais complicado)
Rasterização de Círculos
• Mesma idéia de avaliar
incrementalmente uma função E
que classifica o ponto médio entre
um pixel e outro com relação a V0 V1
uma função implícita C(x,y) = 0
SE
V1’
• Apenas um octante precisa ser
avaliado, os demais são
simétricos
– Para cada pixel computado, oito
y
são pintados
• Derivação um pouco mais difícil
que a da reta
• Outras cônicas podem também
ser rasterizadas de forma
semelhante x
Preenchimento de regiões
• Fill methods: 2 algoritmos
– Boundary Fill
– Flood Fill (para bordas multicoloridas)
– Atuam ao nível do pixel
– Interessantes para aplicações do tipo painting
• Scanline-Fill Approaches
– Atuam no nível dos polígonos
– Melhor performance
Fill Methods
• Algoritmos não tratam objetos isoladamente
• Dá-se um ponto interior a figura e prossegue-se até a
borda
• Similar a função existente em aplicativos do tipo
paintbrush
• Denominados seed-fill (preenchimento a partir da
semente)
• Dado um pixel qualquer, quais são seus vizinhos?
– 4-connected
– 8-connected
Fill Methods
• Inicia com um ponto dentro de uma região
• Pinta o interior até a próxima aresta
• Deve ser definida a cor da aresta
• Pinta regiões 4-connected ou 8-connected
• Regiões 4-connected são mais rápidas, mas
podem apresentar problemas
Fill Methods
• Algoritmo recursivo
– Preenche vizinhos da semente que atendem
ao critério
– Aplica o algoritmo recursivamente tomando
esses vizinhos como sementes
– Termina quando nenhum vizinho atende o
critério
Fill Methods
Algoritmo de Preenchimento

• Pseudo-código:
Procedure FloodFill (x, y, cor, novaCor)
Se pixel (x, y) = cor então
pixel (x, y) ← novaCor
FloodFill (x + 1, y, cor , novaCor)
FloodFill (x, y + 1, cor , novaCor)
FloodFill (x - 1, y, cor , novaCor)
FloodFill (x, y - 1, cor , novaCor)
• Uso abusivo de recursão pode ser contornado
preenchendo intervalos horizontais iterativamente
Algoritmos scanline-fill
(Rasterização de Polígonos)

• Operação fundamental em computação


gráfica
• Polígono é dado por uma lista de vértices
– Último vértice = primeiro vértice
• Usar conceito de paridade
Algoritmos scanline-fill
(Rasterização de Polígonos)
y
• Algoritmo clássico usa
técnica de varredura ymax

– Arestas são ordenadas b c


a
• Chave primária: y mínimo
• Chave secundária: x mín. d
• Exemplo: (e,d,a,b,c)
e
– Linha de varredura ymin
perpendicular ao eixo y
percorre o polígono x
(desde ymin até ymax)
– Intervalos horizontais
entre pares de arestas
são preenchidos