Pontifícia Universidade Católica do Rio de Janeiro – PUC-RJ Disciplina: Fundamentos de Computação Gráfica Prof. Marcelo Gattass Implementação do Filtro EWA para redução de aliasing em mapeamento de textura Aluno: Leonardo de Oliveira Martins leomartins82@gmail.com Rio de Janeiro, 08/05/2007
Introdução Mapeamento de texturas Processo no qual uma imagem (textura) é mapeada em uma superfície tridimensional Vantagem: Realismo Baixo custo adicional Problema: Aliasing
Introdução Aliasing Efeito indesejável ocasionado pela reamostragem de um sinal de alta frequencia em baixas resoluções
Introdução Aliasing Solução Uso de técnicas para remover componentes do sinal com alta frequencia, para que o dispositivo de visualização possa exibi-lo corretamente Filtros de Reamostragem Limitam a banda do sinal
Introdução
Filtro EWA Consiste em um filtro de convolução direta, no qual as calcula diretamente uma média ponderada de amostras da textura Vantagem Performance Baixo custo computacional
Filtro EWA Funcionamento Cada pixel na tela é visto como um círculo de raio >0 O pixel é mapeado no espaço de textura e o círculo torna-se, então, uma elipse Os valores dos texels contidos na elipse são calculados e filtrados como o novo valor do pixel
Objetivo Implementar o filtro EWA (Elliptical Weighted Average) para tentar a redução de aliasing em um mapeamento de textura de um tabuleiro de xadrez
Implementação A implementação pode ser dividida em 1 – Cálculo da elipse 2 – Escolha do filtro 3 – Percorrer a elipse, filtrando os texels 4 – Determinar a cor do pixel
Implementação 1 – Cálculo da elipse E(u,v) = A u^2 + B uv + C v^2 = F onde, (u,v) = (0,0) é o centro da elipse
Implementação A = Vx^2 + Vy^2 B = -2(UxVx + UyVy) C = Ux^2 + Uy^2 F = (Ux^2 + Vx^2) * (Uy^2 + Vy^2) Onde Ux,Uy,Vx,Vy formam o jacobiano da transformação (x,y)->(u,v)
Implementação 2 – Escolha do filtro Filtro Gaussiano
Implementação 3 – Percorrer a elipse, fazendo a filtragem dos texels Se E(u,v)<=F , o pixel está na elipse Então: texel_value_sum = texel_value_sum + h(E(u,v))*texel_value(u,v) weight_sum = weight_sum + h(E(u,v))
Implementação 4 – Determinar a cor do pixel A cor do pixel é a soma dos texels normalizada pela soma dos valores filtrados pixel_color = texel_value_sum/weight_sum Fazer para os três componentes R, G e B
Implementação
Implementação
Referências Paul S. Heckbert, Fundamentals of Texture Mapping and Image Warping, Universaty of California, Berkley, 1989 Paul S. Heckbert, Survey of Texture Mapping. Disponível em www.cse.ucsc.edu/classes/cmps160/Spring05/heckbert_texsurv.pdf