Pozitron Emissziós Tomográfia

Hasonló dokumentumok
Pozitron Emissziós Tomográfia

Rekonstrukciós eljárások. Orvosi képdiagnosztika 2017 ősz

PET gyakorlati problémák. PET rekonstrukció

Compton-effektus. Zsigmond Anna. jegyzıkönyv. Fizika BSc III.

minipet labor Klinikai PET-CT

Abszolút és relatív aktivitás mérése

Képrekonstrukció 3. előadás

Radioaktív sugárzások abszorpciója

Röntgensugárzás. Röntgensugárzás

A Nukleáris Medicina alapjai

Modern fizika vegyes tesztek

Orvosi Biofizika I. 12. vizsgatétel. IsmétlésI. -Fény

Röntgensugárzás az orvostudományban. Röntgen kép és Komputer tomográf (CT)

3. (b) Kereszthatások. Utolsó módosítás: április 1. Dr. Márkus Ferenc BME Fizika Tanszék

GPU-based Particle Transport for PET Reconstruction (GPU-alapú Részecske Transzport PET Rekonstrukcióhoz)

A kvantummechanika kísérleti előzményei A részecske hullám kettősségről

Biofizika és orvostechnika alapjai

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Diszkréten mintavételezett függvények

E(L)JÖVENDŐ. IKT kutatási eredmények a gazdaság és a társadalom szolgálatában. 1 Intelligens környezet és e-technológiák

Általánosan, bármilyen mérés annyit jelent, mint meghatározni, hányszor van meg

Ipari matematika 2. gyakorlófeladatok

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

1. ábra. 24B-19 feladat

Folyadékszcintillációs spektroszkópia jegyz könyv

Fourier térbeli analízis, inverz probléma. Orvosi képdiagnosztika 5-7. ea ősz

Diagnosztikai röntgen képalkotás, CT

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Röntgen-gamma spektrometria

Részecske azonosítás kísérleti módszerei

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Radioaktív sugárzások az orvosi gyakorlatban. Az ionizáló sugárzások biológiai hatása. A sugárhatás osztályozása. A sugárhatás osztályozása

Abszorpciós spektroszkópia

Izotópok. Izotópok. diagnosztikai alkalmazásai. diagnosztikai alkalmazásai. Képalkotó eljárásokkal nyerhető információ

Pásztázó elektronmikroszkóp. Alapelv. Szinkron pásztázás

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Alapja a véletlen minták kiértékelése. Sok szabadság fokú csatolt rendszerek

Számítógépes geometria (mester kurzus)

Sugárvédelem kurzus fogorvostanhallgatók számra. Töltött részecskék elnyelődése. Sugárzások és anyag kölcsönhatása. A sugárzások elnyelődése

3D számítógépes geometria és alakzatrekonstrukció

Gamma sugárzás. Gamma-kamera SPECT PET. Tömeg-energia ekvivalencia. Nukleáris medicína. γ-sugárzás előállítása. γ-sugárzás kölcsönhatása az anyaggal

GPK M1 (BME) Interpoláció / 16

1. mérési gyakorlat: Radioaktív izotópok sugárzásának vizsgálata

Monte Carlo módszerek a pozitron emissziós tomográfiában. TDK dolgozat

Gamma-kamera SPECT PET

Q 1 D Q 2 (D x) 2 (1.1)

TDK DOLGOZAT. ML-EM képrekonstrukciós algoritmus transzmissziós tomográfiára. Molnár Balázs

Numerikus integrálás április 20.

Adatelemzési eljárások az idegrendszer kutatásban Somogyvári Zoltán

SPECT képalkotása. Hesz Gábor február

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

LNM folytonos Az interpoláció Lagrange interpoláció. Lineáris algebra numerikus módszerei

Diplomamunka. Iteratív CT rekonstrukciós eljárás kidolgozása GPU környezetben és alkalmazása mért adatsorokon. Molnár Balázs

ACM Snake. Orvosi képdiagnosztika 11. előadás első fele

Izotópok. diagnosztikai alkalmazásai 2. Az izotóp kiválasztásának szempontjai. hf > 50 kev. α β γ. Maximáljuk a nyerhető információt.

