térfogatvizualizáció

47
Térfogatvizualizáció Térfogatvizualizáció Szirmay-Kalos László

Upload: dasan

Post on 08-Jan-2016

24 views

Category:

Documents


0 download

DESCRIPTION

Térfogatvizualizáció. Szirmay-Kalos László. Térfogati modellek (skalár mezők). 3D tér pontjaiban egy skalár érték. v ( x,y,z ). v ( x,y,z ). z. y. x. Skalár: hőmérséklet, sűrűség nyomás, potenciál, … Származás: Euler-i szimuláció, Rekonstrukció (tomográfia). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Térfogatvizualizáció

TérfogatvizualizációTérfogatvizualizáció

Szirmay-Kalos László

Page 2: Térfogatvizualizáció

Térfogati modellek Térfogati modellek (skalár mezők)(skalár mezők)

3D tér pontjaiban egy skalár érték

• Skalár: hőmérséklet, sűrűség nyomás, potenciál, …• Származás: Euler-i szimuláció, Rekonstrukció (tomográfia)

tárolás: 3D textúravagy „voxel tömb”

x

y

z

v(x,y,z)

v(x,y,z)

Page 3: Térfogatvizualizáció

Térfogati modell megjelenítéseTérfogati modell megjelenítése Megjelenítés fényszóró anyag (participating media)

analógiáját felhasználva (belsejébe belelátunk)

Adott szintfelület kiemelése (külsőt lehámozzuk)

Transzferfüggvény

Sűrűség + deriváltak

v

grad v

Optikai paraméterek

Képszintézis

Kép

Hesse

Page 4: Térfogatvizualizáció

Fényszóró Fényszóró kközegözeg

Albedo a: a nem-elnyelődés valószínűsége feltéve, hogy az ütközés bekövetkezett

Fekete test: albedo = 0

dsA=1

Hatáskeresztmetszet,alias kioltási tényező

·ds = P(ütközés)

Page 5: Térfogatvizualizáció

Sugársűrűség Sugársűrűség változásaváltozása

ds

L(s)

s

L(s+ds)

L(s+ds)= L(s) – L(s)·(s)·ds + Le(s)·ds + (s)·a(s)·ds·f(‘,)Li(‘)d‘

// Kiszóródás+abszorbció// Emisszió

// Beszóródás

dL(s)/ds = –L(s)·(s) +Le(s)+Linscatter(s)

Megoldás fényelnyelő közegre (emisszió és beszóródás nincs): L(s)= L(0)·exp(–

s (s)ds)

Page 6: Térfogatvizualizáció

SzóródásSzóródás

cos11

1'

2

cmEE

E

e

Érkezőfoton

Szóródottfoton

z

x

y

φ

ütközésE

E’Klein-Nishina:

Compton formula:

2

23

