1 / 47

Térfogatvizualizáció

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).

dasan
Download Presentation

Térfogatvizualizáció

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Térfogatvizualizáció Szirmay-Kalos László

  2. 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) tárolás: 3D textúra vagy „voxel tömb”

  3. Térfogati modell megjelenítése Kép szintézis • 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) Transzfer függvény grad v Hesse v Kép Optikai paraméterek Sűrűség + deriváltak

  4. Fényszóró közeg ds Hatáskeresztmetszet, alias kioltási tényező ·ds = P(ütközés) A=1 • 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

  5. ds Sugársűrűség változása s L(s+ds) L(s) // Kiszóródás+abszorbció // Emisszió // Beszóródás L(s+ds)= L(s) – L(s)·(s)·ds + Le(s)·ds + (s)·a(s)·ds·f(‘,)Li(‘)d‘ 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)

  6. Szóródás x E’ Klein-Nishina: Szóródott foton Érkező foton φ  z ütközés E y Rayleigh: Compton formula:

  7. Sugár masírozás (raymarching) Megoldás: dL(s)/ds= –L(s)·(s)+Le(s)+Linscatter(s) L(s + s) L(s) L(0) s L(s+s) = L(s) – L(s)·(s)·s + (Le(s) + Linscatter(s))·s (s) C(s) opacitás hozzájárulás L(s+s) = (1 –(s)) · L(s)+ C(s) átlátszóság

  8. Back-to-frontraymarching L(s+s) = (1 –(s)) · L(s)+ C(s) C(s), (s)) s=0 L = L0; for(s = 0; s < T; s += s) { L = (1 –(s)) · L + C(s); }

  9. Front-to-backraymarching L*(s) (s) L*(ss)=L*(s)+(1(s)) · C(s) (ss)=((s)) · ((s)) L*  0; for( s T; s >0 ; s-=s ) { L* + (1) · C(s); (1) · ((s)); if (break; }

  10. Voxel szín és opacitás: Transferfunc: (C,)=T(v függv)·s • 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

  11. (C,) = T(v)·s • = pow(v/vmax, aexp)·s • C = HLS((v/vmax+rot)·360, 0.5, 1)·s

  12. Klasszikus BRDF modellek First hit ray casting: Diffúz+Phong árnyalás v két osztályba: kék-átlátszó, sárga-átlátszatlan Csont : 1, másé 0 Csont =1, másé=0 Hús =1, másé=0

  13. Illusztratív vizualizáció

  14. Illusztratív vizualizáció

  15. Transzlucens megjelenítés Felező vektor

  16. Transzlucens megjelenítés

  17. Szintvonal, szintfelület

  18. Marchingcubes 6 2 5 1 v(x,y,z) > szint 3 7 v(x,y,z) < szint 0 4 0 0; Eset: 000011102 =14 14 2; 0-1;0-3;2-6; 0-3; 3-7; 2-6 14 255 0;

  19. Szintérték = 110 Masírozó kockák Szintérték = 60

  20. First hit (isosurface) raycasting v(x,y,z) > szint normal = grad v v(x,y,z) < szint

  21. GPU first hit ray-casting up right lookat v(x,y,z) eye p q entry exit p = lookat + Xright + Yup X, Y in [-1,1] Egység kocka 3D textúrával

  22. CPU first hit ray-casting Full screen quad 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 } Interpolation from the corners central differences

  23. GPU Isosurface ray-casting volume eye, isolevel, material/light properties Ray casting Pixel shader CPU program Vertex shader Rasterization Interpolation Vertices of the window quad ray/window hpos=fullscreen textcoords Volume

  24. CPU program - OpenGL display void 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(); } Camera window as texture coordinates Full screen quad

  25. Ray casting: vertexshader voidVertexShader( in float4 hPosIn : POSITION, in float3 wPosIn : TEXCOORD0, out float4 hPosOut : POSITION, out float3 wPosOut : TEXCOORD0 ) { hPosOut =hPosIn; wPosOut = wPosIn; }

  26. Ray casting: fragment shader 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 float3color : 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… t1.x t1.y ti.yto.y 1 t0.x ti.xto.x t0.y 0 0 1

  27. Ray castingfragment 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

  28. Tomográfia Abszorpciós Emissziós LOR L(s)= L(0)·exp(–(s)ds) (s)ds = – log(L(s)/L(0)) L(s)=Le(s)ds

  29. X-rayComputedTomography Forgatás Detektorok X-ray forrás (CRT) sugarak

  30. MedisoNanoPET/CT

  31. Biggerboysneedbigtoys: AnyScan PET/CT

  32. Tomográfiás rekonstrukció

  33. Szűrt visszavetítés (FBP=Filtered backprojection) Súlyfüggvény: w(x,y)=w(r)  1/r i(x,y)=(x,y) Mérés + Visszavetítés Rkör: rd • w(x,y)dxdy=2Rw(r)rdrd= • =2Rw(r)rdr R dr r Korrekció Fourier térben: o(x,y)=i(x,y)w(x,y) FxFy o[x,y] = FxFy i[x,y]FxFyw[x,y] Rámpa szűrő 1/|| FxFy i[x,y] = FxFy o[x,y] ||

  34. Zaj! Becsapódások véletlen események! Emissziós tomográfia: Poisson eloszlás 0 1 2 Nagy számok törvénye?

  35. Algebraivisszavetítés Lin egyenlet (V<D): d= Av, d = [d1,..., dD] v = [v1,..., vV] Moore féle pseudo-inverz: AT d= ATA v v = (ATA)-1AT d =A+d (D×V) (D) (V) v1 v2 d4 v3 v4 d3 d2 (V×D) (D) (V×V) d1 = A11v1 +A13v3

  36. ExpectationMaximization Véletlen mérési folyamat Aktivitás: v eredmény: d Mi a v ha tudjuk d-t? • 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

  37. PET: iteratív séma Poisson és pozitivitási kényszer LOR L : annak valószínűsége, hogy a V voxelben bekövetkezett bomlást az L LOR detektálja voxel V

  38. Iteratív séma Skalármező Projekció Összevetés a mért értékekkel Skalármező korrekciója

  39. 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ó Inverz problémák Projekció (Tomográf) Aktivitás eloszlás Beütések száma a detektorokban

  40. Megoldási sémák Algebrai Valószínűségi 2-es norma Kullback-Leibler divergencia y Gauss eloszlású y Poisson eloszlású

  41. Overfitting

  42. 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): Regularizáció Likelihood Regularizációs paraméter Zajos megoldások büntetése

  43. PET P P N e+ e- Line Of Response (LOR)

  44. Nincs szóródás 324×315×315 voxels

  45. Positron range Nélküle Vele

  46. Szóródás a testben Nélküle Vele

  47. Szóródás a detektorban … 324×315×315 resolution 3382 x 845 res <0.1 mm voxels + scattering in detectors With

More Related