Optika gyakorlat 6. Interferencia. I = u 2 = u 1 + u I 2 cos( Φ)

A gamma-sugárzás kölcsönhatásai

3D számítógépes geometria és alakzatrekonstrukció

Z bozonok az LHC nehézion programjában

Lineáris algebra numerikus módszerei

Statisztika - bevezetés Méréselmélet PE MIK MI_BSc VI_BSc 1

Orvosi tomográkus képalkotás/ct technika alapja

Megoldások. ξ jelölje az első meghibásodásig eltelt időt. Akkor ξ N(6, 4; 2, 3) normális eloszlású P (ξ

Gamma-kamera SPECT PET

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

A maximum likelihood becslésről

TDK DOLGOZAT. Iteratív ML-EM CT képrekonstrukció GPU-ra. Molnár Balázs

A COMPTON-EFFEKTUS VIZSGÁLATA

Pelletek térfogatának meghatározása Bayes-i analízissel

Hajder Levente 2018/2019. II. félév

MTA DOKTORA PÁLYÁZAT DOKTORI ÉRTEKEZÉS KÉPALKOTÓ ÉS KÉPFELDOLGOZÓ ELJÁRÁSOK HATÉKONYSÁGÁNAK NÖVELÉSE AZ ORVOSINFORMATIKÁBAN.

Jelek és rendszerek MEMO_03. Pletl. Belépő jelek. Jelek deriváltja MEMO_03

4. A nukleá ris mediciná fizikái álápjái

Numerikus integrálás április 18.

Monte Carlo módszerek a statisztikus fizikában. Az Ising modell. 8. előadás

GPU alapú PET rekonstrukciós kód továbbfejlesztése: szórás, pozitronvándorlás, konvergencia-gyorsítás

Gamma-röntgen spektrométer és eljárás kifejlesztése anyagok elemi összetétele és izotópszelektív radioaktivitása egyidejű elemzésére

5 1 6 (2x3 + 4) 7. 4 ( ctg(4x + 2)) + c = 3 4 ctg(4x + 2) + c ] 12 (2x6 + 9) 20 ln(5x4 + 17) + c ch(8x) 20 ln 5x c = 11

Milyen simaságú legyen a minta felülete jó minőségű EBSD mérésekhez

Line aris f uggv enyilleszt es m arcius 19.

Nehézségi gyorsulás mérése megfordítható ingával

Bevezetés a modern fizika fejezeteibe. 4. (e) Kvantummechanika. Utolsó módosítás: december 3. Dr. Márkus Ferenc BME Fizika Tanszék

A sugárzás és az anyag kölcsönhatása. A béta-sugárzás és anyag kölcsönhatása

Abszorpciós fotometria

A GYULLADÁSOS BÉLBETEGEK EURÓPAI NAPJA május 23. szombat Petıfi Sándor Mővelıdési Ház (1103 Budapest, Kada u )

Theory hungarian (Hungary)

Abszorpciós spektrumvonalak alakja. Vonalak eredete (ld. előző óra)

Nukleáris képalkotás 2 Tomográfiás képrekonstrukció gyakorlat - 1

Végeselem modellezés alapjai 1. óra

Adatmodellez es, f uggv enyilleszt es m arcius 12.

PET Pozitronemissziós tomográfia

Minimum követelmények matematika tantárgyból 11. évfolyamon

Radioaktív sugárzások abszorpciója

BAGME11NNF Munkavédelmi mérnökasszisztens Galla Jánosné, 2011.

Képrekonstrukció 5. előadás

Gauss-Seidel iteráció

Összeállította: dr. Leitold Adrien egyetemi docens

Gamma kamera, SPECT, PET. Készítette: Szatmári Dávid PTE ÁOK, Biofizikai Intézet, március 1.

Láthatósági kérdések

Dekonvolúció a mikroszkópiában. Barna László MTA Kísérleti Orvostudományi Kutatóintézet Nikon-KOKI képalkotó Központ

Átírás:

Pozitron Emissziós Tomográfia

Vetületi képekből állítsuk elő a (3D) objektumot vagy függvényt A vetületi képek előállítására különféle fizikai jelenségeket használunk, pl: Fizikai jelenség Látható fény Röntgen-sugár Gamma-sugár Rádió-hullám Pozitron-elektron ütközés Tomográfiás módszer Térlátás CT SPECT MRI PET

