19
Princípios Básicos de Imageamento Volumétrico com uso de GPU Paradigma 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

Imageamento 3D Direto - dca.fee.unicamp.br · GPU: arquitetura orientada ao ... Vantagens e desvantagens • Vantagens – Simplicidade ... cdecoro/volview

Embed Size (px)

Citation preview

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/