Filtro EWA Mapeamento de texturas com redução de aliasing Lorenzo Ridolfi Descrição do problema • O uso de texturas na renderização de cenas 3D é um recurso amplamente usado para aumentar o realismo da cena • As texturas usualmente são imagens 2D tradicionais que sofrem transformações, usualmente de perspectiva, para que sejam posicionadas corretamente na cena • O mapeamento direto da imagem gera aliasing na imagem • O aliasing pode ser reduzido se a imagem for filtrada por meio de um filtro “passa baixa” que reduz as altas frequências Mapeamento 3D sem filtro A transformação de uma textura por uma perspectiva gera aliasing onde há compressão espacial da textura Aliasing Mapeamento 3D com filtro O uso de um filtro que atua na atenuação das altas-frequências reduz consideravelmente o aliasing e melhora a aparência da textura transformada Aliasing reduzido Resumo do Filtro EWA • O EWA [1], ou Elliptical Weighted Average, é um filtro digital especialmente desenvolvido para a redução de aliasing no mapeamento 3D de texturas – O EWA é um filtro de suporte finito que reduz as altas frequências da textura por meio da ponderação de cada texel com a sua vizinhança – A vizinhança do texel é determinada por uma elipse centrada no próprio texel a ser mapeado – A ponderação de cada texel da vizinhança é dada por uma função gaussiana da distância entre o texel da vizinhança e o que está sendo mapeado – A elipse que determina a vizinhança é determinada diretamente a partir da transformação 3D que atua sobre a textura Transformação da textura • As coordenadas da textura são mapeadas por uma transformação homogênea definida por uma matriz 3 x 3 H: u y Transformação x v  x ' u   y '  H   v  3x3      z '  1  x' y' x ,y z' z' Ponderação por função gaussiânica • O EWA pondera o valor de um texel com o uso de função gaussiânica • A distância dos texels da vizinhança ao texel a ser mapeado é o parâmetro da função gaussiânica     u uc w(u )  e  u é o texel da vizinhança  uc é o texel sendo mapeado Região elíptica de atuação • O círculo de atuação da função gaussiana no espaço x,y corresponde a uma elipse no espaço u,v • Essa elipse de atuação é determinada a partir da transformação inversa de H, H-1 u y Transformação v x Pseudo-código do EWA Parâmetros de entrada: – Inversa da transformação H-1 – Pontos X, Y Parâmetros de saída: – Valor final dos componentes r, g e b para as coordenadas X, Y Calcular o centro da elipse uc, vc Calcular os parâmetros da elipse a partir da matriz H-1 Calcular o bounding box da elipse Para cada texel no interior da bounding box Se o texel estiver dentro da elipse Calcular o peso do texel Acumular o peso e o valor ponderado do texel para os componentes r, g e b Calcular o valor final dos componentes r, g e b do texel Detalhamento do Pseudo-Código • O pseudo-código do EWA está descrito em [1] • Alguns passos do pseudo-código não foram totalmente documentados e são descritos a seguir: – Calcular o centro da elipse uc, vc – Calcular os parâmetros da elipse a partir da matriz H-1 – Calcular o bounding box da elipse Calcular o centro da elipse uc, vc • Os valores de uc, vc são determinados diretamente a partir de x, y e da matriz H-1  uc'   x  ' 1    vc   H 3 x 3  y   wc'    1     ' c ' c ' c ' c u v uc  , vc  w w Calcular os parâmetros da elipse a partir da matriz H-1 • Os parâmetros da elipse são obtidos a partir da jacobiana da matriz H-1 H 3x13 J H 1 3x3  hu  x   h  u  y a   d  g hv  x  hu   y  b e h c f  i  a x b y  c g  x  h y i d  x  e y  f vc  hv ( x, y )  g  x  h y i uc  hu ( x, y)   a  ( g  x  h  y  i )  g  (a  x  b  y  c) b  ( g  x  h  y  i )  h  (a  x  b  y  c)    ( g  x  h  y  i) 2 ( g  x  h  y  i) 2 J H 1    3x3 d  ( g  x  h  y  i )  g  ( d  x  e  f  c ) e  ( g  x  h  y  i )  h  ( a  x  b  y  c )   2 2   ( g  x  h  y  i) ( g  x  h  y  i) Calcular os parâmetros da elipse a partir da matriz H-1 • Seja JH a matriz jacobiana e a elipse definida por A, B,C e F: J H 1 3x3  j xu  u  j y j xv   j yv  A u2  B  u  v  C  y2  F • A elipse derivada é: • Por fim, a elipse é normalizada A'  J xv  J xv  J yv  J yv  1  B'  2  J xu  J xv  J yu  J yv C '  J xu  J xu  J xv  J xv 1 '2 B F '  A'  C '  4  A' A ' F B' B ' F C' C ' F F 1 Calcular o bounding box da elipse • Para achar o “bounding box” da elipse, precisamos achar os valores mínimos de u e v: e(u, v)  A  u 2  B  u  v  C  y 2 e  2 Au  B v u e  2C v  B u v Calcular o bounding box da elipse Para minimizar u e v, temos as seguintes equações: A u2  B  u  v  C  y2  F O bounding box será: uc  ub vc  vb 2 Au  B v  0 2C v  B u  0 Resolvendo as equações: ub   vb   (uc  ub , vc  vb ) F 4 A C A B2 (uc  ub , vc  vb ) 2 F 4 AC2 C B2 (uc , vc ) (uc  ub , vc  vb ) (uc  ub , vc  vb ) Referências [1] Heckbert, Paul, “Fundamentals of Texture Mapping and Image Warping”, Master’s Thesis, Department of Electrical Engineering and Computer Science, University of California, Berkeley, CA, 1989.