Princípios Básicos de Imageamento Volum étrico com uso
de GPUParadigma orientado ao espaço de objetos
Engel et al. – Capítulo 3
IA369E – 2s2011 - Ting
Imageamento 3D Direto
http://http.developer.nvidia.com/GPUGems/gpugems_ch39.html
IA369E – 2s2011 - Ting
Desafio
GPU: arquitetura orientada aoimageamento de superfícies
X
Imagem = campo escalar 2D
IA369E – 2s2011 - Ting
– Funções ou imagens que alteram os atributos de umafigura geométrica. Tal função ou imagem é chamada de mapa de textura.
Mapa de textura Espaço do Objeto Espaço da imagem
F(s,t) Projeção
pixel
texel
Pré-imagem de pixel
Texturização
IA369E – 2s2011 - Ting
2D e 3D Texturizaçãohttps://www.siggraph.org/education/materials/HyperGraph/mapping/r_wolfe/r_wolfe_mapping_1.htm
IA369E – 2s2011 - Ting
Espaço de Textura em GPU
Texel = texture element
IA369E – 2s2011 - Ting
Espaço de Textura ���� Espaço de Objeto
IA369E – 2s2011 - Ting
Interpolação
px
1-x
p0
p1
linear bilinear trilinear
IA369E – 2s2011 - Ting
Interface OpenGL para Texturização
http://www.nullterminator.net/gltexture.html
Exercício: Analise e rode os códigos disponíveis no link acima
IA369E – 2s2011 - Ting
Multitexturização
http://tfpsly.free.fr/english/3d/multitexturing.html
http://www.clockworkcoders.com/oglsl/tutorial8.htm
IA369E – 2s2011 - Ting
Dados Volum étricos
Campo escalar 3D � Campo escalar 2D
Sequência de campos escalares 2D + Composição � Campo escalar 2D
IA369E – 2s2011 - Ting
Paradigma baseado em Textura 2D
Pilha de fatiasretangularestexturizadas
Fatias compostas
composição
Pilha de imagens 2D alinhadas
Texturizaçãode “proxy geometry”
Decomposiçãoem primitivasgeométricasrenderizáveis
IA369E – 2s2011 - Ting
Fatias alinhadas aos eixos
(Proxy Geometry)Fatias alinhadas
com o eixo de maiorvariação no espaço
de objeto
Mapear espaçode textura
no espaço de objeto
Coordenadasde textura
fatia
IA369E – 2s2011 - Ting
Projeção
y
zx
Plano de imagem
Direção de projeção
Texturas 2D
IA369E – 2s2011 - Ting
Influência de dop
y
z
y
z
y
z
IA369E – 2s2011 - Ting
Texturas 2D em 3 orientações
xy
zxyxz
yz
Escolha da orientação dos dados conforme a direção de projeçãomelhor qualidade de imagem x maior custo de memória
dop
dop
dop
xy
z
xy
z
IA369E – 2s2011 - Ting
Orientação dos dados volum étricos
x
y
z
u
v
ndop = (0,0,-1,0)
VRC
MRI reference
=⇒
33323130
23222120
13121110
03020100
:
aaaa
aaaa
aaaa
aaaa
MMRIVRC MRIreference
dop em MRIreference:
−−−−
=
−=
23
22
21
20
0
1
0
0
a
a
a
a
Mdop MRIMRI
IA369E – 2s2011 - Ting
Composição
dsesqeIDI
D
s
o
D
s
dttD
s
dtt ∫+
∫=
−−
∫)()(
0 )()( 0
κκ
discretizando
∑ ∏= +=
−=n
i
n
ijjji xxTcDI
0 11 ),()( )( 00 xIc =
0),( 21 =++ nn xxT
nnnn
n
cxxTxI
xIDI
+==
−− ),()(
)()(
11
Cor associada
IA369E – 2s2011 - Ting
Fluxos de Composição
front-to-back
back-to-front
Exercício: São iguais os resultados?
destdestsrcdest CACC +−= )1(
)1( srcdestsrcdest ACCC −+=
glBlendFunc (GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
glBlendFunc (GL_ONE_MINUS_DST_ALPHA,GL_ONE);
destdestsrcdest AAAA +−= )1(
É necessário Alpha buffer
É necessário percorrertodos os voxels
IA369E – 2s2011 - Ting
Cor associada ou não-associada?)1( srcdestsrcdest ACCC −+= )1( srcdestsrcsrcdest ACACC −+=
glBlendFunc (GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
glBlendFunc (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
IA369E – 2s2011 - Ting
Projeção de Intensidade Máxima (MIP)
)))((max)),(()),(()),((()(],0[
tsftsftsftsfpI ATt
BGR ∈=
ou
)))(())),(()),(()),(((max()(],0[
tsftsftsftsfpI ABGRTt∈
=
))(max()(],0[
tsfpITt∈
=
ou
IA369E – 2s2011 - Ting
MIP
http://tomographyblog.com/category/uncategorized/page/2/
Há perda de informação de profundidade
IA369E – 2s2011 - Ting
Algoritmo
• Desabilitar depth test; Habilitar blending;• Para cada textura 2D:
– Carregar a textura na memória– Definir a geometria de um polígono (proxy geometry)– Associar a cada um dos 4 vértices do polígono
coordenadas da textura– Gerar a imagem e interpolá-la com a existente em
framebuffer utilizando o fator de opacidade Ti
http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node182.html
IA369E – 2s2011 - Ting
Otimização• Uso de vertex shader para computar as fatias on-the-fly.
0v
1v
v
10)1( vvv αα +−=
α
IA369E – 2s2011 - Ting
Vantagens e desvantagens
• Vantagens– Simplicidade– Suporte por GPUs
• Desvantagens– Aliasing– Flickering– Demanda de memória
(offscreen rendering)
Exercício: Explique e exemplifique os artefatos.
IA369E – 2s2011 - Ting
Artefatos•Aliasing: Baixa resolução + transições abruptas em tonalidades
•Flickering: chaveamento entre as pilhas
IA369E – 2s2011 - Ting
Paradigma baseado em Textura 3D
ComposiçãoCompor os
fragmentos do framebuffer com os
fragmentoscorrespondentes à
nova fatia
(Proxy Geometry)Fatias alinhadascom a direção de
projeção no espaçode objeto
Mapear sub-espaço de textura3D em cada fatia
do proxy geometry
IA369E – 2s2011 - Ting
Amostragem
Taxa de amostragemconsistente para todos os raios
de visão
Taxa de amostragem variacom a direção dos raios de
visão
IA369E – 2s2011 - Ting
Geometry Set-up
Proxy geometry pode assumir qualquerforma geométrica!� Planos paralelos aoplano de imagem
Como obter a geometria dos planos?
IA369E – 2s2011 - Ting
Interseção Plano- Box
IA369E – 2s2011 - Ting
Interseção Plano- Box• Determinar interseções λλλλ entre plano (nP,d) e arestas (ei=vj-vi)
do box
• Remover interseções fora dos intervalos válidos ([0,1]);• Ordenar os pontos válidos no sentido anti-horário ou horário.
Uso de edge flags
)(
)(
ijP
iP
vvn
vnd
−••−=λ
0p
2p
1p
3p
(top,bottom,left,right,front,back)
010010
010100
100010
100100
3
2
1
0
====
p
p
p
p
ORAND
Exercício: Complete o algoritmo.
Exercício: Mostre que a expressão está correta.
IA369E – 2s2011 - Ting
Implementação em vertex shader• Determinar interseções λλλλ entre plano (nP,d) e arestas (ei=vj-vi) do
box
• Remover interseções fora dos intervalos válidos ([0,1]);
• Ordenar os pontos válidos no sentido anti-horário ou horário. (Obs.: Vertex shader não altera a topologia dos vértices.)
)(
)(
ijP
iP
vvn
vnd
−••−=λ
0v
7v
0p
2p
4p
1p
3p
5p
Exercício: Reescrever o procedimento explicadonas Seções 3.5.2 e 3.5.3 no formato de um algoritmo.
IA369E – 2s2011 - Ting
Texture Set-up• Requer uma área de memória maior: textura 3D• Potenciais problemas:
– Espaço na memória de vídeo
• GL_MAX_TEXTURE_SIZE• OpenGL suporta proxy texture• http://www.opengl.org/resources/faq/technical/texture.htm
– Contorno da falta de espaço � bricking �interpolação
brickschuncks
IA369E – 2s2011 - Ting
Vantagens e desvantagens• Vantagens
– Interpolação trilinear– Flexível taxa de amostragem
• Consistente taxa de amostragem para projeções paralelas
– Menor demanda de memória (somente 1 pilha de fatias)
• Desvantagens– Proxy geometry pode assumir formas complexas– Maior complexidade no gerenciamento de memória
de vídeo– Sobrecarga de processador de fragmentos (…
problema ultrapassado!)
IA369E – 2s2011 - Ting
Textura 0
Textura 1
Textura 2D� bilinear
Entre 2 texturas � linear
Paradigma baseado em Multi-textura 2D
IA369E – 2s2011 - Ting
Algoritmo
• CPU– Para cada fatia i:
• Ativar Textura 0 e Textura 1• Desenhar o proxy polígono da fatia i com uma textura 3D,
associando cada vértice a um texel de 3 coordenadas
• Atualizar a coordenada da fatia
• GPU (fragment shader)– Acessar o texel tex0 de coordenada (x,y) na Textura 0
– Acessar o texel tex1 de coordenada (x,y) na Textura 1
– Interpolar linearmente os dois texels com a distância do texel emrelação à fatia i-1.
IA369E – 2s2011 - Ting
Vantagens e desvantagens
• Vantagens em relação a textura 2D– Interpolação trilinear– Consistente taxa de amostragem para projeções
paralelas• Vantagens em relação a 3D
– Menor complexidade no gerenciamento de memóriade vídeo
IA369E – 2s2011 - Ting
Uma Implementação
http://www.cs.princeton.edu/~cdecoro/volview/
Top Related