S. Chenney, Univ. of Wisconsin - PUC-Rio

Propaganda
INF 1366 – Computação Gráfica Interativa
Eliminação de Superfícies Escondidas;
Anti-Aliasing e Imagens Digitais
Alberto B. Raposo
[email protected]
http://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ções
do 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
z
Alberto Raposo – PUC-Rio
M. Gattass, PUC-Rio
Problemas na ordenação de faces
(b)
(a)
+
+
za
Alberto Raposo – PUC-Rio
zb
M. Gattass, 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
Que ponto
escolher
para a
ordenação?
xs
Alberto Raposo – PUC-Rio
Situações em que
não funciona
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).
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Z-Buffer: idéia básica
z
MATRIZ DE
PROFUNDIDADES
Alberto Raposo – PUC-Rio
M. Gattass, 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:
=
sobre
• 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
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ão
3. Apenas uma superfície está completamente dentro da
região, a corta, ou envolve a região
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
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
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Algoritmo de Warnock
2
3
3
2
3
3
2
3
3
3
1
3
2
3
2
Alberto Raposo – PUC-Rio
1) Um polígono à frente
2) Vazia
3) Um polígono dentro, ao
redor ou cortando a área
3
3
2
Casos na imagem ao lado:
3
1
1 1 1
3
•
2
3
3
3
2
2
S. Chenney, Univ. of Wisconsin
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
A
C
4
A
-
3
+
C
B
-
B
1
3
+
-
+
2
4
1
2
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: BSP-Tree
5a
3
5b
frente
2
atrás
1
2
5a
3
1
4
4
5b
3
5a
frente
5b
2
2
frente
3
1
atrás
4
5b
1
5a
4
atrás
3
5a
5b
2
2
4
3
1
4
Alberto Raposo – PUC-Rio
5a
1
5b
M. Gattass, 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
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Exemplo: Célula-Portal
View
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Exemplo: Célula-Portal
View
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Exemplo: Célula-Portal
View
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Cell-Portal Example (5)
View
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Exemplo: Célula-Portal
View
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
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
39
c/ Portais
112
Alberto Raposo – PUC-Rio
Teste de Desempenho (3)
Quadros por Segundo
s/ Portais
190
c/ Portais
180
Alberto Raposo – PUC-Rio
Teste de Desempenho (4)
Quadros por Segundo
s/ Portais
30
c/ Portais
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
ACM SIGGRAPH Educator’s Slide Set
Aliasing
• Ocorre quando a amostragem inerente à renderização não tem
informação suficiente para uma imagem precisa.
Cena original
Luminosidade
Alberto Raposo – PUC-Rio
Amostragem do centro dos pixels
Sinal amostrado
Imagem renderizada
Luminosidade reconstruída
Efeitos de Aliasing
Jagged Edges
(serrilhado)
Perda de
detalhes
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
Desintegração de Textura
– O xadrez deveria ficar menor com a distância
– Aliasing os torna maiores ou irregulares
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
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?
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
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
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
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)
0
0
0
0 1/4
0 1/4
1/8
.914
0
1/8
0
.914
1/8
.914
0
1/8
1/4
0
1/4
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
Alberto Raposo – PUC-Rio
S. Chenney, Univ. of Wisconsin
Exemplos de Anti-aliasing
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
Exemplos de Anti-aliasing
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
Exemplos de Anti-aliasing
Alberto Raposo – PUC-Rio
ACM SIGGRAPH Educator’s Slide Set
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
1
1
Exemplo de filtro: 
16
8
1 1
8 4
1
1

 16 8
Alberto Raposo – PUC-Rio
1
16
1
8
1
16




S. Chenney, Univ. of Wisconsin
Falando em filtros...
• Imagem: uma função do R2 em C
Alberto Raposo – PUC-Rio
Imagem Colorida
v
G
R
Alberto Raposo – PUC-Rio
u
B
Tons de cinza e negativo
Lx,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)
f(x)
6
função original
5
4
amostra
3
2
1
0
x
partição do eixo x
Alberto Raposo – PUC-Rio
Amostragem, quantização e
codificação de f(x)
f(x)
função original
6

