View
24
Download
0
Category
Preview:
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
Citation preview
TérfogatvizualizációTérfogatvizualizáció
Szirmay-Kalos László
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)
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
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)
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)
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
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)
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)
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))
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
((C,C,) = ) = TT((vv))··ss
pow(v/vmax, aexp)·sC = HLS((v/vmax+rot)·360, 0.5, 1)·s
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
Illusztratív vizualizációIllusztratív vizualizáció
Illusztratív vizualizációIllusztratív vizualizáció
Transzlucens megjelenítésTranszlucens megjelenítés
Felező vektor
Transzlucens megjelenítésTranszlucens megjelenítés
SzintvonalSzintvonal, szintfel, szintfelületület
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;
Masírozó kockákMasírozó kockákSzintérték = 110
Szintérték = 60
First hit (isosurface) ray castingFirst hit (isosurface) ray casting
normal = grad v
v(x,y,z) > szint
v(x,y,z) < szint
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)
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
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
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
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;}
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
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
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
X-ray Computed TomographyX-ray Computed Tomography
sugarak
Detektorok
X-ray forrás(CRT)
Forgatás
Mediso NanoPETMediso NanoPET/CT/CT
Bigger boys need big toys: Bigger boys need big toys: AnyScan PET/CTAnyScan PET/CT
Tomográfiás rekonstrukcióTomográfiás rekonstrukció
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ő
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?
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)
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
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
Iteratív sémaIteratív séma
Skalármező
Skalármező korrekciója
Projekció
Összevetés a mért értékekkel
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)
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ú
OverfittingOverfitting
x y~
f y
1f
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 )('
PETPET
Line Of Response (LOR)
P
e-
e+ PN
Nincs szóródásNincs szóródás32
4×31
5×31
5 v
oxel
s
Positron rangePositron rangeN
élküleV
ele
Szóródás a testbenSzóródás a testben
Nélküle Vele
Szóródás a detektorban …
+ scatteringin detectors
With
324×315×315 resolution
3382 x 845 res<0.1 mm voxels
Recommended