Vous êtes sur la page 1sur 34

RASTERIZAO

por

Joo Manuel Brisson Lopes


Departamento de Engenharia Informtica

texto elaborado para a disciplina de

Computao Grfica Licenciatura em Engenharia Informtica e de Computadores

publicado em Abril de 2004 reeditado em Janeiro e Setembro de 2009

Este texto, elaborado no contexto da disciplina de Computao Grfica da Licenciatura em Engenharia Informtica e de Computadores do Instituto Superior Tcnico, foi originalmente concebido para fazer parte de um conjunto de textos sobre Computao Grfica, apresentando-se agora como um texto independente. Contacto do autor: brisson@ist.utl.pt

2004, 2007, 2009 J. M. Brisson Lopes & IST

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Rasterizao
1 Introduo
No andar final do pipeline de visualizao, as primitivas grficas so enviadas ao dispositivo fsico onde so afixadas, depois de realizada a transformao das suas coordenadas para as coordenadas prprias do dispositivo. A afixao das primitivas em unidades do tipo vectorial no apresenta quaisquer problemas, pelo menos no caso de primitivas simples suportadas por essas unidades. Porm, no caso tais primitivas rasterizao ou, desta operao grficas. de dispositivos grficos do tipo de quadrcula, h ainda que converter nas quadrculas dos dispositivos, em operaes denominadas de como tambm so conhecidas, converso por varrimento. O objectivo determinar quais as quadrculas que representaro as primitivas

A rasterizao de primitivas grficas uma operao que executada milhes de vezes e, portanto, faz todo o sentido que os algoritmos desenvolvidos, alm de especficos, devam ser eficientes para que o desenho das primitivas seja o mais rpido possvel. Cada tipo de primitivas diferente dos restantes e, consequentemente, os algoritmos de rasterizao so tambm diferentes. Neste captulo apresentaremos os algoritmos de rasterizao para o traado de segmentos de recta e de circunferncias e para o preenchimento de polgonos que so trs das primitivas mais frequentes. Na rasterizao, algo que contnuo como, por exemplo, um segmento de recta, convertido numa coleco de quadrculas que tem uma natureza discreta. Esta converso faz perder parte da informao existente. Isto tem como consequncia que no possvel representar um segmento de recta com a mesma densidade visual se o segmento for horizontal (ou vertical) ou apresentar um declive de 45. No entanto, as quadrculas que compem estes segmentos estaro sempre alinhadas segundo a recta que as suporta (veja-se a figura 1-1). Porm, tal no sucede a, por exemplo, um segmento de recta com declive de 1/3, tal como a figura 1-2 apresenta, surgindo uma coleco de quadrculas dispostas em vrios patamares, dando a impresso de uma escada. A este fenmeno visual devido rasterizao d-se o nome de aliasing. No final deste captulo abordaremos este problema, apresentando algoritmos de o combater, os chamados algoritmos de antialiasing1.
1

Porque os algoritmos de antialiasing podem apresentar solues dependentes das tcnicas de gerao de imagem, abordaremos este tema sempre que tal se justificar como, por exemplo, no mbito da tcnica de Ray Tracing.
DEI Instituto Superior Tcnico 1

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 1-1 Rasterizao de linhas horizontais, verticais e diagonais, de densidade visual varivel.

Figura 1-2 Quadrculas de um segmento de recta rasterizado apresentando o efeito de aliasing.

Finalmente, convm deixar aqui uma nota de natureza histrica referente s capacidades dos dispositivos de quadrcula. Quando estes dispositivos foram pela primeira vez introduzidos, no possuam a capacidade de realizar a rasterizao e esta tinha que ser realizada por software pelos controladores dos dispositivos (device drivers). Aos poucos, estas capacidades foram sendo implementadas em hardware, com o consequente aumento do desempenho grfico. Hoje em dia, praticamente todas as operaes de rasterizao so realizadas em hardware cujo desempenho extremamente elevado.

2 Rasterizao de Segmentos de Recta


A rasterizao de segmentos de recta consiste em, num dispositivo de quadrcula, dados os dois pxeis extremos de um segmento de recta, determinar que pxeis localizados entre eles devem ser seleccionados para compor visualmente o segmento. Este problema tem soluo trivial quando o segmento a traar horizontal, vertical ou diagonal (veja-se a figura 1-1), se bem que, como j referimos e a figura mostra, a densidade visual de segmentos diagonais no seja a mesma dos que so verticais ou horizontais. Fora destes casos, a determinao dos pxeis que iro constituir um dado segmento de recta coloca alguns problemas que a figura 2-1 ilustra. Se apenas fossem seleccionados os pxeis pertencentes ao segmento de recta, no caso do segmento PV da figura s seriam seleccionados os pxeis P, R, T e V, daqui resultando uma linha de fraca densidade visual. Este problema acentuar-se-ia no segmento AK, fazendo com que s fossem seleccionados os pxeis A, F e K, e, no limite, o segmento LO ficaria reduzido aos seus extremos. Por esta razo, esta regra no pode constituir uma soluo para o problema proposto. Para que a densidade visual do segmento seja o mais uniforme possvel, h ento que seleccionar o maior nmero possvel de pxeis entre os dois pxeis dos extremos de um segmento de recta, seleccionando os pxeis mais prximos do segmento. Para o caso do segmento AK, isto corresponderia a ter como possveis candidatos os pxeis B, C, D, E, G, H, I e J. A seleco de todos estes pxeis produziria no entanto uma linha cuja densidade variaria ao longo do segmento.

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 2-1 Rasterizao de segmentos de recta mostrando pxeis seleccionveis e pxeis seleccionados. A soluo para esta questo consiste em, para dois pxeis candidatos situados sobre uma mesma linha vertical de pxeis, escolher o pixel mais prximo do segmento de recta. Desta forma, os pxeis B, E, G e I seriam os escolhidos, tal como a figura 2-1 apresenta. Consideremos agora o caso do segmento PV. Excluindo os pxeis pelos quais o segmento passa (R e T), em todos os outros casos o segmento passa exactamente pelo ponto mdio entre dois pxeis candidatos. normal convencionar que a escolha recaia ento sobre o pixel localizado imediatamente abaixo do segmento, pelo que os pxeis a serem seleccionados sero os pxeis O, S e U. Para tratar o segmento LO, em vez de escolher dois pxeis candidatos localizados sobre uma linha vertical de pxeis, teremos que escolher agora entre dois pxeis que se localizem sobre uma linha horizontal de pxeis. Isto equivale a realizar uma transformao de coordenadas trocando os dois eixos, seleccionar os pxeis que faro parte da representao do segmento de recta e voltar a trocar os eixos, numa transformao inversa da transformao precedente. Esta soluo para o caso do segmento LO, que apresenta um declive de mdulo superior a 1, permite tratar todos os casos de uma nica forma, isto , fazendo a seleco de pxeis somente sobre linhas verticais de pxeis. Assim, para estes casos, a seleco de pxeis ser realizada incrementando a coordenada horizontal de uma em uma unidade, mas ser precedida de uma transformao que proceder troca de coordenadas (eixos) e seguida por uma nova transformao de troca de eixos. Este tema ser retomado mais adiante. Esta regra ser aplicada na apresentao dos algoritmos para seleco dos pxeis fazendo parte da representao de segmentos de recta em dispositivos de quadrcula e em que apresentaremos os seguintes trs algoritmos: Algoritmo imediato Algoritmo incremental bsico Algoritmo de Bresenham

Estes algoritmos diferem na preciso dos resultados e na velocidade de execuo, ou seja, na carga computacional envolvida. Todos eles se destinam a seleccionar quais os pontos que compem a representao de um segmento de recta num dispositivo de
DEI Instituto Superior Tcnico 3

J. M. Brisson Lopes

Computao Grfica: Rasterizao

quadrcula quando os seus extremos se localizam nos pxeis P1 e P2 de coordenadas (x1, y1) e (x2, y2), respectivamente.

2.1

Algoritmo Imediato

O algoritmo imediato para a rasterizao de segmentos de recta parte da equao da recta que suporta o segmento, cuja expresso (2-1) Para um segmento de recta cujos extremos cujas coordenadas so (x1, y1) e (x2, y2), imediato que os coeficientes m e b da equao (2-1) devero ser (2-2)