5

4
3







2

amostra
quantizada



1
0
x
partição do eixo x
codificação = (3, 4, 5, 5, 4, 2, 2, 3, 5, 5, 4, 2)
Alberto Raposo – PUC-Rio
Digitalização de Imagens
64x54
amostragem
Imagem de tons
contínuos
Imagem amostrada
quantização
5*55, 1*55, 1*20, 1*22, ….
Imagem amostrada,
quantizada e codificada
Alberto Raposo – PUC-Rio
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 - 16 cores
codificação
Imagem amostrada e
quantizada
Filtros espaciais
Melhoras na distribuição espacial
Alberto Raposo – PUC-Rio
Suavização
f
h
hi 
Alberto Raposo – PUC-Rio
f i 1  2 f i  f i 1
4
Mascara ou Filtro
f i 1  2 f i  f i 1
hi 
4
ou:
hi 
n 1
g
k 0
Alberto Raposo – PUC-Rio
(k i )
fi
se l  1
0
1 / 4
se l  1


g l  2 / 4 se l  0
1 / 4 se l  1


se l  1
0
Convolução
hi 
n 1
g
k 0
t 
h( x ) 
fi
 g (t  x) f ( x)dt
t  
Alberto Raposo – PUC-Rio
( k i )
Gaussiana
G ( x) 
0.3
1
e
2 

0.2
0.1
-4
-3
1
1
4
-2
2
Alberto Raposo – PUC-Rio
-1
0
1
1
1
64
1
1
1
16
6
15
20
2
3
4
4
6
4
15
6
1
1
x2
2
2
Gaussiana

1
e
2 
G ( x, y ) 
x2  y2
2
2
0.4
0.3
0.2
0.1
1
1 
2

16

1
2
4
2
Alberto Raposo – PUC-Rio
1
2

1

1
4
1 
7
273 
4

1
4
7
4
16
26
16
26
16
41
26
26
16
4
7
4
1
4

7

4
1

Filtragem gaussiana
Alberto Raposo – PUC-Rio
Filtro Gaussiano
1
1 
2
16 

1
Alberto Raposo – PUC-Rio
2
4
2
1
2

1

Detecção de bordas
f(x)
|f ''(x)|
|f '(x)|
1
f
''
i
2
3
f
'
4
i
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20 21
 ( f i 1  f i 1 ) / 2
 f i 1  2 f i  f i 1

0
Alberto Raposo – PUC-Rio
se ( f i 1  2 f i  f i 1 )  0
se ( f i 1  2 f i  f i 1 )  0
Detecção de bordas
Gradiente
 f




x
f ( x, y )   f




y


Laplaciano
2 f
2 f
 f ( x, y ) 

2
x
y 2
Alberto Raposo – PUC-Rio
2
Filtros de realce de bordas
Gradiente
Roberts
Sobel
Laplaciano
Alberto Raposo – PUC-Rio
Vertical
Horizontal
0
0


0
0
1
0
 1
0

0

1
1
2
4

1
0
0
0
 1
 2

 1

0
 1


0
1
4
1
0
 1

0

 1
0


0
 1
1
0

4

1
0
1
0
2
0
2
0
0

0

 1
0

1

Exemplo de detecção de arestas
RGB
Alberto Raposo – PUC-Rio
cinza
Laplaciano
Filtragem
L  255  L
L  0.30R  0.59G  0.11B
filtro
gaussiano
1 2 1
1 
2 4 2


16


1
2
1


Alberto Raposo – PUC-Rio
filtro
laplaciano
 0 1 0 
 1 4  1


 0  1 0 
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.pucrio.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.
Alberto Raposo – PUC-Rio
Download