Rákos megbetegedések diagnosztizálása adatokkal 72 óra alatt
Októberben került megrendezésre első alkalommal a JunctionXBudapest, a híres finn hackhaton, a Junction előversenyeként. Már nyáron eldöntöttük a Dmlabnál, hogy próbára tesszük magunkat és elindulunk a versenyen. A háromnapos megmérettetés alatt új emberekkel, cégekkel ismerkedtünk meg és rengeteget tanultunk ezen rövid idő alatt is.
Felvetődhet a kérdés, hogy mi is az a Junction X Budapest? A Junction eredetileg egy Finnországban megrendezett hackhaton, amelyre az évek során annyira megnőtt az érdeklődés, hogy úgy döntöttek, egy új sorozatot indítanak JunctionX néven a világ különböző pontjain. Budapestre a TechEmbassy csapata hozta el nekünk a versenyt, akik már első alkalommal is nagyon színvonalas eseményt szerveztek.
A hackhaton lényege, hogy rövid idő alatt kell elkészíteni, felvázolni vagy megvalósítani egy olyan ötletet, amivel megnyerheted a versenyt. Ezzel mi sem voltunk másképp, ám ötletünk megvalósításáig hosszadalmas út vezetett. Nekünk péntek 19 órától vasárnap 13 óráig volt lehetőségünk megvalósítani az innovatív és olykor lehetetlennek tűnő elképzeléseinket.
Először választanunk kellett egyet a négy challange közül, melyen versenyezni kívántunk. A péntek esténk azzal telt, hogy eldöntsük, hogy a Nokia vagy a Varian feladatát válasszuk. Végül az utóbbi mellett döntöttünk, amelyet egy cseppet sem bántunk meg. A Varian feladata agyi tumorok detektációja volt MRI és CT képeken. A feladat tehát képfeldolgozás volt, ahol nem szabták meg, hogy milyen technológiát használhatunk, a cél az volt, hogy találjuk meg nekik a tumorokat a valós felvételeken.
A feladat jelentőségét mutatta, hogy elmondásuk szerint a saját mérnökeik számára is rendkívül nagy nehézséget jelent a tumorok automatikus felismerése, így egy jó megoldás valóban megkönyítené a vállalat munkáját. Péntek este jött egy, akkor még lehetetlennek tűnő ötlet, mely az idő előrehaladtával egyre megvalósíthatóbbnak tűnt.
Ezen ötletünk alapján az MRI felvételekből készítettünk egy 3D-s agyat, benne a tumorral, amit egy VR környezetben jelenítettünk meg. Az ötletünket hallva a Varion munkatársai nem gondolták, hogy képesek leszünk elkészíteni ilyen rövid idő alatt tervünket. Szombat délelőttől egészen vasárnap 13 óráig megállás nélkül a megoldáson dolgozva sikerült elkészítenünk azt, amiben oly kevesen hittek az ottlévők közül – köztük néha mi magunk is. Vasárnap délutánra elkészült a 3D-s vizualizációnk.
A tumorok megtalálásához első lépésként fel kellett dolgoznunk a kapott DICOM formátumú fájlokat. Ezen fájlformátumot az egészségügyben használják különféle orvosi gépek által készített felvételek tárolására. A beolvasást követően különféle transzformációkat (Grey Scaling) és szűréseket (Antistropic filter, Erosion, Dilation) hajtottunk végre a képeken a szükségtelen részek eltüntetése és a fontos részek kiemelése érdekében. Az előfeldolgozott képeken ezután következhetett a tumor keresése. Első ötletünk egy neurális háló volt, azonban az adatok egységességenek hiányában, illetve azok kis elemszáma miatt ezt elvetettük. Végül az OpenCV könyvtár segítségével oldottuk meg a feladatot, ahol a feldolgozott képeken kerestük a megfelelő attribútumokkal rendelkező, tumorokhoz hasonlító alakzatokat.
A tumor detektálása az alábbi folyamatok végrehajtásával valósult meg:
A tumor megtalálását követően a 3D-s vizualizáció elkészítése következett. A vizualizáció a Unity nevű program felhasználásával történt, ahol raymarching segítségével az MRI képekből felépítettük a vizsgált agy háromdimenziós modelljét. A modellben a detekció során megtalált tumort pontosan helyeztük el, mivel a tumor elhelyezkedését ismertük, azonban a pontos alakját nem, ezért a verseny alatt egy elipszoiddal szemléltettük azt. Az agyat nem csupán nézni lehetett, hanem különféle attribútumok változtatásával vizsgálni is; a vágósíkok elhelyezése a különböző tengelyeken, az intenzitás, a küszöbérték állitása mind egyénileg testreszabható volt. Ehhez készítettünk egy virtuális valóság applikációt, és egy Samsung Gear VR szemüveg segítségével mutattuk be a projektünket a többi csapat számára.
A megoldásunk mindenki tetszését elnyerte. Próbáltunk innovatívak és merészek lenni, ennek ellenére kategóriánk első helyét sajnos nem sikerült elnyernünk, mindenesetre a Community Challengen legjobb magyar csapatként 8. helyezést értünk el a 44 résztvevő közül.
A hackhaton nagyon jó élmény volt számunkra, és megmutatta, hogy képesek vagyunk bármit elkészíteni, amit csak kigondolunk.