Fazendo ento variar x entre x1 e x2 por incrementos de uma unidade, o valor de y calculado ser um valor real que deve ser arredondado para o inteiro mais prximo, o que pode ser realizado atravs de uma das seguintes expresses equivalentes

y = Round ( m x + b) y = Floor( 0,5 + m x + b)

(2-3)

em que Round a funo de arredondamento matemtico e Floor a funo de truncatura. O custo computacional do clculo do valor de y para cada valor de x corresponde realizao de trs operaes de vrgula flutuante (uma multiplicao e duas adies) e operao de truncatura de um valor real para valor inteiro.

2.2

Algoritmo Incremental Bsico

Poderemos melhorar o desempenho da rasterizao de segmentos de recta se diminuirmos o nmero de operaes matemticas envolvidas. Para tal consideremos o valor de y para dois valores consecutivos de x que diferem entre si de uma unidade, ou seja, (2-4) O valor de y para xi+1, tendo em conta (2-4),

(2-5)

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Isto significa que, para calcular o valor de y para um novo pixel cujo valor da coordenada x dista uma unidade do valor anterior, basta adicionar o declive da recta (m) ao anterior valor de y. Novamente, ainda necessrio proceder ao arredondamento matemtico do valor calculado. Em relao ao algoritmo imediato, este algoritmo dispensa a realizao da multiplicao efectuada por aquele e, portanto o nmero de operaes de vrgula flutuante a realizar reduz-se agora a duas adies e uma truncatura. Como a multiplicao uma operao mais cara que uma adio em termos computacionais, de esperar um aumento significativo do desempenho da rasterizao de segmentos de recta quando o algoritmo incremental bsico empregue. Este algoritmo apresenta porm um problema de acumulao de erros devido ao nmero limitado de algarismos significativos com que um valor real pode ser representado em memria, pois o valor representado pode no ser exactamente o valor do declive. Assim, a realizao de sucessivas adies ir aumentar o erro com que o valor de y calculado, o que no de forma alguma desejvel.

2.3

Algoritmo de Bresenham

Os algoritmos anteriores apresentam vrios inconvenientes, tanto quanto a preciso, como no referente ao tipo de aritmtica empregue, o que muito importante para o desempenho da rasterizao. Com efeito, uma operao entre operandos inteiros mais rpida do que a correspondente operao entre operandos em vrgula flutuante. O algoritmo de Bresenham realiza a rasterizao de segmentos de recta empregando apenas operaes de aritmtica de inteiros e, portanto, permite um maior desempenho. O algoritmo baseia-se no critrio do ponto mdio. Consideremos a figura 2-2 onde est representada uma linha recta que intersecta duas colunas de pxeis. Para cada coluna de pxeis existem dois pxeis que se encontram mais prximos da recta, um abaixo e outro acima desta. A escolha do pixel a seleccionar poderia ser realizada determinando a distncia da interseco da recta com a coluna de pxeis a cada um dos dois pxeis, escolhendo-se ento o pixel mais prximo da interseco. No entanto, esta determinao acarretaria uma carga computacional elevada. Porm, se atentarmos na localizao do ponto mdio entre os dois pxeis em relao recta, teremos uma forma simples de determinar qual dos pxeis deve ser seleccionado. Como a figura 2-2 mostra, se o ponto mdio se encontrar abaixo da recta (M2), deve ser seleccionado o pixel imediatamente acima desta. Caso contrrio (ponto M1), o pixel a seleccionar dever ser o pixel imediatamente abaixo desta. Para determinar a posio do ponto mdio em relao recta, consideremos a forma implcita da equao de uma recta, que (2-6)

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 2-2 Posicionamento do ponto mdio em relao linha a traar na seleco de pxeis.

Figura 2-3 Sinal da funo implcita da recta em funo da posio de um ponto relativamente recta.

Figura 2-4 Localizao do ponto mdio consoante o pixel anteriormente seleccionado (E esquerda e NE direita). Para um dado ponto de um plano, esta funo tem valor nulo se o ponto pertencer recta. O valor da funo ser negativo se o ponto se encontrar acima da recta e positivo se o ponto se encontrar abaixo desta (veja-se a figura 2-3). Isto significa que, se a expresso (2-6) assumir um valor positivo no ponto mdio, este ponto encontra-se abaixo da recta e deve ser seleccionado o pixel imediatamente acima desta. Caso contrrio, o pixel a seleccionar ser o pixel imediatamente abaixo. Para o caso especial da funo assumir o valor nulo poder-se-ia escolher qualquer um dos dois pxeis. Neste caso, prtica comum escolher o pixel imediatamente abaixo, tal como j foi referido. Consideremos agora a figura 2-4 onde se apresentam dois casos distintos. Em ambos os casos encontram-se j seleccionados dois pxeis para os quais a coordenada x assume os valores xp e xp+1 e pretende-se determinar qual o prximo pixel a seleccionar quando a coordenada x assumir o valor xp+2 .

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Para o primeiro caso ( esquerda na figura), a seleco realiza-se entre os pxeis E e NE2. O valor da funo implcita da recta para o ponto mdio entre estes dois pxeis

F ( x p + 2, y p + 1/2) = a ( x p + 2) + b ( y p + 1/2) + c = a ( x p + 1) + a + b ( y p + 1/2) + c = a ( x p + 1) + b ( y p + 1/2) + c + a = F ( x p + 1, y p + 1/2) + a


ou seja, o valor da funo implcita no ponto mdio igual ao valor do coeficiente a adicionado ao valor da funo implcita calculado quando se pretendeu determinar qual o pixel a seleccionar para x=xp+1. Para o caso direita na figura 2-4, o ponto mdio encontra-se em (xp+2, yp+3/2). A funo implcita da recta no ponto mdio assume agora o valor (2-7)

F ( x p + 2, y p + 3/2) = a ( x p + 2) + b ( y p + 3/2) + c = a ( x p + 1) + a + b ( y p + 1/2) + b + c = a ( x p + 1) + b ( y p + 1/2) + c + a + b = F ( x p + 1, y p + 1/2) + a + b


Neste caso, necessrio adicionar os valores dos coeficientes a e b da equao implcita da recta ao valor que esta equao assumiu no ponto mdio quando se determinou o pixel a seleccionar para x=xp+1. Dispomos assim de um algoritmo recursivo. Resta agora determinar os valores dos coeficientes a e b e o valor inicial da funo para que o algoritmo esteja completo. O segmento de recta tem como extremos os pxeis de coordenadas (x1, y1) e (x2, y2) onde o valor da funo implcita nulo. Definindo agora (2-9) (2-8)

a forma explcita da equao da recta em funo destas diferenas ser (2-10)

Multiplicando ento ambos os membros por x e agrupando os termos, obteremos a forma implcita da equao da recta que suporta o segmento em funo das diferenas x e y (2-11)
2

Por analogia com os pontos cardeais.


7

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Comparando as expresses (2-6) e (2-11), imediato que os coeficientes a, b e c da forma implcita da equao da recta que suporta o segmento sero

(2-12)

No pixel inicial do segmento, de coordenadas (x1, y1), a funo implcita tem o valor nulo pois o pixel encontra-se sobre a recta. Para o pixel seguinte, o ponto mdio tem como coordenadas (x1+1, y1+1/2), e h que determinar o valor da funo implcita nesse ponto, que
F ( x1 + 1, y1 + 1/2) = a ( x1 + 1) + b ( y1 + 1/2) + c = ( a x1 + b y1 + c ) + a + b /2 = F ( x1, y1 ) + a + b /2 = y x /2

(2-13)

Como os valores de x e y so inteiros, todo o algoritmo poderia ser implementado em aritmtica de inteiros se x fosse sempre par, o que no pode ser assegurado. Porm, dado que a funo implcita da recta uma funo homognea, poderemos reescrev-la da seguinte forma (2-14) e, assim, o seu valor no ponto mdio para seleccionar o segundo pixel passar a ser (2-15) que ser sempre inteiro e as expresses de recursividade sero agora

