Önállo láborátorium beszámolo
Képfeldolgozás orvosi alkalmazásai
Vetítés CT felvételekből
Kárász András Konzulens: Dr. Horváth Gábor
Bevezetés Napjainkban a városi életmód következtében (szállópor, szmog, stb.) a tüdőbetegek száma megnőtt. A tüdő vizsgálására azonban kevés eszköz áll rendelkezésre. A legrégebb óta használt módszer a röntgenfelvételek készítése, amit eredetileg a tuberkolózis (TBC) szűrésére fejlesztettek ki. A röntgenképeknek azonban hátránya, hogy a teljes mellkasi területről egyetlen képet készít, így a kisebb részletek ezeken a felvételeken nem detektálhatóak. Egy másik módszer a CT (Computed Tomography) felvételek készítése. CT vizsgálat során a páciensről vízszintes szeletképek készülnek, általában kontrasztanyag befecskendezése mellett. Ennek az eljárásnak tüdő vizsgálati szempontból hatalmas előnye, hogy míg a tüdőterület ezeken a felvételeken nagyon alacsony intenzitásértékű (hiszen levegő tölti ki a tüdőt, amin a röntgensugarak ellenállás nélkül áthaladnak), az erek a kontrasztanyagnak köszönhetően magas fényintenzitással jelennek meg. Ugyanakkor ennek a részletességnek ára van – nagyon sok felvételt kell készíteni a páciensről a szeletképek visszaállításához, ami nagy mértékű besugárzást jelent, aminek a káros élettani hatásokon felül jelentős anyagi vonzattal is jár. A két megoldás között létezik az általunk használt tomográfiás felvételek készítése, és azok feldolgozása. Ez az eljárás hasonlít a mammográfiás felvételek készítéséhez, ahol a vizsgált területet több különböző szögből készült röntgenkép feldolgozásával jelenítjük meg. Ez a módszer a tüdőterület vizsgálata során úgy néz ki, hogy a páciens mellkasáról egy függőleges egyenes mentén több (kb. 40) röntgenfelvétel készül, melyekből később függőleges szeletképeket lehet számolni. A módszer előnye, hogy a CT felvételhez képest nagyjából egy nagyságrenddel kevesebb felvétel készül, így a sugárzás is jóval kisebb mértékű. Kontrasztanyagot ezen felvételek készítése során pedig nem használunk, ami a felvételek készítésének árát ugyancsak csökkenti. Hátránya azonban, hogy ezeken a felvételeken a tüdőn belüli elváltozásokat jóval nehezebb detektálni.
Felvételek készítése Ahhoz, hogy szeletképeket tudjunk előállítani, pontosan beállított röntgenfelvételeknek kell készülnie a páciensről. A felvételek készítésének vázlatát a lenti ábra mutatja. A páciens beáll egy ernyő elé, így a mellkas és az ernyő között nagyjából 5-10 cm távolság van. A felvételek ezután nagyjából 1,8 méter távolságról készülnek, egy, a talajra merőleges egyenes mentén. A felvételek nagyjából 40°-os szögintervallumon készülnek. Ezen az intervallumon belül készül kb. 40 felvétel a mellkas területről.
Felvételek készítésének módja
Elváltozások detektálása Ahhoz, hogy a tüdőben elváltozásokat találjunk, el kell távolítani mindent, ami nem elváltozás. Ez a tüdő esetében az ereket jelenti. Így az ötlet az, hogy az ereket eltávolítjuk a tüdőből, minek következtében ott csak az oda nem illő elváltozások maradnak meg. A féléves feladat során a célunk az volt, hogy előzetesen feldolgozott CT képek felhasználásával függőleges szeletképeket készítsünk. Előzetes előfeldolgozás alatt esetünkben a tüdőterület „kivágása” történt, így a CT képek vetítése után a képeken csak a tüdő látszódott. További feladat a jövőre nézve a CT képeken az érhálózat detektálása. Felmerül a kérdés, hogy miért kell a CT képeken elvégezni a detektálást? Elvégre a tomográfiás felvételek készítése során CT képek nem készülnek, így ezeken a detektáláshoz szükséges műveleteket sem lehet elvégezni. Fejlesztés szempontjából viszont hatalmas előnye van ennek a módszernek – CT képeken (a kontrasztanyagnak köszönhetően) nagy a tüdőterület és az erek közötti
fényintenzitás-különbség, így viszonylag egyszerűen, nagy biztonsággal meg lehet állapítani az érhálózatot. Az így kapott érhálózatot a későbbi munka során – mikor már a kész szeletképeken próbálunk ereket detektálni – fel lehet használni ellenőrzésre.
Vetítés A vetítés során az eljárás bemenete egy CT képsorozat, melyek egy páciens mellkasáról készültek. Az eljárás kimeneteként pedig ezekből a felvételekből készült szeletképeket kell kapnunk. Az eljárás nagy vonalakban a következő: a CT képekből olyan röntgenfelvételeket vetítünk, amilyenek a fentebb vázolt módszer során készülnek, majd ezekből a képekből készítjük a szeleteket. Mivel a második lépés algoritmusa már készen van, az én feladatom az első lépés implementálása volt.
Bemenetként kapott CT felvételsorozat egy eleme
A bemeneti CT képek 512x512 pixel méretűek voltak. Mivel itt ezen nem tudtunk változtatni, így ehhez mérten építettem fel a vetítés modelljét. A CT képeken nagyjából 20 pixel felel meg a valóságban 1 cm-nek, így a test és az ernyő távolságát 100 pixelnek választottam, a kamera és a test távolságát pedig 3400 pixelnek. A továbbiak során ezeket a metrikákat alkalmaztam.
Síkbeli vetítés Első megközelítésben a vetítést képenként végeztem el. Ehhez három bemenet volt adott – a CT felvétel, a kamera távolsága a kép hozzá közelebb első oldalától, illetve a kép és az ernyő távolsága. Az elrendezést az alábbi ábra szemlélteti:
Síkbeli vetítés vázlata Mivel síkon vetítünk, így az ernyőnk (ami a kimeneti képet tartalmazza) 1 pixel magas lesz, a szélessége pedig az egyes elemek elhelyezkedésétől, és a CT felvétel méretétől függ. Ezek után a vetítés menete a következő:
Megállapítjuk az ernyő méretét. Ehhez egy egyenest állítunk a kamera és a CT felvétel kamerához közelebbi sarkaira, majd ezen egyeneseknek az értékét kiszámoljuk az ernyőre vetítve is. A két kapott érték különbségének abszolút értéke adja az ernyő szélességét. Miután az ernyő méretét ismerjük, ennek térbeli elhelyezését is ki tudjuk számítani. Miután ezt elvégeztük, sorban egyenest állítunk az ernyő soron következő pontja és a kamera pontja között. Az így kapott egyenes mentén megvizsgáljuk minden kamera és ernyő közötti pontra, hogy az a pont rajta van-e a felvételen. Ha rajta van, akkor ennek a pontnak az intenzitásértékét elmentjük. Végső lépésként az elmentett intenzitásértékekből átlagot képzünk, ez az átlag kerül be az ernyőnek a soron lévő pontjára.
A fent leírt vetítést tehát minden felvételre el kell végezni. Az így kapott „csíkokat” pedig egymás alá helyezve megkapjuk a vetített képet. Azonban az így kapott kép nem felel meg a valóságnak, mert ott egyetlen kamerapontból készül egy felvétel. Ez a megoldás azonban egy jó alapot jelentett a térbeli vetítés implementálásához.
A szürke ábra
A síkbeli vetítés során az alábbi hibába futottam – kimenetként egy közel egyszínű középszürke képet kaptam, a szélén véletlenszerűnek vélt zajjal.
A szürke kép A hiba a MATLAB számábrázolásából eredt. Alapvetően azt a számlálót, amiben az egyes ernyőpontok intenzitásértékeit számoltam össze (átlagképzés céljából), alapértelmezetten 8 bites integer típusúak voltak. Mivel azonban a CT felvételeknek az egyes képpontjait 12 biten tárolják, így ez a változó túlcsordult. A megoldás az volt, hogy ezt a számlálót double típusúra változtattam, így az intenzitásösszeg elfért a változóban.
Térbeli vetítés Térbeli vetítés során (a síkbelivel ellentétben) a teljes vetített felvétel egyetlen kamerapontból készül. Mivel ehhez a megoldáshoz nem elég egyetlen CT kép felhasználása, így első lépésként a felvételsorozatból egy három dimenziós testet kell felépíteni.
Felépített test vázlata
Először deklaráljuk magát a testet, egy három dimenziós mátrixként, melynek méreteit megkapjuk a felvételek méreteiből (512 px, 512 px), illetve a képek számából. Ezután sorban beolvassuk a felvételeket, és elhelyezzük ezeket a testben. A következő lépések nagyon hasonlóak a síkbeli vetítéshez. Bemenetek közül CT felvétel helyett most már a CT képekből felépített testet adjuk át az eljárásnak. Első lépésként az ernyő méretét határozzuk meg – itt már nem elég az ernyő szélességét megállapítani, szükség van az ernyő magasságára is. Ezt a szélességhez hasonló módszerrel számítjuk ki. Az ezt követő lépések pedig teljesen megegyeznek – minden ernyőpontra egyenest állítunk a kameraponttal, majd azokat a testbeli pontokat, amik metszik ezt az egyenest, a síkbeli módszerrel megegyezően átlagolunk, majd ez az érték kerül az ernyőre. A következő képet térbeli vetítés eredményeként kaptam. A kamerapont a dokumentáció elején definiált értékek felhasználásával készült, a kamera pozíciója pedig a test középpontjával egy vonalban van:
Vetített tüdőkép
Képsorozat készítése A térbeli vetítést felhasználva készítjük el a szükséges képsorozatot, a Felvételek készítése pontban tárgyaltak szerint. Ehhez a vetítő eljárást ugyanazzal a test és ernyőtávolság paraméterekkel, de változó kamerapont paraméter segítségével futtattam le.
Felvételek készítésének vázlata
Ahogy a fenti vázlaton is látszik, a kamera mozgatása a vászon „mozgásával” is jár, mind méretbeli, mind pozícióbeli értelemben. Ennek kiküszöbölésére fix ernyőméretet vettem fel, amin a legmagasabb és a legalacsonyabb kamerapozíciók által számolt ernyők pozícióit vettem figyelembe. Az eljárás kimeneteként kapott néhány kép:
A vetítés eredménye
Tüdőmaszk használata Ahhoz, hogy csak a tüdőt vetítsük ki, a CT képek előzetes feldolgozása szükséges. Itt a labortársam által készített algoritmus segítségével közvetlenül a test felépítése során, a képek betöltése után egy olyan mátrixszal maszkoltam a beolvasott CT felvételeket, amik elfedtek minden tüdőn kívüli részt. Az így kapott vetített képek azonban a vetítési eljárás miatt nagyon kis intenzitásúak voltak, így a kész képsorozaton egy végső eljárást is végrehajtottam, ami a pixelek fényintenzitás értékét lineárisan felskálázta. Az így kapott képsorozat néhány tagja:
Vetített tüdő képek A kapott képek utólagos átskálázása helyett jobb eredményt értünk volna el, ha a vetítő algoritmust módosítjuk, azonban a feladatunk egy univerzális vetítő eljárás létrehozása volt, így nem lett volna jó ötlet az algoritmust erre a konkrét problémára specializálni.
További teendők A CT képeken az érdetektálás az elsődleges feladat. A vetítő algoritmus a tüdő maszkolásához hasonlóan, ha egy érmaszkkal előfeldolgozott testet kap, úgy azt fogja vetíteni. A következő lépés a vetítés szempontjából az ernyőpont-kamerapont által meghatározott egyenes és a test metszéspontján kapott pontok feldolgozásának tökéletesítése lenne. Itt első közelítésben egy küszöbértéket lehetne felvenni, ha pedig az aktuálisan vizsgált pont intenzitásértéke küszöb alatt van, az átlagképzés során nem vesszük figyelembe.