sin'''

)(E

E

E

E

E

ECP

Rayleigh:

2cos1)( CP

Page 7: Térfogatvizualizáció

Sugár masírozás (ray marching)Sugár masírozás (ray marching)

L(s + s) L(s)

C(s)(s)

L(s+s) = L(s) – L(s)·(s)·s + (Le(s) + Linscatter(s))·s

s

opacitás hozzájárulás

L(s+s) = (1 – (s)) · L(s) + C(s)

átlátszóság

L(0)

Megoldás: dL(s)/ds = –L(s)·(s) +Le(s)+Linscatter(s)

Page 8: Térfogatvizualizáció

Back-to-front ray marchingBack-to-front ray marching

L = L0;for(s = 0; s < T; s += s) {

L = (1 – (s)) · L + C(s);}

C(s), (s))

s=0

L(s+s) = (1 – (s)) · L(s) + C(s)

Page 9: Térfogatvizualizáció

Front-to-back ray marchingFront-to-back ray marching

L* 0;for( s T; s >0 ; s s ) {

L* + (1 ) · C(s);(1 ) ·

((s));if (break;

}

L*(s)

(s)

L*(ss)=L*(s)+(1 (s)) · C(s)(ss)=((s)) · ((s))

Page 10: Térfogatvizualizáció

Voxel szín és opacitás: Voxel szín és opacitás: Transfer func: (Transfer func: (C,C,)=)=TT((v függvv függv)·)·ss Röntgen: (C,)=T(v(x,y,z))·s

– opacitás = v(x,y,z)·s– L(0) = I, egyébként C(s)=0

Klasszikus árnyalási modellek– opacitás: v osztályozása– C = árnyalási modell (diffúz + Phong)

normál = grad v opacitás *= | grad v |

Magasabb rendű derivált (görbület) Transzlucens anyagok (subsurface scattering)

grad v

Page 11: Térfogatvizualizáció

((C,C,) = ) = TT((vv))··ss

pow(v/vmax, aexp)·sC = HLS((v/vmax+rot)·360, 0.5, 1)·s

Page 12: Térfogatvizualizáció

Klasszikus BRDF modellekKlasszikus BRDF modellek

Csont : 1, másé 0

v két osztályba: kék-átlátszó, sárga-átlátszatlan

Csont =1, másé=0 Hús =1, másé=0

First hit ray casting:Diffúz+Phong árnyalás

Page 13: Térfogatvizualizáció

Illusztratív vizualizációIllusztratív vizualizáció

Page 14: Térfogatvizualizáció

Illusztratív vizualizációIllusztratív vizualizáció

Page 15: Térfogatvizualizáció

Transzlucens megjelenítésTranszlucens megjelenítés

Felező vektor

Page 16: Térfogatvizualizáció

Transzlucens megjelenítésTranszlucens megjelenítés

Page 17: Térfogatvizualizáció

SzintvonalSzintvonal, szintfel, szintfelületület

Page 18: Térfogatvizualizáció

Marching cubesMarching cubes

v(x,y,z) < szint

v(x,y,z) > szint

0

1

4

2

3

5

6

7

Eset: 000011102 =14

2; 0-1; 0-3; 2-6; 0-3; 3-7; 2-6 14

0;

14

0

255 0;

Page 19: Térfogatvizualizáció

Masírozó kockákMasírozó kockákSzintérték = 110

Szintérték = 60

Page 20: Térfogatvizualizáció

First hit (isosurface) ray castingFirst hit (isosurface) ray casting

normal = grad v

v(x,y,z) > szint

v(x,y,z) < szint

Page 21: Térfogatvizualizáció

GPU GPU first hit first hit ray-castingray-casting

Egység kocka 3D textúrával

eyelookat

right up

p = lookat + X right + Y up

X, Y in [-1,1]

pqentryexit

v(x,y,z)

Page 22: Térfogatvizualizáció

CCPU PU first hit first hit ray-castingray-casting

For each pixel Find pixel center p raydir = normalize(p – eye); Find exit and entry for(t = entry; t < exit; t+=dt) { q = eye + raydir * t;

if (volume[q] > isovalue) break; } normal vector estimation; illumination}

Full screen quadInterpolation from the corners

central differences

Page 23: Térfogatvizualizáció

GPU GPU Isosurface ray-castingIsosurface ray-casting

CPU program

Vertex shader

Pixelshader

Verticesof thewindow quad

hpos=fullscreentextcoords

volumeeye, isolevel, material/light properties

RasterizationInterpolation

Volume

ray/window

Ray casting

Page 24: Térfogatvizualizáció

CPU program - OpenGL displayCPU program - OpenGL displayvoid Display( ) {

// PASS: non uniform parameters glBegin( GL_QUADS ); Vector p = lookat - Right + Up; glTexCoord3f(p.x, p.y. p.z); glVertex3f(-1, 1, 0);

p = lookat - Right - Up; glTexCoord3f(p.x, p.y. p.z); glVertex3f(-1, -1, 0);

p = lookat + Right - Up; glTexCoord3f(p.x, p.y. p.z); glVertex3f(1, -1, 0);

p = lookat + Right + Up; glTexCoord3f(p.x, p.y. p.z); glVertex3f(1, 1, 0); glEnd();}

Full screen quadCamera window as texture coordinates

Page 25: Térfogatvizualizáció

Ray castingRay casting: vertex: vertex shadershader

void VertexShader( in float4 hPosIn : POSITION, in float3 wPosIn : TEXCOORD0,

out float4 hPosOut : POSITION, out float3 wPosOut : TEXCOORD0 ) {

hPosOut = hPosIn; wPosOut = wPosIn;}

Page 26: Térfogatvizualizáció

void FragmentShader( in float3 p : TEXCOORD0, // point on window uniform float3 eye, uniform sampler3D volume, // voxels

uniform float isolevel,uniform float3 lightdir, lightint, kd out float3 color : COLOR )

{ float3 raydir = normalize(p – eye); float3 t0 = (float3(0,0,0)-eye)/raydir; float3 t1 = (float3(1,1,1)-eye)/raydir; float3 ti = min(t0, t1); float3 to = max(t0, t1); float entry = max(max(ti.x, ti.y), ti.z); float exit = min(min(to.x, to.y), to.z); color = float(0, 0, 0); bool found = (exit <= entry);

cont’d…

Ray castingRay casting: : fragment shaderfragment shader

0 1

0

1t0.x

t1.x

t0.y

t1.y

ti.xto.x

ti.yto.y

Page 27: Térfogatvizualizáció

Ray castingRay casting fragment shader cont’dfragment shader cont’d if ( !found ) { float3 q, normal;

float dt = (exit – entry) / STEPS;for(t = entry; t < exit; t += dt) {

if ( !found ) { q = eye + raydir * t; if (tex3D(volume, q).r > isolevel) found = true; }

} if ( found ) {

normal.x = tex3d(volume, q + float3(1/RES,0,0)) – tex3d(volume, q - float3(1/RES,0,0));

normal.y = tex3d(volume, q + float3(0,1/RES,0)) – tex3d(volume, q - float3(0,1/RES,0));

normal.z = tex3d(volume, q + float3(0,0,1/RES)) – tex3d(volume, q - float3(0,0,1/RES)); normal = normalize( normal );

color = lightint * kd * max(dot(lightdir, normal), 0); } }}

q

Page 28: Térfogatvizualizáció

TomográfiaTomográfia

L(s)= L(0)·exp(–(s)ds)(s)ds = – log(L(s)/L(0))

L(s)= Le(s)ds

Abszorpciós Emissziós

LOR

Page 29: Térfogatvizualizáció

X-ray Computed TomographyX-ray Computed Tomography

sugarak

Detektorok

X-ray forrás(CRT)

Forgatás

Page 30: Térfogatvizualizáció

Mediso NanoPETMediso NanoPET/CT/CT

Page 31: Térfogatvizualizáció

Bigger boys need big toys: Bigger boys need big toys: AnyScan PET/CTAnyScan PET/CT

Page 32: Térfogatvizualizáció

Tomográfiás rekonstrukcióTomográfiás rekonstrukció

Page 33: Térfogatvizualizáció

Szűrt visszavetítés Szűrt visszavetítés (FBP(FBP==Filtered backprojection)Filtered backprojection)

Mérés + Visszavetítés

w(x,y)=w(r) 1/ri(x,y)=(x,y)

w(x,y) dxdy=2Rw(r) rdrd=

=2 Rw(r)r dr R

R kör:

Súlyfüggvény:

Korrekció Fourier térben:

o(x,y)=i(x,y) w(x,y) FxFy o[x,y] = FxFy i[x,y]FxFyw[x,y]

1/| |FxFy i[x,y] = FxFy o[x,y] | |

dr

rd

r

Rámpa szűrő

Page 34: Térfogatvizualizáció

ZajZaj!!

2

01

Becsapódások véletlen események! Emissziós tomográfia: Poisson eloszlás

ed

dPd

!}{

Nagy számok törvénye?

Page 35: Térfogatvizualizáció

Algebrai visszavetAlgebrai visszavetítésítés

v1 v2

v3 v4

d1 = A11v1 +A13v3

d2

d3

d4

Lin egyenlet (V<D): d = A v, d = [d1,..., dD]

v = [v1,..., vV]

Moore féle pseudo-inverz:

AT d = ATA v

v = (ATA)-1AT d = A+ d

(D) (D×V) (V)

(V×D) (D)(V×V)

Page 36: Térfogatvizualizáció

Expectation MaximizationExpectation Maximization

Mi a v ha tudjuk d-t?

Aktivitás: vVéletlen mérési

folyamateredmény: d

Amelyik éppen a mérési eredményt maximálja P(d|v)• Likelihood maximalizálás: logP• Előny: a mérés statisztikai modelljét is figyelembe veszi

Page 37: Térfogatvizualizáció

PET: iteratív sémaPET: iteratív séma

yxA

L LV

nVV LV

LL LV

nV

nV A

xAy

A

xx)(

' ')()1(

LOR L

voxel VLVA : annak valószínűsége,

hogy a V voxelben bekövetkezett bomlást az L LOR detektálja

Poisson és pozitivitási kényszer

Page 38: Térfogatvizualizáció

Iteratív sémaIteratív séma

Skalármező

Skalármező korrekciója

Projekció

Összevetés a mért értékekkel

Page 39: Térfogatvizualizáció

Inverz problémákInverz problémák

Ill-posed: nincs megoldás vagy nem egyértelmű. Nem ismerjük n-et (zaj). Közelítő megoldásokból melyik (zaj hatása)? Plusz információ bevitele: regularizáció

nyyx ~)(f ...x

Beütések száma a detektorokban

Aktivitás eloszlás

Projekció(Tomográf)

Page 40: Térfogatvizualizáció

Megoldási sémákMegoldási sémák

Algebrai Valószínűségi

yx )(min f )|(logmax xyP

2-es norma

Kullback-Leibler divergencia

y Gauss eloszlású

y Poisson eloszlású

Page 41: Térfogatvizualizáció

OverfittingOverfitting

x y~

f y

1f

Page 42: Térfogatvizualizáció

RegularizációRegularizáció

R(x) „rossz” megoldásoknál nagy, „jó” megoldásoknál kicsi (tökéletes megoldást ne büntesd, de nem ismerjük), konvex függvény. – Teljes variáció (TV):

)()|(logmin xxy RP

LikelihoodZajos megoldások

büntetéseRegularizációs

paraméter

vvxxRV

d)()(

x

dttf )('

Page 43: Térfogatvizualizáció

PETPET

Line Of Response (LOR)

P

e-

e+ PN

Page 44: Térfogatvizualizáció

Nincs szóródásNincs szóródás32

4×31

5×31

5 v

oxel

s

Page 45: Térfogatvizualizáció

Positron rangePositron rangeN

élküleV

ele

Page 46: Térfogatvizualizáció

Szóródás a testbenSzóródás a testben

Nélküle Vele

Page 47: Térfogatvizualizáció

Szóródás a detektorban …

+ scatteringin detectors

With

324×315×315 resolution

3382 x 845 res<0.1 mm voxels