F ( x p + 2, y p + 1/2) = F ( x p + 1, y p + 1/2) + 2 y F ( x p + 2, y p + 3/2) = F ( x p + 1, y p + 1/2) + 2 (y x )

(2-16)

para avanos nos pxeis anteriores para E e NE, respectivamente, possibilitando assim a implementao do algoritmo em aritmtica de inteiros.

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

O algoritmo de Bresenham pode ento ser apresentado como se segue 1. Calcular

2. Inicializar x = x1 e y = y1 e marcar o pixel com estas coordenadas. 3. Repetir os passos seguintes enquanto x < x2 4. Se d 0, incrementar d de incE. Caso contrrio, incrementar d de incNE e incrementar y de uma unidade. 5. Incrementar x de uma unidade e marcar o pixel com as coordenadas x e y.

2.3.1

Exemplo

Aplicando os algoritmos incremental e de Bresenham ao segmento de recta unindo os pxeis (5, 8) e (9, 11), obtemos os pxeis que a tabela 2-1 apresenta. Deve notar-se que, para x=7, os dois algoritmos diferem nos resultados obtidos pois o arredondamento matemtico do algoritmo incremental arredonda o valor 9,5 para 10, seleccionando o pixel (7, 10), enquanto o algoritmo de Bresenham selecciona o pixel (7, 9)3. xi Incremental
m=(11-8)/(9-5)=0,75 dx=9-5=4 d=23-4=2 incE=23=6 incNE=2(3-4)=-2

Bresenham
dy=11-8=3

yi=yi-1+m round(yi) 5 6 7 8 9 8,75 9,5 10,25 11,0 8 9 10 10 11

di 0 2 0 6 4

avano NE E NE NE

di+1 2 0 6 4 -

yi 8 9 9 10 11

Tabela 2-1 Comparao entre o algoritmo incremental e o algoritmo de Bresenham no traado do segmento de recta entre os pxeis (5, 8) e (9, 11).

Se o incremento 0,5 no fosse representado exactamente, o que no o caso, haveria coincidncia entre todos os pixis seleccionados pelos dois algoritmos.
DEI Instituto Superior Tcnico 9

J. M. Brisson Lopes

Computao Grfica: Rasterizao

2.4

Reduo ao Primeiro Octante

O algoritmo de Bresenham, tal como foi apresentado, pressupe que o declive dos segmentos de recta a rasterizar esteja compreendido no intervalo [0; 1] e que o algoritmo aplicado por valores crescentes da coordenada x distando de uma unidade. Isto significa que o algoritmo de Bresenham apenas aplicvel a segmentos de recta existentes no primeiro octante. Para segmentos de recta que no existam no primeiro octante, h que transform-los para o primeiro octante antes de aplicar o algoritmo de Bresenham e que aplicar a transformao inversa aos pxeis que o algoritmo calcule. A transformao a realizar antes de aplicar o algoritmo consiste nos seguintes passos que devem ser efectuados pela seguinte ordem: Transformar segmentos de recta de declive negativo em segmentos de recta de declive positivo, substituindo os valores da coordenada y de cada extremo do segmento pelos respectivos valores simtricos. Transformar segmentos de recta de declive superior a 1 em segmentos de recta com declive inferior a 1, trocando as coordenadas x e y em cada um dos extremos do segmento. Trocar a ordem dos extremos do segmento de recta se o valor da coordenada x do primeiro extremo for superior ao valor da mesma coordenada do segundo extremo.

A transformao inversa, a ser aplicada a cada um dos pxeis calculados pelo algoritmo, deve inverter a transformao segundo uma ordem dos passos inversa da anterior, isto : Se o declive do segmento de recta for superior a 1, trocar as coordenadas x e y de cada pixel calculado. Se o declive do segmento de recta for negativo, substituir a valor da coordenada y do pixel calculado pelo seu valor simtrico.

Note-se que, como indiferente traar um segmento de recta do primeiro para o segundo extremo ou do segundo para o primeiro, uma eventual troca da ordem dos extremos no necessita de ser invertida na transformao inversa. O algoritmo para a transformao de um segmento de recta para o primeiro octante antes de aplicar o algoritmo de Bresenham pode agora ser apresentado como segue 1. Definir dois valores lgicos, declive e simetrico, e inicializ-los como falsos. 2. Calcular os valores de dx e dy conforme definido pelo algoritmo de Bresenham 3. Testar o produto dxdy e, se for negativo, substituir o valor de y em cada um dos extremos e o valor de dy pelos respectivos valores simtricos, e atribuir a simetrico o valor verdadeiro 4. Testar se o valor absoluto de dx menor que o valor absoluto de dy e, caso afirmativo, trocar os valores das coordenadas x e y de cada extremo, trocar os valores de dx e dy, e atribuir a declive o valor verdadeiro 5. Verificar se o valor da coordenada x do primeiro extremo superior ao valor da mesma coordenada do segundo extremo e, em caso afirmativo, trocar os dois extremos e substituir os valores de dx e dy pelos respectivos valores simtricos.

10

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Para cada pixel calculado pelo algoritmo de Bresenham, a transformao inversa para o octante original segue os seguintes passos 1. Se declive for verdadeiro, tocar as coordenadas x e y do pixel calculado 2. Se simetrico for verdadeiro, substituir o valor da coordenada y do pixel calculado pelo seu valor simtrico A tabela 2-2 exemplifica os passos da transformao para o primeiro octante de um segmento de recta cujos pontos extremos so P1 e P2, por esta ordem, e cujas coordenadas so (11, 5) e (8, 9), respectivamente. Deixa-se como exerccio calcular os pxeis resultantes da rasterizao do segmento de recta e a verificao da correco dos resultados obtidos. Teste (dxdy)<0 |dx|<|dy| x1>x2 P1 (11,5) (11,-5) (-5,11) (-9,8) P2 (8,9) (8,-9) (-9,8) (-5,11) dx -3 -3 -4 4 dy 4 -4 -3 3 simetrico falso verdadeiro verdadeiro verdadeiro declive falso falso verdadeiro verdadeiro

Tabela 2-2 Transformao para o primeiro octante de um segmento de recta com extremos nos pontos (11,5) e (8,9) antes da aplicao do algoritmo de Bresenham.

3 Rasterizao de Circunferncias
A rasterizao de circunferncias emprega a propriedade de simetria que as circunferncias apresentam. Observando a figura 3-1, que apresenta uma circunferncia de raio R centrada na origem, verificamos que, uma vez calculado o pixel A do segundo octante, os pxeis B a H dos outros octantes encontram-se imediatamente determinados por simetria. Se (x, y) forem as coordenadas do pixel A, e como a circunferncia se encontra centrada na origem, as coordenadas dos pxeis a seleccionar em todos os octantes sero os que a tabela 3-1 apresenta. Se o centro da circunferncia se localizar num ponto (xc, yc) que no a origem, bastar calcular os pxeis da circunferncia como se ela estivesse centrada na origem e adicionar s suas coordenadas as coordenadas do centro da circunferncia. Para evitar a duplicao de pxeis que ocorrer quando se representarem os pxeis dos extremos dos octantes, como o pixel (0, R), dever-se- seleccionar apenas quatro pxeis em vez de oito o que, para este caso, corresponde a seleccionar os pxeis localizados em (0, R), (0, -R), (R, 0) e (-R, 0).

DEI Instituto Superior Tcnico

11

J. M. Brisson Lopes

Computao Grfica: Rasterizao

A B C D E F G H

x, y y, x y, -x x, -y -x, -y -y, -x -y, x -x, y Figura 3-1 Rasterizao de uma circunferncia empregando a simetria entre octantes (os pxeis B a H so imagens do pixel A do segundo octante).

Tabela 3-1 Rasterizao de uma circunferncia: relao entre as coordenadas dos pxeis gerados por simetria a partir de um pixel calculado no segundo octante.

A determinao dos pxeis do segundo octante de uma circunferncia recorre ao critrio do ponto mdio. Uma circunferncia de raio R centrada na origem do espao o lugar geomtrico dos pxeis tais que (3-1) seja igual a zero. Esta funo positiva para pontos exteriores circunferncia e negativa para os pontos localizados no seu interior.