Mérési adat: a röntgen-sugár csillapodása egy adott út mentén Az anyagsűrűség függvénye Kimenet: anyagsűrűség a tér pontjaiban

Izotóp Intenzitás: x(v) (pozitron bomlások sűrűsége) e - e + (pozitron) e - e + Gamma-fotonok LOR (Line of Response): y l (Mért adat)

A készülék az egyidejű fotonbecsapódásokat regisztrálja (számolja) Intenzitás: x(v) (pozitron bomlások sűrűsége) LOR (Line of Response): y l (Mért adat)

A detektorlapokat (panel) gyűrű alakban helyezik el Minden panelt 2D rácson elhelyezett kristályok alkotnak A mérés 5D adat (párindex és modulonként 2-2 koordináta) Koincidencia

A vizsgálat során radioaktív kontrasztanyagot juttatnak a szervezetbe, amelyet a sejtek az anyagcseréjük során felvesznek (pl. valamilyen cukoroldat) A vizsgálat célja a kontrasztanyag térbeli sűrűségeloszlásának meghatározása Így nyomon követhetővé válik az anyagcsere gyorsasága Diagnosztika: a daganatos sejtek anyagcseréje jóval intenzívebb Szervműködés: agyműködés feladatok elvégzése közben Kisállat PET: gyógyszerkísérletek

A pozitron születésétől a γ-foton detektálásáig több fizikai jelenség megy végbe, melyeket különböző mértékben modellezünk, közelítünk A gyakorlaton ezektől mind eltekintünk Pozitron vándorlás γ-foton szóródás, elnyelődés Holtidő Random események

A pozitron létrejöttét követően néhány cm-t is vándorolhat, mielőtt az elektronba ütközik A vándorlás várható úthossza az alkalmazott kontrasztanyagtól és az elektronsűrűségtől függ (páciensenként más, a CT alapján számítható) Általában a bomlásfüggvény helyfüggő elkenésével modellezik e - e +

beeső foton E ütközés szóródott foton - Compton formula: E' 1 E E 1 1 cos 2 m c - Klein-Nishina: E' E' P( ) C E E e 3 y 2 φ E' sin E Elektronsűrűség (anyagfüggő CT mérésből) 2 x E z testen belüli szóródás, elnyelődés e - e + detektoron belüli szóródás, elnyelődés

Átszóródás: a foton a kristályok közt átszóródhat, így nem ott detektálódik, mint ahol beérkezett Kristályok és az elektronika tökéletlensége: egy fotonbecsapódást várható értékben nem pontosan egy találatként regisztrál (nem érzékeli, vagy több találatként regisztrálja) kristályok elnyelődés Elektronika foton kristályok közötti szóródás találatok száma

Fotontalálat regisztrálását követően az elektronika egy darabig nem képes újabb fotont érzékelni t t t t t t A detektort n részecske éri el t

A legtöbb, a gyakorlatban használt detektorkristály is sugároz: véletlenszerű időnként egy-egy felvillanás Hibás párba állítás:

Az ismeretlen függvényt együtthatók és rögzített bázisfüggvények segítségével írjuk le: M x v = x j b j (v) j=1 Nearest (point) (Tri)Linear Voxelek, 3D rács GPU Intenzitás: x(v) (pozitron bomlások sűrűsége) e +

Cél: megtalálni azt az x(v) függvényt, amelyet feltételezve az adott mérés valószínűsége maximális N Likelihood: L x v, y 1, y N = P y 1, y N x v = P(y i x v ) Megj.: a LOR-ok függetlenek N Log-likelihood: log L x v, y 1, y N = log P(y i x v ) A LOR-okban mért becsapódások száma y i várható értékű Poissoneloszlást követ: log L x v, y 1, y N = log N i=1 (y i log y i y i log y i!) Ezt kell maximalizálni! N y i y i y i! i=1 i=1 e y i = i=1

