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.