Figura 3-2 Posies dos pontos mdios necessrios rasterizao de uma circunferncia.

12

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Consideremos agora a figura 3-2 em que se encontra j seleccionado o pixel de coordenadas (xp, yp). Para escolher entre os pxeis E e SE da figura para xp+1 necessrio determinar o sinal de (3-1) avaliado no ponto mdio entre estes dois pxeis

dant = F ( x p + 1, y p 1/2) = ( x p + 1) + ( y p 1/2) R 2

(3-2)

Se o valor de (3-2) for negativo, escolhido o pixel E e, para xp+2, o teste ento aplicado ao ponto mdio ME, de que resulta
dnovo = F ( x p + 2, y p 1/2) = ( x p + 2) + ( y p 1/2) R 2 = ( x 2 + 4 x p + 4 ) + ( y p 1/2) R 2 p = ( x 2 + 2 x p + 1) + ( y p 1/2) R 2 + 2 x p + 3 p = ( x p + 1) + ( y p 1/2) R 2 + 2 x p + 3 = dant + 2 x p + 3
2 2 2 2 2 2

(3-3)

Quando o valor de (3-2) for positivo, ser escolhido o pixel SE e, para xp+2, o valor de teste no ponto mdio MSE ser
dnovo = F ( x p + 2, y p 3/2) = ( x p + 2) + ( y p 3/2) R 2 = ( x 2 + 4 x p + 4 ) + ( y 2 3 y p + 9 /4 ) R 2 p p = ( x 2 + 2 x p + 1) + ( y 2 y p + 1/4 ) R 2 + 2 x p + 3 2 y p + 2 p p = ( x p + 1) + ( y p 1/2) R 2 + 2 x p 2 y p + 5 = dant + 2 x p 2 y p + 5
2 2 2 2

(3-4)

ou seja, para xp+2, o valor de deciso para seleccionar um novo pixel ser o valor de deciso empregue em xp+1 adicionado de 2 xp+3 ou 2 xp - 2 yp+5, ambos calculados em (xp, yp), consoante em xp+1 se tenha escolhido o pixel E ou o pixel SE. Os valores de deciso iniciais so (3-5)

Note-se que, enquanto (3-3) e (3-4) permitem o emprego de aritmtica de inteiros, pois xp, yp e R so inteiros, o valor de F(1, R-1/2) no o e, portanto, obriga a empregar aritmtica de vrgula flutuante. Se definirmos s tal que d = s+1/4, o valor de teste em xp+1 ser s = 1-R, que representvel como valor inteiro e todos os testes ao valor de d (d < 0) sero substitudos pelo teste s < -1/4. Porm, como estamos a empregar aritmtica de inteiros, isto equivale a testar se s < 0. A subtraco de 1/4 no altera portanto o sinal da funo de teste devido ao emprego de aritmtica de inteiros. Assim, mantendo a consistncia de nomenclatura com o
DEI Instituto Superior Tcnico 13

J. M. Brisson Lopes

Computao Grfica: Rasterizao

algoritmo para rasterizao de segmentos de recta, manteremos a designao de d para o valor da funo de teste. O algoritmo para rasterizao de circunferncias, tal como at agora apresentado, obriga a adicionar os valores de 2 xp+3 ou 2 xp - 2 yp+5 calculados em xp, consoante se tenha escolhido o pixel E ou o pixel SE em xp+1, ao valor de teste j determinado para xp+1, para obter o valor de teste em xp+2. Veremos agora como possvel simplificar o clculo destes incrementos. Se em xp+1 for escolhido o pixel E, o incremento da funo de deciso para xp+2 , se for novamente escolhido o pixel E, ser
E ( x p + 1, y p ) E ( x p , y p ) = 2 ( x p + 1) + 3 [2 x p + 3] = 2

enquanto que, se for escolhido avanar para o pixel SE, o incremento ser SE ( x p + 1, y p ) SE ( x p , y p ) = 2 ( x p + 1) 2y p + 5 [2 x p 2 y p + 5] = 2

Se em xp+1 tiver sido escolhido o pixel SE de coordenadas (xp+1, yp-1), teremos, de forma idntica,
E ( x p + 1, y p 1) E ( x p , y p ) = 2 ( x p + 1) + 3 [2 x p + 3] = 2 SE ( x p + 1, y p 1) SE ( x p , y p ) = 2 ( x p + 1) 2 ( y p 1) + 5 [2 x p 2 y p + 5] = 4

notando que, no ponto inicial de coordenadas (0, R), os valores para os incrementos E e SE so, respectivamente, 3 e 2R+5, podemos agora apresentar o algoritmo completo para rasterizao de circunferncias cujos passos so 1. Calcular d=1R deltaE = 3 deltaSE = -2R+5 2. Inicializar x = 0 e y = R e marcar os 4 pxeis da circunferncia correspondentes. 3. Repetir os passos 4 a 5 enquanto y > x. 4. Se d < 0 incrementar d de deltaE incrementar deltaE de 2 incrementar deltaSE de 2 Caso contrrio incrementar d de deltaSE incrementar deltaE de 2 incrementar deltaSE de 4 decrementar y de uma unidade 5. Incrementar x de uma unidade e marcar os 8 pxeis da circunferncia correspondentes s coordenadas x e y.

14

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

x 0 1 2 3 4 5 6 7

y 10 10 10 10 9 9 8 7

d -9 -6 -1 6 -3 8 5 6

E 3 5 7 9 11 13 15 17

SE -15 -13 -11 -9 -5 -3 1 5 Figura 3-3 Pxeis do primeiro quadrante de uma circunferncia de raio 10 calculados pelo respectivo algoritmo de rasterizao.

Tabela 3-2 Valores das variveis do algoritmo de rasterizao de circunferncias ao rasterizar a circunferncia da figura 3-3.

A figura 3-3 apresenta os pxeis do primeiro quadrante de uma circunferncia de raio 10, centrada na origem, que resultam da aplicao do algoritmo de rasterizao de circunferncias. Os valores das variveis do algoritmo nos seus vrios passos so apresentados pela tabela 3-2.

4 Preenchimento de Polgonos
A operao de preenchimento de polgonos a operao de rasterizao que tem por objectivo atribuir a cor do polgono aos pxeis pertencentes ao polgono4. Para um polgono simples (veja-se a figura 4-1), a definio do que constitui o seu interior no apresenta quaisquer ambiguidades, mesmo quando o polgono multiplamente conexo, tal como a figura mostra. Porm, quando o permetro do polgono se intersecta a si prprio, criando um polgono auto-intersectante, a definio do que constitui o interior pode ser ambgua e, portanto, susceptvel de diferentes interpretaes. Com efeito, se no existem dvidas sobre o que constitui o interior do polgono A da figura 4-2, o mesmo no se verifica quanto ao interior do polgono B, que pode ser interpretado das duas formas que a figura apresenta. O algoritmo para preenchimento de polgonos, que a seguir apresentamos, foi concebido para tratar quaisquer polgonos simples, cncavos ou convexos, e polgonos multiplamente conexos. Pode tambm ser aplicado a polgonos auto-intersectantes desde que a interpretao do que constitui o interior de tais polgonos seja a
4

Esta cor no necessariamente uniforme, podendo variar de pixel para pixel, como sucede quando se procede ao sombreamento de um polgono.
DEI Instituto Superior Tcnico 15

J. M. Brisson Lopes

Computao Grfica: Rasterizao

interpretao do tipo do polgono B que apresenta uma zona interior no pertencente ao polgono.

Figura 4-1 Polgonos preenchidos. Da esquerda para a direita: simples, simplesmente conectado e duplamente conectado,

Figura 4-2 Polgonos auto-intersectantes: identificao do interior nica (A) e ambgua (B).

4.1

Algoritmo Bsico de Preenchimento de Polgonos