N i=1 (y i log y i y i log y i!) Szélsőérték szükséges feltétele: a derivált 0 N i=1 y i log y i y i log y i! = x j N i=1 y i y i y i x j y i x j = 0, j = 1,, M A ij y i a rendszermátrix, annak a valószínűsége, hogy a j-edik x j voxelben keletkező fotonpár az i-edik LOR-ban detektálódik (a pozitronvándorlástól eltekintünk) M y i = j=1 A ij x j : tehát minden LOR várható értéke felírható a voxelek lineáris kombinációjaként, az együtthatók pedig a rendszermátrix elemei Megj.: diszkretizáció nélkül: y i = x v P(v i) V dv

voxel LOR válasz: voxel intenzitás: y = Ax A ij :annak valószínűsége, hogy az i-edik voxelben keletkezett fotonpárt a j-edik LoR-ban detektáljuk Problémák: A gyakorlatban óriási rendszermátrix: 10 8 10 7 = 10 15 elem Néhány TeraByte! Minden mátrixelem végtelendimenziós integrál (szóródás) A mátrixelemek függnek a mért objektumtól (szóródás, pozitronvándorlás), ezért offline nem számolható pontosan Ha eltekintünk a szóródástól, a mátrix ritka A mátrixelemeket on-the-fly számoljuk!

N i=1 y i log y i y i log y i! = x j N N A ij N i=1 y i=1 = A i i=1 ij, j = 1,, M y i y i y i A ij A ij = 0, j = 1,, M EM-iterációs séma: x j (n+1) = x j (n) N i=1 N i=1 A ij y i y i A ij Tetszőleges nemnulla x j (0) jó, j = 1,, M (minden voxelre) Minden iterációban a mért és becsült LOR-ok aránya alapján korrigáljuk a bomlássűrűség (x(v)) aktuális becslését M A becsült várható érték: y i = j=1 A ij x j mérés becslés

Mért foton találatok? Becsült foton találatok I. Előrevetítés : A kontrasztanyag eloszlásának egy (tetszőleges) becsléséből kiindulva, egy pontos fizikai modellt alkalmazva kiszámoljuk, hogy a becslést feltételezve mit kellene mérnünk III. Iteratív rekonstrukció: Az egészet megismételjük, immáron az új, pontosabb becslésből kiindulva II. Visszavetítés : A becsült és a mért beütések aránya alapján korrigáljuk a kontrasztanyag eloszlására adott becslést

y i Előrevetítés (Forward Projection) Mérés (LOR-ok) Visszavetítés (Back Projection) y i = M (n) A ij x j j=1 y i c j = N y A i i=1 ij y i N i=1 A ij x j (n+1) = cj x j (n) 1. Becsült LOR-ok Becslés (LOR-ok) 2.a. Korrekciós faktorok 2.b. Korrekció x j (n) Intenzitás (Voxelek) 3. Következő iteráció Mindkét operátor egymástól függetlenül dolgozza fel az adatokat (párhuzamosítás!)

~ x( v) P( v y i i) V dv Direkt Monte-Carlo: A térfogatot mintavételezi, szimulálja a fotonok útját, az út végén regisztrálja a becsapódás helyét Lövés típus: GPU-n általában nem hatékony! Adott: az intenzitás becslése: Cél: várható beütésszám (y i ) meghatározása, LoR-onként x j (n)

Thread Thread Thread Thread A fizikai törvények alapján szimuláljuk a fotonok útját GPU memória Atomi összeadás! Lövés : GPU-n nem hatékony!

z 2 z 1 x l dl ~ y i D D 1 2 G( z 1, z2) X ( z1, z2) Adjungált Monte-Carlo: A detektorfelületet mintavételezzük, összegyűjtjük a mintapontokat összekötő utak hozzájárulását dz 1 dz 2 Ray-marching x(v)

cosθ z1 cosθ z2 2π z 1 z 2 2 ~ y i ~ y i D D 1 2 G( z 1, z2) X ( z1, z2) Valószínűség helyett a térszög jelenik meg, amelyben a detektorok felülete látszik D1D 2 N 2 line N line k 1 N t 1 z march ( k ) 1 x( l z kt ( k ) 2 dz 1 ) l 2 dz k 2 x(v)

