Térfogatvizualizáció

Slides:



Advertisements
Hasonló előadás
 Árnyalási egyenlet  Saját emisszió  Adott irányú visszaverődés.
Advertisements

Globális illumináció (GI)
2D grafikus rendszerek Szirmay-Kalos László. 2D grafikus editor: GUI, use-case, dinamikus modell L L L R LD LU MouseLDown első pont MouseLDown második...
Analitikus (koordináta) geometriai gyorstalpaló
GPU Szirmay-Kalos László.
2D grafikus rendszerek Szirmay-Kalos László.
Sugárkövetés: ray-casting, ray-tracing
OpenGL Szirmay-Kalos László In theory, there is no difference
Számítógépes grafika Szirmay-Kalos László
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Grafikus játékok fejlesztése Szécsi László g11-physics
GPGPU labor I. OpenGL, Cg.
 Nincs szinkronizáció és kommunikáció  Csővezeték alkalmazása  Párhuzamosítás Proc 2Proc 1 Csővezeték Proc 1 Proc 21 Proc 22 Párhuzamosság.
GPGPU labor V. GPU ray tracing. Kezdeti teendők Tantárgy honlapja, GPU ray tracing A labor kiindulási alapjának letöltése (lab5_base.zip), kitömörítés.
GRAFIKUS PRIMITÍVEK KITÖLTÉSE
Textúrák, világmodellek
A számítógépes grafika céljai és feladatai
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Intelligens Mérnöki Rendszerek.
Fejlett grafikai algoritmusok Megvilágítási modellek
Számítógépes grafika 3. gyakorlat.
SUGÁRZÁS TERJEDÉSE.
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Fraktálok Szirmay-Kalos László.
Sugárkövetés: ray-casting, ray-tracing
Pozitron-Emission Tomography Reconstruction (A computer graphics view) Szirmay-Kalos László.
Fraktálok és csempézések
Environment mapping Szécsi László. Új osztály: Lab3EnvMap copy&paste: Lab2Trafo.h -> Lab3EnvMap.h copy&paste: Lab2Trafo.cpp -> Lab3EnvMap.cpp copy&paste:
Vízfelület Szécsi László. Nyílt víz a nyílt óceánon a felületi cseppecskék körmozgást végeznek trochoid hullámforma hullámhossz hullámmagasság amplitúdó.
Sugárkövetés: ray-casting, ray-tracing
1.Labor : Modellezés. Blender D:\GameDev\Blender3D\blender.exe D:\GameDev\Blender3D\blender.exe Ismerkedjünk az interface-el!!!
Térfogatvizualizáció
Analitikus geometria gyorstalpaló
Számítógépes grafika Bevezetés
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Rendering pipeline Ogre3D
Animáció Szirmay-Kalos László.
Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture.
Többmenetes renderelés Grafikus játékok fejlesztése Szécsi László g11-multipass.
Grafikus játékok fejlesztése Szécsi László t09-texture
GPGPU labor III. Iteratív algoritmusok. Kezdeti teendők Tantárgy honlapja, Iteratív algoritmusok A labor kiindulási alapjának letöltése (lab3base.zip),
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
GPGPU A grafikus hardver általános célú felhasználása
Jeni László Attila Klár Gergely
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
Számítógépes grafika OpenGL 5. gyakorlat.
A problémakör vázlatosan:
Web-grafika (VRML) 2. gyakorlat Nyitrai Erika Varga Balázs.
Magdics Milán.  BME Irányítástechnika és Informatika Tanszék (IIT)  Tanszékvezető: Dr. Szirmay-Kalos László  Főbb kutatási területek:  Globális illumináció.
Képek, képfeldolgozás Szirmay-Kalos László.
Vizualizáció és képszintézis Térfogati textúrák kezelése (Dart + GLSL) Szécsi László.
GPU alapú fotontranszport nagyfelbontású heterogén közegben BME IIT Szirmay-Kalos László Magdics Milán Tóth Balázs.
Vizualizáció és képszintézis
Vizualizáció és képszintézis Térfogati fényterjedés Szécsi László.
Global Illumination.
Lighting III.
Unity, Anyagok, megvilágítás
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Vizualizáció és képszintézis
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
GPGPU – CUDA 2..
Alapok Model betöltés Anyagjellemzők Fényforrások Shaderek
Material+ kioptimalizált uniformok
Sugármetszés implicit szintfelülettel
Előadás másolata:

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

Té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) Kép szintézis Transzfer függvény grad v v Kép Sűrűség + deriváltak Optikai paraméterek

Fényszóró közeg ds A=1 ·ds = P(ütközés) 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

Sugársűrűség változása ds Sugársűrűség változása s L(s+ds) L(s) 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)

Sugár masírozás (ray marching) 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

Back-to-front ray marching 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); }

Front-to-back ray marching 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; }

Voxel szín és opacitás: Transfer funk: (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

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

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

Illusztratív vizualizáció

Illusztratív vizualizáció

Transzlucens megjelenítés Felező vektor

Transzlucens megjelenítés

Szintvonal, szintfelület

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

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

First hit (isosurface) ray casting v(x,y,z) > szint normal = grad v v(x,y,z) < szint

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

CPU first hit ray-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 quad Interpolation from the corners Clipping central differences

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

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

Ray casting: vertex shader void VertexShader( in float4 hPosIn : POSITION, in float3 wPosIn : TEXCOORD0, out float4 hPosOut : POSITION, out float3 wPosOut : TEXCOORD0 ) { hPosOut = hPosIn; wPosOut = wPosIn; }

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 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… t1.y t1.x ti.yto.y 1 t0.x ti.xto.x t0.y 1

Ray casting fragment shader cont’d if ( !found ) { float3 q, normal; float dt = (exit – entry) / STEPS; for(t = entry; t < exit; t += dt) { 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áfia L(s)= L(0)·exp(–(s)ds) L(s)= Le(s)ds Mediso NanoPETTM/CT Abszorpciós Emissziós N P N e+ P LOR e- P N N L(s)= L(0)·exp(–(s)ds) (s)ds = – log(L(s)/L(0)) L(s)= Le(s)ds

Tomográfiás rekonstrukció

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 R kör: rd w(x,y) dxdy=2Rw(r) rdrd= =2 Rw(r)r dr  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]  | |

Algebrai visszavetí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 v1 v2 (D) (D×V) (V) d4 v3 v4 d3 d2 (V×D) (D) (V×V) d1 = A11v1 +A13v3

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