Considere-se a figura 4-3 onde se encontra representado o permetro de um polgono e uma linha horizontal que corresponde a uma linha de pxeis do dispositivo de quadrcula no qual se pretende rasterizar o polgono da figura. A linha horizontal chamada linha de varrimento (ou scan-line) e intersecta os lados do polgono em pontos bem determinados. Estes pontos, uma vez ordenados por abcissa (coordenada x) crescente, podem ser agrupados em pares de pontos consecutivos. O conjunto dos pxeis existentes entre dois pontos de interseco consecutivos (x1 e x2, por exemplo) denominado de span. Os pxeis de um dado span pertencem ao interior do polgono e, portanto, sero os pxeis a que ser atribuda a cor do polgono. Note-se que os valores das abcissas dos pontos de interseco da linha de varrimento com os lados do polgono no so, em geral, valores inteiros. Isto significa que, para determinar o primeiro e ltimo pixel de um dado span h que proceder ao arredondamento dos valores das abcissas dos pontos de interseco anteriormente determinados. Porque se trata de determinar pontos interiores, o arredondamento deve ser feito por excesso esquerda e por defeito direita do intervalo de abcissas.

16

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 4-3 Linha de varrimento e suas interseces com os lados de um polgono. Para proceder ao preenchimento do polgono, basta agora considerar todas as linhas de varrimento que intersectam o polgono, isto , as linhas de varrimento cuja ordenada se situa entre os valores das ordenadas mnima e mxima dos vrtices do polgono, e repetir o procedimento anterior para cada uma dessas linhas de varrimento.

4.2

Contabilizao de Interseces

A determinao das interseces de uma linha de varrimento com os lados de um polgono apresenta dois casos particulares que necessrio considerar: duplicao de interseces e lados horizontais.

4.2.1

Duplicao de interseces

O primeiro caso ocorre quando a linha de varrimento intersecta um vrtice de um polgono onde, como natural, concorrem sempre dois lados do polgono. Tal como a figura 4-4 apresenta, isto no constitui qualquer problema para as linhas de varrimento 1 e 3 pois essas linhas intersectam o polgono nos seus vrtices de menor e maior ordenada e do clculo das interseces resultam sempre dois pontos de interseco. Porm, para um vrtice como o vrtice B que no nem o vrtice superior nem o vrtice inferior do polgono, do clculo da interseco da linha de varrimento 2 com o polgono resultam 3 pontos de interseco: um com o lado AB, outro com o lado BC e um outro ponto situado sobre o lado AD. No havendo dvida sobre este ltimo ponto de interseco, torna-se claro que existe uma duplicao de pontos de interseco em B. Uma forma de evitar esta duplicao seria descartar uma destas interseces se o vrtice no fosse nem superior nem inferior. Mas a deteco desta condio seria uma operao demasiado complicada que teria impacte negativo no desempenho do algoritmo. A soluo para este caso passa por eliminar um dos lados do polgono. Se, por conveno, no se considerar o lado do polgono que num dado vrtice atinge o valor mximo da sua ordenada (coordenada y), elimina-se aquela duplicao. Para o ponto B da figura 4-4, isto equivale a apenas considerar as interseces da linha de varrimento com os lados AB e AD do polgono.

DEI Instituto Superior Tcnico

17

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 4-4 Duplicao de interseces no vrtice B removida por excluso do lado BC nesse vrtice.

Figura 4-5 Multiplicidade de interseces com lados horizontais removida por excluso de tais lados.

Esta soluo apresenta apenas um pequeno (e aparente) inconveniente que consiste em que, no vrtice superior de um polgono (veja-se a figura 4-4), j no existam quaisquer lados a serem intersectados pela linha de varrimento e, portanto, o pixel correspondente ao vrtice superior no ser desenhado. Mas, como na maioria dos casos iro ser desenhados vrios polgonos adjacentes, fcil constatar que o vrtice em falta ser um vrtice no superior de um outro polgono e ser desenhado quando esse outro polgono for preenchido.

4.2.2

Lados horizontais

O outro caso particular que necessrio considerar prende-se com a existncia de lados horizontais num polgono, pois a interseco de um lado horizontal com uma linha de varrimento, tambm horizontal, resulta no num ponto, mas no prprio lado. Porm, cada um dos vrtices de um lado horizontal tambm o vrtice de um outro lado do polgono e, portanto, existir um lado esquerda e outro direita do lado horizontal. Eliminando este, aqueles dois lados definiro dois pontos de interseco que criaro um span coincidente com o lado horizontal eliminado e assim ficar resolvido o problema. No caso do polgono da figura 4-5, eliminar-se-o os lados AB, CD, IH e GF. Os lados AB e CD sero no entanto desenhados, mas os lados IH e GF no. O lado GF no ser desenhado porque, para a linha de varrimento 4 da figura, os lados GH e EF j no devem ser considerados por fora da regra anterior destinada a evitar a duplicao de interseces. Mas, tal como para o caso do no desenho do vrtice superior de um polgono, um lado horizontal superior ser necessariamente um lado de um polgono adjacente ao polgono que foi preenchido e, no sendo agora um lado superior, ser desenhado quando esse outro polgono for preenchido. O mesmo suceder ao lado IH.

4.3

Determinao de Interseces

A determinao da interseco de uma linha de varrimento com um lado de um polgono pode ser realizada por substituio do valor da ordenada (coordenada y) da linha de varrimento na equao da recta que suporta o lado do polgono, seguida da

18

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

explicitao do valor da abcissa (coordenada x). Considerando que um lado tem como extremos os pontos (x(ymin), ymin) e (x(ymax), ymax), em que ymin e ymax so, respectivamente, o menor e o maior valor das ordenadas dos vrtices de um lado e que se definem (4-1) tal equivale a calcular o valor de (4-2) em que 1/m e b so (4-3)

o que envolve uma multiplicao e uma adio para determinar a interseco de um lado de um polgono com cada linha de varrimento que o intersecte, alm do clculo inicial dos dois coeficientes. Poderemos simplificar este clculo considerando duas linhas de varrimento consecutivas, cujas ordenadas so y e y+1, pois diferem de uma unidade. Assim, o valor da abcissa para y+1 ser

(4-4)

Isto significa que o valor da abcissa da interseco de uma linha de varrimento com um lado de um polgono igual ao valor da abcissa da sua interseco com a linha de varrimento imediatamente anterior adicionado do valor de 1/m e, por consequncia, disporemos de uma forma recursiva para realizar este clculo. Naturalmente, o valor inicial da abcissa ser o valor da coordenada x do vrtice de ordenada ymin. Desta forma, torna-se necessrio calcular apenas o valor do coeficiente 1/m e, para cada linha de varrimento, adicion-lo ao valor da abcissa da interseco do lado do polgono com a linha de varrimento anterior, o que implica apenas uma adio. Daqui resulta um bvio aumento do desempenho.

DEI Instituto Superior Tcnico

19

J. M. Brisson Lopes

Computao Grfica: Rasterizao

4.4

Lados, Lados Activos e Tabelas de Lados

