11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa Tilavuusdatan katseluprosessi on käsitteellisesti yksinkertaista. Se pitää sisällään tilavuuden kierron katselusuuntaan ja sitten säteen heittämisen tai vastaavan tilavuuteen sopivan arvon löytämiseksi jokaiselle pikselille. Tilavuuden renderöinti vaatii tehokasta laitteistoa. Monesti vuorovaikutteisuus ja animointi ovat kyseeseen tulevan datan yhteydessä tarpeellista. Kun datajoukot ovat hyvin suuria, kuten 512 3, sekä algoritmien että laitteiston tehokkuus ovat tärkeitä. Tämän algoritmiikan terminologia on vaihtelevaa. On kaksi pääluokkaa: Vaihtoehdot on esitetty kuvassa 11.12. Säteenheittämisessä voidaan joko muuntaa ja uudelleennäytteistää tilavuusdata saaden sen koordinaattiakselit yhdensuuntaisiksi kuvatason kanssa tai se voidaan jättää muuntamattomaksi. Mikäli data muunnetaan ennen säteenheittämistä, muodostetaan säteiden joukko, jotka ovat yhdensuuntaisia muunnettujen datojen rivien (tai sarakkeiden) kanssa. Muuntamattoman datan tapauksessa sädejoukolle tehdään käänteinen katselumuunnos. (1) Säteenheittämismenetelmät eli kuva tai pikseliavaruuden kulkeminen eli takaisinprojisointi. (2) Vokseliprojektiomenetelmät eli kohde tai vokseliavaruuden kulkeminen eli eteenpäinprojisointi. 578 579 Säteenheittäminen (muuntamaton data) Säteenheittämisessä kuljetaan kuva avaruudessa ja heitetään säde jokaiselle pikselille tämän värin laskemiseksi yhdistämisoperaatiolla, kuten edellä esitettiin. Tämän vuoksi on löydettävä nämä vokselit, joiden kautta säde kulkee, ja arvo luokitellun datajoukon jokaiselle vokselille. Kuva 11.12. Tilavuusrenderöinnin rakenteiden luokittelu. Aloitetaan näytteistetyllä datalla, kierretään dataa uuteen suuntaan ja näytteistetään uudelleen. Tällöin data on suodatettava laskostumisen estämiseksi. Monimutkaistava tekijä on datan kolmiulotteisuus samoin kuin uudelleennäytteistys kolmiulotteisessa avaruudessa. Käytännöllistä on mitata yhtäläiset pisteet sädettä pitkin ja etsiä uudelleennäytteistetty arvo näissä pisteissä suodattamalla kolmiulotteisen tilavuuden yli. Tässä käytetään tasavälein otettuja säteen näytepisteitä keskipisteinä kolmiulotteiselle suodatuskernelille. 58 581
Algoritmissa heitetään yhdensuuntaisten säteiden joukko tilavuuteen, kun säteet kulkevat datan jokaisen vokselin kautta. Kuva 11.13. esittää yksinkertaista kaaviota menettelylle. Sädejoukko rakennetaan vieden kukin säde vokselin keskipisteen kautta datajoukon etupuolella. Tarkastellaan uudelleennäytteistystä. Jos tilavuus on jätetty muuttamatta, renderöinti (tai yhdistäminen) ja uudelleennäytteistys sulautuvat yhdeksi operaatioksi. Kuljetaan sädettä pitkin tasavälisin pistein ja lasketaan jokaiselle pisteelle arvo C yhdistämistä varten. Voitaisiin käyttää C:nä näytepisteen sisältävän vokselin arvoa. Yleensä kuitenkin sovelletaan tarkempaa trilineaaria interpolointia. Tämä nähdään poikkileikkauksen kuvassa 11.14., jossa se esitetään kaksi ulotteisena bilineaarina interpolointina. Kuva 11.13. Sopiva sädejoukko säteenheittämisalgoritmissa. 582 583 Säteenheittäminen (muunnettu data) Säteenheittämisen toinen muunnos käsittää datan esimuuntamisen haluttuun suuntaan. Tämän jälkeen säteenheittäminen on yksinkertaista, kun yhdistetään pitkin muunnetun datan rivejä tai sarakkeita. Datan muuntamiseksi tehdään kolmivaiheinen hajautus. Katselumuunnos käsittää tällöin jonon vääntöjä (shear), kolme jokaiselle akselille eli näillä yksi kullekin suunnalle. Kuva 11.14. Arvo C s säteen näytepisteestä lasketaan bilineaarilla interpoloinnilla. C V lasketaan arvoista C 1 ja C 2. C H lasketaan arvoista C 2 ja C 3. C S lasketaan arvoista C V ja C H. Vääntö on myös affiini muunnos, kuten perusmuunnokset siirto, kierto ja skaalaus. Tässä muunnoksessa kuvan 11.15. esimerkissä kuutiota tavallaan vedetään kuution ylätahkoa oikealle ja alatahkoa vasemmalle. Kun kuutio on keskitetty origoon, muunnos kohdistuu vain x akselille. Muut komponentit eivät muutu. 584 585
Kuva 11.15. Vääntö. x' = x + y' = y z' = z y cotθ Tästä saadaan homogeeninen matriisi: Kuva 11.16. Muunnosmatriisin laskenta. Kuvan 11.16. perusteella voidaan johtaa muunnos: H x = 1 cotθ 1 1 1 586 587 Yleinen muunnos käsittää yhdeksän vetoa, joissa jokaisessa kutakin vokselia siirretään vakion verran. Uudelleennäytteistys pitää nyt tehdä jokaisen leikkauksen aikana ja uudelleennäytteistys tehdään ennen yhdistämistä. Uudelleennäytteistys käsittää yksinkertaisen interpoloinnin (kuva 11.17.). Kuvissa 11.18. 23. on esimerkkejä. Kuva 11.17. Uudelleennäytteistys suoritetaan jokaisen väännön aikana. 588 589
Kuva 11.18. Nestedynamiikan simulointia, jossa väri kuvaa eri lämpötiloja. Kuva 11.19. Tilavuusrenderöity (säteenheittämisellä) tehty kuva päästä. Iho renderöity läpinäkyvänä ja lihakset läpinäkymättöminä. 59 591 Kuva 11.2. Marssivien kuutioiden algoritmilla laadittu kuva hummerista soveltaen tasa arvopintoja. Datajoukko on 12 12 34 vokselia. Kuva 11.21. Tasa arvopintojen verkko hummerille, kun on laskettu nk. partikkelijärjestelmällä (4 partikkelia). 592 593
Kuva 11.22. Tasa arvopintoja soveltaen kuvattu ihoa ja luuta tietokonetomografiadatasta, jossa on 94 viipaletasoa resoluutiolla 128 2. Kuva 11.23. Tasa arvopintoja käyttäen kuvattu läpikuultavaa ihoa ja lisäksi erivärisiä kuvatasoja. 594 595