Download - Térfogatvizualizáció
![Page 1: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/1.jpg)
TérfogatvizualizációTérfogatvizualizáció
Szirmay-Kalos László
![Page 2: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/2.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/3.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/4.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/5.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/6.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/7.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/8.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/9.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/10.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/11.jpg)
((C,C,) = ) = TT((vv))··ss
pow(v/vmax, aexp)·sC = HLS((v/vmax+rot)·360, 0.5, 1)·s
![Page 12: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/12.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/13.jpg)
Illusztratív vizualizációIllusztratív vizualizáció
![Page 14: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/14.jpg)
Illusztratív vizualizációIllusztratív vizualizáció
![Page 15: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/15.jpg)
Transzlucens megjelenítésTranszlucens megjelenítés
Felező vektor
![Page 16: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/16.jpg)
Transzlucens megjelenítésTranszlucens megjelenítés
![Page 17: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/17.jpg)
SzintvonalSzintvonal, szintfel, szintfelületület
![Page 18: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/18.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/19.jpg)
Masírozó kockákMasírozó kockákSzintérték = 110
Szintérték = 60
![Page 20: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/20.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/21.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/22.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/23.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/24.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/25.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/26.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/27.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/28.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/29.jpg)
X-ray Computed TomographyX-ray Computed Tomography
sugarak
Detektorok
X-ray forrás(CRT)
Forgatás
![Page 30: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/30.jpg)
Mediso NanoPETMediso NanoPET/CT/CT
![Page 31: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/31.jpg)
Bigger boys need big toys: Bigger boys need big toys: AnyScan PET/CTAnyScan PET/CT
![Page 32: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/32.jpg)
Tomográfiás rekonstrukcióTomográfiás rekonstrukció
![Page 33: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/33.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/34.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/35.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/36.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/37.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/38.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/39.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/40.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/41.jpg)
OverfittingOverfitting
x y~
f y
1f
![Page 42: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/42.jpg)
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ó](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/43.jpg)
PETPET
Line Of Response (LOR)
P
e-
e+ PN
![Page 44: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/44.jpg)
Nincs szóródásNincs szóródás32
4×31
5×31
5 v
oxel
s
![Page 45: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/45.jpg)
Positron rangePositron rangeN
élküleV
ele
![Page 46: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/46.jpg)
Szóródás a testbenSzóródás a testben
Nélküle Vele
![Page 47: Térfogatvizualizáció](https://reader035.vdocuments.pub/reader035/viewer/2022062723/56813f64550346895daa3793/html5/thumbnails/47.jpg)
Szóródás a detektorban …
+ scatteringin detectors
With
324×315×315 resolution
3382 x 845 res<0.1 mm voxels