Uma dada linha de varrimento no pode intersectar todos os lados de um polgono. Por outro lado, uma dada linha de varrimento s pode intersectar um lado de um polgono se a sua ordenada estiver compreendida no intervalo das ordenadas dos vrtices desse lado. Arbitrando que as linhas de varrimento comeam a varrer o polgono a partir do menor valor de y dos vrtices de um polgono e progridem para o maior valor desta coordenada, s faz sentido determinar a interseco de uma linha de varrimento com um lado a partir do momento em a ordenada da linha de varrimento se torna igual ao ymin desse lado. Por outro lado, deve-se deixar de calcular a interseco de uma linha de varrimento com um lado logo que a ordenada da linha de varrimento atinja o valor de ymax do lado para evitar duplicaes de interseces nos vrtices. Diz-se que um lado se encontra activo quando est a ser intersectado pela linha de varrimento. apenas sobre os lados activos num dado momento que devem ser calculadas as suas interseces com a linha de varrimento corrente, pois intil tentar calcular interseces da linha de varrimento com lados que no se encontrem activos. Assim, poderemos construir uma lista de lados que, inicialmente, contm todos os lados do polgono, excepto os lados horizontais, e uma lista de lados activos que se encontra vazia. Quando um lado se torna activo, esse lado retirado da lista de lados e colocado na lista de lados activos, passando a pertencer ao conjunto de lados com os quais so calculadas as interseces. Finalmente, quando a ordenada da linha de varrimento atinge o valor do ymax do lado, o lado deve ser retirado da lista de lados activos e eliminado pois no ser mais intersectado por qualquer linha de varrimento. Para facilitar a deteco do momento em que um lado se torna activo, os lados que possuem o mesmo valor de ymin devem ser agrupados numa lista, ordenada de preferncia segundo o valor da abcissa do vrtice para o qual a ordenada tem o valor ymin.5 Por sua vez, estas listas devem ser inseridas num vector com ymax-ymin+1 posies, na posio correspondendo ao valor da ordenada mnimo dos lados da lista. Esta lista de lados chamada Tabela de Lados. A figura 4-6 apresenta um polgono e a respectiva tabela de lados no seu estado inicial. A lista de lados correspondendo ao valor 1 da menor ordenada de vrtices contm os lados AB e BC, por esta ordem, dado que o valor de 1/m para o lado AB (-5/2) menor que o valor correspondente do lado BC (6/4). Identicamente, ao nvel 7, o lado EF deve preceder o lado DE. lista de lados activos, chamada Tabela de Lados Activos, inicialmente vazia, adicionada a lista de lados cujo ymin igual ao valor da ordenada da linha de varrimento corrente. Se a tabela de lados activos estiver sempre ordenada segundo as abcissas e porque a lista de lados que lhe adicionada est tambm ordenada, fcil ento manter ordenada a tabela de lados activos.

No caso de dois lados apresentarem a mesma abcissa, os lados devem ser ordenados atravs do respectivo declive.
20 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 4-6 Polgono e respectiva tabela de lados no incio do processo de preenchimento. Tambm como a figura 4-6 mostra, a estrutura de dados de cada lado deve conter os valores de ymax, x e 1/m, em que, inicialmente, atribudo a x o valor de x(ymin). Esta estrutura no necessita de quaisquer outros valores depois de calculado o valor de 1/m. Por convenincia na construo de listas de lados, usual incluir nesta estrutura a referncia ao lado que se lhe segue na lista.

4.5

Algoritmo de Preenchimento de Polgonos

Em face do anterior, podemos agora apresentar completamente o algoritmo para o preenchimento de polgonos que ser 1. Construir a tabela de lados e inserir nela todos os lados do polgono excepto os lados horizontais. 2. Construir a tabela de lados activos, deixando-a vazia. 3. Inicializar Y como o valor da menor ordenada de todos os vrtices do polgono. 4. Repetir os passos 5 a 9 at que tanto a tabela de lados como a tabela de lados activos fiquem vazias 5. Mover da tabela de lados para a tabela de lados activos os lados para os quais Y= ymin, ordenando a tabela de lados activos. 6. Preencher os spans da linha de varrimento corrente utilizando os pares dos valores de x dos lados existentes na tabela de lados activos pela ordem em que os lados se encontrem na tabela. 7. Remover da tabela de lados activos todos os lados para os quais Y igual a ymax 1. 8. Incrementar o valor de Y de uma unidade. 9. Incrementar de 1/m o valor de x dos lados existentes na tabela de lados activos.

DEI Instituto Superior Tcnico

21

J. M. Brisson Lopes

Computao Grfica: Rasterizao

10.

11. Figura 4-7 Evoluo das tabelas de lados activos ( esquerda) e de lados ( direita) durante o preenchimento de um polgono. Para poder aplicar este algoritmo a polgonos auto-intersectantes necessrio o seguinte passo adicional 12. Reordenar segundo x os lados existentes na tabela de lados activos.

Exemplo
A figura 4-7 exemplifica a evoluo da tabela de lados activos, da tabela de lados e dos valores dos campos dos lados quando se procede ao preenchimento do polgono representado na figura 4-6, partindo da menor ordenada do polgono (1) at se atingir a sua maior ordenada (11). Inicialmente, a tabela de lados activos recebe os lados AB e BC da tabela de lados onde permanecem os lados FA, CD, EF e DE. Da linha de varrimento com ordenada 1 para a linha de varrimento com ordenada 2 apenas ocorre a alterao dos valores do campo x dos lados contidos na tabela de lados activos por adio dos respectivos incrementos (m). Ao ser atingida a ordenada de valor 3, o lado AB eliminado da tabela de lados activos e o lado FA retirado da tabela de lados e adicionado tabela de lados activos, onde colocado antes do lado BC dado que o valor da sua abcissa (2) inferior ao da abcissa do lado BC (10). Estes lados permanecem na tabela para a linha de varrimento de ordenada 4, apenas com o incremento das respectivas abcissas. Para a linha de varrimento de ordenada 5, o lado BC removido da tabela de lados activos e, em seu lugar surge nesta tabela o lado CD, retirado da tabela de lados que passa conter apenas os lados EF e DE. Os lados FA e CD, com as respectivas abcissas

22

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

modificadas, permanecem na tabela de lados activos quando a ordenada da linha de varrimento assume o valor 6. Quando a linha de varrimento tem como ordenada o valor 7, os lados EF e DE so retirados da tabela de lados para a tabela de lados activos. A tabela de lados fica assim vazia. A tabela de lados activos reordenada pela sequncia que a figura apresenta durante a insero dos lados EF e EF. Os quatro lados (FA, EF, DE e CD) permanecem activos para a linha de varrimento de ordenada 8. Os lados FA e EF atingem o valor da sua ordenada mxima quando a ordenada da linha de varrimento assume o valor 9 e so eliminados da tabela de lados activos onde permanecem os lados DE e CD. Estes lados continuam nesta tabela apara a linha de varrimento de ordenada 10 mas, quando a ordenada da linha de varrimento atinge o valor 11, tm que ser retirados. A tabela de lados activos fica vazia e, como a tabela de lados j se encontra vazia, o processo de preenchimento do polgono est terminado. A tabela 4-1 apresenta os intervalos de interseces definidas por pares de lados consecutivos (spans) e os pxeis interiores do polgono para todos os valores da ordenada da linha de varrimento deste exemplo. Y 1 2 3 4 5 6 7 8 9 10 [7; 7] [4,5; 8,5] [2; 10] [2; 11,5] [2; 13] [2; 13] [2; 7] [7; 13] [2; 4,5] [8,5; 13] [10; 13] [11,5; 13] Spans Pxeis 7a7 5a8 2 a 10 2 a 11 2 a 13 2 a 13 2 a 7 e 7 a 13 2 a 4 e 9 a 13 10 a 13 12 a 13

Tabela 4-1 Spans entre interseces consecutivas e pxeis seleccionados para cada ordenada da linha de varrimento do exemplo.

4.6

Fragmentao de Polgonos

No preenchimento de polgonos podem ocorrer situaes em que, de um par de pontos de interseco da linha de varrimento com dois lados de um polgono, resultam um ou nenhum pixel devido proximidade dos lados. Isto ocorre em polgonos ou zonas de polgonos muito estreitas denominadas zonas de fragmentao (slivers, em ingls) que podem criar descontinuidades no preenchimento dos polgonos, tal como a figura 4-8 apresenta. Na figura, o tringulo esquerdo, com os vrtices em (1, 5), (4, 5) e (7, 14), perde parte da sua informao para as linhas de varrimento de ordenada 7, 8, 10 e 11 porque,
DEI Instituto Superior Tcnico 23

J. M. Brisson Lopes

Computao Grfica: Rasterizao

