Bachelor Informatica
Analyse en kwantificatie van complex gevormde 3D-beelden van micro-computertomografie¨en van koralen Tamara Ockhuijsen 6060374
19 juli 2013
Supervisor: Robert Belleman (UvA) Signed:
Samenvatting Het visualiseren van biomedische data in 3D biedt de mogelijkheid om complexe vormen duidelijk weer te geven en er metingen aan te verrichten. Op veel gebieden is deze ontwikkeling al ver gevorderd, echter staat deze bij koralen nog in de kinderschoenen. In deze scriptie wordt een antwoord gegeven op de vraag: Hoe kunnen metingen worden gedaan aan koralen aan de hand van micro-CT scans? De koralen worden hiervoor eerst gevisualiseerd in 3D. Er wordt gebruik gemaakt van het programma ParaView, dat gedistribueerd werkt met een gespecialiseerd visualisatiecluster van SURFsara. Met behulp van ParaView zijn de hoogte en diameter van een koraal op een interactieve manier gemeten. De resultaten zijn betrouwbaar en reproduceerbaar.
2
Inhoudsopgave
1 Inleiding 1.1 Probleemstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Doelstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 5 5
2 Literatuuronderzoek 2.1 Medische toepassingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Overige toepassingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 9
3 Methoden en technieken 3.1 Driedimensionale visualisatie 3.2 Programma’s . . . . . . . . . 3.3 ParaView . . . . . . . . . . . 3.4 Visualisatietechnieken . . . . 3.5 Meetmethoden . . . . . . . . 3.6 SURFsara . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
11 11 12 14 15 19 20
4 Resultaten
21
5 Conclusie
29
A Handleiding SURFsara A.1 Client-server modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Remote visualisatie met VNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33 33 34
B ImageJ B.1 Reeks bestanden omzetten naar een enkel RAW-bestand . . . . . . . . . . . . . . B.2 Enkel plakje omzetten naar een ander bestandstype . . . . . . . . . . . . . . . . .
35 35 35
3
4
HOOFDSTUK 1
Inleiding Koraal is niet alleen bijzonder mooi om te zien, maar ook belangrijk voor de natuur als ecosysteem. Het koraalrif is het vruchtbaarste en soortenrijkste ecosysteem van de zee. Het kan gezien worden als het mariene equivalent van het tropische regenwoud op het land [13]. Voor mens en dier is het rif belangrijk vanwege de vissen waar ze van leven, die alleen op het rif voorkomen. Daarnaast worden steeds meer producten uit het rif ontdekt die bijdragen aan de ontwikkeling van medicijnen [22]. De structuur van koralen zegt veel over de oceanografische en klimatologische veranderingen van de omgeving waarin ze hebben geleefd [14]. Een aantal voorbeelden hiervan zijn de invloed van het licht, het gehalte aan CO2 , de temperatuur en de zuurgraad van het zeewater. Koralen kunnen duizenden jaren oud worden en bevatten waardevolle informatie over hun geschiedenis. Het is dus zeker interessant om onderzoek te doen naar koralen, voordat het te laat is. De koraalriffen zijn namelijk al decennia lang in gevaar. Oorzaken hiervoor zijn vervuiling, (duik)toerisme, verkeerde vistechnieken en het broeikaseffect.
1.1 Probleemstelling Koralen zijn beschermd en mogen daarom niet zomaar worden opgedoken voor onderzoek. De beschikbare stukken koraal zijn zeldzaam en er moet daarom zuinig mee worden omgegaan. Voor het doen van onderzoek naar koralen, zouden metingen kunnen worden verricht aan het koraal zelf. Deze metingen zijn echter onnauwkeurig. Om de binnenkant van het koraal te bekijken, zou het opengesneden moeten worden. Dit is verre van ideaal, aangezien de structuur van het koraal dan onherroepelijk kapot wordt gemaakt. Met micro-CT kan de binnenkant van een koraal worden gescand op een non-destructieve manier. Hoe kunnen metingen worden gedaan aan koralen aan de hand van micro-CT scans? Zijn deze metingen betrouwbaar en reproduceerbaar?
1.2 Doelstelling Het doel van dit werk is om te onderzoeken hoe metingen verkregen kunnen worden aan microCT scans van koralen. Om dit te bereiken, moeten de gecalcificeerde structuren van de koralen eerst zichtbaar worden gemaakt. De eerste stap is dan ook het visualiseren van de micro-CT datasets in 3D. Hierna worden de metingen uitgevoerd op deze virtuele replica van het koraal. Een uitdaging hierbij is dat micro-CT datasets gigabytes groot zijn, waardoor het visualiseren op een standaard computer niet altijd mogelijk is. Hiervoor zal een oplossing moeten worden gevonden. Dit project draagt bij aan het onderzoek naar koralen van de Computational Science onderzoeksgroep aan de Universiteit van Amsterdam onder leiding van Jaap Kaandorp [19].
5
6
HOOFDSTUK 2
Literatuuronderzoek Bij het maken van een CT-scan wordt r¨ ontgenstraling door een object heen gezonden en opgevangen. Een deel van de straling wordt geabsorbeerd en de sterkte van de resterende straling wordt gemeten. De doorlaatbaarheid van het object wordt door middel van rotatie vanuit verschillende hoeken plakje voor plakje gemeten. Met deze plakjes kan een driedimensionale weergave worden gereconstrueerd. Godfrey Hounsfield won in 1979 de Nobelprijs voor de Fysiologie van Geneeskunde voor het ontwikkelen van de computertomografie. De Hounsfield unit (HU) is de naar hem genoemde eenheid voor de r¨ ontgendichtheid [1]. Er is in voorafgaand werk binnen en buiten de onderzoeksgroep van de Universiteit van Amsterdam onderzoek gedaan naar verschillende methoden en technieken om metingen aan de hand van CT-scans uit te voeren. In dit hoofdstuk wordt het meest relevante onderzoek beschreven.
2.1 Medische toepassingen Bij medische toepassingen wordt vaak gebruik gemaakt van medische scans waarop metingen worden verricht [16]. Er kunnen bijvoorbeeld volumetrische metingen worden gedaan aan longknobbeltjes met CT-scans van longen. In dit werk wordt beschreven dat met de software LungCare een knobbeltje kan worden aangeklikt met de muis. Vervolgens wordt een 3D-structuur gevormd en het volume wordt berekend. Met CT kan het effect van een behandeling op een tumor worden onderzocht (zie ook Figuur 2.1). Bij dit onderzoek is software van Advantage Windows gebruikt voor het maken van 3Dreconstructies van tumoren en het berekenen van de volumes ervan. Deze methode is eerst getest op objecten gemaakt van Plasticine en vervolgens toegepast op pati¨enten. De metingen van de volumes zijn nauwkeurig en reproduceerbaar voor grotere objecten. De nauwkeurigheid van de volumemetingen is 5%.
Figuur 2.1: 3D-reconstructie van een vergrote lymfeklier van een 60-jarige man [15].
7
Voordat een chirurg een implantaat in een menselijk gebit zet, kunnen eerst scans worden gemaakt van het gebit (zie ook Figuur 2.2). Er zijn in dit werk CT-scans en optische scans gebruikt om metingen aan te verrichten. De verkregen data worden gevisualiseerd in 3D met behulp van het programma 3D Slicer [25]. Er is een 3D-model gemaakt van CT-data en het andere model is verkregen door data van de optische scanner. De distributie van de verschillen tussen de twee modellen is gekwantificeerd.
Figuur 2.2: 3D-model van een gebit verkregen door (A) CT-data en (B) de optische scanner [7]. Met behulp van multidetector CT zijn de lichamen van dertien Egyptische menselijke mummies gevisualiseerd in 3D (zie ook Figuur 2.3). Vitrea software is hierbij gebruikt voor het analyseren van de scans en het verkrijgen van een driedimensionale reconstructie [28]. Er zijn metingen uitgevoerd op de schedel om de antropometrische gegevens te berekenen. CT wordt hier ook gebruikt om non-destructief te kunnen meten aan objecten. Aan de hand van het skelet kan onder andere worden bepaald hoe oud de mummies waren en wat hun geslacht was.
Figuur 2.3: 3D-reconstructie van CT-scans van een Egyptische mummie [3]. De term micro geeft aan dat de grootte van een pixel wordt aangegeven in micrometers (10−6 m). De machine die wordt gebruikt voor micro-CT is klein en geschikt voor kleine objecten. De scans hebben een veel grotere precisie dan normale medische scans. Hierdoor zijn medische scans geschikt voor onderzoek naar vorm op een globaal niveau en micro-CT scans om onderzoek te doen naar structuren op een kleiner niveau. Door deze nauwkeurigheid zijn micro-CT datasets vele malen groter dan normale datasets. Micro-CT datasets bevatten gigabytes aan informatie en normale datasets zijn enkele honderden megabytes groot. Dit kan tot problemen leiden, aangezien de meeste computers een werkgeheugen hebben van 4 GB.
8
Bij onderzoek naar de hersenen van overleden muizen kan gebruik worden gemaakt van microCT en micro-MRI scanners (zie ook Figuur 2.4). De voorkeur gaat uit naar micro-CT, omdat het veel goedkoper is dan micro-MRI. Met behulp van micro-CT kan het contrast tussen een tumor en het normale hersenweefsel zichtbaar worden gemaakt en kan een schatting worden gemaakt van het volume van de tumor. De visualisatie van de data wordt gerealiseerd met Amira software [17]. Het traceren van de randen van tumoren kan worden gedaan met Analyze software [18]. De complete contour is verkregen door middel van interpolatie over alle relevante plakjes.
Figuur 2.4: Micro-CT beelden van de hersenen van een muis met een tumor [4].
2.2 Overige toepassingen GEOPROVE is een software-architectuur waarbij virtuele probes in een interactieve virtuele omgeving geplaatst kunnen worden om kwantitatieve informatie te verkrijgen [2]. Met deze architectuur kunnen metingen worden verkregen van verschillende niveaus van datapresentaties. Een probe kan de co¨ ordinaten van een positie in de omgeving of een andere waarde bevatten verkregen van data op deze positie. Als toepassing zijn de kortste afstanden tussen naburige uiteinden van takken van koralen gemeten. Het is mogelijk om CT datasets van koralen te analyseren door middel van het construeren van een morfologisch skelet (zie ook Figuur 2.5). Dit geeft een beeld van het skelet van het koraal met zijn aftakkingen. De Visualization Toolkit is gebruikt voor het tonen van de resultaten van de beeldverwerking en voor de visuele interactie met de dataset [30]. De hoeken tussen de aftakkingen en de dikte van de takken zijn gemeten. 9
Figuur 2.5: Het morfologische skelet van een koraal [10]. In bovenstaand werk wordt gebruik gemaakt van verschillende programma’s die niet allemaal geschikt zijn voor onderzoek naar koralen. De LungCare software is alleen toepasbaar op longen. De Vitrea software is niet beschikbaar op de offici¨ele website. Er is geen beschikking over een Windows Advantage werkstation. Van de Amira en Analyze software zijn alleen probeerversies gratis te verkrijgen voor een gelimiteerd aantal dagen. Bij GEOPROVE kunnen geen oppervlakte- en volumemetingen worden verricht. Er zijn nog geen publicaties beschikbaar over het visualiseren van en metingen doen aan koralen in 3D aan de hand van micro-CT datasets. Dit is onderzoek dat op dit moment plaatsvindt en waar deze scriptie een bijdrage aan levert.
10
HOOFDSTUK 3
Methoden en technieken 3.1 Driedimensionale visualisatie Er zijn robuuste algoritmen nodig om op een geautomatiseerde manier te kunnen meten aan complex gevormde objecten. Dit houdt in dat de meting objectief, nauwkeurig, reproduceerbaar en betrouwbaar dient te zijn. Bij gelijke omstandigheden moet een herhaalde meting dezelfde uitkomst hebben. Een andere voorwaarde is dat de meting binnen een afzienbare tijd uitgevoerd kan worden. Bij groter wordende datasets neemt de tijd die nodig is om de analyse af te ronden toe en de machine moet over genoeg geheugen beschikken. Er kunnen hiervoor gespecialiseerde computersystemen worden gebruikt die de belasting beter kunnen dragen. Koraalonderzoekers zijn ge¨ınteresseerd in verschillende soorten metingen aan koralen. Hieronder vallen de kwantificeringen van globale karakteristieken, zoals de hoogte-, breedte- en dieptedimensies, inhoud, oppervlakte en dichtheidsverdeling in een histogram. Om zo objectief, nauwkeurig, reproduceerbaar en betrouwbaar mogelijke metingen te verkrijgen, heeft het toepassen van een automatische methode met behulp van een algoritme de voorkeur. Dit is mogelijk bij de meeste van de eerder genoemde type metingen. Onder de andere type metingen vallen de kwantificeringen van karakteristieke structuren in het koraal, zoals de lengte en dikte van een tak en de afstanden en hoeken tussen twee vertakkingen. Hierbij staat het herkennen van de karakteristieke structuren van het koraal centraal. Vroeger vergeleken en classificeerden biologen koraalmonsters met de hand. De metingen nemen dan veel tijd in beslag en kunnen fouten bevatten. Het gebruikmaken van een algoritme maakt het uitvoeren van metingen objectief, sneller, eenvoudiger en nauwkeuriger. Er bestaat echter niet altijd een betrouwbaar algoritme voor het vinden van een bepaalde structuur. Interactief meten met een gebruiker biedt een oplossing, vanwege de ervaring van een mens en het vermogen van ons visuele systeem om patronen en structuren te herkennen. Door middel van interactieve visualisatie kan meer inzicht worden verkregen in de data. De mens wordt als schakel bij het algoritme gebruikt om de meting alsnog te kunnen verrichten. Nadat het koraal is gevisualiseerd in 3D kunnen metingen worden uitgevoerd op een interactieve manier. Het object kan met behulp van de muis in de gewenste positie worden gedraaid alvorens een meting wordt uitgevoerd. Tevens kan op het object worden in- en uitgezoomd. Meetmethoden kunnen de mogelijkheid bieden om met behulp van de muis probes in het object te plaatsen om kwantitatieve informatie te verkrijgen. Voor de visualisatie van CT-scans kunnen de technieken 2D volume slicing, 3D surface rendering en 3D volume rendering worden gebruikt (zie ook Figuur 3.1). • Bij 2D volume slicing wordt steeds een plakje uit de volumetrische data genomen. Met het interpoleren van de omliggende datapunten worden de onbekende datapunten bepaald. De plakjes vormen samen een 3D-object. Het 2D-vlak kan een willekeurige ori¨entatie hebben in de 3D-dataset. Het voordeel is dat deze methode snel werkt. Het nadeel hiervan is dat de gegevens vanwege de interpolatie niet helemaal nauwkeurig zijn. Een probleem bij een 2D-slice is de keuze van de ori¨entatie van het vlak. Afstanden tussen twee punten op de doorsnede kunnen hiermee worden gemeten. 11
• Met 3D surface rendering worden de volumetrische data eerst omgezet naar een 3Doppervlak bestaande uit een verzameling driehoeken. Deze driehoekjes worden vervolgens weergegeven in een 3D-ruimte. Surface renderings hebben een hoog contrast tussen het object en de achtergrond, terwijl dit bij volume renderings over het algemeen minder hoog is. Het voordeel van surface rendering is dat de complexiteit van het renderen wordt gereduceerd, waardoor de rendering redelijk snel kan worden uitgevoerd. Het nadeel is dat bij het samenstellen van een 3D-oppervlak gegevens verloren gaan. Met deze methode is het mogelijk om de dimensies, lengte en dikte van takken, totale oppervlakte, inhoud en afstanden en hoeken tussen takken te berekenen aan de oppervlakte. • 3D volume rendering zet de volumetrische data niet om naar 2D-vlakken, maar ze worden direct gebruikt om het object weer te geven. Het voordeel hiervan is dat bij deze vorm van visualisatie de gehele dataset bijdraagt aan het eindresultaat. Volume rendering heeft complexiteit O(n3 ). Het nadeel is dat deze vorm van rendering grote datasets hierdoor trager uitvoert. Dit vormt een belemmering voor het interactief meten aan de visualisatie. De dimensies, dichtheidsverdeling, inhoud, lengte en dikte van takken en afstanden en hoeken tussen takken kunnen worden berekend van het hele volume.
(a) 2D-slice
(b) Surface rendering
(c) Volume rendering
Figuur 3.1: Weergave van een koraal met de verschillende visualisatiemethoden. Figuur 3.1 geeft een weergave van elke methode. Het meten aan 3D-datasets op basis van 2D-weergaven heeft beperkingen. Er ontbreekt informatie van het object, waardoor interpolatie nodig is. De CT-scans kunnen ook last ondervinden van ruis. In dit hoofdstuk wordt uitgelegd hoe de visualisatie in zijn werk gaat. Eerst worden de opties voor de software die voorhanden liggen besproken. Vervolgens wordt de genomen keuze beargumenteerd en uitgelegd hoe de visualisatie tot stand is gekomen. Tot slot worden de meetmethoden en de rol van SURFsara behandeld.
3.2 Programma’s In het literatuuronderzoek zijn diverse programma’s voor het visualiseren van CT-scans in 3D de revue gepasseerd die zijn afgevallen. De software moet aan een aantal nader te noemen eisen voldoen. Hieronder volgt een uiteenzetting van beschikbare programma’s die in overweging zijn genomen. • De Visualization Toolkit (VTK) is een open source programma voor de visualisatie van 3D computer graphics [30]. VTK bestaat uit C++ klassen en verschillende interfaces die onder andere Python en Tcl/Tk ondersteunen. • ParaView is een open source programma dat om VTK heen is gebouwd [24]. Het heeft een grafische gebruikersinterface, waardoor het eenvoudiger te bedienen is dan VTK. ParaView ondersteunt de meeste filters die in VTK beschikbaar zijn. Het is mogelijk om ParaView in client-server modus te gebruiken. • VolView is een open source programma voor het visualiseren van volumes [29]. Het stelt onderzoekers in staat om complexe medische data snel te analyseren. 12
• 3D Slicer is een open source programma voor het analyseren en visualiseren van medische 3D-beelden [25]. • OsiriX is een open source image processing programma speciaal gemaakt voor de Mac [23]. DICOM-bestanden kunnen direct worden ingelezen en in volume worden omgezet. De programma’s worden met elkaar vergeleken op basis van de volgende eigenschappen. Visualisatie met de technieken surface rendering en volume rendering moet mogelijk zijn om een 3D-object te cre¨eren. Aangezien de te gebruiken bestanden in DICOM-formaat zijn geleverd, moet dat bestandstype kunnen worden ingelezen. Indien dit niet mogelijk is, kunnen ze worden omgezet naar een ander bestandstype. Het is van belang dat metingen uitgevoerd kunnen worden op 3D-objecten, zoals het berekenen van dimensies, afstanden, hoeken, oppervlakken, volumes en het maken van histogrammen en doorsneden. Dit onderzoek is bestemd voor biologen, daarom is het belangrijk dat zij met het programma om kunnen gaan. Aangezien biologen over het algemeen werken op Windows machines moet de software hierop kunnen draaien. Biologen beschikken meestal niet over goede programmeerkennis, waardoor de voorkeur gaat naar een grafische gebruikersinterface. De software moet grote datasets kunnen visualiseren. Visualisatieprogramma’s gebruiken RAM-geheugen bij het renderen van beelden. Het RAM-geheugen van de gemiddelde computer is 4 GB groot en met een 32-bit besturingssysteem kan daarvan ongeveer 3 GB worden benut. De te visualiseren bestanden zijn ongeveer 3,5 GB groot en vormen daarmee een aanslag op het geheugen. Het uitvoeren van metingen is hierdoor niet mogelijk of duurt heel lang. Als de bestanden zouden worden opgedeeld en ingeladen in stukjes, kunnen alleen metingen worden verricht binnen een bepaald gebied en niet over de hele dataset. De dataset kan worden verkleind door middel van subsamplen. Hierbij wordt ´e´en waarde gekozen die meerdere waarden representeert in een bepaald deel van de afbeelding. Hierdoor wordt de afbeelding minder gedetailleerd en dat is niet de bedoeling bij micro-CT scans. Een rekenintensieve methode als volume rendering zal alsnog veel geheugen opeisen. Het benodigde geheugen voor volume rendering is vele malen groter dan de grootte van de dataset zelf. Een oplossing voor dit probleem is het gebruikmaken van gedistribueerd geheugen voor de visualisatie.
VTK ParaView VolView 3D Slicer OsiriX
Windows + + + + -
GUI + + + +
gedistribueerd + -
Tabel 3.1: De verschillende programma’s tegen elkaar afgewogen.
In Tabel 3.1 worden de programma’s met elkaar vergeleken op basis van de gestelde eisen. Alle software ondersteunt surface rendering, volume rendering en de eerder genoemde meetmethoden. De overgebleven eigenschappen zijn het kunnen draaien op Windows, het hebben van een grafische gebruikersinterface (GUI) en de mogelijkheid van gedistribueerde visualisatie. ParaView kan gedistribueerd werken met een gespecialiseerd visualisatiecluster van SURFsara [26]. In §3.6 wordt uitgelegd hoe dit in zijn werk gaat. Het programma voldoet aan de gestelde eisen en is dus het meest geschikte programma voor dit werk.
13
3.3 ParaView ParaView heeft een grafische gebruikersinterface die eenvoudig is te bedienen. Het programma is gebaseerd op een onderliggende pipeline architectuur van VTK. De gebruiker laadt de data in en past daarna een of meerdere filters erop toe die een pipeline vormen. Elke filter gebruikt data, voert bewerkingen uit en produceert nieuwe data. Aangezien de invoergegevens nooit veranderen, kunnen meerdere filters in verschillende volgordes worden toegepast tijdens een sessie. Het resultaat van elk filter is meteen zichtbaar. In de pipeline bevindt zich aan de linkerkant van elk filter een oog icoontje dat aangeeft of die dataset momenteel zichtbaar is (zie Figuur 3.2). Een donker oog betekent dat de dataset zichtbaar is en bij een lichtgrijs oog is de dataset onzichtbaar. De dataset wordt zichtbaar gemaakt door op het lichtgrijze oog te klikken.
Figuur 3.2: Donkere en lichtgrijze oog icoontjes in ParaView. ParaView biedt geen eenvoudige mogelijkheid om een reeks afbeeldingen in te lezen en daar direct volume uit te construeren. Het selecteren van een serie afbeeldingen zorgt ervoor dat elke afbeelding individueel wordt ingeladen en de afbeeldingen worden gezien als afzonderlijke objecten in de pipeline. De oplossing hiervoor is het vooraf met een ander programma omzetten van de data in een enkel bestand met ander bestandsformaat. Hiermee wordt tevens het probleem verholpen dat ParaView geen DICOM-bestanden kan openen. ImageJ is een op Java gebaseerd programma voor beeldverwerking [20]. In Bijlage B.1 staat beschreven hoe een reeks bestanden wordt omgezet in een RAW-bestand met behulp van ImageJ.
Figuur 3.3: Eigenschappen bij het openen van een RAW-bestand in ParaView. Bij het openen van het RAW-bestand in ParaView moet het filter in de bestandsbrowser op ‘All files (*)’ worden gezet. Vervolgens verschijnt de optie om te kiezen tussen drie verschillende readers, waarvan ‘Raw (binary) Files’ de juiste is. Voor een juiste weergave van het koraal is het van belang om de eigenschappen in te vullen die bij de DICOM-bestanden horen. 14
De volgende gegevens dienen ingevuld te worden als eigenschappen in de Object Inspector die te zien is in Figuur 3.3. Als alle gegevens correct zijn ingevuld, kan op ‘Apply’ worden gedrukt. • File Prefix: Hier moet het pad naar de locatie van het RAW-bestand komen te staan. Het bestand kan met een bestandsverkenner worden opgezocht door op “...” te drukken. • File Pattern: Dit specificeert de opmaakstring die nodig is om de dataset te lezen. Het veld kan ongewijzigd blijven. • Data Scalar Type: Hier moet het scalaire datatype van de pixels of voxels in het bestand komen te staan. ImageJ ondersteunt 8-bit, 16-bit en 32-bit beelden [21]. Invoerdata van 8-bit, 16-bit en 32-bit worden respectievelijk opgeslagen als de typen char, short en int. Bij ImageJ is onder Image → Show Info... te lezen wat het aantal bits per pixel is en of het om een signed of unsigned datatype gaat. • Data Byte Order: Dit geeft de volgorde van de bytes aan bij typen groter dan 8 bits. Bigendian plaatst de meest significante byte eerst, terwijl bij little-endian de minst significante byte eerst wordt geplaatst. ImageJ slaat 16-bit en 32-bit beelden op in big-endian volgorde [21]. • File Dimensionality: Dit geeft aan of het om volume in meerdere 2D-plakjes of in een 3D-volume gaat. Hier moet een 3 worden ingevuld. • Data Origin: Het co¨ ordinaat dat de positie van het punt met index (0, 0, 0) specificeert. Het veld kan ongewijzigd blijven. • Data Spacing: Dit geeft de grootte van een voxel aan in elke dimensie. De waarde is belangrijk bij het verrichten van metingen, omdat deze gebruikt kan worden om een metriek aan de afmetingen van een voxel te verbinden. Deze is eveneens te vinden in ImageJ onder Image → Show Info... als Pixel Spacing. • Data Extent: Dit specificeert de minimale en maximale indexwaarden van de data in elke dimensie en moet op nul zijn gebaseerd. Als de resolutie van het volume 2000 x 1048 x 50 is, dan moeten de waarden in Figuur 3.3 hier worden ingevuld. De waarden 1999, 1047 en 49 zijn respectievelijk X-1, Y-1 en Z-1. De waarden X × Y × Z zijn direct zichtbaar in ImageJ na het openen van een Image Sequence. • Number Of Scalar Components: Dit is het aantal componenten dat de scalaire waarde bij elke pixel of voxel heeft. Het veld kan op 1 blijven staan. • Scalar Array Name: Dit veld kan ongewijzigd blijven.
3.4 Visualisatietechnieken In een CT-beeld worden grijswaarden aan de hand van de HU-waarde bepaald. Een afbeelding kan gezien worden als een 2D-array met door de CT-scanner gemeten verzwakkingswaarden die worden uitgedrukt in HU. HU-waarden worden berekend met de volgende formule. HU =
µweef sel − µwater ∗ 1000 µwater
(3.1)
µ staat voor de lineaire verzwakkingco¨effici¨ent van een materiaal. Veel scanners kunnen verzwakkingswaarden meten vari¨erend van -2000 tot +4000. Het menselijk oog is niet in staat om duizenden grijswaarden van elkaar te onderscheiden en een monitor kan niet zo veel verschillende intensiteiten weergeven, daarom wordt in een afbeelding slechts een beperkt aantal waarden getoond. Dit wordt de weergave ‘window’ genoemd en geeft de spreiding aan van het aantal HU-waarden dat rond de ‘level’ wordt getoond. De ‘level’ bepaalt hoe de mapping van getalswaarde naar grijswaarde wordt gecentreerd en geeft de middelste HU-waarde aan die in het grijsschaal beeld wordt getoond. Deze waarde moet dichtbij de waarde van het te onderzoeken 15
weefsel liggen. Op deze manier wordt het weefsel zichtbaar gemaakt en kunnen er metingen aan worden verricht. Aangezien ParaView geen DICOM-bestanden kan inlezen, wordt een plakje eerst in ImageJ verwerkt voordat een meting wordt verricht. In Bijlage B.2 staat beschreven hoe een enkel plakje kan worden omgezet in een bestandstype dat ParaView ondersteunt. In ImageJ kunnen de waarden voor de ‘window’ en ‘level’ worden aangepast bij Image → Adjust → Window/Level. Het maken van andere doorsneden van het 3D-object is tevens mogelijk. Het ‘Slice’ filter dat te vinden is onder Filters → Common kan direct worden toegepast op de ingevoerde RAW-data. Bij 2D-slices is de ori¨entatie van het vlak van belang. Deze ori¨entatie kan interactief worden verkregen door het vlak te verplaatsen met behulp van de muis. Er kan een plakje worden gemaakt in een willekeurige hoek in de dataset. De ori¨entatie van het vlak is af te lezen in de X, Y en Z waarden van de Origin en Normal in de Object Inspector. Het bepalen van de threshold die de grenzen van het object specificeert, is belangrijk bij 3Dsurfaces. Een verkeerde threshold kan achtergrond voxels toevoegen aan het 3D-object. Dit leidt tot een overschatting van het oppervlak. Het ‘Threshold’ filter dat te vinden is onder Filters → Common selecteert een deel van de invoerdata dat in een bepaald gebied ligt. Dit gebied specificeert het object en buiten dit gebied bevindt zich de omliggende omgeving.
Figuur 3.4: Marching cube.
Het ‘Contour’ filter dat te vinden is onder Filters → Common genereert het iso-oppervlak van een bepaalde threshold waarde. Het marching cubes algoritme wordt hiervoor gebruikt om een 3D-object weer te geven als een verzameling verbonden driehoeken [11]. De volumetrische data worden verdeeld in een 3D-array van kubusvormige cellen, zodanig dat de acht hoeken van elke cel een dichtheidwaarde hebben toegewezen. De divide-and-conquer strategie wordt gebruikt om het oppervlak binnen een kubus van acht pixels te bepalen. Er zijn vier pixels per plakje die een kubus vormen met de vier pixels van het opeenvolgende plakje. De hoekpunten van de kubus bevinden zich in het midden van een pixel, zoals te zien is in Figuur 3.4. Het algoritme bepaalt hoe het oppervlak de kubus snijdt en gaat dan verder met de volgende kubus. Hoeken van de kubus met een hogere of dezelfde waarde als de threshold waarde krijgen een 1 toegewezen en hoeken met een lagere waarde ontvangen een 0. De hoeken met een 0 liggen buiten het object en de hoeken met een 1 liggen in of op het oppervlak. Het oppervlak snijdt een zijde van de kubus als de twee hoeken een 0 en een 1 bevatten. Een kubus bevat acht hoeken en de twee mogelijke toestanden zijn binnen en buiten het oppervlak. Dit geeft in totaal 28 = 256 mogelijkheden waarop een oppervlak de kubus kan snijden. Vanwege de symmetrie in de kubus kunnen 15 verschillende gevallen worden onderscheiden die te zien zijn in Figuur 3.5. Ieder snijvlak bestaat uit een of meer driehoeken. De snijpunten van de doorsnede met de kubus worden bepaald door lineaire interpolatie met de hoekpunten van de kubus. 16
Figuur 3.5: Driehoeken in de kubus [11]. Voor het ‘Contour’ filter moet een threshold waarde worden gekozen die de structuur van het object representeert. Om de beste threshold waarde voor een koraal te bepalen, wordt gebruik gemaakt van het filter ‘Histogram’ dat te vinden is onder Filter → Data Analysis. Het histogram laat de frequenties van de verschillende getalswaarden zien. Het is de bedoeling om een zo groot mogelijk oppervlak van het object te cre¨eren, zodat het hele object wordt weergegeven. Elke top geeft de meest voorkomende dichtheidwaarde aan. Het histogram vertoont een sterke piek als de achtergrond bestaat uit ´e´en dichtheidwaarde (zie Figuur 4.3). Het object heeft een lagere piek. Bij het koraal zijn twee pieken zichtbaar van een harde en een nog hardere structuur (zie Figuur 3.6). Een gesloten oppervlak maakt een scheiding tussen ‘binnen’ en ‘buiten’. Bij een isooppervlak zitten alle voxels met een hogere waarde dan de threshold waarde aan de binnenkant en de voxels met lagere waarden zitten daarbuiten. De optimale threshold waarde wordt gevonden in het dal tussen de twee toppen van de frequentieverdeling van het histogram. Bij een lage threshold waarde ontstaan achtergrond voxels en bij een grotere threshold waarde zijn steeds minder voxels van het object zichtbaar. Het kiezen van de threshold waarde heeft consequenties voor de posities van de doorsnijdingen die in marching cubes worden bepaald. Een verkeerd gekozen threshold waarde maakt meetresultaten onbetrouwbaar. De driehoeken in de kubus worden groter of kleiner doordat de doorsnijdingen langs de zijden door middel van lineaire interpolatie worden bepaald. Het gehele oppervlak verandert, waardoor niet wordt gemeten aan de gezochte structuur.
Figuur 3.6: Histogram van koraal 445. 17
Directe volume rendering geeft de data weer aan de hand van een optisch model dat beschrijft hoe het volume licht uitstraalt en weerkaatst. ParaView gebruikt het raycasting algoritme voor directe volume rendering. Voor elke pixel in het beeld wordt een ray geschoten in het volume. Elke voxel op het pad van de ray krijgt een opacity en een kleur toegewezen. Het volume kan hierdoor vanuit elke richting gevisualiseerd worden. Volume rendering wordt toegepast in ParaView door de representatie bij het Representation tabje te veranderen naar ‘Volume’. Alle voxels worden bij deze visualisatie gebruikt. Een ‘transfer function’ maakt 3D-volume zichtbaar door datawaarden te koppelen aan de optische eigenschappen kleur en doorschijnendheid. De opacity geeft de mate van doorschijnendheid aan bij 3D-volumes. Een opacity van 0 betekent dat het voxel geheel transparant is en bij een opacity van 1 is het voxel geheel ondoorschijnend. Bij metingen aan 3D-volumes is dit belangrijk, zodat aan de binnenkant van het object kan worden gemeten. Kleuren kunnen een classificatie maken tussen de lucht en het object. Kleuren en doorschijnendheid kunnen kenmerken benadrukken of weglaten. In Figuur 3.7 is te zien dat de aftakkingen van het koraal in plaatje (b) duidelijker zichtbaar zijn dan in plaatje (a).
(a) Onduidelijke aftakkingen
(b) Duidelijke aftakkingen
Figuur 3.7: Kleur speelt een rol om kenmerken te benadrukken.
De Color Scale Editor in Figuur 3.8 biedt de mogelijkheid om de ‘transfer function’ te beheren voor de color en opacity mapping. De interface is te vinden door onder het tabje Display van de Object Inspector op ‘Edit Color Map’ te drukken. Het kiezen van een ‘preset’ bepaalt hoe getalswaarden op kleuren worden gemapped. De keuze van deze mapping is belangrijk voor de visualisatie en heeft een invloed op de meetresultaten. Het menselijk oog is gevoeliger voor intensiteitvariaties dan kleurvariaties. Een regenboog ‘preset’ is geen geschikte keuze, omdat deze niet gebaseerd is op hoe mensen kleur waarnemen. De grijsschaal ‘preset’ werkt goed vanwege de grote verschillen in intensiteit. Het probleem hierbij echter is dat het contrast laag is, want de menselijke waarneming van helderheid is afhankelijk van de helderheid van de omliggende omgeving. Bij een divergerende ‘color map’ passeert de overgang van ´e´en kleurcomponent naar de ander een onverzadigde kleur (wit) [12]. Het verdeelt de getalswaarden in lage, gemiddelde en hoge waarden, die helpen bij het begrijpen van de data. De waarden worden ge¨ınterpreteerd door twee kleuren met een associatie voor ‘laag’ en ‘hoog’. Rood wordt vaak geassocieerd met ‘warm’ en blauw met ‘koud’, dus lage waarden krijgen blauw en hoge waarden krijgen rood toegewezen. De nodes corresponderen met getalswaarden. De linker node correspondeert met de minimale en de rechter node met de maximale getalswaarde. Standaard heeft de minimale getalswaarde een opacity van 0 en de maximale getalswaarde een opacity van 1. De waarden en kleuren tussen de nodes zijn lineair verdeeld. Er kunnen nieuwe nodes worden toegevoegd door op de linker muisknop te drukken in de editor en ze kunnen worden verwijderd door op de Delete knop te drukken. De verticale hoogte van de lijn geeft een opacity tussen 0 en 1 aan. In Figuur 3.8 is te zien dat een extra node in het midden van de functie is toegevoegd met een opacity van 0,5. De zwarte lijn kan verschoven worden door de nodes te verslepen binnen het venster. Elke getalswaarde krijgt op deze manier een kleur en een opacity toegewezen. De functie moet zo worden ingesteld dat het object zichtbaar is en de achtergrond een opacity van 0 heeft. Een verkeerd gekozen opacity en/of ‘color transfer table’ kunnen voxels van het object onzichtbaar maken, waardoor interactief meten onbetrouwbaar kan worden. 18
Figuur 3.8: Weergave van de Color Scale Editor.
3.5 Meetmethoden De metingen worden interactief uitgevoerd door het object eerst in de gewenste positie te draaien met de muis en in- of uit te zoomen door te scrollen. Bij de onderstaande methoden worden 3D-punten in het object geplaatst. Het is niet eenvoudig om 3D-punten op de goede plaats te krijgen met een 2D-beeldscherm. Linksonder in het beeld zijn de ori¨entatie assen te zien, waarvan de kleuren corresponderen met de assen in het midden van het scherm. Deze kunnen gebruikt worden om een 3D-punt op de juiste plaats neer te zetten. De rode, gele en groene assen zijn gelabeld met X, Y en Z om de ori¨entatie van het object aan te geven. De ori¨entatie van de assen komt overeen met die van de data en ze bewegen mee bij het roteren van de camera. Het is handig om deze assen in de gaten te houden, zodat het duidelijk is welke invloed bewegingen van de muis hebben. Na het plaatsen van een punt of lijn in de dataset, moet het object 360◦ gedraaid worden om te controleren of dit daadwerkelijk de gewenste positie is. Indien dit niet het geval is, wordt de punt of lijn verschoven en het beeld weer gedraaid, totdat de correcte positie is bereikt.
Figuur 3.9: De functie ‘Ruler’ berekent de afstand tussen twee punten.
19
Met de functie ‘Ruler’ die te vinden is onder Sources kunnen op een interactieve manier twee punten worden gekozen. Om een punt te kiezen, moet de muis op een bepaalde plaats van de dataset worden geplaatst en de letter ‘p’ moet vervolgens worden ingedrukt. Tussen de twee gekozen bolletjes ontstaat een lijn, die te zien is in Figuur 3.9. De getrokken lijn kan met de muis worden verschoven. Er kunnen ook co¨ordinaten van twee punten worden ingevoerd in de gebruikersinterface. De functie berekent de afstand tussen de twee gekozen punten en kan met alle drie de visualisatiemethoden worden gebruikt.
(a) Getrokken lijn
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 3.10: Het ‘Plot Over Line’ filter met de bijbehorende grafiek.
Het ‘Plot Over Line’ filter dat te vinden is onder Filter → Data Analysis wordt gebruikt om de getalswaarden op de punten langs een lijn te plotten. Het filter gebruikt interpolatie om de waarden van de punten te bepalen die buiten de dataset vallen. De punten voor het begin en eind van de lijn worden gekozen door op ‘p’ te drukken. De getrokken lijn kan met de muis worden verschoven. In de grafiek zijn van deze lijn de getalswaarden op de y-as en de positie over het pad tussen de punten op de x-as af te lezen. De breedte van een tak kan worden berekend door het verschil te nemen tussen de pieken van de grafiek van Figuur 3.10b. Dit filter kan met alle drie de visualisatiemethoden worden gebruikt.
3.6 SURFsara Een van de belangrijkste aspecten van ParaView is de mogelijkheid voor gebruikers om grote datasets te visualiseren, zonder de data eerst te verzamelen op een enkele machine. Sommige datasets zijn te groot om in het geheugen van een computer te passen. ParaView kan worden uitgevoerd in client-server modus op het RVS cluster van SURFsara om deze beperking op te vangen. ParaView heeft geparallelliseerde algoritmen die op grote datasets toegepast kunnen worden. Een of meer ParaView server processen draaien op de RVS cluster nodes. De processen gebruiken MPI om hun activiteiten te co¨ ordineren. De ParaView GUI client wordt gedraaid op de lokale machine van de gebruiker. Het voordeel hiervan is dat de data gedistribueerd worden over de RVS nodes, waarbij elke node een deel van de data krijgt. Bij de visualizatie in de ParaView client zal elke RVS node alleen werken aan zijn eigen stuk data. Hierdoor is sprake van parallelle verwerking en rendering. De client ontvangt de output van het beeld van de RVS nodes, die alleen nog lokaal getoond moeten worden. De RVS nodes gedragen zich als een master node, die de data van het beeld verzamelen van de andere RVS nodes en voegen de stukken samen voordat het eindresultaat naar de client wordt verzonden. Het maken van verbinding tussen ParaView en SURFsara is uitgelegd in een handleiding in Bijlage A.
20
HOOFDSTUK 4
Resultaten In dit hoofdstuk worden de resultaten van de uitgevoerde metingen weergegeven en besproken. De beschikbare CT-scan waarop de metingen zijn uitgevoerd is geleverd door Robert Belleman. Deze is te vinden op het RVS cluster van SURFsara (rvs.sara.nl) op de volgende bestandslocatie: /home/robbel/data/MicroCT/445_20Jun2007/recon/DICOM Voor het visualiseren van micro-CT is koraal 445 gebruikt (zie Figuur 4.1). De afmetingen van de 912 plakjes zijn 2000 x 2000 pixels en daarmee is de dataset in totaal 3.4 GB groot. De meetmethoden ‘Ruler’ en ‘Plot Over Line’ zijn gebruikt om de hoogte van het koraal en de diameter van de stam te meten. Om te controleren of deze interactieve metingen nog steeds objectief, nauwkeurig, reproduceerbaar en betrouwbaar zijn, zal elke meting tien keer onafhankelijk van elkaar worden uitgevoerd. Hierbij is ParaView telkens opnieuw geopend, waardoor het unieke metingen zijn. Vervolgens wordt per tien metingen het gemiddelde en de standaardafwijking bepaald. De standaardafwijkingen in de onderste regels van Tabel 4.2 en 4.3 zijn uitgedrukt in procenten van het gemiddelde. Bij een lage standaardafwijking liggen de waarden dicht bij elkaar, wat duidt op een betrouwbare meting.
Figuur 4.1: Koraal 445 met de visualisatietechniek volume rendering.
21
De dimensies van de bounding box van koraal 445 zijn gemeten om de resultaten van de meetmethoden te valideren (zie Figuur 4.2). Onder ‘Bounds’ in het tabje Information van de Object Inspector staan de werkelijke afmetingen van de bounding box, namelijk 21,1404 x 21,1404 x 9,64002 mm. Het filter ‘Outline’ dat te vinden is onder Filters → Alphabetical geeft de bounding box weer van de dataset. Het meten van de dimensies van de bounding box met de methoden ‘Ruler’ en ‘Plot Over Line’ is weergegeven in Figuur 4.2a. ‘Plot Over Line’ geeft de scalaire waarden weer langs de geplotte lijn in een grafiek. De afstand van de lijn met ‘Plot Over Line’ is af te lezen uit de grafiek in Figuur 4.2b, door het verschil te nemen tussen de waarde aan het begin van de lijn en aan het eind van de lijn. Bij ‘Ruler’ worden twee punten in het object geplaatst en ParaView geeft de afstand tussen de twee punten direct weer op het scherm. De resultaten van het meten met ‘Ruler’ en ‘Plot Over line’ zijn te zien in Tabel 4.1. As x y z
ruler 1998,30 2001,97 911,121
ruler (mm) 21,1224 21,1612 9,63072
plot 2001,09 1999,14 911,977
plot (mm) 21,1519 21,1313 9,6397
Tabel 4.1: De gemeten dimensies van de bounding box met ‘Ruler’ en ‘Plot Over Line’.
De werkelijke waarden van de gemeten dimensies zijn berekend door te vermenigvuldigen met de ‘Data Spacing’ van 0,0105702. De resultaten komen sterk overeen met de werkelijke afmetingen van de bounding box.
(a) Gemeten lijn
(b) Histogram
Figuur 4.2: Bounding box van koraal 445 gemeten met ‘Ruler’ en ‘Plot Over Line’.
Bij objectieve metingen met bijvoorbeeld de filters ‘Histogram’ en ‘Outline’ blijft de uitkomst altijd gelijk, er is hierbij geen interactie met het object. De resultaten bij interactieve metingen veranderen per keer dat ze worden uitgevoerd. Gebruikers zullen een object nooit tien metingen achter elkaar in precies dezelfde positie draaien en dezelfde punten in het object selecteren. Het uitvoeren van ´e´en meting duurt ongeveer vijf tot tien minuten. In Figuur 4.3 is het histogram van koraal 445 te zien. De meest linker staaf bevat de lucht om het koraal heen, daarom is het ‘Threshold’ filter gebruikt waarbij de minimale threshold waarde op 1 is gezet (zie Figuur 3.6). Het histogram vertoont twee toppen. Dit betekent dat er twee dichtheden in het koraal voorkomen.
22
Figuur 4.3: Histogram van koraal 445. In Tabel 4.2 zijn de resultaten te zien van het meten van de hoogte van koraal 445. Het filter ‘Plot Over Line’ is gebruikt bij het uitvoeren van de metingen (zie Figuur 4.5 en 4.6). De lijn is dwars door het object heen getrokken. Het beginpunt van de hoogte is waar de getrokken lijn het object raakt en het eindpunt is waar de lijn het object verlaat. Het is bekend dat een koraal een grote dichtheid aan het oppervlak heeft [9]. Dit is tevens te zien in Figuur 4.4b, waar de lijn van ‘Plot Over Line’ is getrokken op de diameter van het eerste plakje van het koraal. De twee gekozen punten van de lijn liggen precies op het oppervlak van het koraal. De grafiek begint met een piek en eindigt met een piek. De afstand wordt dus berekend door het verschil te nemen tussen de meest linker en rechter piek.
(a) Getrokken lijn
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 4.4: De functie ‘Ruler’ en het filter ‘Plot Over Line’ met de visualisatietechniek 2D volume slicing (window: 255, level: 128).
23
In Figuur 4.5b hebben de pieken de waarden 162 en 974, dus de hoogte is 812, oftewel 8,58 mm. In Figuur 4.6b zijn platte strepen te zien in de grafiek, omdat alleen voxels met de threshold waarde 48 zichtbaar zijn. Bij een contour is het object duidelijk gespecificeerd. Het beginpunt van de hoogte bevindt zich bij het eerste punt met de gekozen threshold waarde en het eindpunt bij het laatste punt met die waarde. De hoogte wordt dan bepaald door het verschil te nemen tussen de waarde van het meest linker punt van het linker streepje en het meest rechter punt van het rechter streepje. Dit zijn de waarden 168 en 993, dus de hoogte is 825, oftewel 8,72 mm.
(a) Getrokken lijn (volume)
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 4.5: Het ‘Plot Over Line’ filter met de visualisatietechniek volume rendering.
(a) Getrokken lijn (threshold 48)
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 4.6: Het ‘Plot Over Line’ filter met de visualisatietechniek surface rendering.
De technieken surface en volume rendering zijn gebruikt voor onderstaande metingen. Voor metingen met het ‘Contour’ filter zijn drie verschillende threshold waarden uit het histogram genomen. Deze waarden zijn 48, 93 en 110 (zie Figuur 4.8, 4.9 en 4.10) en liggen respectievelijk in het dal tussen de twee pieken, op de top van de rechter piek en op de rechter flank van de rechter piek (zie Figuur 3.6). Voor volume rendering is de ‘transfer function’ van Figuur 3.8 genomen. In Figuur 4.7 is 2D volume slicing gebruikt om de hoogte van het koraal te berekenen met behulp van de functie ‘Ruler’. De gemeten hoogte is 795, oftewel 8,40 mm. De Origin en Normal in de Object Inspector zijn (1003, 997, 506) en (0.996, -0.0806, -0.0273).
24
Figuur 4.7: De functie ‘Ruler’ met de visualisatietechniek 2D volume slicing.
Meting 1 2 3 4 5 6 7 8 9 10 x ¯ σ x ¯ (mm) σ (mm) σ (%)
volume 779 813 797 771 804 815 770 788 809 812 796 17,6 8,41 0,186 2,21
contour 48 825 798 833 787 802 779 773 804 826 834 806 22,5 8,52 0,237 2,79
contour 93 841 304 248 791 819 725 797 755 341 827 645 243 6,82 2,57 37,7
contour 110 169 292 26 33 392 196 17 33 248 260 167 134 1,76 1,41 80,2
Tabel 4.2: De gemeten hoogte van koraal 445 met ‘Plot Over Line’.
De gemeten hoogten bij een threshold waarde van 93 en 110 zijn kleiner dan de hoogten bij een threshold waarde van 48. In Figuur 4.10 is te zien dat voxels van het koraal wegvallen bij een threshold waarde van 110. Dit verklaart waarom de gemiddelde hoogte zo klein uitvalt. Op de punten van de getrokken lijn liggen weinig voxels met een threshold waarde 110. Er zitten veel ‘gaten’ in het koraal en de lijn kan door die gaten zijn getrokken en alleen enkele voxels raken die binnen het koraal liggen. Dit is in mindere mate ook het geval bij een threshold waarde van 93. Er wordt vermenigvuldigd met de ‘Data Spacing’ van 0,0105702 om de werkelijk gemeten hoogte te berekenen. 25
Figuur 4.8: Koraal 445 met de visualisatietechniek surface rendering (threshold waarde 48).
Figuur 4.9: Koraal 445 met de visualisatietechniek surface rendering (threshold waarde 93).
Figuur 4.10: Koraal 445 met de visualisatietechniek surface rendering (threshold waarde 110).
26
In Tabel 4.3 zijn de resultaten te zien van het meten van de diameter van de stam van koraal 445. De functie ‘Ruler’ (zie Figuur 4.11) en het filter ‘Plot Over Line’ (zie Figuur 4.12 en 4.13) zijn gebruikt voor het uitvoeren van de metingen. Voor onderstaande metingen zijn de technieken surface en volume rendering gebruikt. Tevens is de techniek 2D volume slicing gebruikt om de diameter te meten (zie Figuur 4.4). Het eerste plakje van de dataset is gemeten met de functie ‘Ruler’ en heeft als resultaat een diameter van 408, oftewel 4,31 mm. De werkelijke diameters zijn berekend door te vermenigvuldigen met de ‘Data Spacing’ van 0,0105702. Meting 1 2 3 4 5 6 7 8 9 10 x ¯ σ x ¯ (mm) σ (mm) σ (%)
volume plot 403 387 408 395 379 394 409 403 406 380 396 11,3 4,19 0,119 2,84
volume ruler 413 404 403 388 404 399 419 414 425 416 409 10,9 4,32 0,115 2,67
contour 48 plot 401 406 397 400 385 394 382 408 422 404 400 11,5 4,23 0,122 2,88
contour 48 ruler 417 406 404 404 408 416 413 426 416 421 413 7,5 4,37 0,0790 1,81
Tabel 4.3: De gemeten diameter van de stam van koraal 445 met ‘Ruler’ en ‘Plot Over Line’.
(a) Volume
(b) Contour 48
Figuur 4.11: De functie ‘Ruler’ met de visualisatietechnieken surface en volume rendering.
27
(a) Getrokken lijn (volume)
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 4.12: Het ‘Plot Over Line’ filter met de visualisatietechniek volume rendering.
(a) Getrokken lijn (contour 48)
(b) Grafiek van de scalaire waarden langs de getrokken lijn
Figuur 4.13: Het ‘Plot Over Line’ filter met de visualisatietechniek surface rendering.
De bounding box van het koraal is gemeten, om aan te tonen dat een interactieve meting betrouwbaar is. De werkelijke afmetingen van de bounding box zijn namelijk bekend. Deze afmetingen zijn benaderd door interactief te meten met de methoden ‘Ruler’ en ‘Plot Over Line’. De resultaten van deze metingen liggen zeer dicht in de buurt van de werkelijke afmetingen. De hoogte van het koraal is gemeten door gebruik te maken van drie visualisatiemethoden: 2D volume slicing, 3D surface rendering en 3D volume rendering. Hiervoor is de meetmethode ‘Plot Over Line’ gebruikt. Bij surface rendering zijn drie verschillende threshold waarden met elkaar vergeleken. De gemiddelde hoogte (8,52 mm) is het grootst en de standaardafwijking het kleinst bij de threshold waarde 48. Deze hoogte komt overeen met de gemeten hoogte bij volume slicing (8,40 mm) en volume rendering (8,41 mm). De diameter van het koraal is tevens gemeten met de drie visualisatiemethoden. De meetmethoden ‘Ruler’ en ‘Plot Over Line’ zijn met elkaar vergeleken. Voor surface rendering is de optimale threshold waarde 48 genomen. De gemiddelde diameter bij volume rendering met ‘Plot Over Line’ is 4,19 mm en 4,32 mm met ‘Ruler’. Bij surface rendering is de gemiddelde diameter 4,23 mm met ‘Plot Over Line’ en 4,37 mm met ‘Ruler’. Volume slicing heeft als resultaat 4,31 mm. Deze waarden liggen allemaal vrij dicht bij elkaar in de buurt en hebben een standaardafwijking onder de 3%.
28
HOOFDSTUK 5
Conclusie Grote micro-CT datasets van koralen kunnen in 3D worden gevisualiseerd door ParaView gedistribueerd te laten werken met het RVS cluster van SURFsara. ParaView wordt hierbij in client-server modus gebruikt, zodat de belasting voor de eigen computer afneemt. De visualisatietechnieken 2D volume slicing, 3D surface rendering en 3D volume rendering zijn gebruikt voor de visualisatie. Volume slicing gebruikt de gegeven plakjes of maakt een nieuwe doorsnede met het filter ‘Slice’. Surface rendering wordt tot stand gebracht door een gekozen threshold waarde te gebruiken bij het filter ‘Contour’. Door het Representation tabje te veranderen naar ‘Volume’ wordt volume rendering toegepast. Het ‘Threshold’ filter kan ruis in het object wegfilteren. Dit is gebruikt om een histogram goed weer te kunnen geven. Het histogram laat de frequentieverdeling van de getalswaarden zien. Er werd verondersteld een optimale threshold waarde te vinden in het dal tussen twee pieken van het histogram. Uit de metingen van de hoogte van het koraal blijkt ook dat dit de beste van de drie onderzochte threshold waarden is (zie ook Tabel 4.2). De standaardafwijking is het kleinst en de gemiddelde afstand ligt het dichtst in de buurt van de hoogten gemeten met volume slicing en volume rendering. Bij een hogere threshold waarde ontbreken steeds meer voxels van het koraal, terwijl bij een lagere threshold waarde steeds meer achtergrondvoxels worden toegevoegd. De meetmethoden ‘Ruler’ en ‘Plot Over Line’ zijn met elkaar vergeleken bij het meten van de diameter van de stam (zie ook Tabel 4.3). De resultaten liggen bij elkaar in de buurt en de standaardafwijkingen zijn klein. Bij ‘Ruler’ is het lastig om de punten op de juiste positie te plaatsen om een afstand te meten. Bij ‘Plot Over Line’ wordt een lijn dwars door het object getrokken en de afstand is duidelijker te bepalen, want dat kan in de grafiek worden afgelezen. Deze methode is dus nauwkeuriger. Het interactief meten van de hoogte en diameter van het koraal is betrouwbaar en nauwkeurig, omdat de standaardafwijking kleiner is dan 3% van de gemiddelde waarden. De resultaten van de metingen komen overeen met de werkelijke waarde, omdat de resultaten van het interactief meten van de bounding box van het koraal met de twee meetmethoden overeenkomen met de ‘Bounds’. De uitkomsten van metingen op basis van de drie verschillende visualisatiemethoden komen overeen, mits de juiste parameters zijn gekozen. De resultaten zijn reproduceerbaar, omdat het mogelijk is om tien verschillende metingen te doen waarvan de resultaten dicht bij elkaar in de buurt liggen. Een vervolgonderzoek zou zich bezig kunnen houden met het toepassen van andere meetmethoden en het uitvoeren van metingen op verschillende computers door verschillende personen. Wellicht kan verder worden gekeken dan ParaView. Tijdens het uitvoeren van metingen loopt het programma vaak vast en het reageert soms heel traag. Programma’s die wel in staat zijn om DICOM-bestanden te openen, zouden geen RAW-bestanden hoeven te gebruiken. Dan zouden bestanden kunnen worden ingelezen, zonder de tussenkomst van een image processing programma zoals ImageJ.
29
30
Bibliografie [1] Godfrey Newbold Hounsfield Beckmann E.C., Physics Today, vol. 58 (3), pp. 84-86. (2005) [2] GEOPROVE: Geometric Probes for Virtual Environments Belleman R.G., Kaandorp J.A., Dijkman D., Sloot P.M.A., editors: Sloot P.M.A., Bubak M.T., Hoekstra A.G., Hertzberger L.O., High-Performance Computing and Networking (HPCM Europe ’99), Amsterdam, The Netherlands, in series Lecture Notes in Computer Science, vol. 1593, pp. 817-827. Springer-Verlag, Berlin. ISBN 978-3-540-65821-4. (1999) [3] Whole-Body Three-Dimensional Multidetector CT of 13 Egyptian Human Mummies Cesarani F., Martina M.C., Ferraris A., Grilletto R., Boano R., Marochetti E.F., Donadoni A.M., Gandini G., American Journal of Roentgenology, vol. 180, pp. 597-606. (2003) [4] 3D micro-CT imaging of the Postmortem Brain de Crespigny A., Bou-Reslan H., Nishimura M.C., Phillips H., Carano R.A.D., D’Arceuil H.E., J Neurosci Methods 171 (2), pp. 207-213. (2008) [5] Biomedical Image Processing Deserno T.M., Springer-Verlag New York, LLC, ISBN: 978-3-642-15815-5. (2011) [6] A comparison between coral colonies of the genus Madracis and simulated forms Filatov M.V., Kaandorp J.A., Postma M., van Liere R., Kruszy´ nski K.J., Vermeij M.J.A., Streekstra G.J., Bak R.P.M., Proceedings of the Royal Society of London. Series B-Biological Sciences, vol. 277, vol. 1700, pp. 3555-3561. (2010) [7] Integration of 3D anatomical data obtained by CT imaging and 3D optical scanning for computer aided implant surgery Frisardi G., Chessa G., Barone S., Paoli A., Razionale A., Frisardi F., BMC Medical Imaging 5, vol. 11, pp. 1-7. (2011) [8] A computational method for quantifying morphological variation in scleractinian corals Kruszy´ nski K.J., Kaandorp J.A., van Liere R., Coral Reefs, vol. 26, vol. 4, pp. 831-840. (2007) [9] An Interactive Visualization System for Quantifying Coral Structures Kruszy´ nski K.J., van Liere R., Kaandorp J.A., Proceedings Eurographics / IEEE VGTC Symposium on Visualization (EuroVis 2006), B. Sousa Santos, T. Ertl, K. Joy (eds.), Lisbon, Portugal, ISBN 3-905673-31-2, pp. 283-290. (2006) [10] Computer measures Coral Structures Kruszy´ nski K.J., Kik A., Ercim News, vol. 66, pp. 52-53. (2006) [11] Marching cubes: A high resolution 3D surface resolution 3D surface construction algorithm Lorensen W.E., Cline H.E., vol. 21 (4), pp. 163 - 169. (1987)
31
[12] Diverging Color Maps for Scientific Visualization Moreland K., editors: Bebis G., Boyle R., Parvin B., Koracin D., Kuno Y., Wang J., Pajarola R., Lindstrom P., Hinkenjann A., Encarna¸c˜ao M.L, Silva C.T., Coming D., Proceedings of the 5th International Symposium on Advances in Visual Computing (ISVC ’09), Las Vegas, Nevada, United States of America, in series Lecture Notes in Computer Science, vol. 5876, pp. 92-103. Springer-Verlag, Berlin. ISBN 978-3-642-10519-7. (2009) [13] Essentials of Conservation Biology Primack R.B., Sinauer Associates, Inc., Fifth Edition. (2010) [14] Reefs of the deep: the biology and geology of coldwater coral ecosystems Roberts J.M., Wheeler A.J., Freiwald A., Science 312, pp. 543-547. (2006) [15] CT assessment of tumour response to treatment: comparison of linear, cross-sectional and volumetric measures of tumour size Sohaib S.A., Turner B., Hanson J.A., Farquharson M., Oliver R.T.D., Reznek R.H., The British Journal of Radiology, vol. 73, pp. 1178-1184. (2000) [16] Volumetric measurements of pulmonary nodules at multi-row detector CT: in vivo reproducibility Wormanns D., Kohl G., Klotz E., Marheine A., Beyer F., Heindel W., Diederich S., European Radiology, vol. 14, vol. 1, pp. 86-92, DOI: 10.1007/s00330-003-2132-0. (2004) [17] Amira http://www.amira.com/ [18] AnalyzeDirect http:///www.analyzedirect.com/ [19] Computational Science aan de UvA http://uva.computationalscience.nl/ [20] ImageJ http://imagej.nih.gov/ij/ [21] ImageJ User Guide http://rsbweb.nih.gov/ij/docs/guide/146-26.html [22] NOAA’s Coral Reef Conservation Program http://www.coralreef.noaa.gov/aboutcorals/values/ [23] OsiriX http://www.osirix-viewer.com/ [24] ParaView http://www.paraview.org/ [25] 3D Slicer http://www.slicer.org/ [26] SURFsara http://www.surfsara.nl/ [27] TurboVNC http://www.virtualgl.org/Downloads/TurboVNC/ [28] Vital Images http://www.vitalimages.com/ [29] VolView http://www.volview.org/ [30] Visualization Toolkit http://www.vtk.org/
32
BIJLAGE A
Handleiding SURFsara A.1 Client-server modus ParaView kan uitgevoerd worden in een client-server modus op het RVS cluster van SURFsara. Er worden een of meerdere ParaView server processen uitgevoerd op de RVS cluster nodes, die gebruikmaken van MPI. De ParaView client wordt uitgevoerd op de machine van de gebruiker. Op deze manier kan de gebruiker de visualisatie op zijn eigen machine zien, terwijl de berekeningen voornamelijk op de SURFsara computers worden gedaan. De data worden gedistribueerd over de RVS nodes, waarbij elke node een deel van de data voor zijn rekening neemt. Er is een gebruikersaccount van SURFsara nodig om in te kunnen loggen op RVS. De Host Name bij het maken van verbinding via SSH is rvs.sara.nl en verder zijn de eigen gebruiksnaam en het wachtwoord nodig. De bestanden die in ParaView geopend moeten worden, dienen op /home/gebruikersnaam/ te staan. Ze kunnen worden overgezet via het File Transfer Window van SSH. Voer de volgende stappen uit om een client-server verbinding te maken. De standaard versie van ParaView die beschikbaar is op de RVS nodes is 3.12. Download deze op de website van ParaView: http://www.paraview.org/paraview/resources/software.php Log in op rvs.sara.nl met SSH. Voer het volgende commando in voor het gebruik van 4 nodes voor 2 uur: /software/remotevis/scripts/rvs_paraview -w 2:00:00 4 Een reservering kan maximaal 8 uur duren. Het volgende commando laat informatie zien over de reservering: /usr/sara/bin/rvs_show Om een reservering te verwijderen, wordt het volgende commando gebruikt: qdel <jobid> Het nummer van de toegewezen node wordt gebruikt om verbinding mee te maken, dit kan bijvoorbeeld v42-8 zijn. Open ParaView, klik op ‘Connect’ en kies voor ‘Add Server’. Geef als naam ‘v42-8’, als Server Type ‘Client / Server,’ als Host v42-8.rdr.sara.nl en als Port 11111. Sla de configuratie op als type ‘Manual’. Nu kan een verbinding worden gemaakt met de server 42-8. De datasets voor de visualisatie kunnen worden geopend in ParaView, mits deze zich op het RVS cluster bevinden.
33
Figuur A.1: Datadistributie over de verschillende nodes. In Figuur A.1 is het filter Process Id Scalars toegepast. Dit toont de datadistributie over de verschillende server processen. De geometrie is gekleurd op basis van de proces ID die dat deel van de data voor zijn rekening neemt. In dit geval zijn vier nodes gebruikt.
A.2 Remote visualisatie met VNC Indien de bovenstaande methode niet werkt, kan gebruik worden gemaakt van VNC. Log in op rvs.sara.nl met SSH. Een VNC-sessie wordt gestart met het volgende commando: /software/remotevis/scripts/rvs_vnc 2:00:00 De VNC-server is gestart op een node, bijvoorbeeld v42-8. Download TurboVNC [27] en start de VNC-client op de lokale machine. TurboVNC kan verbinding maken met de host: v42-8.rdr.sara.nl:1 Er moet met het volgende commando een .vnc map worden gemaakt als deze nog niet bestaat: mkdir ~/.vnc Maak een wachtwoord aan indien VNC erom vraagt. Open een terminal in de VNC-verbinding door op de rechter muisknop en vervolgens op ‘Terminal’ te klikken. ParaView wordt geladen door de volgende commando’s achtereenvolgens uit te voeren: module load paraview/3.12.0 vglrun paraview Tot slot kunnen de stappen in Bijlage A.1 worden uitgevoerd, zodat het gebruik van meerdere nodes mogelijk is.
34
BIJLAGE B
ImageJ B.1 Reeks bestanden omzetten naar een enkel RAW-bestand Als de bestanden bij elkaar groter zijn dan 2 GB is het aan te raden om een 64-bit computer te gebruiken. 1. Klik op File → Import → Image Sequence. 2. Selecteer het eerste bestand en klik op Openen. 3. Noteer de waarden van de drie dimensies X × Y × Z. 4. Klik op Image → Show Info... en noteer het aantal Bits per pixel en de Pixel Spacing. 5. Sla de data op door middel van File → Save As → Raw data, vul een bestandsnaam in en klik op Opslaan.
B.2 Enkel plakje omzetten naar een ander bestandstype 1. Klik op File → Open... 2. Selecteer het gewenste plakje en klik op Openen. 3. Sla het plakje op door middel van File → Save As → kies tussen Tiff, Jpeg, Raw Data of PNG.
35