alberto raposo – puc-rio inf 1366 – computação gráfica interativa eliminação de...
TRANSCRIPT
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Eliminação de Superfícies Escondidas;Anti-Aliasing e Imagens Digitais
Alberto B. Raposo
[email protected]://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm
Alberto Raposo – PUC-Rio
Remoção de Superfícies Escondidas
• Dado conjunto de polígonos, qual é visível em cada pixel (quem está na frente, etc.)?
• Há muitos algoritmos diferentes para isso. 2 grandes classes:– Precisão de objeto: computação opera nas primitivas
– Precisão de imagem: computação opera no nível do pixel
• Pode-se operar em qualquer espaço do pipeline de visualização, pois todos eles mantêm a informação de profundidade
Sequência de transformaçõesdo OpenGL
Alberto Raposo – PUC-Rio
Remoção de Superfícies Escondidas (Visibilidade)
• Determinar a visibilidade dos polígonos antes de enviá-los para placa gráfica (culling):– Back face culling;– View frustum culling;– Occlusion Culling;– Célula / Portal.
Alberto Raposo – PUC-Rio
Desafios• Eficiência – perde-se tempo sobrescrevendo pixels ou
rasterizando coisas que não podem ser visualizadas
• Precisão – resultado precisa ser correto e se comportar corretamente quando a câmera se move
• Em ambientes complexos, poucas coisas são visíveis– Quanto do mundo real é visto a cada instante?
Alberto Raposo – PUC-Rio
Algoritmo do Pintor (Precisão de Imagem)
• Algoritmo:– Escolha uma ordenação para os polígonos baseada
em algum critério (e.g. profundidade de um ponto do polígono)
– Renderize os polígonos nessa ordem, o mais distante primeiro
• Polígonos mais próximos são desenhados sobre os mais distantes
Alberto Raposo – PUC-Rio
Algoritmo do Pintor
prof
undidad
e
z
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Problemas na ordenação de faces
+ +
zazb
(a)
(b)
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Algoritmo do Pintor• Dificuldade:
– Se usado dessa forma, não funciona bem na maioria das geometrias
• Precisa de melhores maneiras de fazer a ordenação dos polígonos
zs
xs
Situações em que não funciona
Que ponto escolher para a ordenação?
Alberto Raposo – PUC-Rio
Algoritmo Z-buffer (Precisão de Imagem)
• Para cada pixel do display, tenha pelo menos 2 buffers– Color buffer: Armazena a cor atual de cada pixel (o que será realmente
mostrado)
– Z-Buffer (ou depth buffer): armazena, para cada pixel, a profundidade do objeto mais próximo até então, a ser desenhado naquele pixel
• Inicialize o Z-buffer com um valor correspondente ao valor de Z mais distante visível (Zmax)
• À medida que um polígono é preenchido, compute a profundidade de cada pixel a ser preenchido– If: profundidade < profundidade armazenada no z-buffer, preencha o
pixel e armazene essa profundidade no z-buffer
– Else: desconsidere o pixel (está atrás de algo que já foi desenhado).
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Z-Buffer: idéia básica
z
MATRIZ DEPROFUNDIDADES
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Z-buffer
• Vantagens:– Simples e hoje em dia implementado em hardware
• O z-buffer é parte do que faz uma placa gráfica ser “3D”
– Computar as profundidades necessárias é simples
• Desvantagens:– Over-renders – pouco eficiente quando há grande
número de polígonos
– Não trata transparência facilmente (precisaria guardar informação sobre polígonos parcialmente cobertos)
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Algoritmo A-buffer (Precisão de Imagem)
• Lida com superfícies transparentes e faz anti-aliasing
• Em cada pixel, mantenha um ponteiro para lista de polígonos ordenado por profundidade e uma máscara de cobertura de sub-pixels para cada polígono– Matriz de bits dizendo que partes do pixel está coberta
• Algoritmo: ao desenhar um pixel:– If: polígono é opaco e cobre o pixel, inserir na lista, removendo
todos os polígonos mais distantes
– If: polígono é transparente ou cobre apenas parte do pixel, inserir na lista, mas sem remover polígonos mais distantes
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Algoritmo A-buffer• Algoritmo: etapa de rendering
– A cada pixel, percorra o buffer usando as cores dos polígonos e as máscaras de cobertura para fazer a composição:
• Vantagem:– Pode fazer mais que o Z-buffer
– Conceito de máscara de visibilidade pode ser usado em outros algoritmos
• Desvantagens:– Não está em hardware, e é lento em software
– No fundo, é z-buffer: mesmo problema de over-rendering
• Porém: usado em ferramentas de renderização de alta qualidade
sobre =
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Subdivisão de Áreas
• Explora a coerência de área: pequenas áreas de uma imagem tendem a ser cobertas por apenas um polígono
• Três casos triviais para determinar o que está na frente em uma região:
1. Um polígono está completamente à frente de qualquer coisa na região
2. Não há superfícies projetadas na região3. Apenas uma superfície está completamente dentro da
região, a corta, ou envolve a região
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Subdivisão de Áreas: Algoritmo de Warnock (Precisão de Imagem)
• Comece com imagem completa• Se um dos 3 casos triviais ocorre, desenhe o que está na
frente• Caso contrário, subdivida a região recursivamente• Se região chegou ao tamanho do pixel, escolha superfície
com menor profundidade• Vantagens:
– Não ocorre over-rendering– Bom anti-aliasing: basta fazer mais uma subdivisão para obter
informação de sub-pixel
• Desvantagem:– Testes são complexos e lentos
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Algoritmo de Warnock
• Casos na imagem ao lado:1) Um polígono à frente2) Vazia3) Um polígono dentro, ao
redor ou cortando a área
2 2 2
2222
2
2
3
3
3
3 33
3
3
3
3
3
333
3
3
1
1 1 11
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
BSP-Trees: Binary Space Partion Trees (Precisão de Objeto)
• Construção da bsp tree– Árvore fornece ordem de renderização
– Árvore “quebra” o mundo 3D com planos• Mundo é quebrado em células convexas
• Cada célula é a interseção de todos os “meio-espaços” dos planos de quebra na árvore
• Também usada em modelagem:– Nem sempre quando se fala em BSP se refere a este algoritmo
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: BSP-Tree
AC
B
2
4
1
3
A
B C
3 2 4 1
-
- -
+
++
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: BSP-Tree
1
23
4
5a5b
3
12
5a
45b
atrásfrente
1
23
4
5a5b
3
45b
atrásfrente
2frente atrás
5a 1
1
23
4
5a5b
3
2
5a 1
4
5b
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Célula / Portal - Conceito
• Em um ambiente fechado, objetos presentes em quartos (células) distantes não podem ser vistos através das paredes (oclusores) e os objetos nos quartos adjacentes são vistos somente através das portas ou janelas (portais).
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Cell-Portal Example (5)
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Célula / Portal – Pré-processamento
• O ambiente deve ser pré-processado para se obter as células e os portais:– Uma forma de se obter essa divisão é através do cálculo
de uma BSP-Tree ou uma k-d Tree;
• Cálculo da Visibilidade:– Calcular o conjunto de objetos potencialmente visíveis
(PVS): Teller / Séquin, Quake;
– Não calcular o PVS: a determinação é feita dinamicamente - Luebke
Alberto Raposo – PUC-Rio
Portais
• Determinar o conjunto potencialmente visível:– A célula onde está o observador mais todas as células adjacentes.
• Luebke e Georges:– Montar o grafo de cena a partir da informação de conectividade;– Percorrendo o grafo, determinar quais células estão visíveis;– Adequado para implementação em grafos de cena: Performer /
OpenSceneGraph
Alberto Raposo – PUC-Rio
Grafo de Cena
Alberto Raposo – PUC-Rio
Resultados
Alberto Raposo – PUC-Rio
Teste de Desempenho (1)
• O desempenho foi amostrado durante um percurso por vários cômodos do modelo 3-D de um apartamento;
• Testes realizados em um P4 2.54 GHz com 3 GB de RAM e uma placa gráfica NVIDIA Quadro FX 1000 128 MB.
Alberto Raposo – PUC-Rio
Teste de Desempenho (2)
Quadros por Segundo
s/ Portais c/ Portais
39 112
Alberto Raposo – PUC-Rio
Teste de Desempenho (3)
Quadros por Segundo
s/ Portais c/ Portais
190 180
Alberto Raposo – PUC-Rio
Teste de Desempenho (4)
Quadros por Segundo
s/ Portais c/ Portais
30 94
Alberto Raposo – PUC-Rio
Propriedades: Células-Portais
• Vantagens– Extremamente eficiente – apenas olha para células que
estão realmente visíveis: visibility culling– Facilmente modificável para visibilidade parcial: renderiza
células parcialmente visíveis e deixa z-buffer fazer o resto– Faz espelhos: crie “célula imaginária” espelhada e
considere o espelho como portal
• Desvantagens– Restrito a ambientes com boa estrutura para células/portais
(ambientes fechados)
Alberto Raposo – PUC-Rio
Anti-Aliasing
Alberto Raposo – PUC-Rio
Aliasing• Ocorre quando a amostragem inerente à renderização não tem
informação suficiente para uma imagem precisa.
Cena original
Luminosidade
Amostragem do centro dos pixels
Sinal amostrado Luminosidade reconstruída
Imagem renderizada
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Efeitos de Aliasing
Jagged Edges(serrilhado)
Perda dedetalhes
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Desintegração de Textura
– O xadrez deveria ficar menor com a distância
– Aliasing os torna maiores ou irregulares
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Algoritmos e técnicas desenvolvidos para combater os efeitos de aliasing
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Linhas desenahdas com algoritmo de Bresenham e polígonos preenchidos possuem bordas serrilhadas
• Como consertar?
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Duas abordagens gerais– Amostragem por área (ou pré-filtragem): considera as primitivas
amostradas como “caixa”(região) (ou Gaussiana, ou…) ao invés de linhas
• Requer primitivas com área (linhas com largura)
• Super-amostragem (ou pós-filtragem): amostra em resolução maior, filtrando depois a imagem resultante– Este é o anti-aliasing mais usado em hardware
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Pré-filtragem
Sem Anti-aliasing
Pré-filtragem
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Unweighted Area Sampling
• Técnica de pós-filtragem– Considere uma linha como tendo
largura
– Considere pixels como pequenos quadrados
– Preencha os pixels de acordo com a proporção do seu quadrado coberto pela linha (intensidade de cor)
1/8
1/8
.914
.914
.914
1/8
1/8
1/4
1/4
1/41/40 0
00
0000
0
0
0
0 0 0
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Super-amostragem (pós-filtragem)
• Amostre em resolução maior que a necessária para o display e depois filtre a imagem– Típico: 4 a 16 amostras por pixel S
– Amostras podem ser em grade uniforme, ou randomicamente posicionadas
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Weighted Sampling
• Ao invés de usar a proporção da área coberta pela linha, use convolução para fazer a amostragem– Equivalente a pré-filtrar a linha e
amostrar o resultado
• Coloque o “filtro” em cada pixel e integre o produto do pixel com a linha
161
81
161
81
41
81
161
81
161
Exemplo de filtro:
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Falando em filtros...
• Imagem: uma função do R2 em C
Alberto Raposo – PUC-Rio
Imagem Colorida
R
G
Bu
v
Alberto Raposo – PUC-Rio
Tons de cinza e negativoLx,y = 0.299Rx,y + 0.587Gx,y + 0.114Bx,y
tons de cinza
Lx,y = 255 - Lx,y
Alberto Raposo – PUC-Rio
Aquisição de imagem digital
• Amostragem
• Quantização
• Codificação
Alberto Raposo – PUC-Rio
Amostragem, quantização e codificação de f(x)
partição do eixo x
x
função originalf(x)
amostra
0
1
2
3
4
5
6
Alberto Raposo – PUC-Rio
codificação = (3, 4, 5, 5, 4, 2, 2, 3, 5, 5, 4, 2)
Amostragem, quantização e codificação de f(x)
0
1
2
3
4
5
6
x
função original
amostraquantizada
f(x)
partição do eixo x
Alberto Raposo – PUC-Rio
Digitalização de Imagens
amostragem
Imagem de tons contínuos
55 55 55 55 55 55 55
55 20 22 23 45 55 55
55 55 10 09 11 55 55
55 55 43 42 70 55 55
55 55 28 76 22 55 55
55 55 55 55 55 55 55
64x54
64x54 - 16 cores
codificação
Imagem amostrada
Imagem amostrada equantizada
5*55, 1*55, 1*20, 1*22, ….
quantização
Imagem amostrada, quantizada e codificada
Alberto Raposo – PUC-Rio
Filtros espaciais
Melhoras na distribuição espacial
Alberto Raposo – PUC-Rio
Suavização
f
h
4
2 11 iii
i
fffh
Alberto Raposo – PUC-Rio
Mascara ou Filtro
4
2 11 iii
i
fffh
1
0)(
n
kiiki fgh
10
14/1
04/2
14/1
10
lse
lse
lse
lse
lse
gl
ou:
Alberto Raposo – PUC-Rio
Convolução
t
t
dtxfxtgxh )()()(
1
0)(
n
kiiki fgh
Alberto Raposo – PUC-Rio
Gaussiana
0.1
0.2
0.3
-4 -3 -2 -1 0 1 2 3 4
2
2
2
2
1)(
x
exG
1214
1 14641
16
1
161520156164
1
Alberto Raposo – PUC-Rio
Gaussiana2
22
2
2
1),(
yx
eyxG
121
242
121
16
1
14741
41626164
72641267
41626164
14741
273
1
0.1
0.2
0.3
0.4
0.1
0.2
0.3
0.4
Alberto Raposo – PUC-Rio
Filtragem gaussiana
Alberto Raposo – PUC-Rio
Filtro Gaussiano
121
242
121
16
1
Alberto Raposo – PUC-Rio
Detecção de bordas
2/)( 11'
iii fff
0)2(0
0)2(2
11
1111''
iii
iiiiiii
fffse
fffseffff
f(x)
|f '(x)|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|f ''(x)|
Alberto Raposo – PUC-Rio
Detecção de bordas
yf
xf
yxf ),(Gradiente
Laplaciano 2
2
2
22 ),(
y
f
x
fyxf
Alberto Raposo – PUC-Rio
Filtros de realce de bordas
010
141
010Laplaciano
000
010
100
000
010
001
101
202
101
4
1
121
000
121
4
1
Vertical Horizontal
Roberts
Sobel
Gradiente
Alberto Raposo – PUC-Rio
Exemplo de detecção de arestas
RGB cinza Laplaciano
Alberto Raposo – PUC-Rio
Filtragem
121
242
121
16
1
filtrogaussiano
010
141
010
filtro laplaciano
LL 255BGRL 11.059.030.0
Alberto Raposo – PUC-Rio
Informações Adicionais
• Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002.
• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995.
• D. F. Rogers, Procedural Elements for Computer Graphics, McGraw-Hill, 1988.
• Marcelo Gattass: notas de aula. http://www.tecgraf.puc-rio.br/~mgattass/cg.html
• Portais: Silva, R. J. M., Wagner, G. N., Raposo, A. B., Gattass, M. Experiência de Portais em Ambientes Arquitetônicos Virtuais. VI Symposium on Virtual Reality - SVR 2003, p.117-128. Ribeirão Preto, SP, Brazil. 2003.