segundo a regra de preenchimento, s os pxeis interiores ou aqueles que pertenam fronteira devem ser seleccionados6. Esta perda total junto do vrtice superior do tringulo porque no existem quaisquer pxeis interiores ao tringulo para a linha de varrimento de ordenada 13 e a linha de varrimento de ordenada 14 no deve ser considerada devido regra que elimina os lados activos quando estes atingem a sua maior ordenada. A tabela 4-2 apresenta os pxeis seleccionados para cada linha de varrimento dos tringulos da figura 4-8. O tringulo direita na figura, com vrtices em (4, 1), (8, 10) e (6, 10), apresenta uma situao ainda mais extrema dado que do seu preenchimento surgem duas zonas separadas. O vrtice inferior encontra-se representado mas est completamente desligado do resto do tringulo porque no existem quaisquer pxeis interiores a este para as linhas de varrimento de ordenadas 2 e 3. Finalmente, o conjunto dos dois tringulos apresenta uma perda de detalhe pois, embora se trate de dois tringulos separados, os seus preenchimentos coalescem para as linhas de varrimento de ordenadas 5 e 9 e, inversamente, ficam demasiado separados para as linhas de varrimento de ordenadas 6, 7 e 8. Casos como este surgem da aplicao das regras para preenchimento de tringulos, mas no so consequncia de tais regras. A sua origem encontra-se no aliasing porque a quadrcula empregue no suficientemente fina para capturar os detalhes dos objectos. aos algoritmos de antialiasing, que a seguir apresentamos, que cabe apresentar solues para estes problemas. span esquerdo 6-6 5-5 5-5 4-5 3-4 3-4 2-4 1-4 span direito

Y 14 13 12 11 10 9 8 7 6 5 4 3 2 1

6-8 6-7 6-7 6-6 6-6 5-5 4-4 Figura 4-8 Preenchimento de dois tringulos de reduzida largura com perda de detalhe.

Tabela 4-2 Spans dos pxeis seleccionados no preenchimento dos tringulos da figura 4-8.

Para as ordenadas 8 e 11, ocorre ainda o facto do declive do lado direito do tringulo apresentar um declive inverso (1/3) que aproximado por defeito.
24 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

5 Aliasing e Antialiasing
A discretizao de uma grandeza contnua implica perda de informao. Por vezes a informao perdida no significativa e possvel reconstruir quase fielmente a grandeza original mas, a partir de uma certa perda, os valores discretos medidos so insuficientes para que se possa proceder reconstruo da grandeza original. Quando tal sucede, a reconstruo produz informao que pouco ou nada tem a ver com a informao original. Este fenmeno tem o nome de aliasing. Um exemplo simples de aliasing o resultado da amostragem de um sinal sinusoidal com uma frequncia de amostragem idntica frequncia do sinal. Os valores amostrados so todos iguais e qualquer tentativa de reconstruo do sinal original resultar num sinal sem qualquer relao com o original (veja-se a figura 5-1) pois, no s se perdeu a amplitude do sinal, como igualmente se perdeu a sua prpria periodicidade. Este exemplo mostra que a frequncia de amostragem deve ter em conta a periodicidade do sinal amostrado. Se, por exemplo, se tivessem tomado quatro amostras por perodo, conforme a figura 5-2 apresenta, teria sido possvel reconstruir quase exactamente o sinal original. No entanto, se aumentarmos a frequncia do sinal e mantivermos a frequncia de amostragem, verificamos que esta deixou de ser adequada, pois o sinal que possvel reconstruir apresenta uma frequncia mais baixa do que a frequncia original, ainda que a informao sobre a amplitude do sinal tenha sido correctamente reconstruda. Estes exemplos ilustram o essencial do teorema de Nyquist. Segundo este teorema, a frequncia mnima de amostragem deve ser o dobro da frequncia do sinal amostrado para que se possa reconstruir o sinal original. por esta razo que nas gravaes digitais de msica em udio CD, realizadas com a frequncia de amostragem de 44 kHz, todas as frequncias superiores a 22 kHz, que no so audveis, so eliminadas do sinal antes do seu registo, pois, caso contrrio, seriam reproduzidas como frequncias mais baixas que iriam contaminar o som escutado.

Figura 5-1 Amostragem de um sinal sinusoidal com frequncia de amostragem igual do sinal. A reconstruo do sinal a partir das amostras discretas conduz a um sinal contnuo cujo valor nada tem a ver com a amplitude do sinal original.

DEI Instituto Superior Tcnico

25

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 5-2 Amostragem com frequncia constante. A amostragem suficiente para o sinal esquerda e insuficiente para o sinal direita.

Figura 5-3 Perda de detalhe devida ao efeito de escada na fronteira de um objecto.

5.1

Aliasing em Computao Grfica

O fenmeno de aliasing ocorre em Computao Grfica, uma vez que a informao contnua dos objectos a representar graficamente discretizada e representada associada a pxeis nos dispositivos de quadrcula. Uma das formas mais comuns de aliasing em Computao Grfica consiste no chamado efeito de escada ou efeito de serra que ocorre quando se representam linhas que no sejam horizontais, verticais ou diagonais, como a figura 1-2 apresenta. Este efeito (veja-se tambm a figura 5-3) aparece ainda na representao de polgonos, mais propriamente nas arestas, e particularmente visvel quando existe grande contraste entre as cores do polgono e do exterior. A perda de detalhe das imagens, quando a densidade dos pxeis insuficiente (ou no suficientemente fina) para reproduzir os detalhes ou mesmo os objectos a representar, tambm devida ao aliasing. Um exemplo desta ocorrncia foi j anteriormente apresentado (figura 4-8). Um outro exemplo de perda de detalhe ocorre quando se pretende representar um conjunto de tringulos, de largura de base e uma altura de vrias unidades, que se encontram justapostos. Se o espaamento horizontal dos pxeis corresponder, por exemplo, a 1,05 , a representao apresentar o aspecto de um tringulo cuja base de 21 , conforme a figura 5-4 apresenta. O aliasing ocorre porque, de acordo com o teorema de Nyquist, deveramos ter empregado uma quadrcula em que os pxeis estivessem espaados de 0,5 , em vez de 1,05 . Em princpio, a perda de detalhe devida ao aliasing poderia ser eliminada empregando uma quadrcula mais fina. No entanto, poderemos sempre questionar se na imagem no podero existir outros detalhes de ainda menor dimenso que criam, por

26

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

sua vez, artefactos de baixa frequncia e que nos obrigariam a empregar quadrculas ainda mais finas. Um outro exemplo de perda de detalhe devido ao aliasing pode ser observado quando se representam texturas regulares cuja dimenso aparente diminui com o aumento da distncia ao observador, como o caso de um cho de ladrilhos alternadamente brancos e negros que a figura 5-5 apresenta. Os ladrilhos deveriam diminuir de tamanho e manter a sua forma medida que ficassem mais distantes. Em vez disso, aparecem formas irregulares e de tamanhos maiores devido coalescncia de ladrilhos prximos. O aumento da resoluo da imagem no elimina o problema pois o problema persiste para ladrilhos mais distantes. A mesma constatao pode ser obtida observando a figura 5-6. O emprego de maior resoluo no elimina o efeito de escada pois surgem mais patamares, embora de menor dimenso. Tambm a mancha visual do segmento de recta se torna menos ntida porque a sua espessura aparente diminui.

Figura 5-4 Rasterizao de um conjunto de tringulos com uma quadrcula (topo), com resultado incorrecto (ao meio) por insuficincia da quadrcula onde se perdeu completamente o detalhe da imagem correcta (em baixo).

DEI Instituto Superior Tcnico

27

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Figura 5-5 Perda de detalhe de texturas com o aumento da profundidade ( esquerda) numa imagem de 256x256 pxeis. O aumento da resoluo da imagem ( direita) para 1024x1024 pxeis apenas consegue relegar esta perda para distncias maiores, mas no a elimina.

Figura 5-6 Traado de segmentos de recta com diferentes resolues: com maior resoluo, o segmento recta aparenta maior fidelidade mas mais fino.

5.2

Antialiasing

Como vimos, o fenmeno de aliasing tanto pode ter origem na discretizao no espao (aliasing espacial), como na discretizao no tempo (aliasing temporal). Neste captulo trataremos apenas da correco dos efeitos do aliasing espacial. Existem vrias tcnicas designadas genericamente por tcnicas de antialiasing ou algoritmos de antialiasing para resolver de modo satisfatrio, mas nunca total, os problemas criados pelo fenmeno de aliasing nas suas vrias manifestaes. Estas tcnicas baseiam-se na filtragem da informao que pode ser realizada tanto no espao da imagem como no espao dos objectos. A filtragem realizada no espao dos objectos designa-se por pr-filtragem, enquanto a realizada a partir da informao que existe no espao da imagem designada por ps-filtragem.

