Upload
internet
View
103
Download
0
Embed Size (px)
Citation preview
Fundamentos da Computação Fundamentos da Computação GráficaGráfica
(Trabalho 2)(Trabalho 2)
Filtro Anti-aliasing para Filtro Anti-aliasing para Mapeamento de Texturas Mapeamento de Texturas
baseado em EWAbaseado em EWA
Gilberto Medeiros Júnior
05/2007
PUC-RJ
AliasingAliasing
SerrilhadoSerrilhado Aparece, por exemplo, ao se desenhar Aparece, por exemplo, ao se desenhar
uma reta na diagonaluma reta na diagonal
Proposta Antialiasing Proposta Antialiasing Filtro EWA Filtro EWA
Proposta do TrabalhoProposta do Trabalho
Mapeamento de uma textura 2D em Mapeamento de uma textura 2D em uma imagem em perspectivauma imagem em perspectiva
Mapeamento projetivo (Matriz de Mapeamento projetivo (Matriz de Homografia)Homografia)
Aplicação do filtro EWAAplicação do filtro EWA
HomografiaHomografia
Matriz de HomografiaMatriz de Homografia Paralelogramo no espaço (u,v) para um quadrilátero Paralelogramo no espaço (u,v) para um quadrilátero
qualquer no espaço (x,y)qualquer no espaço (x,y) Abordagem do programa:Abordagem do programa:
Homografia Inversa: quadrilátero qualquer em (x,y) para Homografia Inversa: quadrilátero qualquer em (x,y) para um paralelogramo em (u,v)um paralelogramo em (u,v)
Para cada ponto na imagem a direita (quadrilátero Para cada ponto na imagem a direita (quadrilátero qualquer), calcula-se o texel correspondente na textura à qualquer), calcula-se o texel correspondente na textura à esquerda (paralelogramo)esquerda (paralelogramo)
Matriz de Homografia InversaMatriz de Homografia Inversa A cor do texel encontrado na textura será a cor do pixel A cor do texel encontrado na textura será a cor do pixel
(em RGB) no ponto ao qual estamos analisando(em RGB) no ponto ao qual estamos analisando
texel correspondente ao ponto
cor rgb do texel atribuída ao pixel
[[texeltexel] =[H]] =[H]-1-1 * *
[[pixelpixel]]
Filtro Antialiasing EWAFiltro Antialiasing EWA
Visão Geral:Visão Geral: Para cada ponto (x,y) da imagem, calcular Para cada ponto (x,y) da imagem, calcular
Jacobiano (matriz)Jacobiano (matriz) Com jacobiano, calcular elipse correspondente Com jacobiano, calcular elipse correspondente
no espaço de textura, centrada no ponto (u,v)no espaço de textura, centrada no ponto (u,v) Achar o “bounding box” que envolve a elipse Achar o “bounding box” que envolve a elipse
(espaço de textura)(espaço de textura) Escanear o “bounding box”Escanear o “bounding box”
Texels dentro da elipse contribuem para cálculo da Texels dentro da elipse contribuem para cálculo da cor RGB do ponto da imagem (ponderação)cor RGB do ponto da imagem (ponderação)
Texels fora da elipse são desconsideradosTexels fora da elipse são desconsiderados
Cálculo JacobianoCálculo Jacobiano
)(
)()(2ihygx
cbyaxgihygxaux
)(
)()(2ihygx
cbyaxhihygxbu y
)(
)()(2ihygx
feydxgihygxdvx
)(
)()(2ihygx
feydxhihygxevy
'
'
'
1
.
w
v
u
ihygx
feydx
cbyax
y
x
ihg
fed
cba
11'/'
'/'
'/'
v
u
ww
wv
wu
ihygx
feydxihygx
cbyax
yy
xx
vu
vu
[H][H]-1-1 pixelpixel texeltexel
[J][J]
Cálculo da ElipseCálculo da Elipse
FCyBxyAx 22
4/
1
)(2
1
F
C
Β
Α
BBAC
uuuu
vuvu
vvvv
yyxx
yyxx
yyxx
Geração da Tabela de PesosGeração da Tabela de Pesos
Gaussiana:Gaussiana:
qeqWTAB ][ alfa = decaimento da gaussianaalfa = decaimento da gaussiana Q = dist. até o centro da elipseQ = dist. até o centro da elipse
Reescalar elipse de forma que F = tamanho de WTABReescalar elipse de forma que F = tamanho de WTAB
Cálculo do “Bounding Box”Cálculo do “Bounding Box”
Derivar equação da elipse com relação a x Derivar equação da elipse com relação a x e a ye a y
Igualar as derivadas a zero para descobrir Igualar as derivadas a zero para descobrir pontos extremospontos extremos x’ = 0 (limites horizontais do box – u1 e u2)x’ = 0 (limites horizontais do box – u1 e u2) y’ = 0 (limites verticais do box – v1 e v2)y’ = 0 (limites verticais do box – v1 e v2)
u1u1 u2u2
v1v1 v2v2
Executando EWAExecutando EWA
Escanear “bounding box”Escanear “bounding box” calcula Q(u,v) = Aucalcula Q(u,v) = Au22 + Buv + Cv + Buv + Cv22
se ponto estiver dentro do contorno da elipsese ponto estiver dentro do contorno da elipse calcula peso do ponto: peso = WTAB[Q]calcula peso do ponto: peso = WTAB[Q] calcula contribuição RGB dada pelo ponto (u,v)calcula contribuição RGB dada pelo ponto (u,v)
peso * rgb(u,v)peso * rgb(u,v) soma contribuição RGB do ponto ao RGB do ponto central da soma contribuição RGB do ponto ao RGB do ponto central da
elipseelipse
prossegue escaneando próximo ponto do bounding box e prossegue escaneando próximo ponto do bounding box e somando a sua contribuição RGB ao RGB do ponto da somando a sua contribuição RGB ao RGB do ponto da elipseelipse
se nenhum ponto dentro da elipse tiver uma contribuição se nenhum ponto dentro da elipse tiver uma contribuição efetiva no RGB final, então será aplicado um filtro bilinearefetiva no RGB final, então será aplicado um filtro bilinear
Exemplo de Execução do Programa
Referências:Referências:
P. S. Heckbert. “Fundamentals of texture mapping and image warping.” M.sc. thesis,Department of Eletrical Enginneering and Computer Science, University of California,Berkeley, 1989.
Wikipedia – Anti-aliasinghttp://pt.wikipedia.org/wiki/Anti-aliasing
Matemática Essencial - Derivada Implícita http://pessoal.sercomtel.com.br/matematica/superior/maxmin/mm08.htm