Upload
vukien
View
213
Download
0
Embed Size (px)
Citation preview
Uso de Técnicas Baseadas em Pontos paraVisualização de Horizontes Sísmicos
OrientadorProfessor Marcelo Gattass
Ricardo Szczerbacki
Aprimoramento de Ferramentas em Uso
Visualização de Dados SísmicosImportante ferramenta de prospecção
Visualização Baseada em PontosPotencial para melhor qualidade de resultados
Motivação
Avaliar e Definir Técnicas a Serem Empregadas
Avaliar Resultados da Aplicação do Método
Definir Caminhos para a Implementação Futura
Objetivos
IntroduçãoVisão Geral e ObjetivosSísmica e HorizontesVisualização de Dados SísmicosVisualização Baseada em PontosSurface Splatting
Processo AdotadoOrigem dos DadosOrganização de DadosNormaisIluminaçãoImplementação
Resultados
ConclusãoPróximos Passos
Sísmica de Reflexão
Introdução
fonte deondas sísmicas hidrofones
ondas refletidas
interface entre rochas
fundo do mar
navio-sísmico
2004
P
BG
Visualização Baseada em Pontos – Histórico
Introdução
1979
Csu
ri, A
NIM
A II
1982
Blin
n, A
néis
de
Satu
rno
1983
Ree
ves,
Fuz
zy O
bjec
ts
1985
Levo
y, P
onto
com
o Pr
imiti
va
1990
Wes
tove
r, Sp
latti
ng
2000
Rus
inki
ewic
z, Q
Spla
tZw
icke
r, Su
rfel
s
2001
Zwic
ker,
Surf
ace
Spla
tting
2002
Zwic
ker,
Surf
ace
Spla
tting
Em p
laca
, com
pol
ígon
os
2005
Zwic
ker,
Surf
ace
Spla
tting
EWA
em p
laca
Objetos Complexos Hardware
2007
Wey
rich,
SIG
GR
APH
200
7H
ardw
are
Arc
hite
ctur
e
Um método para visualização de superfícies a partir de nuvens de pontos
Adaptação do filtro EWA (Elliptical Weighted Average) de Heckbert
Publicado por Zwicker et al., no SIGGRAPH de 2001
Surface Splatting
Uso da teoria de processamento de sinais
Considera os pontos como uma amostragem da superfície
Utiliza um filtro de reconstrução para obter a função contínua
Aproxima o mapeamento desta função para o espaço da tela
Utiliza um filtro de passa-baixas para o anti-aliasing
Reamostra a função no espaço da tela
Surface Splatting
Para cada ponto: posição, normal e cor, associada à uma função radialmente simétrica (Gaussiana 2D)
Parametrização local: aproxima a vizinhança de um ponto para um plano
Surface Splatting
Fonte: Zwicker, 2001
Define o filtro de reconstrução, para cada ponto, no espaço parametrizado 2D
Aproxima o mapeamento projetivo do espaço parametrizado 2D para o espaço de tela, para um mapeamento afim
Calcula as contribuições do ponto para os pixels
Consolida as contribuições no frame buffer, gerando o resultado final
Surface Splatting
IntroduçãoVisão Geral e ObjetivosSísmica e HorizontesVisualização de Dados SísmicosVisualização Baseada em PontosSurface Splatting
Processo AdotadoOrigem dos DadosOrganização de DadosNormaisIluminaçãoImplementação
Resultados
ConclusãoPróximos Passos
Conteúdo da Dissertação
Interpretação manual
Dados interpolados e exportados para XYZ
Apenas coordenadas em 3D
Origem dos Dados
Splat: posição, normal, tamanho do splat e cor.
Nenhuma ordem específica necessária
Cálculo de normais Busca por vizinhança
Estruturas usuais: octrees e kd-trees(Park, 2004 / Pajarola 2004)
Organização de Dados
(0,100) (100,100)
(0,0) (100,0)
(5,45)A
(0,0)
(25,35) B
(35,40)C
(50,10)D
(60,75) E (80,65)
F
(80,15) G
(90,5) H
x
y
1 2
5 69
1
1013
Adaptado de Samet, 1989
Octree gera muitos nós vazios, para os dados estudados
Kd-tree é a estrutura escolhida para o trabalho
Kd-tree em GPU, resultados promissoresReal-time KD-tree construction on graphics hardwareKun Zhou et al., SIGGRAPH Asia '08
Organização de Dados
Para pontos rastreados em um volume, como voxels: uso dos dados volumétricos para a obtenção da normal (não usaremos esta abordagem)
Para pontos gerados como superfícies (caso estudado), uso da geometria dos pontos
Cálculo de Normais
Duas principais abordagens (Dey, 2005):
Numérica: otimização com plane fitting, surface fitting, etc
Combinatória: uso de Delaunay / Voronoi
Dey (Eurographics ’05), obteve resultados favoráveis ao plane fitting, para dados como os estudados (em que conhecemos a qualidade previamente)
Plane fitting ponderado foi utilizado no trabalho
Cálculo de Normais
Obtenção da vizinhança através de um algoritmo de kNN, sobre a kd-tree
Cálculo de Normais
Busca de coeficientes do plano (A, B, C, D) que minimizam as distâncias dos pontos ao plano (d1, d2 , d3 , ... ), através de otimização por mínimos quadrados, ponderados pela distância ao ponto central
Quanto maior a distância do ponto ao ponto central (l12, l13 , l14 , ... ), menor o peso no cálculo
Coeficientes lineares do plano (A, B, C) compõem a normal desejada
d =01
d2
d3 d4
d5
l12
A + B + C + D = 0x y z
Cálculo de Normais
Normais geradas, através da técnica apresentada, para pontos de um horizonte sísmico interpretado
Deferred ShadingNormal e cor são ponderados e acumulados
Para cada pixel é calculada a iluminação de cada fragmento (contribuição de um determinado splat) é, ponderadamente, gerada a iluminação final do pixel
Mais precisão no resultado final
Shading por SplatA iluminação é calculada para cada splat, e acumulada com peso associado
Para cada pixel as cores dos fragmentos são ponderadas, pelo seu peso, gerando uma cor final
Menos processamento (melhor performance) e menor qualidade final
Estratégia de Iluminação
Carga do arquivo XYZArquivo texto, contendo unicamente as coordenadas x, y e z, do espaço, é carregado pelo sistema
Criação da kd-treeKd-tree é criada com splats contendo as coordenadas obtidas
Cálculo da normal e do tamanho do splatOs splats são varridos, e para cada splat é consultada uma vizinhança fixa, de 9 splats (o central mais oito)
É calculada a normal da forma já apresentada.efetuado o cálculo descrito para a obtenção da normal e o tamanho do splat é calculado a partir da distância ao vizinho mais próximo
Algoritmo
Surface Splating é implementado em duas passadas por todos os splats
Antes é realizado um pré-processamento
Na 1ª passada é feito o splatting e a rasterização, sendo gerados os fragmentos de cada pixel
Na 2ª passada os fragmentos de cada pixel são consolidados gerando uma cor final
Algoritmo
Identifica se o splat está virado para a câmera
Isto é feito analisando produto escalar da normal do splat pela direção da câmera
A direção da câmera é dada pela diferença entre a posição do splat e a posição da câmera
Algoritmo – 1ª Passada
cos , para ( )
se cos 90 aponta para a câmera ( 0)se cos 90 perpendicular à câmera ( 0)se cos 90 fundo do ( 0)
dir dir dir splat câmera
dir
dir
dir
n c n c c p p
splat n csplat n c
splat n c
pcâmera
psplat
n
n cos
Como queremos enxergar o fundo da superfície, invertemos a normal, caso estejamos vendo o fundo do splat
se ( 0), então dirn c n n
Calcula a matriz de variânciaA cada splat é associado um filtro de reconstrução, no caso uma Gaussiana 2D
Este filtro tem o tamanho e a forma definidos pela matriz de variância
Neste trabalho estamos utilizando um filtro circular e a matriz de variância é definida como:
sendo s o tamanho do splat
Algoritmo – 1ª Passada
V SSs 0
onde, S=0 s
Tr
Vr
Matriz da cônica
A equação implícita de uma cônica com centro na origem é:
Que pode ser reescrita como:
onde é chamada de matriz cônica
A função de base radial pode ser vista como uma cônica, no espaço parametrizado local, que será posteriormente projetada na tela, por aproximação afim
Algoritmo – 1ª Passada
2 22Ax Bxy Cy D
A B xx y D
B C y
QA BB C
Matriz da cônica
A matriz da cônica pode ser obtida invertendo-se a matriz de variância do splat:
Para que seja efetuado o mapeamento projetivo, da cônica, do espaço parametrizado para o espaço de tela, devemos representar em coordenadas homogêneas:
onde F é o tamanho do filtro de reconstrução, que assumimos como 2
Algoritmo – 1ª Passada
1Q Vr
Q
Q
11 12
21 22
Q Q 0Q Q Q 0
0 0 Fh
Mapeamento projetivo
O próximo é o mapeamento projetivo da cônica representada por do espaço parametrizado local, para o espaço de tela
Para criar a matriz M, que representa este mapeamento, é primeiramente obtido o sistema de coordenadas , que representa o espaço parametrizado 2D, definido pelas tangentes ao plano e
é obtido gerando-se um vetor qualquer, perpendicular à normal do splat e é obtido pelo produto vetorial entre a normal e
Algoritmo – 1ª Passada
Qh
ut vtuv
utvt ut
Mapeamento projetivo
, e , a posição do splat, são mapeados do espaço parametrizado, para a tela, utilizando-se as matrizes ModelView e Projection, gerando
, e
A matriz de mapeamento M, pode ser, então, definida como:
A matriz cônica resultante , mapeada para o espaço de tela, é:
Algoritmo – 1ª Passada
' ' '
' ' '
' ' '
Mx y w
x y w
u u u
v v v
x y w
t t t
t t t
p p p
ut vt p'ut 'p'
vt
'Qh
' 1 1Q M Q MT
h h
Aproximação afim
O uso da projeção perspectiva, entretanto, faz com que o kernel do filtro deixe de ser uma Gaussiana, o que tornaria complexa a aplicação do filtro de passa-baixas Gaussiano.
Por isso, o mapeamento de projeção perspectiva é aproximado localmente para um mapeamento afim, para cada splat
Para tal, a cônica representada pela matriz deve ser primeiro transformada em uma cônica central (com centro na origem)
Isto é feito, primeiro, calculando a translação do ponto central da cônica:
Algoritmo – 1ª Passada
'hQ
( , )t tx y
11 22 12 21
' ' ' 'Q Q Q Qh h h hdelta
12 23 22 13
' ' ' 'Q Q Q Qh h h htx
delta
12 13 11 23
' ' ' 'Q Q Q Qh h h hty
delta
onde,
Aproximação afim
Splats com delta > 0 são descartados, pois cálculo é feito apenas com elipses
É aplicada a transformação projetiva na cônica central, que faz com que obtenhamos um mapeamento afim, que não corresponde ao projetivo, mas coincide na curva (elipse)
A matriz final da cônica, com a aproximação afim, com os cálculos mencionado é gerada por:
Algoritmo – 1ª Passada
11 12
33 13 23 21 22
' ''''
' ' ' ' '
Q QFQQ Q Q Q Q
h h
h h t h t h hx y
Aproximação afim
A matriz de variância do filtro de reamostragem pode ser calculada como a soma da matriz de variância do pré-filtro à matriz de variância do filtro de reconstrução com aproximação afim, dado pela inversa de
é calculado no pré-processamento, comoonde pode ser a matriz identidade, uma vez que não queremos maior atenuação de ruídos. E S é a matriz:
Invertendo a matriz de variância obtemos a matriz da cônica do filtro de reamostragem, que representa o splat no espaço da tela
Algoritmo – 1ª Passada
V'Vh
'''Q1' '''V V Qh
1Q V
V
'V SV STh h'Vh Vh
1 0LarguraViewport
S=10
AlturaViewport
Frustum culling
No pré-processamento são calculados os 6 planos de clipping (ponto e normal), no espaço normalizado. Eles correspondem aos 6 planos do frustum,que delimitam a área visível.
Para cada splat mapeado para o espaço normalizado, é verificado, para cada um dos 6 planos, se o splat intersecta o plano, ou se está do lado de fora do mesmo. Neste caso o splat não é incluído na rasterização.
Algoritmo – 1ª Passada
Rasterização
É calculado a bounding box de pixels que contém a elipse na tela, para que seja varrida pixel a pixel calculando o peso
Algoritmo – 1ª Passada
'''22
min
'''22
max
'''11
min
Q F LarguraViewport CentroViewport
Q F LarguraViewport CentroViewport
Q F AlturaViewport CentroViewport
t x
t x
t y
x xdelta
x xdelta
y ydelta
'''11
maxQ F AlturaViewport CentroViewportt yy ydelta
Rasterização
São varridos todos os pixels do bounding box, verificando se o pixel está dentro da elipse, calculando o peso e a cor após a iluminação (caso o shading seja por splat) e gerando um fragmento para cada pixel varrido
Como o peso é determinado pela Gaussiana e a sua aplicação utiliza cálculo de exponencial, uma operação custosa em termos de processamento. E, como sabemos que o domínio da função varia entre 0 e 2 (o tamanho do filtro), foi criada uma tabela com valores calculados previamente no pré-processamento
Algoritmo – 1ª Passada
Consolidação do frame buffer
No trabalho foi utilizado um a-buffer para a acumulação dos fragmentos e posterior geração do frame buffer consolidado
No a-buffer, existe uma lista de pixels da tela, sendo que para cada pixelexiste uma lista de fragmentos associada
O algoritmo varre a lista de pixels e para cada pixel é feita uma ordenação dos fragmentos, do mais próximo ao mais distante
Cada fragmento é acumulado de acordo com o seu peso, gerando uma cor final para o pixel. Caso esteja sendo utilizado deferred shading, para cada fragmento é calculada a iluminação, antes de ser acumulado.
A-buffer, devido ao número irrestrito de fragmentos por pixel, não são apropriadas para otimização em hardware, sendo, neste caso, viáveis outras soluções, como o Z3 (Jouppi, 1999) e k-buffer (Bavoil, 2007),
Algoritmo – 2ª Passada