28

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

5.2.1

Pr-filtragem

As tcnicas de pr-filtragem so muito empregues pelas tcnicas de gerao de imagem que operam no espao dos objectos, como o caso da tcnica de Ray Tracing.7 De uma forma genrica, a pr-filtragem consiste em determinar a cor a atribuir a um pixel por exame da rea que lhe corresponde no espao dos objectos, determinando as cores empregues nessa rea e a respectiva proporo. Considere-se, por exemplo, um objecto verde sobre um fundo de cor vermelha. Aos pxeis correspondentes a reas de cor uniforme (verde ou vermelho) ser atribuda a cor da rea respectiva. A cor a atribuir a pxeis correspondentes a reas na fronteira do objecto, que tm parte a verde e parte a vermelho, dever ser uma mistura de verde e vermelho nas propores existentes na respectiva rea. Assim, numa rea em que 30% esteja dentro do objecto de cor verde e 70% fora dele, a cor do pixel correspondente na imagem dever ser uma mistura de 30% de verde com 70% de vermelho. A pr-filtragem que acabamos de descrever, denominada pr-filtragem no ponderada, produz resultados bastante correctos para primitivas que ocupam reas da imagem correspondendo a um nmero razovel de pxeis, como o caso de polgonos. Porm, a pr-filtragem no ponderada no directamente aplicvel rasterizao de primitivas como menos do que uma dimenso, como o caso dos segmentos de recta e pontos, pois, no tendo espessura, tais primitivas no contribuem para os pxeis da imagem dado no ocuparem qualquer rea no espao dos objectos. Para ultrapassar este problema, teremos que considerar que pontos e segmentos de recta possuem duas dimenses e criar no espao dos objectos crculos e rectngulos que os representam, atribuindo, por exemplo, a largura de um pixel ao dimetro dos crculos e espessura dos segmentos de recta. Este procedimento permite ento rasterizar estas primitivas por meio da pr-filtragem no ponderada. A figura 5-7 permite comparar o resultado da rasterizao de um segmento de recta com um declive de 1/3 realizada de diferentes formas. Em (a) o segmento apresenta-se tal como resultaria da sua rasterizao atravs do algoritmo de Bresenham, enquanto em (b) se pode observar a rasterizao do mesmo segmento aplicando a tcnica de prfiltragem no ponderada, em que se atribuiu ao segmento a largura correspondente a um pixel.8 O resultado visual uma linha em que se nota uma atenuao do efeito de escada e uma espessura mais uniforme do que em (a), mas ainda se nota alguma irregularidade. Isto sucede porque os valores dos pxeis a que se sobrepe o rectngulo representando o segmento so calculados sem atender distncia a que se encontram do segmento de recta original. A pr-filtragem com ponderao entra em conta com esta distncia. Em (c) foi aplicado um filtro de ponderao da intensidade dos pxeis em funo da distncia dos seus centros ao segmento de recta, em que a intensidade varia inversamente com a distncia segundo Gupta e Sproull. Como se pode observar, o segmento de recta apresenta-se agora mais ntido e uniforme em toda a sua extenso.

Para mais detalhes sobre a pr-filtragem em Ray Tracing, consultar o opsculo dedicado a este tema. 8 A figura dever ser observada a alguns metros de distncia para que os pixis possam fundir-se visualmente.
DEI Instituto Superior Tcnico 29

J. M. Brisson Lopes

Computao Grfica: Rasterizao

(a)

(b)

(c)

Figura 5-7 Pr-filtragem de segmento de recta: sem pr-filtragem (a), com pr-filtragem no ponderada (b) e pr-filtragem ponderada empregando filtro cnico (c).

Figura 5-8 Sobre amostragem. Imagem com a resoluo de 256x256 pxeis ( direita) obtida a partir de uma imagem com a resoluo de 1024x1024 pxeis. Compare-se este resultado com uma imagem da mesma resoluo ( esquerda) sem sobre amostragem.

5.2.2

Ps-filtragem

As tcnicas de ps-filtragem, tambm designadas por tcnicas de sobre amostragem (super sampling), consistem em gerar uma imagem de resoluo superior resoluo da imagem pretendida e, em seguida, usar a informao de vrios pxeis contguos para, atravs da mdia das suas cores, gerar os pxeis da imagem final. Para uma imagem de 512 x 512 pxeis gerar-se-iam, por exemplo, imagens de 1024 x 1024 ou 1536 x 1536 pxeis com uma resoluo respectivamente dupla ou tripla da resoluo final pretendida. A seguir, para calcular a cor de cada pixel da imagem final, seria determinada a cor mdia das cores dos quatro ou nove pxeis correspondentes das imagens de maior resoluo. A figura 5-8 apresenta um exemplo de aplicao de ps-filtragem onde se observa uma ntida melhoria da representao dos polgonos localizados no fundo da imagem. As tcnicas de ps-filtragem so muito empregues em Computao Grfica devido sua simplicidade, embora sejam computacionalmente mais pesadas porque requerem o emprego de mais memria e a carga computacional aumenta devido a ser necessrio
30 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Rasterizao

processar um muito maior nmero de pxeis e, no final, ser tambm necessrio combinar num s pixel da imagem final a informao de vrios pxeis da imagem em resoluo aumentada Estas tcnicas no so aplicveis a primitivas com menos de duas dimenses (segmentos de recta e pontos) pois, tal como a figura 5-6 apresenta, o emprego de uma resoluo maior no elimina o feito de escada dado que surgem mais patamares, ainda que estes sejam de menor dimenso. Por outro lado, a mancha visual do segmento muito mais fina e, se se aplicasse a ps-filtragem, obteramos um segmento cuja intensidade seria bastante inferior intensidade original.

DEI Instituto Superior Tcnico

31

J. M. Brisson Lopes

Computao Grfica: Rasterizao

Exerccios
1 Apresente as diferenas fundamentais entre o algoritmo incremental bsico e o algoritmo de Bresenham para a rasterizao de segmentos de recta e comenta a influncia que estas diferenas tm no desempenho relativo dos dois algoritmos. Descreva as restries impostas aplicao do algoritmo de Bresenham e explique como estas restries devem ser ultrapassadas para que seja possvel rasterizar um qualquer segmento de recta. Determine os pxeis que devem resultar da aplicao do algoritmo de Bresenham ao segmento de recta da tabela 2-2 depois de devolvidos ao octante original e verifique se a linha de pxeis resultante correcta. Por semelhana com o algoritmo para rasterizao de circunferncias, conceba um algoritmo para a rasterizao de elipses sabendo que a sua funo implcita , no considerando aritmtica de inteiros. (Sugesto: estude apenas o primeiro quadrante e tenha em ateno que deve alterar o critrio do ponto mdio quando a elipse apresente um declive igual a 1.) Construa a tabela de arestas para preencher o tringulo com vrtices nos pontos (1, 2), (10, 12) e (1, 15) e descreva o contedo da lista de arestas activas para cada uma das linhas de varrimento que intersecta o tringulo, explicando o objectivo de cada uma destas tabelas. Explique como e porqu devem ser contabilizadas as interseces da linha de varrimento com vrtices e com lados horizontais no preenchimento de polgonos e apresente as respectivas consequncias. Determine os pxeis correspondentes ao preenchimento do polgono com vrtices em (1, 5), (3, 8), (2, 8), (1, 6) e (3, 6), e critique o resultado obtido. Conceba um algoritmo para o preenchimento de crculos com base no algoritmo para rasterizao de circunferncias que evite o preenchimento de um pixel mais do que uma vez. Explique a razo pela qual a representao de primitivas grficas, como segmentos de recta, em dispositivos de sada grfica do tipo de quadrcula, coloca problemas que, em princpio, no ocorrem em dispositivos de sada grfica do tipo vectorial. Uma srie de terminais grficos com ecrs de dispositivo de quadrcula proporciona um espao de endereamento de 40963072 quadrculas, mas o espao de endereamento do ecr dispe apenas de 1024762 quadrculas. Explique que problema pretende o fabricante resolver e apresente as estratgias que podero estar por detrs desta soluo.

7 8

10

32

DEI Instituto Superior Tcnico