cosθ z1 cosθ z2 2π z 1 z 2 2 z 1 z 2 x l dl ~ y i D D 1 2 G( z 1, z2) X ( z1, z2) dz Diszkrét mintákkal közelítve: ~ y detektorfelület i D1D 2 N 2 line N line k 1 N t 1 z march ( k ) 1 x( l z kt 1 ( k ) 2 dz ray-marching lépésszám x(v)-minta ) l 2 2 ray-marching lépéshossz k x(v) vonalminták detektorminták (=a vonalminták végpontjai) távolsága

Rnd Poisson Disk

PET-geometria Detektorok geometriája Volume leírás Előrevetítő operátor Visszavetítő operátor

struct module { cl_float4 origin; cl_float4 axial; cl_float4 transaxial; cl_float4 n; }; 1 cl_float4 origin; cl_float4 axial; cl_float4 transaxial; cl_float4 n; origin.s[3] = axial.s[3] = transaxial.s[3] = n.s[3] = 0.0f; origin.s[0] = origin.s[1] = origin.s[2] = -1.0f; axial.s[2] = 2.0f; axial.s[0] = axial.s[1] = 0.0f; transaxial.s[0] = 2.0f; transaxial.s[1] = transaxial.s[2] = 0.0f; n.s[1] = 1.0f; n.s[0] = n.s[2] = 0.0f; transaxial 0 x axial n origin y 3 z (axiális) 2

modulebuffergpu = clcreatebuffer(context, CL_MEM_READ_WRITE, sizeof(module)*nmodules, NULL, NULL); for ( int i = 0; i < nmodules; ++i ) { modulebuffercpu[i].origin = origin; modulebuffercpu[i].axial = axial; modulebuffercpu[i].transaxial = transaxial; modulebuffercpu[i].n = n; rotate90xy(origin); rotate90xy(transaxial); rotate90xy(n); } clenqueuewritebuffer(commands, modulebuffergpu, CL_TRUE, 0, sizeof(module)*nmodules, modulebuffercpu, 0, NULL, NULL); a 1 1 a 2 o 1 n 2 o 2 n 1 0 t 0 a 0 o 0 n 0 t 1 y z x (axiális) n 3 3 t 3 3 t 2 2 a 3

Int Int Int leképzés Melyik panel melyik másikkal alkothat LOR-okat // csúnya, de egyszerű int2 getmodules(int pair) { switch ( pair ) { case 0: return (int2)(0,2); case 1: return (int2)(1,3); }; return (int2)(0,0); }

volumemin.s[0] = volumemin.s[1] = volumemin.s[2] = -0.5f; volumemax.s[0] = volumemax.s[1] = volumemax.s[2] = 0.5f; volumemin.s[3] = volumemax.s[3] = 0.0f; volumemax x y z volumemin

kernel void forwardprojection( const int naxial, const int ntransaxial, const int resolution, const float detectorarea, float4 volumemin, float4 volumemax, global struct module* modules, global float* measuredlors, global float* estimatedlors, ) { // } global float* volumebuffer // modulok axiális felbontása // modulok tranzaxiális felbontása // volume felbontás (most köbös) // detektor felszín (térszöghöz) // AABB // AABB // modulleírók // mért LOR beütésszámok // becsült LOR-ok // bomlássűrűség

forwardprojectionsize[0] = npairs; forwardprojectionsize[1] = forwardprojectionsize[2] = ntransaxial*naxial; CL_SAFE_CALL( clenqueuendrangekernel(commands, forwardprojectionkernel, 3, NULL, forwardprojectionsize, NULL, 0, NULL, NULL) ); kernel void forwardprojection( // { int ipair = get_global_id(0); int iaxial1 = get_global_id(1) % naxial; int itransaxial1 = get_global_id(1) / naxial; int iaxial2 = get_global_id(2) % naxial; int itransaxial2 = get_global_id(2) / naxial; int lorindex = getlorindex( ipair, iaxial1, iaxial2, itransaxial1, itransaxial2, naxial, ntransaxial ); } int getlorindex( int pair, int axial1, int axial2, int transaxial1, int transaxial2, int naxial, int ntransaxial ) { int lornumber = naxial*naxial*ntransaxial*ntransaxial; int u = axial1 * ntransaxial + transaxial1; int v = axial2 * ntransaxial + transaxial2; return lornumber*pair + u*naxial*ntransaxial + v; }

float4 z1 = // 1 vonalminta, a detektor közepén modules[imodule.x].origin + modules[imodule.x].transaxial*(itransaxial1+0.5f)/ntransaxial + modules[imodule.x].axial*(iaxial1+0.5f)/naxial; float4 z2 = float4 dir = z2-z1; if ( intersectbox( z1, dir, volumemin, volumemax, &tnear, &tfar ) ) { float G = -detectorarea*detectorarea * dot(modules[imodule.x].n,dir)*dot(modules[imodule.y].n,dir) / (2.0f*M_PI*dot(dir,dir)*dot(dir,dir)); float4 start = z1+tnear*dir; float4 end = z1+tfar*dir; z 2 } float4 step = (end - start) / resolution; float dl = length(step); float4 voxel = start; for ( int i = 0; i < resolution; ++i ) { } z 1 float x = getintensity( (voxel - volumemin) / (volumemax - volumemin), resolution, volumebuffer ); xsum += G*x*dl; voxel += step; dir

float4 z1 = // 1 vonalminta, a detektor közepén modules[imodule.x].origin + modules[imodule.x].transaxial*(itransaxial1+0.5f)/ntransaxial + modules[imodule.x].axial*(iaxial1+0.5f)/naxial; float4 z2 = float4 dir = z2-z1; if ( intersectbox( z1, dir, volumemin, volumemax, &tnear, &tfar ) ) { float G = -detectorarea*detectorarea * dot(modules[imodule.x].n,dir)*dot(modules[imodule.y].n,dir) / (2.0f*M_PI*dot(dir,dir)*dot(dir,dir)); float4 start = z1+tnear*dir; } float4 end = z1+tfar*dir; float4 step = (end - start) / resolution; float dl = length(step); float4 voxel = start; for ( int i = 0; i < resolution; ++i ) { } end start z 1 float x = getintensity( (voxel - volumemin) / (volumemax - volumemin), resolution, volumebuffer ); xsum += G*x*dl; voxel += step; z 2

float4 z1 = // 1 vonalminta, a detektor közepén modules[imodule.x].origin + modules[imodule.x].transaxial*(itransaxial1+0.5f)/ntransaxial + modules[imodule.x].axial*(iaxial1+0.5f)/naxial; float4 z2 = float4 dir = z2-z1; if ( intersectbox( z1, dir, volumemin, volumemax, &tnear, &tfar ) ) { float G = -detectorarea*detectorarea * dot(modules[imodule.x].n,dir)*dot(modules[imodule.y].n,dir) / (2.0f*M_PI*dot(dir,dir)*dot(dir,dir)); float4 start = z1+tnear*dir; float4 end = z1+tfar*dir; float4 step = (end - start) / resolution; Ray marching float dl = length(step); float4 voxel = start; for ( int i = 0; i < resolution; ++i ) { float x = getintensity( (voxel - volumemin) / (volumemax - volumemin), resolution, volumebuffer ); xsum += G*x*dl; voxel += step; } }

(n) x (n+1) j x j = N i=1 N i=1 A ij y i y i A ij Minden olyan LOR-t meg kell látogatnunk, amely metszi az adott voxelt! Minden panelpárra végiggyalogolunk a távolabb lévő panelen és a detektorokat a másik panelre vetítjük

kernel void backprojection( const int npairs, const int naxial, const int ntransaxial, const int resolution, float4 volumemin, float4 volumemax, global struct module* modules, global float* estimatedlors, global float* volumebuffer ){ } // párok száma // modul axiális felbontása // modul tranzaxiális felbontása // volume felbontás (most köbös) // AABB // AABB // modulleírók // mérés és becsült LOR-ok aránya // bomlássűrűség int4 ivoxel = (int4)(get_global_id(0),get_global_id(1),get_global_id(2),0); int linearindex = ivoxel.x + ivoxel.y*resolution + ivoxel.z*resolution*resolution; float4 voxel = (float4)(ivoxel.x,ivoxel.y,ivoxel.z,0); voxel /= resolution; // [0,1] voxel = (volumemax-volumemin)*voxel + volumemin; // [volumemin,volumemax]

for ( int ipair = 0; ipair < npairs; ++ipair ) { // végigmegyünk minden páron int2 imodule = getmodules(ipair); struct module primary = // távolabbi struct module secondary = // közelebbi float stransaxial = ntransaxial / dot(secondary.transaxial,secondary.transaxial); float saxial = naxial / dot(secondary.axial,secondary.axial); for ( int p = 0; p < naxial; ++p ) // végigmegyünk a távolabbi detektoron for ( int q = 0; q < ntransaxial; ++q ) { float4 z1 = // ld. előrevetítés float4 dv = voxel - z1; z // hasonló háromszögek 1 float t = dot(secondary.n, secondary.origin-z1) / dot(secondary.n,dv); float4 z2 = z1 + dv*t; dv float fr = dot(z2-secondary.origin,secondary.axial) * saxial; float fs = dot(z2-secondary.origin,secondary.transaxial) voxel z * TransAxial; 2 // } } secondary.n

if ( 0 <= fr && fr < naxial && 0 <= fs && fs < ntransaxial ) { int r = (int)fr; int s = (int)fs; int lorindex = getlorindex( ipair, p, q, r, s, naxial, ntransaxial ); // sorrend! (ld getmodules) float y_div_yw = estimatedlors[lorindex]; float ddv = length(dv); float Alv = dot(primary.n,dv) / (ddv*ddv*ddv); // itt csak az egyik térszöggel közelítjük G-t } numerator += y_div_yw * Alv; denominator += Alv; if ( denominator > 0.0f ) // = van olyan LOR, ami átmegy a voxelen { volumebuffer[linearindex] *= numerator / denominator; }

Derenzo fantom

Inverz feladat: teljes variáció regularizáció Éltartó szűrés hiba Iterációszám Log Likelihood TV = V x ( v) dv

Új, kiegészített célfüggvény: min( log L x v, y 1, y N + α TV x v ) x Az EM-séma levezetésével analóg módon adódik: x j (n+1) = x j N i=1 (n) A ij +α N y A i i=1 ij y i TV x v x j, j = 1,, M (minden voxelre) TV deriváltjának lokális közelítése

Gyenge TV esetén zajosabb az eredmény Túl erős TV esetén eltűnnek a finom részletek: TV optimuma a konstans függvény Referencia Nincs/Gyenge TV Optimális TV Túl erős TV

Testen belüli szóródás Detektoron belüli szóródás Alapötlet szintjén, gyakorlaton nem lesz

Alapötlet: utak újrafelhasználása 1: szóródási pontok generálása Fontosság szerint Néhány 100! 2: összekötés a detektorokkal Utak hozzájárulásának kiszámítása, elnyelődés figyelembevételével Mintha a szóródási pontok is detektorok lennének Néhány 10.000 detektor 3: Szóródási pontok összekötése, utak kiértékelése

Alapötlet: utak újrafelhasználása 4: Utak kombinálása, LOR-onként Eredmény: 3-hosszú törtvonalak Minden, a törtvonalon keletkezett fotonpár tagjai összesen kétszer szóródtak A szóródási pontokat összekötő szakaszok minden LOR-ra azonosak!

Alapötlet: utak újrafelhasználása 4: Utak kombinálása, LOR-onként Eredmény: 3-hosszú törtvonalak Minden, a törtvonalon keletkezett fotonpár tagjai összesen kétszer szóródtak A szóródási pontokat összekötő szakaszok minden LOR-ra azonosak!

Szóródás+elnyelődés Elnyelődés Csak geometria

A detektoron belüli szóródás független a méréstől (nem cseréljük ki a kristályokat) Annak a valószínűsége, hogy a beérkező foton a detektoron belül hogyan szóródik, csak a beesési iránytól függ És a foton energiájától, de ettől most eltekintünk Előre leszimulálható a detektoron belüli szóródás eloszlása: csóvák A két foton szóródása független Elegendő fotononként szimulálni

Ha egy adott detektort vizsgálunk, csak a csóván belülről, a csóva által meghatározott valószínűséggel érkezhettek fotonok

1. Detektormodell nélküli előrevetítés 2. Offline (fontosság szerint) generált index-offset minták alapján a már kiszámolt értékek kiolvasása, konvolúció (összeadás) Számítási költség elhanyagolható a raymarchinghoz képest, így jóval több mintát is vehetünk

Ideális detektor Valószerű detektor