Home

Computergestützte Diagnose und Visualisierung am Beispiel von

image

Contents

1. ee 6 Abbildung 42 Segmentierung Confidence Connected ssssessseseeseeesseesseesseessee 6 Abbildung 43 Region of Interest se Re 6 Abbildung 44 DistaneeM DB setenetundessuniei gl 6 Abbildung 45 Extrahier nsg ussunetsnenenarieanesssusknnsa 6 Abbildung 46 Visualisierung aaa ER sen 6 Abbildung 47 Ersebnishild ae seen 6 Anhang 81 7 4 Literaturverzeichnis 1 P Perona and J Malik Scale space and edge detection using anisotropic diffusion IEEE Transactions on Pattern Analysis Machine Intelligence 12 629 639 1990 2 Anthony Sherbondy Mike Houston and Sandy Napel Fast Volume Segmentation with Simultaneous Visualization Using Programmable Graphics Hardware To appear IEEE Visualization 2003 3 C Tomasi R Manduchi Bilateral Filtering for Gray and Color Images Proceedings of the1998 IEEElnternational Conference on Computer Vision Bombay India 1998 4 Wilbur C K Wong Albert C S Chung Simon C H Yu trilateral Filtering for Biomedical Images 5 Will Schroeder Ken Martin Bill Lorensen The Visualization Toolkit 3rd Edition 2004 http www vtk org 6 Kitware Inc VTK User s Guide VTK 4 4 2005 http www vtk org 7 Heinz Handels Medizinische Bildverarbeitung 2000 8 Thomas Lehmann Walter Oberschelp Erich Pelikan Rudolf Repges Bildverarbeitung f r die Medizin 1997 9 Luis Ibanez Will Schroeder Lydia Ng Josh Cates The IT
2. include itkRawlImageIOo h include itkImageFileReader h Sind diese bekannt kann man sich wieder einen ReaderType definieren und davon eine neue Instanz erstellen Zus tzlich ben tigt man wieder den Typ des einzulesenden Bildes den man an das Programm bergeben muss damit dieses wei wie es mit den Bildinformationen umzugehen hat typedef itk ImageFileReader lt InputlImageType gt RAWReaderType RAWReaderType Pointer reader RAWReaderType New RawImageIlOType Pointer rawImageIO RawImageIOType New Danach kann damit begonnen werden dem Reader die ben tigten Informationen zu bergeben die er f r das Einlesen der RAW Datei ben tigt Neben dem Dateinamen und dem Typ des Bildes werden hier unter anderem die Dimension der Ursprung die Ausdehnung des Volumens in jede Richtung und die Ausdehnung eines Voxels in jede Richtung angegeben Mit diesen Informationen kann dann der RawReader das Volumen korrekt einlesen und weitergeben Umsetzung und Visualisierung 29 reader gt SetFileName inputFilename reader gt SetlImagelO rawImagelO rawImageIO gt SetByteOrderToBigEndian rawImageIO gt SetFileTypeToBinary rawIlmageIO gt SetFileDimensionality 3 rawImagelIO gt SetOrigin 0 0 0 rawImageIO gt SetOrigin 1 0 0 rawImageIO gt SetOrigin 2 0 0 rawImageIO gt SetDimensions 0 dimensionX rawImageIO gt SetDimensions 1 dimensionY rawImageIO gt SetDim
3. include vtkActor h vtkActor actorl vtkActor New Dieser Instanz kann dann der polyDataMapper mittels SetMapper bergeben werden welcher das Objekt enth lt das der actor in der Szene repr sentieren soll Zus tzlich k nnen dem actor noch weitere Eigenschaften wie Farbe und Transparenz zugewiesen werden actorl gt SetMapper polyDataMapperl actorl gt GetProperty gt SetColor 1 0 0 actorl gt GetProperty gt SetOpacity opacityBlutbahn Hat man diese Filter auf die drei Volumen angewendet hat man schlie lich drei actoren vorliegen und kann diese an den renderer mittels AddActor bergeben Dem renderer wird schlie lich zur Kontrastreichen Darstellung noch eine Hintergrundfarbe zugewiesen die sich gut von den Farben der einzelnen actoren abhebt include vtkRenderer h vtkRenderer renderer vtkRenderer New renderer gt AddActor actor3 renderer gt AddActor actorl 4 renderer gt AddActor actor2 renderer gt SetBackground 0 1 0 2 0 4 Umsetzung und Visualisierung 47 Um bei der Visualisierung mit den dargestellten Objekten interagieren zu k nnen wird noch der vtkRenderWindowInteractor ben tigt Nachdem seine Headerdatei eingebunden ist kann eine neue Instanz erzeugt und der Interactor mittels Start gestartet werden include vtkRenderWindowInteractor h vtkRenderWindowInteractor renderWindowInteractor vtkRenderWindowInteractor
4. 259 z 223 Grauwertbereich min 200 max 500 Replace Value 255 Skelett segmentieren Grauwertbereich min 500 max 3000 Replace Value inside 255 outside Speichern Blutbahn asadomen biutbann ve Skelett abdomen skeiett vik Ausf hren Abbrechen Abbildung 41 Segmentierung Connected Threshold Skelett nicht weiter von Bedeutung ist Der Replace Value ist ebenfalls wieder Standard und sollte in Anbetracht der folgenden Schritte nicht ge ndert werden Bevor die Segmentierung mittels Ausf hren gestartet wird werden noch die Dateinamen ben tigt unter denen die segmentierten Volumen gespeichert werden sollen Als Dateiname f r die segmentierte Blutbahn wird abdomen blutbahn vtk und f r das Skelett abdomen skelett vtk verwendet Anhang 12 7 1 3 2 Confidence Connected Als weitere M glichkeit die Blutbahn zu segmentieren wurde der Confidence Connected Filter implementiert Er ist unter dem Hauptreiter Segmentierung zu finden und ben tigt ein paar mehr Parameter als der Segmentierer zuvor Neben dem Dateinamen des originalen Volumens wird hier ebenfalls ein Saatpunkt als Ausgangspunkt f r die Segmentierung ben tigt der in die daf r vorgesehenen Felder einzutragen ist Weiter ben tigt er wie in Kapitel 4 beschrieben wurde eine Farbabweichung mit der multipliziert wird die Anzahl Wiederholungen Replace und die Gr e der Nachbarschaften Die letzten vier
5. 4 2 5 DistanceMap Der n chste Schritt wird ben tigt um im weiteren Verlauf die M glichkeit zu haben nur im Umfeld der segmentierten Region nach Verkalkungen suchen zu k nnen Es wird mittels der ITK Klasse DanielssonDistanceMaplmageFilter eine Entfernungskarte DistanceMap erstellt in der festgehalten ist wie gro der euklidsche Abstand jedes Voxels des Volumens zur segmentierten Blutbahn ist Um den Filter benutzen zu k nnen muss wiederum zuerst die Headerdatei eingebunden werden include itkDanielssonDistanceMaplmageFilter h Danach kann dann wieder ein neuer Typ des Filters definiert und eine neue Instanz erzeugt werden typedef itk DanielssonDistanceMaplmageFilter lt SegmentedImageType InternallmageType gt DanielssonDistanceMaplmageFilterType DanielssonDistanceMaplmageFilterType Pointer filter DanielssonDistanceMaplmageFilterType New Danach braucht nur noch das Volumen vom reader an den Filter mittels Gert Input bergeben und dem Filter gesagt werden von welchem Typ das ihm bergebene Bild ist In diesem Fall handelt es sich um die segmentierte Blutbahn also ein Bin rbild filter gt SetInput reader gt GetOutput filter gt InputIsBinaryOn filter gt Update Zum Schluss wird dann der Filter mittels Update gestartet Umsetzung und Visualisierung 41 Der Filter liefert ein Bild zur ck in dem die Entfernungen zur segmentierten Blutbahn
6. 7 1 2 Picker Beim n chsten Schritt dem Picker geht es darum Parameter f r die darauf folgenden Schritte zu sammeln Hierzu wird das zu untersuchende Volumen angezeigt und man kann Ebenen in jeder Dimension verschieben und drehen bis man die zu im Blick hat Hierzu ist es im Programm unter dem Reiter Picker nur notwendig den Dateinamen des Volumens anzugeben und untersuchende Struktur die Darstellung mittels des Ausf hren Buttons zu starten Arbeitet man die Schritte nacheinander ab ist es nicht notwendig den Dateinamen einzutragen da er vom Schritt zuvor bernommen wurde Im aktuellen Beispiel lautet der Dateiname abdomen vtk Wurde die Darstellung gestartet erscheint Bild mit den Schnittebenen durch die drei Raumachsen Es kann mit einer Maus mit drei Tasten nach kurzer Zeit das und der Tastatur interagiert werden Datensatz Dateiname abdomen ve Ausf hren Abbrechen Segmentierung Saatpunkt lo lr To Grauwertbereich max D Region of Interest Startpunkt xp ch zb Endpunkt lo lr lo Parameter bernehmen min D Abbildung 36 Picker e Um das Volumen zu drehen klickt man einfach mit der linken Maustaste in den Hintergrund Dabei dreht sich das Volumen in die Richtung die man angeklickt hat e Zum Skalieren des Volumens klickt man mit der rechten Maustaste in den Hintergrund Um das dargestellte Volumen zu vergr ern klickt man in den oberen Teil de
7. vtkStripper New stripperl gt SetInput normals1 gt GetOutput Zum Abschluss des ersten Teils der VTK Pipeline folgt der vtkPolyDataMapper Dieser bildet die Polygondaten auf grafische Primitive ab die dann im zweiten Teil der Pipeline visualisiert werden k nnen include vtkPolyDataMapper h vtkPolyDataMapper polyDataMapperl vtkPolyDataMapper New Umsetzung und Visualisierung 46 Nachdem wieder eine neue Instanz des Filters erzeugt wurde k nnen ihr die Oberfl chen bergeben werden Mittels der Methode ScalarVisibilityOff wird dem Filter mitgeteilt dass er nicht die Skalare benutzen soll um die Objekte einzuf rben Dies findet erst im n chsten Schritt statt indem jedem act or eine Farbe gegeben wird polyDataMapperl gt SetInput stripperl gt GetOutput polyDataMapperl gt ScalarVisibilityOff Danach kann mit dem zweiten Teil der VTK Pipeline begonnen werden in dem die Objekte dargestellt werden Als erstes werden die Objekte an die actoren bergeben welche die Objekte repr sentieren und diese an den renderer weitergegeben Die Objekte werden nun vom renderer an das renderWindow weitergereicht wo sie nun final dargestellt werden Um mit den dargestellten Volumen noch interagieren zu k nnen wird ein renderWindowInteractor ben tigt der die Eingaben ber Tastatur und Maus koordiniert Zu Beginn wird wieder die Headerdatei eingebunden und eine neue Instanz des actors erzeugt
8. Blutbahn abdomen biutbann stk verkalkung abaomen kalk vtk Skelett abdomen skelett vtk Parameter Transparenz Blutbahn ks Verkalkung H Skelett ni Contour Value 255 Abbrechen Abbildung 46 Visualisierung Anhang 77 7 1 7 1 Interaktion mit der Visualisierung Mit der Visualisierung kann genauso wie im zweiten Schritt dem Dicker interagiert werden e Das Volumen kann durch einen Klick der linken Maustaste in den Hintergrund in die entsprechende Richtung gedreht werden e Durch einen Rechtsklick der Maus in den Hintergrund kann das Volumen skaliert werden e Klickt man mit der mittleren Maustaste in den Hintergrund kann man das ganze Volumen im Fenster verschieben Abbildung 47 Ergebnisbild Anhang 78 7 2 Glossar e Binarisierung Unter Binarisierung versteht man den Vorgang aus einem Bild das beliebig viele Graustufen oder andere Farbwerte hat ein zweifarbiges Bild zu erzeugen Hierbei werden meist ein oder mehrere Schwellwerte angegeben welche die Grenze zwischen den Farbwertbereichen festlegen Alle Pixel deren Farbwert unterhalb des Schwellwertes oder au erhalb des Schwellwertbereiches liegen werden auf den einen Farbwert gesetzt alle oberhalb des Schwellwertes oder innerhalb des Bereiches auf den anderen Farbwert e DistanceMap In einer DistanceMap wird der Euklidsche Abstand von Punkten zu dem am n chsten gelegenen Objekt angegeben Hierbei hat dann das Objekt an sich
9. Der zweite Datensatz Abdomen sogar aus 358 Schichtbildern und einem Speichervolumen von 179 MB Beide Datens tze besitzen eine Aufl sung von 512 x 512 Pixel pro Schicht und sind sehr wahrscheinlich in einem Abstand von 1 mm aufgenommen worden Gearbeitet wurde prim r mit dem Datensatz Abdomenl Der zweite Datensatz wurde meist nur herangezogen um zu pr fen inwieweit die Verfahren auf andere Datens tze mit anderen Parametern anwendbar sind Daraus ergeben sich nat rlich auch Vergleiche bez glich der Qualit t der Anwendung in unterschiedlichen Datens tzen Im Folgenden wird nun genau auf das Vorgehen und die Ergebnisse der einzelnen Schritte der erstellten Anwendung CADView eingegangen 5 1 Einlesen und Filtern Der erste Teil des ersten Schrittes bildet das Einlesen des Datensatzes Hierbei sind au er der Angabe des Verzeichnisses beziehungsweise des Dateinamens des Datensatzes keine weiteren Angaben zu machen Insofern sind dieser Vorgang und dessen Ergebnis auch nicht weiter beeinflussbar Der einzige Faktor von dem der Einlesevorgang abh ngt ist die Gr e des Datensatzes Diese wirkt sich in der Dauer des Einlesens aus Beide Testdatens tze werden in ungef hr einer Minute eingelesen und stehen f r die weitere Verarbeitung zur Verf gung Je kleiner nat rlich die Datens tze sind umso entsprechend geringer ist auch die Auswertung 52 Zeit Ein Ausschnitt aus den vorliegenden Datens tzen aus beispielsweise nur
10. wie die drei Schnittebenen definiert werden Es wird eine neue Instanz von vtkImagePlaneWidget erzeugt und ihr die entsprechenden Parameter wie zum Beispiel das darzustellende Volumen die Ausrichtung und die Position bergeben Auch der zuvor definierte Picker wird hier eingebunden include vtkImagePlaneWidget h vtkImagePlaneWidget xImagePlaneWidget vtkImagePlaneWidget New xImagePlaneWidget gt DisplayTextOn xImagePlaneWidget gt SetInput vtkImporter gt GetOutput xImagePlaneWidget gt SetPlaneOrientationToXAxes xImagePlaneWidget gt SetSliceIndex size 0 2 xImagePlaneWidget gt SetPicker picker xImagePlaneWidget gt RestrictPlaneToVolumeon xImagePlaneWidget gt SetKeyPressActivationValue x xImagePlaneWidget gt GetPlaneProperty gt SetColor 1 0 0 xImagePlaneWidget gt SetTexturePlaneProperty ipwProp xImagePlaneWidget gt SetResliceInterpolateToNearestNeighbour Weiter muss die eigentliche VTK Darstellungs Pipeline aufgebaut werden die sich aus dem Renderer dem Fenster und dem Interactor zusammensetzt Hierzu werden Instanzen dieser erzeugt und der renderer dann an das renderWindow bergeben das dann wieder an den Umsetzung und Visualisierung 33 RenderWindowInteractor weitergegeben wird Es werden zus tzlich noch Parameter wie Fenstergr e und Hintergrundfarbe festgelegt vtkRenderer renderer vt
11. 5 Schichtbildern ben tigt nur wenige Sekunden bis dieser zur Verf gung steht Den zweiten Teil des Einlesens bildet die Filterung die direkt im Anschluss erfolgt Die Filterung ist im Gegensatz zum reinen Einlesen sehr von Parametern abh ngig und auch rechenzeitintensiver Der kantenerhaltende Filter ben tigt drei Parameter 4 2 1 3 Zum einen ist das die Anzahl der Wiederholungen Je h ufiger die Gl ttung durchgef hrt werden soll umso st rker wird das Bild auch gegl ttet aber umso l nger dauert sie logischerweise auch Der n chste Parameter ist die Gr e der TimeSteps Dieser Wert ist daf r verantwortlich wie stark der Filter gl tten soll Je gr er dieser Wert ist umso st rker gl ttet der Filter Hierbei ist allerdings zu beachten dass der Wert f r die TimeSteps bei einem 3D Bild nicht h her sein sollte als 0 125 um die Stabilit t des Filters zu gew hrleisten Der dritte Parameter die Conductance ist zust ndig f r die Gl ttung an den Kanten welche durch Anwendung eines kantenerhaltenden Filters erhalten bleiben sollen Hier werden die Kanten umso mehr gegl ttet je gr er der Wert ist Bei einem Wert von O findet keine Kantengl ttung und bei gr eren Werten eine entsprechend gr ere Kantengl ttung statt Als gute Parameter haben sich die Werte 0 125 f r die TimeSteps und 1 f r die Conductance bei 2 Wiederholungen herausgestellt Somit hat man eine m glichst starke Gl ttung der Fl chen mi
12. 6 Abbildung 15 Ee EI EE 6 Abbildung 16 Umfeld frestellen AAA 6 Abbildung 17 Bin rfilter Kalk Bxvtrabteren ner snnesnnennnnen nennen 6 Abbildune 19 gt Darsellune an MH 6 Abbildung 19 Benutzeroberfl che nase are 6 Abbildung 20 Vergleich ungefiltert gefiltert Schnitt Z Achse 6 Abbildung 21 Vergleich ungefiltert gefiltert Schnitt Y Achse 6 beleen 6 Abbildung 23 Segmentierte Blutbahn mittels Connected Threshold 6 Abbildung 24 Vergleich Blutbahn Schnitt Z Achse A 6 Abbildung 25 Vergleich Blutbahn Schnitt V Achse ser 6 Abbildung 26 Segmentierte Blutbahn Confidence Connected u su ne 6 Abbildung 27 Segmentiertes Skelett un ee llsineadses 6 Abbildung 28 Region of Interest russian Ben bed 6 Abbildung 29 DistaneeM ap see nen Hann 6 Abbildung 30 Extrahierte Verkalkungen ssssesesssesssessssseesseessessseeesseessseesseesseessee 6 Abbildung 31 Vergleich Kalk Schnitt Z Achse sn ennennnnennnen een 6 Abbildung 32 Vergleich Kalk Schnitt V Achse se ennennnnen nennen 6 Abbildung 33 Visualisierung cken skin sa 6 Abbildun2 347 DICOM emlesen series 6 Abbildung 35 RAW Einlesen EE 6 Abbildune 36 Picker ui 6 Abbildung 37 Saatpunkt w hlen een 6 Abbildung 38 Region of Interest Mimmum 6 Abbildung 39 Region of Interest Maximum 6 Abbildung 40 Parameter setzen seen 6 Abbildung 41 Segmentierung Connected Threshold
13. Beinarterie und die Gef e zu den Organen werden segmentiert Um allerdings zu zeigen wie genau die Blutbahn segmentiert wurde bedarf es eines Vergleiches zwischen dem originalen Volumen und der segmentierten Blutbahn Hierzu wurde das Volumen der segmentierten Blutbahn des Datensatzes Abdomenl invertiert und mit seinem originalen Volumen multipliziert Als Ergebnis erh lt man wie in Abbildung 24 und Abbildung 25 zu sehen ist ein Volumen in dem die originalen Grauwerte vorhanden sind bis auf die Voxel die zu der segmentierten Blutbahn geh ren An diesen Stellen liegt ein Grauwert von 0 vor Auswertung 56 In den linken Bildern sieht man das originale Volumen und erkennt die helle Blutbahn mit den wei en Verkalkungen am Rand In den rechten Bildern hingegen wurde das originale Volumen mit der Blutbahn multipliziert was durch eine Farbver nderung im Bereich der Blutbahn zu erkennen ist Die komplette Blutbahn bis auf einen kleinen Rand wurde somit durch den ConnectedThresholdImageFilter segmentiert Abbildung 24 Vergleich Blutbahn Schnitt Z Achse Abbildung 25 Vergleich Blutbahn Schnitt Y Achse Bei der Segmentierung mittels des ConfidenceConnectedImageFilter traten hingegen beim Beispieldatensatz Abdomen1 meist Probleme bei der Segmentierung auf da die Grauwerte der Blutbahn vom oberen bis zum unteren Ende recht unterschiedlich waren Da dieses Verfahren auf der hnlichkeit der Grauwerte
14. Intima die bei der normalen Wundheilung aufquillt Hierdurch entsteht ein dem Durch weitere rote Blutk rperchen und Fresszellen w chst die Verdickung auch Plaque genannt weiter an und es lagert sich darin Kalk ab Je nach dem wie viel Kalk sich ablagert k nnen die Verdickungen hart oder weich sein Als Folge der Grundlagen 5 Plaques verengen sich die Arterien was zu einem kompletten Verschluss des Gef es f hren kann Dies bedeutet dass die Region die normalerweise durch diese Arterie mit N hrstoffen versorgt wird keinen Sauerstoff mehr bekommt und absterben kann Es kommt zu einem Infarkt Rei en die Plaques hingegen auf kann es zu einer Narbenbildung kommen was die Elastizit t der Gef e einschr nkt und ebenfalls den Blutfluss behindert Gef wand normale normaler S Blutstrom fleckf rmige WE Zellwucherung Biutstrom Kalkeinlagerung noch normaler Blutstrom aufgebrochene Plaque mit Blutfluss Thrombus eingeschr nkt akuter e lutflu Gef verschluss ER deeg Abbildung 2 Entwicklung eines Gef verschlusses Grundlagen 6 2 2 Computertomographie Ein bildgebendes Verfahren zur nicht invasiven 7 2 Diagnose stellt die Computertomographie CT dar Mit ihrer Hilfe k nnen zu untersuchende K rper in Schichten aufgenommen am Computer zu 3D Volumendatens tzen zusammengesetzt und schlie lich betrachtet werden Dieses Verfahren ist f r die Patienten im Gegensatz zur Herzkatheteruntersu
15. New renderWindowInteractor gt Start Um schlie lich etwas auf dem Display sehen zu k nnen muss noch das RenderWindow erzeugt werden include vtkRenderWindow h vtkRenderWindow renderWindow vtkRenderWindow New Diesem wird eine Fenstergr e mittels SetSize der renderWindowInteractor mittels SetInteractor und der renderer mittels AddRenderer zugewiesen Mit dem Befehl Render wird schlie lich die Darstellung gestartet renderWindow gt SetSize 600 600 renderWindow gt SetInteractor renderWindowInteractor renderWindow gt AddRenderer renderer renderWindow gt Render Ganz zum Schluss muss noch sichergestellt werden dass die von VTK erzeugten Instanzen wieder mittels Delete gel scht werden um den Speicher nach beendeter Darstellung nicht unn tig zu belasten renderer gt Delete renderWindow gt Delete renderWindowInteractor gt Delete contourl gt Delete normals1 gt Delete stripper1l gt Delete actorl gt Delete polyDataMapperl gt Delete Umsetzung und Visualisierung 48 4 3 Benutzeroberfl che Zur Erstellung einer Benutzeroberfl che wurde wie bereits in den Grundlagen 2 4 3 erw hnt das Toolkit FLTK benutzt FLTK bietet eine gute Anbindung an ITK und VTK und eignet sich somit gut zur Eingabe von Parametern und zur Visualisierung Die Eingabe der Parameter ber eine Benutzeroberfl che hat im Gegensatz zur Eingabe ber e
16. Parameter der der Value sind wiederum Standardparameter mit denen erfahrungsgem die besten Resultate erzielt werden k nnen Danach folgen dann wie beim Segmentierungsfilter davor die Parameter f r die Extrahierung des Skelettes Zum Abschluss werden wiederum die Dateinamen ben tigt unter denen die Volumen gespeichert werden sollen Hier wird wiederum abdomen blutbahn vtk die f r segmentierte Datensatz Dateiname F tk Blutbahn segmentieren Saatpunkt x Nr b Z b Farbabweichung 3 wiederholungen P E zu Skelett segmentieren Replace Yalue Nachbarschaft Grauwertbereich min 500 max 3000 Replace Value inside 255 outside Speichern Blutbahn KR Skelett bn Ausf hren Abbrechen Abbildung 42 Segmentierung Confidence Connected Blutbahn und abdomen skelett vtk f r das extrahierte Skelett eingegeben und die Segmentierung durch einen Klick auf den Button Ausf hren gestartet Anhang 73 7 1 4 Region of Interest Ist die Segmentierung abgeschlossen kann mit dem n chsten Hauptschritt der Eingrenzung des Volumens auf eine Region of Interest fortgefahren werden Die ben tigten Parameter wie die Dateinamen der einzulesenden Volumen und die Eckpunkte der Region wurden aus den vorherigen Schritten mit bernommen k nnen allerdings auch wieder manuell gesetzt werden Es wird zum einen der Dateiname des originalen Volumens abdomen
17. Volumenbild und verschiedene Filterparameter abh ngig vom Filter bergeben werden Diese geben an wie der Filter seine Arbeit verrichten soll 3 2 Darstellung und Parameter w hlen Als n chstes wird eine Darstellung ben tigt in der die Parameter f r die folgenden Schritte gew hlt werden k nnen Hierzu wird als Eingabe nur der Dateiname des darzustellenden Volumens ben tigt Es soll in einer Drei Ebenendarstellung visualisiert werden um auf jede einzelne Schicht Zugriff zu haben und somit die passenden Parameter f r die weiteren Schritte exakt bestimmen zu k nnen Softwaretechnischer Entwurf 18 Volumenbild Saatpunkt Blutbahn Darstellung und Grauwertbereich Blutbahn Parameter w hlen Startpunkt Region of Interest gion of Interest Abbildung 10 Darstellung und Parameter Als Parameter werden f r die n chsten Schritte der Saatpunkt 7 2 und der Grauwertbereich der Blutbahn und der Start und Endpunkt der Region of Interest ben tigt 3 3 Segmentierung der Blutbahn und Skelett Die Segmentierung der Blutbahn ist neben der Extrahierung der Verkalkungen der wichtigste Schritt da schlie lich die Verkalkungen der Blutbahn untersucht werden sollen Deswegen ist hier eine genaue Segmentierung notwendig F r diese Segmentierung eignet sich am besten ein Algorithmus der regionenorientiert arbeitet wie es in den Grundlagen 2 3 3 1 beschrieben wurde Hierzu muss das Volumenbild weitergegeben werden Neben wei
18. ben tigt Ausf hren Abbrechen Ist dieser Vorgang abgeschlossen kann mit dem n chsten Schritt dem Picker Abbildung 34 DICOM einlesen fortgefahren werden Anhang 67 7 1 1 2 RAW einlesen Als Alternative zum Einlesen von DICOM Datens tzen wird zus tzlich auch das Einlesen von RAW Datens tzen unterst tzt Hierbei sind allerdings einige Parameter mehr als beim DICOM Format anzugeben So werden neben dem Dateinamen des Volumens Angaben ber die Dimension des Datensatzes in jede Richtung und die Ausdehnung eines Voxels in jede Richtung ben tigt Darauf folgen wieder wie beim Einlesen von DICOM Datens tzen die Parameter f r den Weichzeichner Hier werden die gleichen Standardparameter f r 3D Datens tze verwendet Nach einem Klick auf den Button Ausf hren wird die Datei eingelesen gefiltert und unter dem angegebenen Dateinamen im VTK Format gespeichert Auch hier kann der Vorgang zwischen 10 Minuten und bis zu zwei Stunden oder l nger betragen der abh ngig von Datensatzgr e und der Wahl der Parameter f r den Filter Dicom einlesen RAW einlesen Datensatz Dateiname raw Parameter Dimensionx fo Dimensiony fo Dimensinz fo Ausdehnung Xx JO Ausdehnung Y 0 Ausdehnung zZ JO Weichzeichner Time Steps 0 125 Wiederholungen 2 Conductance ER Volumen speichern Dateiname Jabdomen vtk Ausf hren Abbrechen Abbildung 35 RAW Einlesen Anhang 68
19. bernommen worden kann man in den Hauptreitern zum n chsten Schritt der Segmentierung wechseln Hier hat man nun die Wahl zwischen zwei unterschiedlichen Segmentierungsverfahren 7 1 3 1 Connected Threshold Das favorisierte Verfahren ist auf dem ersten Unterreiter hinterlegt Connected Threshold ist ein Schwellwertverfahren das ausgehend von einem Saatpunkt die Region darum segmentiert falls deren Grauwerte im angegebenen Grauwertbereich liegen Die ben tigten Parameter die f r Connected Threshold Confidence Connected Segmentierung der Blutbahn wie der Dateiname des originalen Volumens die Saatpunktkoordinaten und die Schwellwerte wurden vom Schritt zuvor bernommen k nnen allerdings auch manuell gesetzt werden Im aktuellen Beispiel wurde der Saatpunkt 282 259 223 mit einem Grauwertbereich von 200 bis 500 gew hlt Der Replace Value ist der Wert der anstelle des originalen Grauwertes eines segmentierten Voxels gesetzt werden soll Hier ist 255 ein Standardwert der f r die weiteren Schritte ben tigt wird und somit nicht ge ndert werden sollte Zur Segmentierung des Skelettes wird nur ein Grauwertbereich und wieder der Replace Value ben tigt F r den Grauwertbereich werden wieder Standardwerte benutzt die erfahrungsgem den Grauwerten von Knochen entsprechen Genauere Parameter sind nicht notwendig da das Datensatz Dateiname fabdomen vtk Blutbahn segmentieren Saatpunkt X 282 Y
20. der benachbarten Voxel beruht kommt es durch die Unterschiede zum Abbruch der Segmentierung falls diese zu gro sein sollten Andererseits trat h ufiger das Problem auf dass wenn man das Ma f r die hnlichkeit mittels Angabe einer h heren Farbabweichung verringerte au er der Blutbahn noch weitere Strukturen wie etwa das Skelett mitsegmentiert wurden Auswertung a7 Die gro en Grauwertunterschiede des Datensatzes Abdomenl r hren wahrscheinlich von einer ungleichm igen Verteilung des Kontrastmittels her Bei der Aufnahme ist somit auf eine gute Verteilung des Kontrastmittels zu achten da es sonst zu Problemen bei der Segmentierung mittels des ConfidenceConnectedImageFilter kommen kann Der Beispieldatensatz Abdomen weist im Gegensatz zum Beispieldatensatz Abdomen1 so gut wie keine Farbunterschiede auf und ist recht homogen Hier funktionierte die Segmentierung durch den ConfidenceConnectedImageFilter wie in Abbildung 26 zu sehen ist einwandfrei Voraussetzung ist allerdings die Homogenit t der Grauwerte der Blutbahn Um einen Fehler bei der Segmentierung auszuschlie en ist eine Segmentierung der Blutbahn mit diesem Filter nur bedingt zu empfehlen Vor Anwendung muss sichergestellt werden dass die Blutbahn vom oberen bis zum unteren Ende m glichst den gleichen Grauwert aufweist da es sonst m glich ist dass nur teilweise segmentiert wird Abbildung 26 Segmentierte Blutbahn Confidence Co
21. einen Abstand von O0 und je weiter man sich vom Objekt entfernt und somit den Abstand dazu vergr ert wird auch der Wert am jeweiligen Pixel gr er e Nicht invasiv Nicht invasiv bezeichnet in der Medizin Untersuchungsmethoden bei denen es zu keiner Verletzung der Haut oder der Organe kommt Typische nicht invasive Verfahren sind beispielsweise Computertomographie oder Kernspintomographie sowie Ultraschall e Picker Ein Picker wird verwendet um Objekte durch einen Sehstrahl auszuw hlen Der Sehstrahl wird dazu von der Kameraposition aus in das Grafikfenster geschossen Die Stelle an der der Sehstrahl die Bounding Box des Actors trifft wird als Koordinate zur ckgegeben e Region Growing Verfahren Bei diesem Verfahren wird ausgehend von einem Startpunkt Seed Saatpunkt eine Region segmentiert Hierbei werden allerdings nur dem Startpunkt benachbarte Pixel untersucht und gegebenenfalls dem Volumen hinzugef gt Die so hinzugef gten Punkte dienen auch wieder als Startpunkte und deren Nachbarn werden wiederum untersucht Dieses Vorgehen wird so lange wiederholt bis kein Voxel mehr dem Volumen hinzugef gt werden kann Anhang 79 Region of Interest ROD Eine Region of Interest ist ein Ausschnitt aus einem originalen Volumen der nur den f r den weiteren Verlauf besonders relevanten Bereich beinhaltet Durch eine Eingrenzung des zu bearbeitenden Bereiches mit Hilfe solch eine Region ist es m glich den Arb
22. folgenden Schritte zu w hlen Hierbei dauert das Einlesen des Datensatzes Abdomen1 mit einer Zeit von knapp zwei Minuten bei einem 150 MB gro en Datensatz recht lange Ist dieser erst einmal eingelesen wird er allerdings direkt von ITK nach VTK umgewandelt und dargestellt Die Darstellung ist dabei sehr performant hinsichtlich der Interaktion des Benutzers So l sst sich das Volumen auch ohne 3D Grafikkarte ruckelfrei im Raum drehen und skalieren obwohl es vom Speichervolumen recht gro ist Dies liegt daran dass nur die drei Raumachsen und nicht das komplette Volumen dargestellt werden m ssen Abbildung 22 Picker Die Darstellung in Form von den drei frei verschiebbaren Raumebenen hat sich als sehr vielseitiges Tool erwiesen Man kann einfach und schnell anhand der Ebenen die zu segmentierenden Strukturen lokalisieren und deren Parameter erfassen und beh lt dabei den berblick an welcher Stelle man sich im K rper befindet Etwas aufw ndiger ist die Wahl des Grauwertbereiches der Blutbahn da hier die komplette Blutbahn manuell nach ihren Grauwerten abgesucht werden muss Hier gen gt allerdings oft eine grobe Eingrenzung des Bereiches Etwas bung und Erfahrung ben tigt man bei der Eingrenzung der Region of Interest doch auch dies stellt keine allzu gro e H rde dar vor allem da es am Ergebnis nichts ndert sollte die Region etwas zu gro gew hlt sein sondern sich gegebenenfalls nur die Rechenzeit etwas verl n
23. hinzugef gt werden kann Der ConnectedThresholdImageFilter eignet sich sehr gut als Region Growing Filter f r unhomogene Fl chen in denen auch kleine Grauwertunterschiede vorkommen Der Nachteil ist dass die Schwellwerte recht genau angegeben werden m ssen Das genaue Eingrenzen kann unter Umst nden recht umst ndlich sein ConfidenceConnectedImageFilter Dieser Filter berechnet den Durchschnitt und die Standardabweichung der Grauwerte aller Voxel der aktuellen Region um den Startpunkt herum Ein vom Benutzer vorgegebener Wert wird mit der Standardabweichung multipliziert um eine Region um den Durchschnittswert zu definieren Zu der segmentierten Region werden dann ausgehend vom Saatpunkt diejenigen Voxel hinzugef gt bei denen sich der Grauwert der Nachbarvoxel innerhalb dieser Region um den Durchschnitt herum befindet Wurden alle Voxel die die Bedingung erf llen dem Volumen hinzugef gt ist der erste Durchlauf abgeschlossen und die Standardabweichung und der Durchschnitt k nnen von diesen Voxeln neu berechnet werden Mit diesen neu berechneten Werten startet dann der Umsetzung und Visualisierung 35 zweite Durchlauf der Segmentierung Dies wird nun anhand einer zuvor festgelegten Anzahl von Wiederholungen fortgesetzt wobei in jedem Durchlaufe Voxel zum Volumen hinzugef gt werden k nnen Der ConfidenceConnectedImageFilter eignet sich somit zum Segmentieren homogener Fl chen in denen keine starken Grauwertun
24. seriesUID nameGenerator gt GetSeriesUIDs seriesIdContainer const_iterator seriesItr seriesUID begin seriesIdContainer const_iterator seriesEnd seriesUID end typedef vector lt string gt fileNamesContainer fileNamesContainer fileNames char inputFilenames 2 fileNames nameGenerator gt GetFileNames inputFilenames Die so erzeugten Dateinamen werden dann an den ImageSeriesReader bergeben der nach dem gleichen Prinzip arbeitet wie der Standard Reader Der Unterschied ist jedoch dass er zum einen mehrere Bilder zu einem Volumen einliest und noch den Typ der eingelesenen Bilder mitgeteilt bekommt wodurch er wei wie er mit ihnen umzugehen hat In diesem Fall wird ihm die Information bergeben dass es sich bei der Bilderserie um DICOM Bilder handelt Aufgrund dieser Information wei der Reader nun dass die Dateien der bergebenen Dateinamen zus tzlich zu den normalen Bildinformationen einen bestimmten Header besitzen der beim Einlesen der Bildinformationen bersprungen werden muss Wie immer m ssen zu Beginn die ben tigten Headerdateien in diesem Fall f r den ImageSeriesReader und die DICOMImagelO eingebunden werden include itkImageSeriesReader h include itkDICOMImageIO2 h Danach k nnen dann wieder neue Typen definiert und davon wiederum neue Instanzen erzeugt werden die f r diesen Schritt notwendig sind Wir ben tigen einen reader vom
25. skaliert wieder auf die Ausgangsgr e zur ck e Um schlie lich die Koordinaten und Grauwerte einer bestimmten Struktur bestimmen zu k nnen klickt man mit der linken Maustaste auf die gew nschte Struktur und bekommt in der linken unteren Ecke die Koordinaten X Y Z und den zu der Koordinate geh renden Grauwert angezeigt Nachdem nun bekannt ist wie mit dem Volumen interagiert werden kann kann begonnen werden die ben tigten Parameter zu sammeln Die ersten Parameter sind ein geeigneter Saatpunkt f r die Segmentierung der Blutbahn und deren Grauwertbereich Am einfachsten ist die Wahl des Saatpunktes wenn die X und Y Ebenen ausgeblendet sind und man einen waagerechten Schnitt durch die Blutbahn betrachten kann Ein geeigneter Saatpunkt ist ein Punkt mitten in der Blutbahn an einer Stelle an der sie recht dick und gleichm ig ist Dies ist zum Beispiel im Bereich des unteren Brustkorbes der Fall Im Abbildung 37 Saatpunkt w hlen Beispielvolumen wird der Saatpunkt 282 259 223 mit einem Grauwert von 370 gew hlt Um den Grauwertbereich der Blutbahn zu erhalten muss man die Blutbahn nach unterschiedlichen Graustufen absuchen Vor allem die R nder sind wichtig um die Schwellwerte bestimmen zu k nnen Bei diesem Datensatz hat sich ein Grauwertbereich von ungef hr 200 bis 500 f r die Blutbahn ergeben Die so gesammelten Werte k nnen nun in der Benutzeroberfl che in die daf r vorgesehenen Felder eingetragen werd
26. soll der Bereich vom Nachbarvoxel der Blutbahn mit einem Abstand von JI bis zu einem angemessenen Abstand darum herum gew hlt werden Meist gen gt ein geringer Abstand von bis zu 3 Voxeln um darin die Verkalkungen sauber extrahieren zu k nnen Die in diesem Bereich liegenden Voxel bekommen den Bin rwert 1 zugewiesen alle brigen den Wert 0 Dies ist f r den n chsten Schritt von Bedeutung In ITK wird das ganze umgesetzt indem man wieder zuerst die Headerdatei des Filters einbindet include itkBinaryThresholdImageFilter h Danach kann dann wieder ein neuer Typ des Filters definiert und eine neue Instanz erzeugt werden typedef itk BinaryThresholdImageFilter lt InternallmageType SegmentedImageType gt BinaryThresholdImageFilterType BinaryThresholdImageFilterType Pointer binaryFilterl BinaryThresholdImageFilterType New Umsetzung und Visualisierung 42 Diesem Filter wird mittels SetInput die DistanceMap vom reader bergeben Danach werden dann mittels SetLowerThreshold und SetUpperThreshold die Schwellwerte angegeben in denen sich die Region befindet Zu letzt werden noch die Werte ben tigt auf welche die entsprechenden Regionen gesetzt werden sollen binaryFilterl gt SetInput reader2 gt GetOutput binaryFil binaryFil r1l gt SetLowerThreshold lowerThresholdUmfe L gt SetUpperThreshold upperThresholdUmfe aa K V binar
27. 00002000000000000000000n0000nnnneennnnssnsnnssssnnnnsssnsnnssssnsseenee 6 3 1 Datensatz emesen onoi na A E Ein RI 6 3 2 Darstellung und Parameter w hlen 6 3 3 Segmentierung der Blutbahn und Skelett 6 Sch Resion f Interesterstellen 2 ri else a a E a e aaa EEr ou EOR 6 3 5 DistanceMap erstellen Sk 3 67 Verkalk ng extrajieren sonis aone es E e iea a a Ea msn ENE E a 6 at Darstellung 12er erene aa aee n a as res le Dee 6 Umsetzung und Visualisierung crsssssonssossonssnssonssossnnsnnssnnsnnssnnsnnssnnsnnssnnsnnssnnsnnssnnsnnssnnsnnnsnnsnnssnnenene 6 4T Allgemeine Funktionen nannte eee A AE AE 4 1 1 Datentypen 4 1 2 Reader und Writer 4 1 2 1 Reader z 4 1 2 2 te E EN 4 1 3 SE 4 1 4 ITK nach VTK konvertieren 4 2 Spezifische F nktionen 4u0s20 nenne essen a e ea 4 2 1 Datens tze einlesen ns ea er ia roneo aae an E ao aK Ae ea S 4 2 1 1 DICOM D tens tz nen ie AEE TE E EEEE ASETE E NEEE EE 4 2 1 2 RAW Datens ati reirei een Ran sn A TR REEE 4 2 1 3 Datensatz Filtern 4 2 2 Darstellung und Parameter w hlen 4 2 3 Segmentierung neesnsesensensennennenneneeneennennnenn BR ei 4 2 3 1 Blutbahn ConnectedThresholdImageFilter s sessessseeeeessreeseereseresrersesrrrerersrsr 4 2 3 2 Blutbahn ConfdencetConnectedlmageblter 4 2 3 3 Skelett BinaryThreshold 4 2 4 Region f Interest 02 22 ren SNE 4 2 5 IDISTI IN E1 DAEA
28. Algorithmen zur Verarbeitung sowie die aufbereitete Darstellung der gesuchten Informationen direkt auf Basis der Volumendaten durchgef hrt werden Im Rahmen dieser Diplomarbeit soll am Beispiel von Gef erkrankungen untersucht werden inwieweit eine computergest tzte Diagnose auf 3D Daten sinnvoll und m glich ist Als Grundlage dienen dabei reale CT Scans in denen die Gef strukturen zun chst identifiziert und visualisiert werden sollen In einem zweiten Schritt sollen unter Ausnutzung der Besonderheiten des bildgebenden Verfahrens m gliche pathologische Strukturen gefunden und in geeigneter Weise dargestellt werden Hierf r wird ein Programm entwickelt das CT Scans einlesen kann und die erw hnten Aufgaben umsetzt Da es sich bei diesem Programm um ein Segmentierungs und Betrachtungsprogramm zur computergest tzten Diagnose CAD handelt wird das Programm CADView genannt Grundlagen 4 2 Grundlagen Hintergrund dieser Arbeit ist die Tatsache dass in modernen Gesellschaften Gef erkrankungen zu den h ufigsten Krankheits und Todesursachen z hlen Ziel ist es den Arzt bei seiner Diagnose zu unterst tzen und m gliche Erkrankungen mit Hilfe der Computergrafik zu erkennen und zu visualisieren Hierzu wird ein Grundwissen ber die Anatomie der Gef e und deren Erkrankungen die Computertomografie Verfahren zur Auffindung von Strukturen in den Bildern und schlie lich auch Wissen ber M glichkeiten zur Visualisieru
29. Computergest tzte Diagnose und Visualisierung am Beispiel von arteriellen Gef en in dreidimensionalen CT Daten Diplomarbeit vorgelegt von Alexander Horn Institut f r Computervisualistik Arbeitsgruppe Computergrafik Betreuer Dipl Inform Matthias Biedermann Pr fer Prof Dr Stefan M ller Oktober 2005 Inhaltsverzeichnis 1 LU LU Inhaltsverzeichnis UO E 1 1 Einleitung 20020000000000n00n0nnsnnsnssassnsnnsnnsnnsnnsnnsnnsnnsnssnsnnsnnsnnsnnsnnsnnsnsnnsnnssnsnnsnnsnssnssnssnsnnsnnsnnsnnsnnsnssnssnnnnn 3 2 Grundlagen 220e0e00e0e0neneoneneneonenennenennenennenensnnensnnensnnenennenensnensnnensnnenennenensnnenssnensnnssennenessenenssnenssnenenne 4 2 1 e EE 4 2 1 1 IAA SEINNA ELE a AAE ATE hihi la Eed EE B id E 22 epes insel tieren inserieren AEEA EES ERES 2 2 1 Funktionsprinzip 2 2 2 Hounsfield Skala 2 2 3 DICOM Format g 2 3 CR Ne EE 2 3 1 Aktueller Bezug tain erste eegen lesen en sr er eelere 2 3 2 Vorverarbeitung 2 3 2 1 Lineare Filter 2 3 2 2 Nichtlineare Filter d 2 3 2 3 Adaptive Filter vro siroter 2 22 RBB rer ARR 2 3 3 SEBINENHIETUN EE 2 3 3 1 Grundlegende Verfahren E WEE 2 4 1 Insight Segmentation and Registration Toolkit TK 2 4 2 Visualization Toolkit NIK 2 4 3 Fast light ToolKit FETR 0 en leer 2 4 4 CMake ai 2 4 5 MS Visual Studi NET 222 22 Ae Eege Eeselen ee Softwaretechnischer Entwurf e220 022000000000000000000
30. DView auf dem eigenen Rechner compiliert werden um es danach ausf hren zu k nnen Hierzu werden die unter Software 2 4 beschriebenen Programme ben tigt Als erstes wird empfohlen CMake auf dem Rechner zu installieren Damit k nnen dann die Projektdateien der drei Toolkits erzeugt werden um diese dann mittels Microsoft Visual NET compilieren zu k nnen Ist dies geschehen kann die Projektdatei f r CADView mittels CMake erstellt werden und diese wiederum compiliert werden wodurch eine ausf hrbare Datei erzeugt wird die gestartet werden kann Im Folgenden wird ein Durchlauf des erstellten Programms CADView durchgegangen um die Handhabung und Wahl der Parameter zu erkl ren Es wird dabei genau gezeigt was in welchem Schritt eingetragen werden sollte was Standardwerte sind die beibehalten werden sollten und wie mit der Visualisierung zur Parameterwahl interagiert werden kann 7 1 1 Datensatz einlesen Zum Einlesen von Datens tzen stehen wie schon erw hnt zwei M glichkeiten zur Verf gung Zum einen kann man DICOM Dateien und zum anderen RAW Dateien einlesen Wenn der Benutzer auf den Reiter Datensatz einlesen klickt wird ihm also die Wahl geboten welche Art von Datensatz er einlesen m chte Als Beispieldatensatz f r das Einlesen von DICOM Dateien wird ein Abdomenausschnitt verwendet Der Datensatz besteht aus 288 Schnittbildern und ist 144 MB gro Jedes Schnittbild hat eine Aufl sung von 512 x 512 Pixel Die einzelnen Sc
31. EEE A AAEE A Rn 4 2 6 NVerkalk ngem extrahere ae RER OE E EE EE dE RR ERE 4 2 7 IR e TA 4 3 Benutzeroberfl che amp 4 3 1 TEE Ehe len 4 3 2 Erstellung einer Benutzeroberfl che s ssssssesesesesesesessserrsestststererereentsrsesesereeesrstntnrererees Inhaltsverzeichnis 2 UE H 5 ERT TI 6 5 1 Einlesen und Rilten s0se8282 Rabbiner 6 5 2 Dicker er E E 6 5 3 1 Blutbahn 2 2 2232er einen E A E EEE a 6 5 3 2 IT WEE 6 3 4 R gion of Interest seen ee in Re Es S 6 5 5 DistanceMap ARE 5 6 Kalk Extrahleruns 4 20 2221er ken Eege Eesen 6 3 4 NOESEN EE Eeer 6 6 Schlusswort zuessesnesesnenessenensonenennenennenensenensnnensnnenennenennonensnnensnnenennenennenennenennenessnnensnenennsnesnenesssnensnenennsnene 6 6 1 Zusammenfassung osoren eyer ee ESA EC 6 6 2 _Erweiterungs und Verbesserungsm glichkeiten 6 e OR EE 6 7 ERT 6 7 1 Benutzerhandbuch 6 7 1 1 Datensatz einlesen 20 7 1 1 1 DIEOM einlesen 4a sudeltshissistheisssiechidstdeskssksen 6 7 1 1 2 RAW einlesen ein Deene eege gege 6 7 1 2 Picket arasin a n E E E E E A EA E E S 6 7 1 3 KE EE 6 7 1 3 1 Connected Threshold 6 7 1 3 2 IR e E WEE 6 7 1 4 Reston of Interest nn ee een AA EEE OEA AEE S E AEI aE 6 7 1 5 DistanceMap 6 7 1 6 Extrahierung 6 7 1 7 Visualisierung ar EE EE 6 7 1 7 1 Interaktion mit der Nisualtsterung 6 1 2 E e 6 7 3 Abbildungsverz
32. FileReader h Nachdem der itkImageFileReader nun bekannt ist kann man sich einen PixelType der Angaben ber den Datentyp enth lt einen ImageType der den PixelType und Informationen ber die Dimension enth lt und schlie lich den ReaderType der dem itkImageFileReader den ImageType zuweist definieren typedef signed short InternalPixelType typedef itk Image lt InternalPixelType 3 gt InternalImageType Umsetzung und Visualisierung 24 typedef itk ImageFileReader lt InternallmageType gt InternalReaderType Der eigentliche reader besteht nur aus der Erstellung einer neuen Instanz des InputReaderType der bergabe des Dateinamens durch SetFileName und der Update Funktion die ihn zur Ausf hrung veranlasst InternalReaderType Pointer reader InternalReaderType New reader gt SetFileName Filename reader gt Update Danach ist das eingelesene Volumen verf gbar und kann von darauf folgenden Funktionen mittels reader gt GetOutput ausgelesen werden 4 1 2 2 Writer Zum Speichern eines in ITK bearbeiteten Datensatzes bietet ITK den itkImageFileWriter an mit dem in einer Vielzahl von Dateiformaten gespeichert werden kann Der itkImageFileWriter ist genauso wie der itkImageFileReader aufgebaut Man muss ebenfalls als erstes die Headerdatei inkludieren include itkImageFileWriter h Bei der Definition des InternalWriterType wird ebenfalls wieder e
33. K Software Guide Second Edition http www itk org 2005 10 FLTK Anleitungen http www fltk org 11 CMake Anleitung http www cmake org Erkl rung zur Urheberschaft 82 Erkl rung zur Urheberschaft Ich versichere dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe Au erdem versichere ich dass die Arbeit in gleicher oder hnlicher Form noch keiner anderen Pr fungsbeh rde vorgelegen hat und von dieser als Teil einer Pr fungsleistung angenommen wurde Alle Ausf hrungen die w rtlich oder sinngem bernommen wurden sind als solche gekennzeichnet Koblenz 24 Oktober 2005 Alexander Horn
34. ROl Blutbahn Jabdomen blutbahn roi vtk Speichern DistanceMap Jabdomen distancermap vtk Ausf hren Abbrechen Abbildung 44 DistanceMap Anhang 75 7 1 6 Extrahierung Nachdem die DistanceMap erstellt wurde kann wiederum mit dem n chsten Schritt der Extrahierung fortgefahren werden Dies ist der letzte und auch zugleich wichtigste Schritt vor der Darstellung denn hier werden die Verkalkungen extrahiert und in einem separaten Volumen gespeichert Wie immer werden fast alle Parameter von den Schritten zuvor bernommen oder k nnen manuell eingegeben werden So werden zur Kalkextrahierung die Dateinamen der originalen Region of Interest abdomen roi vtk und der DistanceMap abdomen distancemap vtk ben tigt Um die Gr e des Umfeldes um die Blutbahn herum in dem nach Kalk gesucht werden soll anzugeben kann man einen Grauwertbereich angeben Meist gen gt ein Abstand von 1 bis 3 Voxel um die Blutbahn herum Als n chstes werden noch Ersetzungswerte ben tigt die allerdings auf Standard 1 und 0 gesetzt bleiben sollten um die Berechnung korrekt ausf hren zu k nnen Um schlie lich die Verkalkungen extrahieren zu k nnen ben tigt man den Grauwertbereich den die Verkalkungen haben Diese liegen zwischen den Standardwerten 500 und 3000 Weiter werden noch die Replace Values ben tigt welche die auf Verkalkungen Datens tze ROl Original abaomen ro
35. Typ ImageSeriesReader und die Typangabe dicomIO um sagen zu k nnen von welchem Typ die Bilder sind Da die Umsetzung und Visualisierung 28 Grauwerte der DICOM Bilder im Folgenden durch den Gl ttungsfilter laufen m ssen und dieser float Zahlen ben tigt wird als Datentyp zum Einlesen direkt schon float im Input ImageType verwendet typedef itk ImageSeriesReader lt InputlImageType gt InputReaderType SliceReaderType Pointer reader SliceReaderType New itk DICOMImagelO2 Pointer dicomIO itk DICOMImageIO2 New Hat man diese erzeugt kann man dem Reader die Dateinamen und den Typ der Serienbilder bergeben reader gt SetFileNames fileNames reader gt SetImageIlO dicomIO reader gt Update Wie immer wird mittels Update der Reader gestartet 4 2 1 2 RAW Datensatz Wie schon erw hnt wird zus tzlich zum Einlesen von DICOM Datens tzen auch das Einlesen von RAW Datens tzen unterst tzt um nicht nur an das DICOM Format gebunden zu sein Allerdings ben tigen RAW Datens tze Zusatzinformationen ber beispielsweise die Dimension und die Ausdehnung des Datensatzes die an das Programm bergeben werden m ssen Diese m ssen bei diesem Format bekannt sein da ohne diese Angaben der Datensatz unbrauchbar w re Meist liegen diese Informationen in einer zweiten Textdatei dem eigentlichen Datensatz bei Zu Beginn m ssen wieder die ben tigten Headerdateien eingebunden werden
36. atz zur Arbeit mit Volumendatens tzen der Computergrafik weniger fehleranf llig doch besteht dabei f r den Betrachter die Schwierigkeit sich die dreidimensionalen Strukturen in den zweidimensionalen Schichtbildern vorzustellen So kann es f r den Betrachter recht kompliziert werden den Verlauf einer bestimmten Struktur in mehreren Schichtbildern zu verfolgen und daraus R ckschl sse zu ziehen Die Computergrafik l st dieses Problem indem sie Strukturen dreidimensional darstellt und der Benutzer damit frei interagieren kann Man differenziert zwischen zwei unterschiedlichen Methoden der Visualisierung Zum einen bietet sich die M glichkeit hnlich wie bei den einzelnen Schichtbildern mit Schnittebenen im Volumenbild zu arbeiten Hierbei beh lt man mittels der Schnittebenen durch alle Raumachsen immer noch einen Bezug zum kompletten Volumen Zum anderen besteht die M glichkeit sich spezielle Strukturen separat anzeigen zu lassen Diese m ssen hierzu allerdings aus dem Volumen herausgefiltert werden Die Bildverarbeitung bietet mehrere M glichkeiten eingelesene Volumendatens tze aufzubereiten und somit f r die folgenden Schritte zu optimieren und aus den aufbereiteten Volumen Strukturen zu segmentieren Diese werden sp ter gesondert zu bearbeitet oder visualisiert 2 3 1 Aktueller Bezug Einen aktuellen Ansatz dazu bietet das B bb Paper von Anthony Sherbondy Fast N Volume Segmentation With Simultaneous ee Visualiza
37. bilder zu einem Volumenbild einzulesen Das Einlesen von Bilderserien zu einem Volumen wird in ITK durch den ImageSeriesReader umgesetzt Dieser bekommt die Dateinamen der einzulesenden Schichtbilder und deren Typ bergeben Um allerdings die Dateinamen bergeben zu k nnen m ssen diese erst einmal bekannt sein Dieses Problem wird durch den Filter DICOMSeriesFileNames gel st Er bekommt das Verzeichnis mit den darin enthaltenen Schichtbildern bergeben und ermittelt welche Dateien im DICOM Format darin vorliegen und leitet deren Namen an den darauf folgenden ImageSeriesReader weiter Der SeriesReader liest die Schichtbilder darauf einzeln ein und setzt aus allen Einzelbildern ein gro es Volumenbild zusammen Umsetzung und Visualisierung 21 Zu Beginn muss wiederum die Headerdatei eingebunden werden damit man auf die Klasse itkDICOMSeriesFileNames zugreifen kann include itkDICOoMSeriesFileNames h Danach wird dann wieder eine neue Instanz erzeugt und ihr das Verzeichnis bergeben itk DICOMSeriesFileNames Pointer nameGenerator itk DICOMSeriesFileNames New nameGenerator gt SetDirectory folder In diesem Verzeichnis wird dann nach der DICOM Serie gesucht die fortlaufend nummeriert sein sollte und dann zum Schluss vom nameGenerator mittels GetFileNames im Array fileNames zur ckgegeben typedef vector lt string gt seriesIdContainer const seriesIdContainer amp
38. binaryFilter gt SetLowerThreshold lowerThresholdSkelett binaryFilter gt SetUpperThreshold upperThresholdSkelett binaryFilter gt SetOutsideValue outsideValueSkelett binaryFilter gt SetInsideValue insideValueSkelett aa binaryFilter gt Update Zum Abschluss folgt wie immer der Aufruf von Update um den Filter zu starten Die Ausgabe dieses Filters ist wieder ein Bin rbild und kann Speicherplatz sparend unter dem Datentyp char gespeichert werden ohne dass Informationen verloren gehen Umsetzung und Visualisierung 39 4 2 4 Region of Interest Den n chsten Schritt im Ablauf bildet die Erstellung von zwei Regions of Interest Dies ist nicht unbedingt notwendig beschleunigt aber den Ablauf der n chsten Schritte ungemein da nicht auf den kompletten Volumen weitergearbeitet werden muss sondern nur auf Teilvolumen ITK bietet hierzu den RegionOfInterestImageFilter an der ein neues Bild in der gleichen Dimension wie das Originalbild erzeugt in dem allerdings nur die durch einen Startpunkt und Ausdehnung angegebene Region abgebildet ist Diese Punkte hat man sich im zweiten Schritt bei der Suche nach den Parametern gew hlt indem man die einzelnen Ebenen zu Recht geschoben hat Zu Beginn wird wieder die Headerdatei eingebunden include itkRegionOfInterestlImageFilter h Danach wieder wiederum ein neuer Typ des Filters definiert und eine neue Instanz von di
39. chung ein sehr schonender und schneller Vorgang und bietet einen umfassenderen Blick auf den Gef baum und die Organe 2 2 1 Funktionsprinzip Bei der Computertomographie werden R ntgenstrahlen durch den zu untersuchenden K rper geschickt und auf der anderen Seite von mehreren Detektoren wieder aufgefangen Aus der Differenz von ausgestrahlter zu aufgefangener Strahlung k nnen R ckschl sse auf das untersuchte Gewebe gezogen werden Daraus errechnet ein Computer ein Schichtbild Das nun vorliegende 2D Schichtbild hat abh ngig vom Ger tetyp eine Aufl sung von 2562 512 oder 1024 Pixel Je nachdem welches Ziel man mit der Untersuchung verfolgt kann der Detailgrad der Aufnahmen durch Verringerung der Abst nde der einzelnen Schichtbilder erh ht werden Meist werden Schichtbilder im Abstand von 1 mm bis 10 mm aufgenommen Um einen Volumendatensatz zu erhalten ist es n tig viele einzelne Schichten aufzunehmen und danach zu einem Volumen zusammenzusetzen Um das Verfahren der Aufnahme zu beschleunigen werden Mehrschicht Spiral Computertomographen eingesetzt die zum einen die R ntgenr hre um den Patienten drehen und gleichzeitig den Patienten schrittweise durch die R hre hindurch schieben beliebiger 0 Aufnahmewinkel Patient wird verschoben Detektoren 180 Abbildung 3 Computertomographie Grundlagen 7 Mit Hilfe dieses Verfahrens ist es m glich 300 und mehr Schichtbilder in nur 9 Sekunden aufzunehmen w h
40. dehnung der Region ben tigt die man zuvor bei der Darstellung ermittelt hat Volumenbild ROI Original Blutbahn Region of Interest ROI Blutbahn Original und Startpunkt Blutbahn Ausdehnuns Dateinamen Abbildung 13 Region of Interest Als Ausgabe erh lt man die beiden Volumen der Regionen die unter den angegebenen Dateinamen gespeichert werden 3 5 DistanceMap erstellen Da eine gezielte Segmentierung der Verkalkungen nicht effizient w re da diese teilweise recht klein und ber die gesamte Blutbahn verstreut sind werden sie mittels eines Schwellwertverfahrens 2 3 3 1 extrahiert W rde man diese Methode auf das komplette Volumen anwenden w rde man neben den Verkalkungen auch noch das Skelett erhalten da dieses im gleichen Grauwertbereich liegt Aus diesem Grund muss die Region in der nach Softwaretechnischer Entwurf 20 Verkalkungen gesucht wird auf das Umfeld der Blutbahn eingeschr nkt werden Die DistanceMap wird ben tigt um eine Region in einem bestimmten Abstand zur Blutbahn festlegen zu k nnen Es wird dazu das Bin rbild der Region of Interest der Blutbahn ben tigt ROI Blutbahn DistanceMap DistanceMap Dateiname Abbildung 14 DistanceMap Als Ausgabe erh lt man die DistanceMap die im n chsten Schritt weiterverarbeitet wird 3 6 Verkalkung extrahieren Durch die DistanceMap erh lt man den Abstand jedes Voxels zum n chst gelegenen Voxel der Blutbahn und kann somit durch ei
41. efiniert werden in dem angegeben wird von welchem Datentyp in welchen konvertiert werden soll In diesem Fall wird von InputImageType in den InternallImageType umgewandelt typedef itk CastImageFilter lt InputlmageType InternallmageType gt InputToInternalCastImageFilterType Hat man den Typ definiert kann eine neue Instanz des Typs erstellt werden welcher man dann den Datensatz vom reader mittels Set Input bergibt InputToInternalCastlImageFilterType Pointer cast InputToInternalCastImageFilterType New cast gt SetInput reader gt GetOutput cast gt Update Zum Schluss wird der caster durch den Aufruf Update gestartet 4 1 4 ITK nach VTK konvertieren Da ITK Daten nicht direkt an VTK bergeben kann m ssen hierf r die Daten zuerst umgewandelt werden Diese Aufgabe bernimmt die Funktion ConnectPipelines der man den witkExporter und den vtkImporter bergibt ExportFilterType Pointer itkExporter ExportFilterType New itkExporter gt SetInput reader gt GetOutput vtkImagelmport vtkImporter vtkImagelmport New ConnectPipelines itkExporter vtkImporter vtkImporter gt Update Umsetzung und Visualisierung 26 4 2 Spezifische Funktionen Nachdem nun die grundlegenden Funktionen wie einen Datensatz einlesen und speichern beschrieben wurden soll nun mit der Erl uterung der spezifischen Funktionen begonn
42. ehungsweise unsch rfer gezeichnet Generell ist somit festzustellen dass der gew hlte Kantenerhaltende Filter GradientAnisotropicDiffusion sehr gut seine Aufgabe erf llt und das gew nschte Ergebnis zur ckgeliefert hat Es liegen nun von Rauschen befreite Auswertung 53 Fl chen und trotzdem noch sauber erkennbare Kanten vor was f r die nun folgenden Schritte notwendig ist Einziges Manko bildet der gro e Zeitaufwand der Filterung Doch Versuche mit den anderen in der Umsetzung beschriebenen Filtern haben gezeigt dass dort der Zeitaufwand genauso gro wenn nicht sogar teilweise gr er ist Abbildung 20 Vergleich ungefiltert gefiltert Schnitt Z Achse E Abbildung 21 Vergleich ungefiltert gefiltert Schnitt Y Achse Aufgrund der extrem langen Zeit die ben tigt wird um das Volumen zu filtern kommt allerdings die Frage auf ob sich die Filterung berhaupt lohnt Mehrere Versuche mit dem ungefilterten Volumen haben gezeigt dass wenn der Grauwertbereich bei der Segmentierung entsprechend gew hlt ist die Segmentierung der Blutbahn immer noch einwandfrei funktioniert Voraussetzung daf r ist allerdings ein qualitativ sehr hochwertiger Datensatz der an sich recht wenig Rauschen aufweist und mit einer geringen Schichtdicke aufgenommen wurde Auswertung 54 5 2 Picker Im Picker werden die zu einem Volumen eingelesenen und gespeicherten Schichtbilder dargestellt um darin Parameter f r die
43. eichnis 6 E WR Ee EE 6 Erkl rung zur Urheberscha ft sessesssssssssossnssnssnssnsnnsnnsnssnssnsnnsnnsnnsnnsnssnsnnsnusnnsnnnnnsnnsnnsnssnssnsnnsnnsnnsnnsnssnsnnns 6 Einleitung 3 1 Einleitung In der Medizin gibt es immer mehr bildgebende Verfahren die digitale Daten erzeugen und verarbeiten Doch aufgrund des immer gr er werdenden Datenaufkommens ist es f r den Arzt immer aufw ndiger mit den Daten umzugehen weshalb eine computergest tzte Diagnose CAD computer aided assisted diagnosis immer mehr an Bedeutung gewinnt Herk mmliche Bildverarbeitungsverfahren f r die Unterst tzung der Diagnose arbeiten h ufig auf einzelnen zweidimensionalen Schnittbildern was im Allgemeinen zu einer guten Performanz dieser Algorithmen f hrt Andererseits k nnen r umliche Informationen aus einer Folge solcher Schnittbilder wie sie beispielsweise bei CT Untersuchungen anfallen nur mit erheblichem Aufwand und beschr nkter Qualit t gewonnen werden Dar ber hinaus spielt bei der diagnostischen Verarbeitung solcher Bilder z B die Schnittebene eine gro e Rolle so dass eine umfangreiche Verkn pfung verschiedener Arbeitsschritte notwendig wird Andererseits ist die Verarbeitung und Visualisierung des kompletten Volumendatensatzes der aus den gleichen Schnittbildern des Aufnahmeverfahrens einfach erstellt werden kann durch aktuelle Entwicklungen der Graphik Hardware zunehmend effizienter und flexibler So k nnen auch komplexere
44. eingebettet wurden So sind immer am oberen Rand die sieben Reiter der Hauptschritte zu sehen damit man jederzeit zwischen den Schritten wechseln kann Darunter folgt dann das Hauptfeld das senkrecht in zwei kleine Gruppen unterteilt wurde In der linken Gruppe hat der Benutzer die M glichkeit wie beispielsweise im Schritt Datensatz einlesen zwischen zwei Reitern zu w hlen Je nachdem von welcher Art sein Datensatz ist kann er sich f r das Einlesen eines DICOM oder eines RAW Datensatzes entscheiden Darunter folgen dann die Eingabefelder f r die gew hlte Funktion In der rechten gr eren Gruppe ist in den Schritten Picker und Visualisierung Platz f r ein Fenster in dem die Volumen visualisiert werden und wo man mit ihnen interagieren kann In allen anderen Schritten bleibt diese Gruppe leer Den Abschluss bildet unterhalb des Hauptfeldes eine Fu zeile Um dem Benutzer die Bedienung zu erleichtern wurden weitere Felder die in jeder Funktion auftauchen wie Dateinamen zum Einlesen oder Speichern immer an der gleichen Stelle positioniert Weiter wurde darauf geachtet zusammengeh rige Parameter auch visuell zusammen zu gruppieren So wurden beispielsweise beim Sammeln der Parameter im Picker die Parameter f r die Segmentierung und die Parameter f r die Regions of Interest getrennt zu Gruppen zusammengefasst und umrandet Weiter ist jeder Gruppe beziehungsweise den Textfeldern ein Tooltip zugewiesen der bei
45. eingetragen sind Die segmentierte Blutbahn an sich hat die Entfernung 0 direkt angrenzende Voxel den Abstand 1 und so weiter 4 2 6 Verkalkungen extrahieren Als letzter Schritt vor der Darstellung fehlt die Extrahierung der Verkalkungen Da eine Selektion der einzelnen Kalkflecken zu aufw ndig w re ben tigt man ein Verfahren um die Verkalkungen automatisch zu extrahieren Dies wird dadurch gel st dass man die Verkalkungen aufgrund ihrer Grauwerte ausfindig macht Diese Grauwerte kann man sich im zweiten Schritt der Darstellung und Parametersuche w hlen oder erfahrungsgem einfach den Grauwertbereich f r Kalk benutzen Hierbei besteht das Problem dass man nicht den ganzen K rper durchsuchen darf sondern nur den Bereich in dem die gesuchten Verkalkungen auftreten k nnen also in direkter N he der Blutbahn W rde man im kompletten Datensatz suchen w rde man als Ergebnis auch noch zus tzlich zu den Verkalkungen das Skelett zur ckgeliefert bekommen Um die Region um die Blutbahn einschr nken zu k nnen wurde der Zwischenschritt ber die DistanceMap gemacht wodurch man nun eine beliebige Region mit einem bestimmten Abstand zur Blutbahn ausw hlen kann Diese Region erh lt man durch einen einfachen Bin rfilter der schon bei der Extrahierung des Skelettes benutzt wurde Diesem bergibt man einen Schwellwertbereich sowie die DistanceMap in der die Entfernungen der einzelnen Voxel zur Blutbahn eingetragen sind In diesem Fall
46. eitsaufwand der darauf folgenden Schritte erheblich zu verringern Dadurch wird eine h here Performanz erreicht Zur Eingrenzung der Region werden ein Startpunkt der Region und die Ausdehnung in jede Richtung angegeben Seedpoint Seedpoint ist der Ausgangspunkt f r das Region Growing Verfahren Dieser Punkt wird auch als Saatpunkt Startpunkt oder einfach nur Seed bezeichnet Abh ngig von Algorithmus k nnen auch mehrere Seedpoints gesetzt werden um mehrere Regionen gleichzeitig zu segmentieren Anhang 80 7 3 Abbildungsverzeichnis Abbildung Jena nes ea 4 Abbildung 2 Entwicklung eines Gef verschlusses ssesssnssesssessssseesseesseesseessee 5 Abbildung 3 Computertomographie 22200s22000nsnnnensnnnensnnnennnnnnnsnnennnnnennnnn 6 Abbildung 4 Hounsfield Skala 6 Abbildung 5 Flu diagramm Sherbondy sssseseenssesseessseesseessessseresseeesseesseesseessee 6 Abbildung 6 Bildrausehen 2 2 see 6 Abbildung 7 Ablaufdiagramm CAD iew sssssesssesssseessseesseessersseresseessseesseesseessee 6 Abbildung 8 Schichtbilder einlesen nsnnsnsnsoensseeseeessseesseessesssesesseesseesseesseessee 6 Abbildung 9 Gl ttunsshlier u 6 Abbildung 10 Darstellung und Parameter 6 Abbildung 11 Segmentierung Blutbahn ssssesssessseeessseesseessesssesssseessseesseesseessee 6 Abbildung 12 Segmentierung Skelett 6 Abbildung 13 Region of Interest uuc dann 6 Abbildung 14 DistanezMaD uses seen eege
47. en Anhang 70 Nachdem nun ein Saatpunkt gew hlt wurde kann man damit beginnen die Eckpunkte f r die Region of Interest festzulegen Hierbei ist darauf zu achten das Volumen m glichst klein zu halten aber nichts von der Blutbahn abzuschneiden Das Vorgehen ist hierbei die angezeigten Ebenen in ihrer Minimalausdehnung und ihrer Maximalausdehnung an die Blutbahn anzupassen Hierzu werden einmal die Ebenen so verschoben dass sie sich in der vorderen unteren rechten Ecke Abbildung 38 Region of Interest Minimum schneiden ohne die Blutbahn zu schneiden und in der gegen berliegenden Ecke Die Schnittpunkte der Ebenen sind dann jeweils die Eckpunkte der Region of Interest Als geeignete Eckpunkte haben sich bei diesem Datensatz die Punkte 120 150 0 und 400 350 287 herausgestellt Diese Koordinaten k nnen nun auch wieder in die daf r vorgesehene Stelle eingetragen werden Abbildung 39 Region of Interest Maximum Segmentierung Nach Abschluss der Parameterwahl und Saatpunkt erfolgtem Eintragen der Parameter x 282 Y 259 zZ 223 k nnen diese abschlie end mittels des Grauwerthereich Buttons Parameter bernehmen f r die Min 200 max 500 darauf folgenden Schritte bertragen Region of Interest werden Startpunkt x 120 chan zZ fo Endpunkt x faoo yi fa50 z 287 Abbildung 40 Parameter setzen Anhang 71 7 1 3 Segmentierung Sind die Parameter
48. en Danach folgt mit nur wenigen Sekunden die Umwandlung von ITK nach VTK Bis zur Darstellung vergehen darauf dann nochmals etwas mehr als drei Minuten in der die Volumen gegl ttet und gerendert werden In Anbetracht der noch immer recht gro en Datenmenge der Volumen handelt es sich hierbei allerdings um eine akzeptable Zeit Auswertung 63 Abbildung 33 Visualisierung Die Interaktion mit den dargestellten Volumen l uft recht fl ssig Die Darstellung stockt zwar beim Drehen oder Skalieren etwas ist allerdings mit zwei bis drei Schritten pro Sekunde noch im Rahmen des ertr glichen um damit arbeiten zu k nnen Durch die M glichkeit das Volumenbild frei drehen skalieren und verschieben zu k nnen ist es dem Benutzer m glich selbst kleinste Verkalkungen genau von allen Seiten zu betrachten Schlusswort 64 6 Schlusswort 6 1 Zusammenfassung Zusammenfassend ist letztlich zu sagen dass eine computergest tzte Diagnose von Verkalkungen der arteriellen Gef e sehr wohl m glich ist Voraussetzung daf r ist ein qualitativ hochwertiger Datensatz um auch Verkalkungen geringer Gr e erkennen zu k nnen Hat man einen guten Datensatz vorliegen den man nicht unbedingt filtern muss so kann man innerhalb von weniger als zwanzig Minuten zu einer Visualisierung der Blutbahn mit den dazugeh rigen Verkalkungen gelangen Dem Benutzer wird es dadurch erm glicht innerhalb k rzester Zeit Informationen ber Engstellen in der Blu
49. en verschiedenen Zielsetzungen wird es jedoch bei den ersten beiden Schritten der Bildverarbeitung geben Bei der Vorverarbeitung mit kantenerhaltenden Filtern sowie der Segmentierung mit dem Region Growing Algorithmus 2 3 2 Vorverarbeitung Digital aufgenommene Bilder besitzen ein gewisses Ma an Unsch rfe welche auf der Tatsache beruht dass die Bildinformationen beim Aufnahmeverfahren auf Pixel aufgeteilt werden m ssen und dass bei der Aufnahme St rsignale entstehen Diese Unsch rfe wird als Bildrauschen bezeichnet Um mit den vom Computertomographen erzeugten Bildern korrekt arbeiten zu k nnen ist es deshalb notwendig die einzelnen Bilder vor ihrer Weiterverarbeitung vorzubereiten Ziel ist es hierbei das Rauschen aus den Bildern zu entfernen und die Bilder zu gl tten um sp ter eine bessere Segmentierung durch homogene Fl chen zu erreichen Hierzu gibt es unterschiedliche Filter die verschiedenen Ziele Abbildung 6 Bildrauschen verfolgen 2 3 2 1 Lineare Filter Lineare Filter wie zum Beispiel der Mittelwertfilter oder der Wiener Filter charakterisieren sich dadurch dass sie den neuen Farbwert eines Pixels berechnen indem sie eine Gewichtungsmaske mit der darunter liegenden Region multiplizieren Die Gewichtungsmaske ist dabei symmetrisch und kann durch eine Faltung dargestellt werden Mit linearen Filtern kann man Bilder komplett gl tten Allerdings haben sie dadurch auch den Nachteil dass Kanten Grundlage
50. en werden in denen die einzelnen Filter zur Bildverarbeitung und Visualisierung erkl rt werden Es werden dabei falls vorhanden verschiedene Filter vorgestellt welche hnliche Aufgaben erf llen und letztendlich begr ndet welcher Filter aus welchen Gr nden am besten f r die Anwendung geeignet ist 4 2 1 Datens tze einlesen In der Medizin liegen Datens tze aus CT beziehungsweise MR Ger ten im DICOM Format vor welches zu Beginn in den Grundlagen 2 2 3 n her erl utert wurde Somit war es das Hauptanliegen dieses Format zu unterst tzen um keine unn tigen Schritte ber eine Konvertierung vom DICOM Format in ein anderes Format vornehmen zu m ssen F r den Fall dass doch ein anderes Format vorliegt wird noch zus tzlich zum DICOM Format das RAW Format unterst tzt Es ist ein g ngiges Format welches auch 3D Datens tze speichern kann Im gleichen Arbeitsschritt wird direkt nach dem Einlesen des Datensatzes dieser auch gleich mit einem Filter gegl ttet um Rauschen aus dem Volumen zu entfernen und bessere Grundlagen f r die Segmentierung zu schaffen Danach kann dann der Datensatz f r die n chsten Schritte mit dem normalen InternalWriterType gespeichert werden 4 2 1 1 DICOM Datensatz ITK stellt speziell f r DICOM Datens tze verschiedene DICOM Funktionen zur Verf gung Da es in dieser Arbeit um 3D Volumendaten geht und DICOM Dateien meist als 2D Schichtbilder vorliegen ben tigt man die M glichkeit mehrere Schicht
51. ensions 2 dimensionZ rawImageIO gt SetSpacing 0 spacingX rawImageIO gt SetSpacing 1 spacingY rawImageIO gt SetSpacing 2 spacing2 reader gt Update Durch die Update Funktion wird wiederum der reader dazu veranlasst das angegebene Bild mit den Zusatzinformationen einzulesen 4 2 1 3 Datensatz Filtern Um den Datensatz f r die weitere Verarbeitung vorzubereiten und ihn von Rauschen zu befreien muss er wie in den Grundlagen 2 3 2 schon erkl rt wurde gefiltert werden Da eine normale Filterung mittels eines linearen Filters zu viele Konturen verwischen w rde die f r eine saubere Segmentierung ben tigt werden wird auf nicht lineare Filter zur ckgegriffen welche die Kanten erhalten und trotzdem das Rauschen in Fl chen unterdr cken ITK bietet hierzu mehrere Gl ttungsfilter an Den GradientAnisotropicDiffusionlImage Filter den CurvatureFlowlImageFilter oder den BilaterallmageFilter und Abwandlungen von diesen die alle eine Art von kanten erhaltendem Gl tten unterst tzen e GradientAnisotropicDiffusionlmageFilter Bei diesem Filter wird wie im Paper Scale Space and Edge Detection Using Anisotropic Diffusion von Perona und Malik 1 erl utert wird der Grad der Gl ttung durch eine Diffusionsfunktion berechnet die vom Gradienten des aktuell betrachteten Voxels abh ngt Im Randbereich von Fl chen nimmt die Funktion einen geringen Wert an wodurch die Gl ttung minimier
52. er Filter vtkStripper macht dann zus tzlich aus allen Polygonen durch Triangulierung Dreiecke die daraufhin durch den Filter vtkPolyDataMapper in grafische Primitiven umgewandelt werden Zu Beginn jedes Filters wird die ben tigte Headerdatei eingebunden und daraus eine neue Instanz der Klasse erzeugt include vtkContourFilter h vtkContourFilter contourl vtkContourFilter New Danach werden dem ContourFilter das Volumen und der Grauwert bergeben f r den eine Oberfl che generiert werden soll contourl gt SetInput readerl gt GetOutput contourl gt SetValue 0 contourValue Die erzeugte Oberfl che wird dann an den Gl ttungsfilter vtkSmoothPolyDataFilter weitergegeben Dieser Filter gl ttet die Oberfl che indem er einen Laplace Weichzeichner verwendet Dabei wird jeder Eckpunkt auf den Durchschnittswert seiner Nachbareckpunkte gesetzt Die zwei wichtigsten Parameter sind die Anzahl der Wiederholungen die angeben wie oft der Filter ber die Oberfl che laufen soll und die Konvergenz die angibt wie weit sich ein Punkt bewegen darf Bewegt er sich weniger als die Konvergenz wird der Prozess gestoppt Von diesem Filter muss erst wieder einmal eine neue Instanz erzeugt werden include vtkSmoothPolyDataFilter h vtkSmoothPolyDataFilter smoothl vtkSmoothPolyDataFilter New Umsetzung und Visualisierung 45 Nachdem die contour bergeben wurde kann man dem Filter die Anzahl der W
53. er zu bearbeiten gt Im n chsten Schritt soll das gerade eingelesene Volumen dargestellt werden damit man Parameter f r die darauf folgenden Schritte w hlen kann gt Als drittes werden aufgrund der gew hlten Parameter die Blutbahn und das Skelett segmentiert gt Aus der Blutbahn und dem originalen Volumen werden im n chsten Schritt die Regions of Interest 7 2 ausgeschnitten um den Aufwand geringer zu halten gt Im f nften Schritt wird dann mit Hilfe der Region of Interest eine DistanceMap 7 2 der Blutbahn erstellt gt Darauf folgend wird im sechsten Schritt eine Region um die Blutbahn mit einem bestimmten Abstand binarisiert 7 2 Diese Region wird dann mit der originalen Region of Interest multipliziert um nur das Umfeld um die Blutbahn herum zu erhalten Darin wird dann wiederum im Grauwertbereich von Kalk binarisiert um die Verkalkungen zu bekommen gt Abschlie end kann man sich im letzten Schritt die Blutbahn die Verkalkungen und das Skelett darstellen lassen Im Folgenden werden die einzelnen Schritte mit detaillierteren Diagrammen n her beschrieben und erkl rt was sie als Eingabe ben tigen und als Ausgabe zur ckgeben Allen Schritten bis auf die Schritte in denen nur dargestellt wird ist gemein dass zu Beginn ein oder mehrere Volumen eingelesen werden und zum Schluss die neu erzeugten Volumen gespeichert werden Hierzu m ssen bei jedem Schritt die Dateinamen der zu ladenden oder zu speichernden Vol
54. erung des Skelettes keine weitere Rolle 5 4 Region of Interest Die Erstellung und das Weiterarbeiten mit einer Region of Interest hat f r das Ergebnisbild ebenfalls keine weitere Bedeutung da keine relevanten Bildinformationen ge ndert werden sondern nur die Gr e beziehungsweise der Ausschnitt des Volumens mit dem gearbeitet wird ver ndert wird Doch hinsichtlich der Performanz ist ein deutlicher Unterschied zu sp ren ob mit dem originalen Volumen weitergearbeitet wird oder nur einem Teil davon Gerade der n chste Schritt die Erstellung der DistanceMap ben tigt auf dem originalen Datensatz ber eine Stunde Rechenzeit Angewandt auf die Region of Interest sind es nur wenige Minuten Insofern rechnet sich der Zwischenschritt ber die Erstellung der Region of Interest in zeitlicher Hinsicht enorm Die Erstellung der Region of Interest ben tigte auf beiden Volumen nur wenige Minuten wobei das Einlesen und Speichern der Volumen einen Gro teil der in Anspruch genommenen Zeit ausmacht Die eigentliche Reduzierung auf einen Ausschnitt des originalen Volumens betr gt nur wenige Sekunden Auswertung 59 Abbildung 28 Region of Interest 5 5 DistanceMap Die Erstellung einer DistanceMap ist n tig um im n chsten Schritt der Extrahierung der Verkalkungen nur im nahen Umfeld der Blutbahn nach Verkalkungen zu suchen Das Einlesen und Speichern der Volumen dauert hier nur wenige Sekunden da mittlerweile nicht mehr mit dem originale
55. esem erzeugt typedef itk RegionOfInterestImageFilter lt InternallmageType InternallmageType gt RegionOfInterestImageFilterType RegionOfInterestImageFilterType Pointer regionFilter RegionOfInterestImageFilterType New Als n chstes werden dann der Startpunkt und die Ausdehnung der Region angegeben und als desiredRegion mittels SetRegionOflInterest an den Filter bergeben InternallmageType IndexType start start 0 startX start 1 startY start 2 startZ InternallmageType SizeType size size 0 sizeX size ll sizeY size 2 sizeZ InternallmageType RegionType desiredRegion desiredRegion SetSize size desiredRegion SetIndex start regionFilter gt SetRegionOflInterest desiredRegion Wie immer bekommt der Filter mittels Set Input das Volumen mit dem er arbeiten soll vom reader bergeben regionFilter gt SetInput reader gt GetOutput regionFilter gt Update Umsetzung und Visualisierung 40 Mittels Update wird dann auch wieder der Filter gestartet Der Filter liefert die zu Beginn beschriebene Region of Interest zur ck Da f r die n chsten Schritte sowohl mit der Blutbahn als auch dem originalen Volumen gearbeitet wird wird von beiden Volumen eine Region of Interest erzeugt und unter den Datentyp signed short gespeichert da schlie lich alle Grauwerte wie im originalen Volumen erhalten bleiben sollen
56. gert Weiter ist es nicht nur m glich im Picker die ben tigten Parameter zu w hlen sondern auch Zwischenergebnisse schnell und einfach zu berpr fen indem man sich die entsprechenden Volumen anzeigen l sst Auswertung 55 5 3 Segmentierung Den n chsten Schritt im Programmablauf bildet die Segmentierung der Blutbahn und des Skelettes aus den Datens tzen 5 3 1 Blutbahn Eine gute Segmentierung der Blutbahn setzt einen guten Datensatz und eine korrekte Wahl der ben tigten Parameter voraus Bei sehr guten Ausgangsdatens tzen kann teilweise auf eine Gl ttung durch einen kantenerhaltenden Filter verzichtet werden Doch die meisten Datens tze weisen relativ viel Rauschen auf und ben tigen somit eine Gl ttung Wie auch beim Picker wird bei der Segmentierung noch mit dem kompletten Datensatz gearbeitet und deshalb ist wiederum die Ladezeit des Volumens mit zwei Minuten recht lange Die Segmentierung an sich ist mit wenigen Sekunden sehr schnell was von der Gr e des zu segmentierenden Objektes abh ngig ist Da die Blutbahn recht klein ist f llt die ben tigte Rechenzeit deshalb sehr kurz aus Abbildung 23 Segmentierte Blutbahn mittels Connected Threshold Die Segmentierung mittels ConnectedThresholdImageFilter hat bei beiden Beispieldatens tzen die besten und zuverl ssigsten Ergebnisse geliefert So wird anhand der gew hlten Parameter die komplette Blutbahn segmentiert Abbildung 23 Sogar die rechte und linke
57. geteilt e Texturorientierte Verfahren Bei Strukturen die keine einheitlichen Grauwerte aufweisen n tzen die zuvor genannten Segmentierungsverfahren nichts da sie auf der hnlichkeit der Grauwerte basieren Hier bietet sich nur die M glichkeit die Strukturen mit vorhandenen Texturen zu vergleichen und dann gegebenenfalls die Struktur aufgrund ihrer hnlichkeit zur Textur dem Segment hinzuzuf gen Grundlagen 13 2 4 Software Nachfolgend werden die verwendeten Softwaresysteme genannt sowie ihre Merkmale kurz umschrieben die zur Erstellung der Anwendung verwendet wurden 2 4 1 Insight Segmentation and Registration Toolkit ITK ITK ist ein open source Toolkit zur Segmentierung und Registrierung von digitalen medizinischen Datens tzen die vornehmlich aus CT oder MR Scannern gewonnen werden Es verwendet eine Pipelinestruktur und setzt auf vorhandenen Klassen auf in denen eine Vielzahl von Filtern vordefiniert sind Die Filter sind einfach anzuwenden und nur noch mit den entsprechenden Parametern zu f llen sind So stehen beispielsweise Filter zum Einlesen und Schreiben von Datens tzen verschiedenste Gl ttungsfilter mehrere Segmentierungsalgorithmen und andere zur Verf gung ITK bietet allerdings nicht die M glichkeit der Visualisierung Hierf r wird das Visualization Toolkit verwendet 2 4 2 Visualization Toolkit VTK VTK ist ein frei verf gbares Softwaresystem f r 3D Computergrafik Bildverarbeitung und V
58. getestet Liegt der Farbwert innerhalb des Schwellwertbereiches wird das Voxel zum Segment hinzugef gt Andernfalls nicht Es werden allerdings keine zusammenh ngenden Segmente zur ckgeliefert da nur jedes Voxel einzeln und nicht in Beziehung zu seinen Nachbarn betrachtet wird e Kantenorientierte Verfahren Ausgehend davon dass eine zu segmentierende Struktur einen anderen Grauwert als seine benachbarte Struktur aufweist bedeutet die Kante zwischen den benachbarten Strukturen einen Grauwertsprung Ziel ist es eine geschlossene Kante zu finden die ein Objekt umgibt Dazu werden im Bild Kanten und berg nge gesucht und diese zu geschlossenen Formen Grundlagen 12 zusammengef gt Voraussetzung hierf r ist nat rlich eine gut erkennbare Kante mit der die Segmentierung gestartet werden kann Sind die Kanten nur schlecht zu erkennen da sie verrauscht oder nicht geschlossen sind kann es zu Fehlern bei der Segmentierung kommen e Regionenorientierte Verfahren Hierbei wird versucht benachbarte Bildpunkte einer zusammenh ngenden Region hinzuzuf gen wenn sie den gegebenen Kriterien entsprechen Ein weit verbreiteter Ansatz ist hierbei das Region Growing Verfahren Hierbei wird ein Pixel beziehungsweise Voxel als Startpunkt 7 2 Seedpoint angegeben und von dort aus die Nachbarpixel auf hnlichkeiten hin untersucht Weichen diese nicht weiter als der angegebene Schwellwert vom Wert des Startpunktes ab werden sie der Region zu
59. hichtbilder liegen in einem Ordner vor und sind fortlaufend von IM 0001 0001 dcem bis IM 0001 0288 dem durchnummeriert Anhang 66 7 1 1 1 DICOM einlesen Klickt der Benutzer im Hauptreiter Datensatz einlesen wird ihm als erstes die M glichkeit geboten einen DICOM Datensatz einzulesen Hierzu werden nur das Verzeichnis in dem sich die Schichtbilder befinden die Parameter f r den Weichzeichner und der Dateiname unter dem das erstellte Volumen gespeichert werden soll ben tigt Angenommen die Schichtbilder befinden Dicom einlesen RAW einlesen Datensatz sich in einem Verzeichnis abdomen direkt BR j verzeichnis C abdomen auf der Festplatte C dann lautet die Eingabe des Verzeichnisses C abdomen Weichzeichner Als Parameter f r den Weichzeichner Time Steps 0 125 werden wie in der Auswertung beschrieben Wiederholungen 2 die Standardwerte 0 125 f r die Conductance fi TimeSteps 2 f r die Anzahl der Wiederholungen und Il f r die Conductance angegeben Das erstellte Volumen soll unter dem Dateinamen abdomen vtk gespeichert werden Der Vorgang des Einlesens und Filterns der Schichtbilder ist der aufw ndigste und kann unter Umst nden abh ngig vom Datensatz und den gew hlten Parametern zwischen volumen speichern zehn Minuten und zwei Stunden betragen p Hierbei wird der Gro teil der Rechenzeit f r Peteiname atdomen vk die Filterung des Volumens
60. hl sse ber die Verkalkungen der Blutbahn zu geben Es muss darauf geachtet werden dass man sich bei der Betrachtung der Blutbahn und deren Verkalkungen noch orientieren kann weshalb zus tzlich noch das Skelett dargestellt wird Die einzelnen Objekte werden in unterschiedlichen Farben dargestellt um sie besser voneinander unterscheiden zu k nnen Die Farben symbolisieren die Art des Objekts das dargestellt wird so dass der Betrachter sofort erkennt worum es sich handelt Die Blutbahn wurde aufgrund der roten Farbe von Blut rot eingef rbt Die Verkalkungen sind wei da Kalk eine wei e Farbe hat Nur das Skelett wurde nicht seiner eigentlichen Farbe entsprechend eingef rbt weil es nur als Unterst tzung dienen soll und nicht den Betrachter von den eigentlichen zwei Objekten ablenken darf Das Skelett wurde in einem hnlichen blau wie der Hintergrund gehalten Die einzelnen Objekte werden auch mit unterschiedlichen Transparenzen dargestellt um durch sie hindurch sehen zu k nnen So ist das Skelett als unwichtigstes Objekt zu neunzig Prozent transparent um die Blutbahn und die Verkalkungen sichtbar zu machen Die Blutbahn hingegen ist zu siebzig Prozent durchsichtig um gegebenenfalls Verkalkungen in ihrem Inneren erblicken zu k nnen Die Verkalkungen an sich sind nicht transparent Vom Start bis zur Darstellung der Volumen vergeht eine Zeit von knapp f nf Minuten Dabei dauert das Einlesen der drei Volumen nur knapp neunzig Sekund
61. i vtk DistanceMap Jabdomen distancemap vk Umfeld extrahieren Grauwertbereich min 1 max B Replace Yalue inside 1 outside 0 Kalk extrahieren Grauwertbereich min 500 max 3000 Replace Value inside 255 outside Speichern verkalkung Jabdomen kalk vtk Abbrechen Abbildung 45 Extrahierung beziehungsweise der Rest gesetzt werden sollen Nach dem Start durch Klicken auf den Button Ausf hren werden dann nach kurzer Zeit die Verkalkungen unter dem angegebenen Dateinamen abdomen kalk vtk gespeichert Anhang 76 7 1 7 Visualisierung Wenn nun alle Schritte wie beschrieben abgearbeitet wurden liegen die drei zur Visualisierung ben tigten Volumen Blutbahn Verkalkung und Skelett vor Es m ssen nur noch die Dateinamen der Volumen angegeben werden falls diese nicht schon von den vorherigen Schritten bernommen wurden Es werden die Volumen abdomen blutbahn vtk abdomen kalk vtk und abdomen skelett vtk als Zus tzlich kann Dateinamen ben tigt man noch weitere Parameter wie die Transparenz der einzelnen Volumen angeben falls man von den Standardwerten abweichende Werte ben tigt Die Contour Value ist der Grauwert der dargestellt werden soll und der standardm ig auf 255 festgelegt ist Durch den Klick auf den Button Ausf hren wird die Darstellung gestartet und die Volumen eingelesen und visualisiert Datens tze
62. iederholungen und die Konvergenz bergeben und die komplette Szene mittels UpdateWholeExtent aktualisieren smoothl gt SetInput contourl gt GetOutput smoothl gt SetNumberOflterations 100 smoothl gt SetConvergence 0 smoothl gt UpdateWholeExtent Um sp ter die Objekte richtig beleuchten zu k nnen ist es notwendig die Normalen zu erzeugen Dies wird mit dem Filter vtkPolyDataNormals erreicht der aus den Oberfl chennormalen der einzelnen Polygone an deren Eckpunkten den Durchschnitt bildet und dadurch die Eckpunktnormalen berechnet Es muss wieder zu Beginn eine neue Instanz des Filters erzeugt werden include vtkPolyDataNormals h vtkPolyDataNormals normalsl vtkPolyDataNormals New Danach k nnen dann dem Filter die gegl tteten Oberfl chen vom Weichzeichner bergeben werden Weiter ist es m glich dem Filter zu sagen ab welcher Gradzahl es sich bei einem Winkel um einen spitzen Winkel handelt damit der Filter dem entgegenwirken kann und somit keine leuchtenden Eckpunkte entstehen normals1l gt SetInput smoothl gt GetOutput normals1l1 gt SetFeatureAngle 60 0 Der n chste Filter vtkStripper berechnet alle in den Oberfl chen vorkommenden Dreiecke und gibt sie einzeln zur ck Nachdem eine neue Instanz des Filters erzeugt wurde wird ihm einfach die Oberfl che f r die er die Dreiecke berechnen soll bergeben include vtkStripper h vtkStripper stripperl
63. in ImageType zugewiesen In diesem Fall ist es der InternalReaderType der nicht nur zum Einlesen sondern auch zum Speichern von Datens tzen benutzt wird Man kann sich die Mehrfachdefinition von Typen sparen wenn diese die gleichen Eigenschaften besitzen typedef itk ImageFileWriter lt InternallmageType gt InternalWriterType Anschlie end kann wieder eine neue Instanz des neuen Typs erstellt werden Diese bekommt den Input mittels Set Input und einen Dateinamen mittels SetFileName bergeben unter dem gespeichert werden soll InternalWriterType Pointer writer InternalWriterType New writer gt SetInput filter gt GetOutput writer gt SetFileName Filename writer gt Update Wiederum mit dem Aufruf von Update wird die Ausf hrung des writers gestartet 4 1 3 Caster Teilweise ist es in einer Funktion n tig den Datentyp eines Volumens zu ndern Beispielsweise nach der Filterung des Volumens wird der Datensatz von Umsetzung und Visualisierung 25 nput ImageType nach InternallmageType gecastet Hierf r stellt ITK die Klasse CastImageFilter zur Verf gung mit deren Hilfe ein Datensatz von einem Datentyp in einen anderen Datentyp konvertiert werden kann Auch hier muss zuerst wieder die entsprechende Headerdatei inkludiert werden damit die Klasse zur Verf gung steht include itkCastImageFilter h Danach kann dann wieder ein Typ der Klasse d
64. ine Konsole den Vorteil dass der Benutzer immer alle Parameter f r den jeweiligen Schritt im Auge hat und diese gegebenenfalls auch individuell anpassen kann 4 3 1 Aufbau Beim Aufbau wurde speziell darauf geachtet jeden Schritt getrennt von den anderen darzustellen Mit Hilfe der Umsetzung durch Karteikarten ist es m glich dem Benutzer gleichzeitig den Ablauf der einzelnen Schritte vorgibt Hierdurch bekommt der Benutzer die sieben Schritte in chronologischer Reihenfolge pr sentiert so wie er sie f r einen kompletten Durchlauf des Programms ben tigt Dar ber hinaus wird ihm die M glichkeit geboten auch Schritte einzeln oder in anderer Reihenfolge auszuf hren Dies ist nur m glich da in jedem Schritt neu eingelesen und gespeichert wird Ben tigt wird dies um Zwischenergebnisse kontrollieren zu k nnen indem beispielsweise die segmentierte Blutbahn aus Schritt 3 im Picker anzeigen werden kann l sst Datensatz einlesen Picker Segmentierung Region of Interest Distance Map Extrahierun leix Datens tze Blutbahn wk Verkalkung vik Skelett Fa Parameter Transparenz Blutbahn 0 3 Verkalkung 1 Skelett bi Contour Value 255 Ausf hren Abbrechen willkommen bei CADview Abbildung 19 Benutzeroberfl che Umsetzung und Visualisierung 49 Um die Benutzeroberfl che m glichst konsistent zu halten wurde zuerst ein grobes Ger st erstellt in das die einzelnen Funktionen
65. isualisierung Es wird h ufig in der Forschung und Entwicklung eingesetzt um mit Hilfe der C Klassenbibliotheken komplexe 2D beziehungsweise 3D Grafiken zu berechnen und darzustellen Um plattformunabh ngig zu bleiben verwendet VTK zur Darstellung der Grafiken OpenGL Neben der M glichkeit in VTK mit C zu programmieren besteht auch noch die M glichkeit mit Java TCL und Python zu arbeiten VTK kann grob in zwei Einheiten unterteilt werden Zum einen gibt es das graphics model das die Umsetzung der Computergrafik Pipeline darstellt und wie GLUT Funktionen das Grafikfenster zur Verf gung stellt Zum anderen besteht es aus der Visualisierungspipeline Diese setzt sich aus einzelnen Datenobjekten zusammen die sich aus virtuellen Klassen ableiten lassen 2 4 3 Fast Light ToolKit FLTK FLTK ist ein plattformunabh ngiges Toolkit zur Erstellung von Benutzeroberfl chen Es bietet moderne Funktionalit ten ohne die erzeugten Programme unn tig zu belasten Dabei ist es recht kompakt gehalten und arbeitet mit shared libraries FLTK bietet auch die M glichkeit mit einem Benutzeroberfl chendesigner FLUID Oberfl chen innerhalb k rzester Zeit zu erstellen Das Toolkit wird unter der GNU Library General Public License angeboten und ist somit frei verf gbar Grundlagen 14 2 4 4 CMake CMake wird ben tigt um die drei zuvor genannten plattform unabh ngigen Toolkits f r die eigene Plattform zu erstellen Es arbeitet mit compile
66. kRenderer New vtkRenderWindow renderWindow vtkRenderWindow New vtkRenderWindowInteractor renderWindowInteractor vtkRenderWindowInteractor New renderWindow gt SetSize 600 600 renderWindow gt AddRenderer renderer renderWindowInteractor gt SetRenderWindow renderWindow renderer gt SetBackground 0 1 0 2 0 4 Um dann mit den erstellten Ebenen interagieren zu k nnen wird mittels SetInteractor der gerade erstellte renderWindowInteractor an die einzelnen Ebenen bergeben xImagePlaneWidget gt SetInteractor renderWindowInteractor xImagePlaneWidget gt On Danach muss dann nur noch das renderWindow durch Render zur Darstellung veranlasst und der renderwWindowInteractor gestartet werden und man bekommt die Schnittebenen dargestellt mit denen dann interagiert werden kann renderWindow gt Render renderWindowInteractor gt Start Damit nach der Darstellung die gerade ben tigten Instanzen die Rechenzeit und den Speicher nicht weiter beeintr chtigen m ssen diese nach ihrem Gebrauch in VTK manuell gel scht werden Hierzu dient der Aufruf Delete xImagePlaneWidget gt Delete picker gt Delete ipwProp gt Delete renderer gt Delete renderWindow gt Delete renderWindowInteractor gt Delete 4 2 3 Segmentierung Im dritten Schritt der Segmentierung sollen nun die Blutbahn und das Skelett aus dem eingelesenen gefilterten Vol
67. lche einen zu gro en Abstand bei Kanten durch Vergleiche der Intensit ts und Farbunterschiede kompensiert Durch bilaterale Filterung medizinischer Bilddaten kann es allerdings zu einer Verwischung feiner Strukturen kommen Dem kann durch Anpassung verschiedener Parameter und eine gr ere Anzahl an Wiederholungen entgegengewirkt werden was allerdings die Rechenzeit vergr ert Wilbur C K Wong beschreibt in seinem Paper Trilateral Filtering for Biomedical Images 4 ein hnliches aber berarbeitetes Verfahren welches weniger Wiederholungen ben tigt um gute Ergebnisse zu erzielen Dieser Filter ist allerdings in ITK noch nicht umgesetzt Die Wahl des Filters fiel auf den GradientAnisotropicDiffusion ImageFilter der wie die klassische Perona Malik Diffusion 1 arbeitet Dieser wird ebenfalls in der Arbeit von Sherbondy 2 als kantenerhaltender Gl ttungsfilter empfohlen und angewandt Der Filter erh lt die Kanten indem die Gl ttung durch den Filter an den Kanten verlangsamt oder gar gestoppt wird Der Filter hat im Gegensatz zum CurvatureFlowImageFilter oder BilaterallmageFilter den Vorteil dass kleine Strukturen nicht verschwinden sondern eher noch gesch rft werden Zu Beginn ben tigt man wieder die Headerdatei in der der Filter n her beschrieben wird Umsetzung und Visualisierung 31 include itkGradientAnisotropicDiffusionlmageFilter h Daraus kann man sich dann wieder einen neuen Filte
68. len Grauwert aufweist W re ein Teil der Verkalkungen nicht extrahiert worden so w rde man in den rechten Bildern noch wei e Verkalkungen entdecken Bis auf minimale Randst cke ist allerdings der komplette Kalk extrahiert worden Abbildung 31 Vergleich Kalk Schnitt Z Achse Abbildung 32 Vergleich Kalk Schnitt Y Achse Eine weitere M glichkeit die Verkalkungen zu segmentieren w re eine richtige Segmentierung mittels Region Growing Verfahren gewesen wie es bei der Blutbahn angewandt wurde Hierzu h tte der Benutzer allerdings einen Saatpunkt pro Verkalkung angeben m ssen damit alle Verkalkungen segmentiert werden k nnen Dies w re angesichts der Vielzahl m glicher Verkalkungen zu aufw ndig und fehleranf llig gewesen Abschlie end ist zur Extrahierung der Verkalkungen zu sagen dass das Verfahren mittels des Schwellwertfilters einfach aber wirkungsvoll ist Es gelingt durch die auf das Umfeld der Blutbahn reduzierte Suche nahezu alle Verkalkungen zu extrahieren Es muss allerdings ber cksichtigt werden dass der verwendete Datensatz in einer entsprechend guten Qualit t bez glich der Auswertung 62 Schichtdicke vorliegen muss da sonst kleinere Verkalkungen erst gar nicht auf den Schichtbildern abgebildet sind und somit auch nicht extrahiert werden k nnen 5 7 Visualisierung Die Visualisierung stellt das eigentliche Ziel dieser Arbeit dar Hierbei werden die drei segmentierten Volumen dargestellt um Aufsc
69. m berfahren des Objektes mit der Maus Informationen ber die ben tigte Eingabe ausgibt 4 3 2 Erstellung einer Benutzeroberfl che Zur einfachen Erstellung einer Benutzeroberfl che bietet FLTK ein kleines Programm namens Fluid Es ist eine grafische Benutzeroberfl che mit der es dem Benutzer erm glicht wird seine Benutzeroberfl che individuell zusammenzustellen Parameter zu setzen und Funktionen zuzuweisen Dabei ist haupts chlich auf eine richtige Verschachtelung und Gruppierung der Objekte zu achten Die Objekte die verwendet werden um die einzelnen Funktionen zu gruppieren sind Hauptfenster Tabs und Gruppen Weiter wurden zur Eingabe von Zahlen spezielle Textfelder f r Zahlen und zur Eingabe von Texten wie den Dateinamen spezielle Textfelder f r Buchstaben gew hlt die mit einem Label versehen werden k nnen Um Funktionen zu starten beziehungsweise die Anwendung abzubrechen wurden normale Textbuttons verwendet Hat man sich die Benutzeroberfl che nach seinen W nschen zusammengestellt bietet Fluid die M glichkeit sich den C Code ausgeben zu lassen Dieser kann dann einfach in die Main Methode der eigenen Anwendung eingef gt werden Umsetzung und Visualisierung 50 Den Buttons kann dann mittels einer Callback Zuweisung eine Funktion zugewiesen werden die bei einem Klick darauf gestartet werden soll button gt callback funktionsname O In den Funktionen an sich werden dann die Parameter der Textfelde
70. m Datentyp char gespeichert 4 2 3 3 Skelett BinaryThreshold Da das Skelett wie schon erw hnt nur der groben Orientierung im K rper dient ist eine genaue Segmentierung mittels regionenorientiertem Verfahren hier nicht n tig und w re sogar bertrieben da sich das Skelett aus einer Vielzahl einzelner Knochen zusammensetzt Es m sste somit f r jeden Knochen ein Saatpunkt gesetzt werden damit diese dann auch segmentiert w rde Die einfachste L sung f r diese Segmentierung bietet der erw hnte BinaryThresholdImageFilter der alle Voxel des Volumens aufgrund der Schwellwerte hin untersucht und gegebenenfalls zum Segment hinzuf gt Zu Beginn muss wiederum die Headerdatei des Filters inkludiert werden include itkBinaryThresholdImageFilter h Danach kann dann wieder ein neuer Typ des Filters definiert und eine neue Instanz von diesem erzeugt werden typedef itk BinaryThresholdImageFilter lt InternallmageType SegmentedImageType gt BinaryThresholdImageFilterType BinaryThresholdImageFilterType Pointer binaryFilter BinaryThresholdImageFilterType New Dieser neuen Instanz werden dann wieder die ben tigten Parameter bergeben Zuerst wird wieder mittels SetInput das Volumen vom reader gefolgt von den Schwellwerten und den Werten auf die das segmentierte Skelett beziehungsweise das Umfeld gesetzt werden sollen bergeben binaryFilter gt SetInput reader gt GetOutput
71. n 11 mitgegl ttet werden die f r sp tere Schritte wie z B f r die Segmentierung ben tigt werden 2 3 2 2 Nichtlineare Filter Nichtlineare Filter hingegen sind nicht durch eine Faltung zu beschreiben und k nnen abh ngig vom Aufbau des Filters die Bilder gl tten ohne dass eine Kantengl ttung erfolgt Zu dieser Art von Filtern z hlt zum Beispiel der Medianfilter 2 3 2 3 Adaptive Filter Die adaptiven Filter bewirken eine Rauschunterdr ckung ohne dabei andere wichtige Strukturen wie Kanten zu zerst ren Der Filter passt sich der Umgebung an die er filtern soll und kann dadurch besser auf die Umgebung eingehen und relevante Objekte erhalten 2 3 3 Segmentierung Sind die Bilder durch die Filter gegl ttet so kann man mit der eigentlichen Bearbeitung beginnen Hierbei ist die Segmentierung ein wichtiger Schritt Bei der Segmentierung werden benachbarte Pixel 2D oder Voxel 3D auf Homogenit tskriterien untersucht Bei Gemeinsamkeiten wird versucht zusammenh ngende Objekte zu bilden Hierbei dienen die Farbwerte als Kriterium zur automatischen Segmentierung So werden Schwellwerte angegeben und die Pixel beziehungsweise Voxel bez glich der Schwellwerte getestet Hierzu gibt es verschiedene Methoden die unterschiedliche Wege gehen und dementsprechend auch unterschiedliche Ergebnisse liefern 2 3 3 1 Grundlegende Verfahren e Pixelorientierte Verfahren Es wird der Farbwert jedes Voxels bez glich der Schwellwerte
72. n Orientierung im K rper und bedarf deshalb keiner genaueren Segmentierung Umsetzung und Visualisierung 36 4 2 3 1 Blutbahn ConnectedThresholdImageFilter Der ConnectedThresholdImageFilter den ITK zur Verf gung stellt ben tigt als Eingabe nur einen Saatpunkt und einen Schwellwertbereich f r die Segmentierung der Blutbahn Das Problem dabei liegt in der Wahl eines geeigneten Schwellwertbereichs damit der Filter nicht zu viel vom Umfeld mitsegmentiert oder vielleicht dazu geh rende Bestandteile wegl sst Hier kommt es auf eine gewissenhafte Datenerhebung im Vorfeld an Zu Beginn muss wie immer die Headerdatei des Filters eingef gt werden include itkConnectedThresholdlImageFilter h Danach kann dann wieder ein neuer Typ des Filters definiert und davon eine neue Instanz erzeugt werden typedef itk ConnectedThresholdlImageFilter lt InternallmageType SegmentedImageType gt ConnectedFilterType ConnectedFilterType Pointer connectedThreshold ConnectedFilterType New Diesem neuen Filter werden dann mittels SetInput das Volumen vom reader die Schwellwerte mittels SetLower und SetUpper und ein Farbwert auf den das segmentierte Volumen gesetzt werden soll bergeben connectedThreshold gt SetInput reader gt GetOutput connectedThreshold gt SetLower lowerThreshold connectedThreshold gt SetUpper upperThreshold connectedThreshold gt SetReplaceVal
73. n Volumen sondern nur noch mit der Region of Interest gearbeitet wird Die Berechnung der DistanceMap an sich dauert mit ungef hr 2 30 Minuten wiederum recht lange ben tigt aber im Vergleich zur Anwendung auf das originale Volumen nur einen Bruchteil der daf r ben tigten Zeit Abbildung 29 DistanceMap Die Berechnung der DistanceMap ben tigt viel Zeit da recht viele Querbez ge hergestellt werden m ssen da die Blutbahn nicht nur aus der recht geradlinig verlaufenden Arterie besteht sondern zus tzlich aus den kleineren Abzweigen zu den Organen beziehungsweise den Beinarterien Auswertung 60 5 6 Kalk Extrahierung Die Extrahierung der Verkalkungen setzt sich wie zuvor schon in der Umsetzung besprochen wurde aus verschiedenen Schritten zusammen So wird zuerst die DistanceMap binarisiert indem ein Schwellwertfilter angewandt wird der einen Bereich mit angegebenem Abstand um die Blutbahn herausfiltert und auf 1 setzt Darauf wird das Bin rbild der Region um die Blutbahn mit dem originalen Volumen multipliziert Als Ergebnis erh lt man die originalen Grauwerte im Bereich um die Blutbahn Der Rest des Volumens wurde dabei auf 0 gesetzt In diesem Volumen k nnen nun wieder mittels eines Schwellwertfilters die Verkalkungen herausgefiltert werden Der komplette Arbeitsschritt dauert mit Einlesen Binarisierung Multiplikation Extrahierung und Speicherung gerade einmal 40 Sekunden was wieder auf die Gr e des
74. nen Bin rfilter nur die Voxel ausw hlen die in einem bestimmten Abstand zur Blutbahn liegen Hierzu wird die DistanceMap der Abstand als Schwellwert und ein Farbwert ben tigt auf den die entsprechenden Regionen gesetzt werden sollen DistanceMap Bin rbild Schwellwerte Bin rfilter Farbwert Abbildung 15 Bin rfilter Als Ausgabe erh lt man ein Bin rbild in dem alle Voxel innerhalb des angegebenen Abstandes auf den Farbwert gesetzt wurden und alle Voxel au erhalb des Abstandes den Farbwert 0 besitzen Als n chstes ben tigt man die original Farbwerte aus dem gerade binarisierten Bereich Hierzu wird die Region of Interest des originalen Volumens mit dem Bin rbild multipliziert Man ben tigt das Bin rbild und die Region of Interest des originalen Volumens ROI Original original Umfeld Umfeld freistellen Bin rbild Abbildung 16 Umfeld freistellen Softwaretechnischer Entwurf 21 Hat man im letzten Schritt die originalen Farbwerte des Umfeldes der Blutbahn freigestellt K nnen darin mit einem Bin rfilter alle Grauwerte die Verkalkungen entsprechen extrahiert werden Hierzu ben tigt man das Umfeldvolumen Schwellwerte der Verkalkungen und die Farbwerte auf die diese gesetzt werden sollen Umfeldvolumen Verkalkungen Schwellwerte Bin rfilter Kalk extrahieren Farbwerte Dateiname Abbildung 17 Bin rfilter Kalk Extrahieren 3 7 Darstellung Aus dem Schritt Segmentierung hat man n
75. ng ben tigt Dieses Grundwissen wird im ersten Teil dieser Arbeit vermittelt um darauf in den weiteren Kapiteln aufbauen zu k nnen 2 1 Gef baum Der menschliche K rper wird durch die Arterien mit frischem Blut vom Herzen versorgtWenn das Herz schl gt also sich zusammenzieht wird Blut durch die Aorta in die Arterien und somit in den K rper gepumpt Hierbei weiten sich die Gef e damit sie das Blut aufnehmen k nnen Um einen reibungslosen Blutfluss zu gew hrleisten bestehen die Arterien aus mehreren Schichten Die innerste Schicht die Intima sorgt f r den Fl ssigkeits und Intima Stoffaustausch zwischen Blut und dem Elastische umliegendem Gewebe Die Medina ist die Membran mittlere Schicht und besteht aus Muskeln Media und ist daf r zust ndig dass sich die Arterie Adventitia der aktuellen Blutmenge im Durchmesser anpassen kann Die u erste Schicht ist die Adventitia welche die inneren Schichten mit einem Bindegewebe umh llt Abbildung 1 Gef aufbau 2 1 1 Erkrankungen Erkrankungen von Gef en in Form von Verkalkungen werden auch als Arteriosklerose bezeichnet Hierbei handelt es sich um eine Verengung der Gef e die ber einen l ngeren Zeitraum entstehen und deshalb die Symptome nicht direkt bemerkbar sind Arteriosklerose beschreibt den nat rlicher Alterungsprozess von Gef en der durch Risikofaktoren wie Bluthochdruck oder Rauchen beschleunigt wird Sie beginnt mit einer Besch digung der
76. nnected 5 3 2 Skelett Genau wie bereits bei der Segmentierung der Blutbahn wird bei der Extrahierung des Skelettes auf dem kompletten originalen Datensatz gearbeitet Um hierbei jedoch Ladezeit zu sparen wird das Skelett im gleichen Schritt wie die Blutbahn segmentiert so dass das originale Volumen nur ein Mal eingelesen werden muss Die Extrahierung des Skelettes ist im Gegensatz zur Segmentierung der Blutbahn nur ein einfacher Schwellwertfilter der die Farbwerte des Volumens mit einem Schwellwertbereich abgleicht und entsprechend dem extrahierten Volumen zuweist Hierdurch ist kein gro er Rechenaufwand n tig wodurch auch hier sich die Rechenzeit auf wenige Sekunden beschr nkt Von der Qualit t ist der einfache Schwellwertfilter dem Segmentierungsalgorithmus klar unterlegen Dies ist aber auch an dieser Stelle gewollt da das Skelett keine wichtige Rolle bei der Diagnose spielt und eine Auswertung 58 grobe Extrahierung ausreichend ist Trotzdem ist das Skelett gr tenteils zu erkennen was f r die Orientierung im K rper gen gen sollte Abbildung 27 Segmentiertes Skelett Der Schwellwertfilter ist einzig von dem ihm zugewiesenen Schwellwertbereich abh ngig Deshalb ist es notwendig m glichst alle Graustufen welche die Knochen aufweisen einzuschlie en um als Ausgabe einen Gro teil des Skelettes zur ckgeliefert zu bekommen F r die eigentliche Diagnose der Verkalkungen spielt allerdings die Qualit t der Extrahi
77. r unabh ngigen Konfigurationsdateien und erzeugt daraus Projektdateien f r den Compiler 2 4 5 MS Visual Studio NET Als Entwicklungsumgebung wurde Microsofts Visual Studio Net 2003 gew hlt Es enth lt Module zur Entwicklung von C und kann die von CMake generierten Projektdateien einlesen wodurch schon alle Verkn pfungen f r das Projekt zu ITK VTK und FLTK gemacht werden Softwaretechnischer Entwurf 15 3 Softwaretechnischer Entwurf Die Toolkits VTK und ITK arbeiten nach dem Pipelineprinzip Sie bergeben also das Ergebnis des einen Arbeitsschrittes an den n chsten weiter Auf dem Pipelineprinzip aufbauend wird nun ein softwaretechnischer Entwurf eines Ablaufdiagramms erstellt um zu zeigen wie das zu entwickelnde Programm funktionieren soll und wie die Daten darin flie en Schichtbilder einlesen Volumen filtern wm und kr Dany wm Segmentierung En SS e Ke of Interest Region of Interest et Original Bin rfilter lt Schwellwert Umfeld freistellen Bin rfilter Kalk Extrahieren Darstellung Abbildung 7 Ablaufdiagramm CADView Softwaretechnischer Entwurf 16 Der Ablauf kann grob in sieben Einheiten unterteilt werden in denen hnliche oder zusammenh ngende Funktionen ausgef hrt werden Die einzelnen Schritte sind im Diagramm farblich voneinander abgesetzt um sie leichter unterscheiden zu k nnen gt Der erste Schritt besteht darin die Schichtbilder einzulesen und mit einem Gl ttungsfilt
78. r den Grauwertbereich der Verkalkungen und die Werte auf welche die einzelnen Regionen gesetzt werden sollen bergeben binaryFilter2 gt SetInput multiplyFilter gt GetOutput binaryFilter2 gt SetOutsideValue outsideValueKalk binaryFilter2 gt SetInsideValue insideValueKalk binaryFilter2 gt SetLowerThreshold lowerThresholdKalk binaryFilter2 gt SetUpperThreshold upperThresholdKalk binaryFilter2 gt Update Nach dem Start des Filters durch Update bekommt man die Verkalkungen deren Grauwerte im Schwellwertbereich liegen als Bin rbild zur ckgeliefert Diese k nnen dann wieder unter dem Datentyp char gespeichert werden Umsetzung und Visualisierung 44 4 2 7 Darstellung Nachdem nun alle zur computergest tzten Diagnose notwendigen Volumen vorliegen kann mit der Darstellung mittels VTK begonnen werden Hierzu m ssen die drei Datens tze zuerst vorbereitet werden bevor sie an den renderer bergeben werden k nnen Dies wird beispielhaft f r die Blutbahn demonstriert ist allerdings bei den anderen beiden Volumen synonym zu handhaben Als erstes muss aus dem 3D Volumendatensatz der nur aus Voxeln mit Farbwerten besteht eine Oberfl che erzeugt werden Diese Aufgabe bernimmt der vtkContourFilter Danach wird die Oberfl che mittels des vtkSmoothPolyDataFilter gegl ttet und durch den Filter vtkPolyDataNormals die Normalen des Polygonnetzes berechnet D
79. r jede der drei Raumachsen eine Schnittebene erzeugt die dann einzeln verschoben und gedreht werden kann Hat man die Ebenen so verschoben dass man die zu untersuchende Struktur klar erkennt k nnen nun mittels eines Pickers 7 2 die Koordinaten und der Grauwert der Struktur bestimmt werden Das darzustellende Volumen wird zuerst von einem normalen ITK Reader eingelesen und muss dann zur Darstellung in VTK mittels der zuvor beschriebenen Funktion ConnectPipelines 4 1 4 an VTK bergeben werden Umsetzung und Visualisierung 32 Zu Beginn m ssen Parameter wie die Gr e des Datensatzes mit GetSize und dessen Startpunkt mit Get Index ermittelt werden um sp ter die Gr e der Ebenen und deren Position angeben zu k nnen InternalImageType Pointer inputImage reader gt GetOutput InternallmageType SizeTyp siz inputImage gt GetBufferedRegion GetSize InternallmageType IndexType start inputlImage gt GetBufferedRegion GetIndex Danach kann der Picker mit seiner Toleranz und allgemeine Eigenschaften f r die Beleuchtung und die Oberfl che geometrischer Objekte definiert werden welche an die einzelnen Ebenen bergeben werden include vtkCellPicker h include vtkProperty h vtkCellPicker picker vtkCellPicker New picker gt SetTolerance 0 005 vtkProperty ipwProp vtkProperty New Im Folgenden wird nun beispielhaft an der X Ebene demonstriert
80. r mittels gt value ausgelesen und den entsprechenden Variablen zugewiesen int seedX segm_conf_seed_x gt value Gleichzeitig werden hier direkt die Parameter an die darauf folgenden Funktionen bergeben um dem Benutzer deren Eingabe abzunehmen roi_filename gt value segm_ filename gt value Auswertung 51 5 Auswertung Im nun folgenden Kapitel soll untersucht werden wie gut sich die gew hlten Filter f r die entsprechende Aufgabe bew hrt haben und welche Einstellungen n tig sind um die bestm glichen Ergebnisse zu erzielen Um Vergleiche aufstellen zu k nnen wie gut die einzelnen Filter gearbeitet haben werden Vergleichsvolumen herangezogen an denen der Erfolg sichtbar wird Neben der Qualit t der einzelnen Filter soll auch deren Zeitaufwand dokumentiert werden Hierbei ist zu beachten dass die Berechnungen auf einem Notebook mit einem mobile AMD Athlon 4 Prozessor mit 1200 MHz und 512 MB Arbeitsspeicher ausgef hrt wurden Eine verbaute Grafikkarte besa keine 3D Beschleunigung Zur Ermittlung der Dauer jeden Schrittes wurde vom Programm eine Ausgabe der Startzeit jeden einzelnen Schrittes erzeugt so dass dessen Zeit berechnet werden konnte Zum Testen der entwickelten Anwendung CADView standen zwei Datens tze im DICOM Format zur Verf gung die beide einen Ausschnitt des Abdomens abbilden Der erste Datensatz Abdomen1 besteht aus 228 Schichtbildern mit einem Speichervolumen von 144 MB
81. rend der Patient regungslos und mit angehaltenem Atem durch die R hre geschoben wird Um Bewegungsartefakte durch den Herzschlag zu vermeiden besteht die M glichkeit den Aufnahmezeitpunkt durch den Herzschlag des Patienten zu steuern so dass immer zur gleichen Phase eine Aufnahme gemacht wird 2 2 2 Hounsfield Skala Die Absorptionswerte des aufgenommenen Gewebes werden in Hounsfield Units HU angegeben Die Einheit wurde nach dem Nobelpreistr ger Godfrey Hounsfield benannt der als Vater der Computertomographie gilt Es wurde eine Skala angelegt bei welcher den unterschiedlichen Grauwertstufen unterschiedliche Gewebestrukturen zugeordnet werden k nnen Als Referenz dient Wasser mit einem Wert von 0 HU was den Ausgangswert f r die Skala bildet Durch Angabe eines bestimmten Grauwertes ist es allerdings noch nicht m glich eine bestimmte Struktur zu extrahieren da die unterschiedlichen Gewebestrukturen teils sehr hnliche oder gar gleiche Grauwerte aufweisen Schw chungswerte von Gewebe bezogen auf Wasser Knochen 3000 Blut Leber IT i Tumor 8 iR Milz Niere Herz Na Pankreas Neben Darm Harnblase SE T a P niere Wasser CI I l o TI graue Hirnsub 100 Mamma 200 7 al F 900 ett Geen 1000 Luft Abbildung 4 Hounsfield Skala Sir Godfrey Newbold Hounsfield CBE 28 August 1919 in Newark in Nottinghamshire 7 12 Aug
82. rnallmageType gt MultiplyImageFilterType MultiplyImageFilterType Pointer multiplyFilter Umsetzung und Visualisierung 43 MultiplyImageFilterType New Als n chstes werden dann die beiden zu multiplizierenden Volumen vom reader beziehungsweise dem binaryFilterl an den Filter mittels SetInputl und SetInput2 bergeben und danach der Filter mittels Update gestartet multiplyFilter gt SetInputl readerl gt GetOutput ii multiplyFilter gt SetInput2 binaryFilterl gt GetOutput multiplyFilter gt Update Als Ausgabe bekommt man die originalen Grauwerte der Voxel die an die Blutbahn angrenzen Als Datentyp f r dieses Volumen wird wiederum signed short benutzt um den Erhalt aller Graustufen sicherzustellen In diesem Volumen kann dann die eigentliche Extrahierung der Verkalkungen stattfinden indem man mit dem Bin rfilter die Grauwerte der Verkalkungen herausfiltert Hierzu wird wieder die Headerdatei des Bin rfilters ben tigt include itkBinaryThresholdImagefilter h Von dieser Klasse kann dann wiederum ein neuer Typ definiert und eine neue Instanz erzeugt werden typedef itk BinaryThresholdImageFilter lt InternallmageType SegmentedImageType gt BinaryThresholdImageFilterType BinaryThresholdImageFilterType Pointer binaryFilter2 BinaryThresholdImageFilterType New Wie zuvor bekommt der Filter mittels SetInput das Volumen vom multiplyFilte
83. rtyp definieren aus dem man seine neue Filterinstanz erzeugt typedef itk GradientAnisotropicDiffusionlmageFilter lt InputlmageType InputlmageType gt GradientAnisotropicDiffusionlmageFilterType GradientAnisotropicDiffusionlImageFilterType Pointer smoothing GradientAnisotropicDiffusionlmageFilterType New Danach kann dann der Filter das Volumen vom reader mittels SetInput bergeben bekommen smoothing gt SetInput reader gt GetOutput Als n chstes ben tigt der Filter noch Angaben ber die Anzahl der Wiederholungen die er ausf hren soll die Gr e der TimeSteps die angibt wie stark in den Fl chen gegl ttet werden soll und schlie lich die Conductance die daf r zust ndig ist wie stark an den Kanten gegl ttet werden soll smoothing gt SetNumberOflterations 2 smoothing gt SetTimeStep 0 125 smoothing gt SetConductanceParameter 1 smoothing gt Update Durch die Funktion Update wird der Filter wiederum gestartet 4 2 2 Darstellung und Parameter w hlen Nachdem der erste Schritt nun abgeschlossen ist und das gefilterte Volumenbild vorliegt k nnen darin die Parameter der relevanten Strukturen gesucht werden welche f r die n chsten Schritte ben tigt werden Dies geht am besten mit einer Darstellung der einzelnen Schnittebenen F r die Visualisierung ist VTK zust ndig Es bietet hierzu die M glichkeit der Darstellung mittels vtkImagePlaneWidget Hierbei wird f
84. s Hintergrundes und um das Volumen zu verkleinern in den unteren Teil Je nachdem wie weit man sich vom Mittelpunkt entfernt wird st rker oder schw cher skaliert e Um die einzelnen Ebenen zu verschieben klickt man mit der mittleren Maustaste auf die entsprechende Ebene Verschiebt man nun mit gedr ckt gehaltenem Rad die Maus verschiebt sich auch die Ebene e Will man eine Ebene rotieren so geht dies genauso nur klickt man mit der mittleren Maustaste nicht in die Ebene sondern an den farblich abgesetzten Rand der Ebene e Klickt man mit der mittleren Maustaste in den Hintergrund kann man durch Bewegen der Maus das komplette Volumen im Fenster verschieben Anhang 69 e Um die Helligkeit und darzustellenden Graustufen anzupassen klickt man mit der rechten Maustaste auf das Volumen und verschiebt die Maus Schiebt man die Maus rechts links ver ndert man die Helligkeit Schiebt man sie auf ab ver ndert man die Graustufen Gleichzeitig werden auch in der linken unteren Ecke die aktuellen Werte dazu angezeigt Ein breites Spektrum um gut die gew nschten Parameter w hlen zu k nnen stellt die Kombination 2000 100 dar e Mit den Tasten X Y und Z kann man die entsprechende Ebene ein beziehungsweise und ausblenden e Die Tasten W und Sr dienen dazu zwischen der Wireframe Darstellung und der Surface Darstellung umzuschalten e Die Taste R ist f r einen Reset zust ndig und
85. t bis sogar gestoppt wird und dadurch die Kanten erhalten bleiben In den Fl chen an sich findet allerdings eine normale Gl ttung der Artefakte statt Somit wird eine kanten erhaltende Gl ttung und unter Umst nden sogar eine Sch rfung der Konturen erreicht Umsetzung und Visualisierung 30 e CurvatureFlowImageFilter Beim CurvatureFlowImageFilter wird wiederum mit Hilfe einer Diffusionsfunktion der Grad der Gl ttung berechnet Kanten mit gleichen Grauwerten bilden dabei entsprechende LevelSets die an die Diffusionsgleichung bergeben werden Kanten mit starken Kr mmungen werden hierbei st rker gegl ttet als Kanten mit schw cherer Kr mmung was zu einem Verschwinden kleinerer Artefakte und gleichzeitig zu einem gewissen Informationsverlust f hren kann Trotzdem k nnen andere Artefakte brig bleiben die man eigentlich gegl ttet haben wollte e BilaterallmageFilter Der bilaterale Filter ist wie bei C Tomasi 3 beschrieben ein nichtlinearer kanten erhaltender Gl ttungsfilter welcher sich aus einem linearen Gaussfilter und einer nicht linearen Funktion zusammensetzt Es k nnen damit sowohl Grauwertbilder als auch Farbbilder gefiltert werden Bei der Berechnung flie en sowohl die geometrische N he als auch deren Farbwerte ein Die Gewichtungen der Nachbarschaften des Gaussfilters sind dabei abh ngig vom Abstand zum Zentralpixel Um einer Kantenverwischung entgegenzuwirken wird eine Strafffunktion definiert we
86. t einem guten Erhalt der Kanten bei einer recht niedrigen Wiederholungsanzahl Doch trotz der niedrigen Anzahl an Wiederholungen ben tigt der Filter auf dem ersten Beispielvolumen knapp eine Stunde um das Volumen zu filtern und dann zu speichern F r den zweiten Beispieldatensatz wird noch ein gr erer Zeitraum ben tigt da dieser Datensatz eine gr ere Anzahl von Schichtbilder beinhaltet Der Filter ben tigt zur Bearbeitung dieses Datensatzes ann hernd 1 5 Stunden Als Ergebnis der Filterung erh lt man allerdings bei beiden Beispieldatens tzen ein Volumen bei dem die Bildst rungen in gro en Fl chen eindeutig reduziert wurden und Kanten trotzdem erhalten geblieben sind wie es in den folgenden Bildern in Abbildung 20 zu sehen ist Die Bilder sind Aufnahmen des Datensatzes Abdomenl Der Filter liefert allerdings auf dem Datensatz Abdomen hnlich gute Ergebnisse Die linken Bilder zeigen das ungefilterte Volumen Auf den rechten ist im Vergleich dazu der gleiche Bildausschnitt zu sehen nur eben gefiltert Die Filterung ist vor allem in den grauen Fl chen rechts und links der Wirbels ule sehr gut zu erkennen Hier sind im ungefilterten Bild noch recht viele Grauwertunterschiede zu erkennen die im rechten Bild verschwunden sind Weiter erkennt man gut dass im originalen Volumen vorhandene Kanten immer noch sauber im gefilterten Bild zu erkennen sind Die Kanten wurden somit wenn berhaupt nur sehr schwach gegl ttet bezi
87. tbahn zu bekommen 6 2 Erweiterungs und Verbesserungsm glichkeiten Verbesserungen sind vor allem hinsichtlich der Zeitoptimierung und Performanz zu sehen So dauern manche Schritte wie das Einlesen und Filtern des Datensatzes sowie das Rendern der Volumen zum Schluss noch verh ltnism ig lange Doch auch am Programm CADView sind hinsichtlich der Benutzerfreundlichkeit noch einige Stellen zu optimieren So w re es w nschenswert die Dateinamen der einzulesenden oder zu speichernden Volumen mittels eines Datei ffnen oder Datei speichern Dialogs angeben zu k nnen Dies h tte dann den Vorteil dass bestehende Dateien einfacher gew hlt werden k nnen Des Weiteren w re es noch von Vorteil die Parameter die beim Picker gewonnen werden nicht per Hand einzugeben sondern diese direkt vom Picker an die Benutzeroberfl che weiterzuleiten Geht man noch einen Schritt weiter w re es vorstellbar eine Echtzeitsegmentierung beim Picken vorzunehmen wie es bei Sherbondy 2 umgesetzt wird Hierbei wird direkt die angeklickte Struktur segmentiert und man kann auf Anhieb sehen wie gut die Wahl des Saatpunktes getroffen wurde 6 3 Danksagung Zum Schluss m chte ich noch die Gelegenheit nutzen und mich bei Dipl Informatiker Matthias Biedermann f r seine Betreuung bedanken der immer mit Rat und Verbesserungsvorschl gen zur Verf gung stand Anhang 65 7 Anhang 7 1 Benutzerhandbuch Zu Beginn muss das Programm CA
88. teren Parametern ben tigt der Algorithmus vor allem einen Saatpunkt von dem aus die Segmentierung starten soll Je nachdem welches regionenorientierte Segmentierungsverfahren zum Einsatz kommt werden weitere Parameter wie Schwellwerte oder hnlichkeitsabweichungen ben tigt Volumenbild segmentierte Blutbahn Saatpunkt Segmentierung Blutbahn Parameter Dateiname Abbildung 11 Segmentierung Blutbahn Zur Segmentierung des Skelettes wird ebenfalls das gegl ttete Volumenbild ben tigt Da das Skelett allerdings keine wichtige Rolle spielt ist eine richtige Segmentierung hier nicht n tig Es gen gt die Knochen aufgrund der zu Knochen passenden Grauwerte zu segmentieren Somit werden einfach nur Minimum Maximum Schwellwerte angegeben um das Skelett zu segmentieren Softwaretechnischer Entwurf 19 Hierf r gen gt ein pixelorientiertes Verfahren zur Segmentierung wie es ebenfalls in den Grundlagen 2 3 3 1 beschrieben wurde Volumenbild segmentiertes Skelett Schwellwerte Segmentierung Skelett Parameter Dateiname Abbildung 12 Segmentierung Skelett 3 4 Region of Interest erstellen Um den Rechenaufwand der folgenden Schritte zu minimieren sollte mit Regions of Interest 7 2 weitergearbeitet werden In den folgenden Schritten werden das originale Volumen und das Blutbahnvolumen ben tigt Deshalb sollten diese auf die Region of Interest verkleinert werden Hierzu werden die beiden Volumen und der Startpunkt sowie die Aus
89. terschiede auftreten beziehungsweise der Grauwertunterschied benachbarter Voxel gering ist e Kantenorientierte Verfahren Kantenorientierte Verfahren ben tigen klar definierte Kanten und werden haupts chlich auf 2D Bildern angewendet um Objekte zu segmentieren Sie kommen hier nicht zur Anwendung und werden deshalb nur kurz erw hnt Die Filter ben tigen mehrere Schritte wie beispielsweise eine Kantenextraktion darauf folgend eine Kantenverd nnung und schlie lich die Kantenverfolgung um geschlossene Konturen zu finden und zu segmentieren e Texturorientierte Verfahren Die texturorientierte Segmentierung wird ebenfalls nicht n her betrachtet da sie hier keine Anwendung findet Die zu segmentierenden Fl chen weisen gr tenteils einheitliche Grauwerte auf was einfacher durch die zuvor genannten Filter zu l sen ist Im Folgenden wird nun die Implementierung der verschiedenen Segmentierungsverfahren welche zum Einsatz kamen n her erl utert F r die Segmentierung der Blutbahn eignen sich am besten die regionenorienterten Segmentierungsverfahren da diese zusammenh ngende Strukturen zur ckliefern und auf Grauwert hnlichkeiten basieren Aus diesem Grund wurden auch beide Verfahren die ITK zur Verf gung stellt implementiert um sie testen zu K nnen Das Skelett hingegen das im gleichen Schritt mitsegmentiert werden soll wird nur grob mittels des pixelorientierten Verfahrens segmentiert Es dient sp ter nur der grobe
90. tion Using Programmable Graphics Hardware 2 in dem versucht wird Strukturen aus Volumen zu D Seeds Inserted into Volume 4 segmentieren und die Visualisierung der Segmen te durch mo derne LG Generate Compute Mask SS programmierbare Grafikhardware zu l beschleunigen indem die Berechnungen auf der Grafikhardware stattfinden Durch dieses Vorgehen soll es dem Benutzer erm glicht werden in Echtzeit das Evolve Segmentation Loop unti segmentation done Volume Render Segmentation Ergebnis seiner Segmentierung zu a e en erbon begutachten und gegebenenfalls Parameter gt Grundlagen 10 direkt zu ndern sollte das Ergebnis nicht seinen W nschen entsprechen Das Verfahren beruht auf mehreren Schritten Zuerst wird das Volumen bei der Vorverarbeitung mittels eines nichtlinearen Filter von Rauschen befreit N chster Schritt ist die Segmentierung mit Hilfe einer Region Growing Segmentierung 7 2 welche auf Grauwerten und Gradienten basiert Abschlie end erfolgt die Visualisierung der Daten In dieser Arbeit wird der Schwerpunkt auf verschiedene M glichkeiten der Extrahierung der Blutbahn und deren Verkalkungen gelegt und nicht wie bei Sherbondy auf eine m glichst schnelle Visualisierung der Strukturen Aus diesem Grund ist es nicht unbedingt notwendig die Berechnungen wie bei Sherbondy auf der GPU auszuf hren sondern wie blich auf der CPU hnlichkeiten zwischen d
91. ue replaceValue Danach fehlt noch der Saatpunkt von dem die Segmentierung gestartet werden soll der dem Filter mittels Set Seed bergeben wird InternallmageType IndexTyp index index 0 seedX index 1 seedY index 2 seedZ connectedThreshold gt SetSeed index Wie immer wird der Filter mittels Update gestartet connectedThreshold gt Update Als Ergebnis erh lt man die segmentierte Blutbahn als Bin rbild bei dem die Farbwerte der Blutbahn auf den vorgegebenen Grauwert gesetzt wurden und der Rest des Bildes den Grauwert O0 hat Da nur zwei Grauwerte im Bereich zwischen O0 und 255 vorkommen gen gt es das segmentierte Volumen unter dem Datentyp char zu speichern um Speicherplatz zu sparen und dadurch die Performanz beim Speichern und Einlesen in den folgenden Schritten zu erh hen Umsetzung und Visualisierung 37 4 2 3 2 Blutbahn ConfidenceConnectedImageFilter Die zweite M glichkeit zur Segmentierung die implementiert wurde ist der ConfidenceConnectedImageFilter der wie in 0 schon erw hnt wurde allerdings eher f r homogene Fl chen geeignet ist Zu Beginn wird wieder die Headerdatei des Filters inkludiert include itkConfidenceConnectedImageFilter h Danach wird wiederum ein neuer Typ des Filters definiert und eine Instanz von ihm erzeugt typedef itk ConfidenceConnectedImageFilter lt InternallmageType SegmentedImageT
92. umen angegeben werden 3 1 Datensatz einlesen e Schichtbilder einlesen Beim Einlesen und abschlie endem Speichern eines Satzes von Schichtbildern im DICOM Format ist es am sinnvollsten alle Schichtbilder mit einem fortlaufenden Index im Dateinamen zu versehen und in einen Ordner zu kopieren in dem sich au er den Bildern nichts anderes befindet Softwaretechnischer Entwurf 17 Dem Reader kann man dann den Speicherort der Bilder angeben von wo aus die Bilder geladen werden sollen Um nicht von einem Format abh ngig zu sein w re es ratsam ein zweites Dateiformat zu unterst tzen DICOM gilt zwar als Standard doch finden sich h ufig auch Datens tze in anderen Formaten wie beispielsweise RAW Speicherort Volumenbild Dateiname Abbildung 8 Schichtbilder einlesen Der Reader liest die Schichtbilder ein und macht daraus ein Volumenbild welches er unter einem angegebenen Namen in einem Format das die Anforderungen an die folgenden Schritte unterst tzt wieder abspeichert e Volumen filtern Nach dem Einlesen sollte das Volumenbild an einen Gl ttungsfilter bergeben werden Ziel ist es hierbei wie schon in den Grundlagen 2 3 2 beschrieben wurde das Bild von Rauschen zu befreien und somit gute Voraussetzungen f r die folgenden Schritte wie die Segmentierung zu schaffen Volumenbild gefiltertes Volumenbild Parameter Filter Dateiname Abbildung 9 Gl ttungsfilter Dem Filter muss das eingelesene
93. umen segmentiert werden Da die Blutbahn neben den Verkalkungen das Wichtigste bei der sp teren Darstellung und Diagnose ist wird diese mit speziellen Algorithmen segmentiert ITK bietet zur Segmentierung eine Vielzahl von Filtern die auch im ITK Software Guide 9 n her erkl rt werden Umsetzung und Visualisierung 34 Pixelorientierte Verfahren gt BinaryThresholdImageHilter Der Filter wandelt ein Grauwertbild in ein Bin rbild um Hierzu muss der Benutzer einen unteren und einen oberen Schwellwert sowie einen Inside und einen Outside Wert angeben Es wird jedes Voxel des Volumens mit dem oberen und unteren Schwellwert verglichen Liegt der Grauwert dazwischen wird der Inside Wert zur ckgegeben andernfalls der Outside Wert Regionenorientierte Verfahren gt ConnectedThresholdImageFilter Dieser Filter ist hnlich wie der BinaryThresholdImageFilter ein Schwellwertfilter Der Unterschied zwischen diesen beiden ist allerdings dass der ConnectedThresholdImageFilter ein Region Growing Filter ist und zus tzlich zu den Schwellwerten einen Saatpunkt ben tigt Es werden hierbei auch nicht alle Voxel des Volumens bez glich der Schwellwerte untersucht sondern nur Nachbarvoxel des Saatpunktes Fallen deren Grauwerte zwischen die Schwellwerte werden diese zum segmentierten Volumen hinzugef gt und wiederum deren Nachbarn bez glich des Schwellwertes untersucht Dies wird so lange fortgesetzt bis kein Voxel mehr zum Volumen
94. un die Blutbahn und das Skelett erhalten und aus dem Schritt Verkalkung extrahieren die Verkalkungen Es liegen nun alle zur computergest tzten Diagnose der Verkalkungen ben tigten Volumen vor so dass diese visualisiert werden k nnen Hierzu werden die drei Volumen an die Visualisierung bergeben und dargestellt Blutbahn Visualisierung Verkalkung Darstellung Skelett Abbildung 18 Darstellung Als Ergebnis bekommt man eine Visualisierung der drei Volumen Sie sollte frei im Raum drehbar und skalierbar sein um alle Strukturen von allen Seiten und bis ins Detail begutachten zu k nnen Umsetzung und Visualisierung 22 4 Umsetzung und Visualisierung Im Folgenden wird nun genauer auf die Umsetzung der einzelnen Funktionen mittels der benutzten Umgebungen ITK und VTK eingegangen Es werden dabei die verschiedenen Filter vorgestellt welche in ITK zur L sung der unterschiedlichen Probleme zur Verf gung stehen und ihre Parameter und Arbeitsweisen n her erl utert 4 1 Allgemeine Funktionen Zu Beginn werden die verwendeten Datentypen und ein paar allgemeine Funktionen erl utert die in mehreren anderen Funktionen Verwendung finden Sie werden hier ausf hrlich beschrieben Sp ter bei ihrer Verwendung in den anderen Funktionen wird nur erw hnt welche Parameter sich ge ndert haben 4 1 1 Datentypen Datentypen die Verwendung finden sind float signed short und unsigned char Hieraus werden die unterschiedlichen Pi
95. ust 2004 in Kingston upon Thames war englischer Elektrotechniker E Grundlagen 8 2 2 3 DICOM Format Die Grauwertbilder die ein Computertomograph liefert werden blicherweise in der Medizin in einem speziellen Format gespeichert das mittlerweile zum Standard f r medizinische Aufnahmen geworden ist Dieses Format nennt sich DICOM Digital Imaging and Communications in Medicine Es findet haupts chlich Anwendung in der Kernspin und Computertomographie sowie bei Ultraschall Aufnahmen Das DICOM Format beschreibt wie die digitalen Bilder und Informationen gespeichert werden und medizinische Aufnahmeger te miteinander kommunizieren k nnen Das Besondere ist hierbei dass die Bilder einen Header vor dem eigentlichen Bild enthalten in dem zus tzlich Informationen wie Patientenname Aufnahmeger t Bildeigenschaften sowie weitere Informationen dokumentiert werden k nnen und nicht wie bei anderen Formaten bei denen die Zusatzinformationen in separaten Dateien gespeichert sind Grundlagen 9 2 3 Bildverarbeitung Um aus den im DICOM Format vorliegenden Schichtbildern R ckschl sse ber anatomische Strukturen und Erkrankungen ziehen zu k nnen gibt es zwei M glichkeit Entweder man betrachtet jedes Schichtbild einzeln oder man bedient sich der Computergrafik und Bildverarbeitung um die Datens tze als Volumen zu betrachten und damit zu arbeiten zu k nnen Die Arbeit mit den einzelnen Schichtbildern ist zwar im Gegens
96. vtk sowie der Dateiname der PBlutbahn abdomen blutbahn vtk ben tigt Als Startpunkte f r die Region wurde beim Picker der Punkt 120 150 0 und als Endpunkt der Punkt 400 350 287 festgelegt Als letztes vor der Ausf hrung werden noch die Dateinamen der neu erstellten Volumen ben tigt unter denen diese gespeichert werden sollen F r die Region of Interest des originalen Volumens wird abdomen roi vtk und f r die Region of Interest der Blutbahn abdomen blutbahn roi vtk angegeben Datens tze Original abdomen e Blutbahn abdomen blutbahn vtk Region of Interest Startpunkt x han Y ban 2 po Endpunkt x aoo zeen z f287 Speichern ROl Original abdomen roi vtk ROl Blutbahn abdomen blutbahn roi vtk Ausf hren Abbrechen Abbildung 43 Region of Interest Anhang 7 1 5 DistanceMap Der n chste Hauptschritt im Programm ist die Erstellung der DistanceMap aus der gerade erstellten Region of Interest der Blutbahn Hierzu werden nur der Dateiname der Region of Interest der Blutbahn und ein Dateiname unter dem die DistanceMap gespeichert werden soll ben tigt Der erste Dateiname wird von dem Schritt zuvor bernommen oder kann selbst auf abdomen blutbahn roi vtk gesetzt werden Als Dateiname f r die DistanceMap wird abdomen distancemap vtk angegeben und die Erstellung dieser durch einen Klick auf Ausf hren gestartet Datensatz
97. xelTypen definiert typedef float InputPixelType typedef signed short InternalPixelType typedef unsigned char SegmentedPixelType Je nachdem welche Informationen gespeichert werden kann der Typ mit dem geringsten Speichervolumen gew hlt werden Beim Einlesen und Filtern der Datens tze ben tigt man noch den Datentyp float mit dem die Berechnungen des Gl ttungsfilters m glich sind Zum Speichern der Volumen gen gt es wenn signed short verwendet wird um Speicherplatz zu sparen F r RAW Datens tze w rde die vorzeichenlose Variante von short gen gen doch bei DICOM Daten wird die vorzeichenbehaftete Variante signed short ben tigt da hier auch Grauwerte im negativen Bereich m glich sind Die Farbwerte k nnen hierbei zwischen 32 767 und 32 767 liegen F r segmentierte Bildinformationen wie die Blutbahn oder die Verkalkungen gen gt der Typ unsigned char mit Werten zwischen 0 und 255 da hier nur bin re Werte gespeichert werden Aus diesen zuvor definierten PixelTypen kann man nun die ImageTypen definieren die zus tzlich zur Information ber die PixelTypen auch noch Information ber die Dimension der Bilder enthalten typedef itk Image lt InputPixelType 3 gt InputlmageType typedef itk Image lt InternalPixelType Umsetzung und Visualisierung 23 3 gt InternallmageType typedef itk Image lt SegmentedPixelType i SegmentedImageType typedef itk RawImageIO lt InputPixelT
98. yFilterl gt SetOutsideValue outsideValueUmfeld binaryFilterl gt SetInsideValue insideValueUmfeld r r binaryFilterl gt Update Zum Schluss wird wie immer der Filter mittels Update gestartet Als Ergebnis bekommt man ein Volumen in dem eine Region im angegebenen Abstand um die Blutbahn herum auf einen Wert von l und der Rest des Volumens auf den Wert O gesetzt wurde Da es sich wieder um ein Bin rbild handelt gen gt es mit dem Datentyp char weiter zu arbeiten um Speicher zu sparen Bisher hat man allerdings noch nicht die originalen Grauwerte mit den darin enthaltenen Verkalkungen Diese erh lt man indem man das gerade erzeugte Volumen mit dem originalen Volumen multipliziert Dadurch dass das nahe Umfeld der Blutbahn den Wert 1 hat und der Rest den Wert O0 bekommt man bei der Multiplikation der beiden Volumen ein Volumen zur ck in dem die originalen Grauwerte des Umfeldes enthalten sind und der Rest durch die Multiplikation mit 0 auf 0 gesetzt wurde ITK bietet hierzu einen einfachen Multiplikationsfilter MultiplyImageFilter der zwei zu multiplizierende Volumen bergeben bekommt Wie immer wird zu Beginn die Headerdatei eingebunden include itkMultiplyImageFilter h Danach kann dann wieder ein neuer Typ des Filters definiert und eine neue Instanz erzeugt werden typedef itk MultiplyImageFilter lt InternallmageType SegmentedImageType Inte
99. ype 3 gt RawlmagelOType 4 1 2 Reader und Writer Generell ist allen Schritten gemeinsam dass zu Beginn ein oder mehrere Datens tze eingelesen werden und nach der Bearbeitung durch die Funktion wieder unter einem anderen Dateinamen abgespeichert werden Dies hat zwar den Nachteil dass das Programm einen etwas gr eren Rechenaufwand durch das Einlesen und Speichern hat man aber mehr Kontrolle ber die einzelnen Zwischenergebnisse bekommt Dieser Mehraufwand kann durch gezielte Wahl der Datentypen der zu speichernden Datens tze und Verkleinerung der Volumen durch Reduzierung auf Regions of Interest minimiert werden Als Dateiformat f r die Zwischenschritte in denen die Datens tze gespeichert und wieder eingelesen werden wurde das Format vtk gew hlt da es f r 3D Datens tze geeignet ist und sowohl von ITK als auch VTK unterst tzt wird Wie der reader und der writer generell funktionieren wird am Beispiel des InputReaderType und des InternalWriterType erkl rt und ist dann auf die anderen Datentypen bertragbar Sie verwenden alle die Klassen itkImageFileReader beziehungsweise itkImageFileWriter zum Lesen beziehungsweise Schreiben der Dateien 4 1 2 1 Reader ITK stellt zum Einlesen eines Datensatzes den itkImageFileReader zur Verf gung der f r viele g ngige Dateiformate anpassbar ist Um diesen verwenden zu k nnen muss als erstes die entsprechende Headerdatei in das Programm inkludiert werden include itkImage
100. ype gt ConfidenceConnectedImageFilterType ConfidenceConnectedImageFilterType Pointer confidence ConfidenceConnectedImageFilterType New Als n chstes k nnen dem Filter die ben tigten Parameter bergeben werden So wird ihm mittels SetInput das zu filternde Volumen vom reader bergeben und mittels SetMultiplier der Wert mit dem die Standardabweichung multipliziert wird Weiter bekommt er noch die Anzahl der Wiederholungen die Nachbarschaftsgr e und den Grauwert der in das neue Volumen eingetragen wird bergeben confidence gt SetInput reader gt GetOutput confidence gt SetMultiplier multiplier confidence gt SetNumberOflterations numberOflterations confidence gt SetInitialNeighborhoodRadius neighborhood confidence gt SetReplaceValue replaceValue Als letztes fehlt nur noch der Saatpunkt der definiert und mittels SetSeed an den Filter bergeben wird typedef ConfidenceConnectedImageFilterType IndexTyp IndexType IndexType seed seed 0 seedX seed 1 seedY seed 2 seedZ2 confidence gt SetSeed seed confidence gt Update Wie blich wird der Filter mittels Update gestartet Umsetzung und Visualisierung 38 Als Ausgabe bekommt man bei geeigneter Parameterwahl und homogenen Grauwerten des zu segmentierenden Objektes die segmentierte Blutbahn als Bin rbild zur ckgeliefert Diese wird dann unter de
101. zu bearbeitenden Volumens zur ckzuf hren ist Die Schritte Daten Einlesen und Speichern nehmen wiederum einen Gro teil der ben tigten Zeit in Anspruch Die Schritte dazwischen spielen sich allerdings im Sekundenbereich ab Abbildung 30 Extrahierte Verkalkungen Dieses Verfahren ist zwar wiederum nur ein einfaches Schwellwertverfahren doch durch das Wissen dass Gef verkalkungen nur im nahen Umfeld von Gef en vorkommen k nnen kann die Filterung nach Verkalkungen auf genau diesen Bereich eingeschr nkt werden W rde man dies nicht machen so w rde man wie bei der Extrahierung des Skelettes alle Bereiche die dieselben Werte wie Verkalkungen haben also auch die Knochen mit extrahieren Betrachtet man das Ergebnis der Extrahierung wieder im Vergleich mit dem originalen Volumen siehe Abbildung 31 und Abbildung 32 so f llt auf dass fast alle Verkalkungen erfasst wurden In den linken Bildern ist wiederum der schon bekannte Vergleich der segmentierten Blutbahn des Beispieldatensatzes Abdomen1 zu sehen Gut erkennbar sind auch die noch vorhandenen wei en Verkalkungen an den R ndern der Blutbahn Wird das Volumen mit den extrahierten Verkalkungen invertiert und mit dem vorherigen Vergleichsvolumen Auswertung 61 multipliziert so erh lt man ein Volumen in dem sowohl die Bereiche der segmentierten Blutbahn als auch die der extrahierten Verkalkungen auf den Grauwert 0 gesetzt wurden und der Rest noch den origina

Download Pdf Manuals

image

Related Search

Related Contents

MANUEL D`UTILISATION  プラディア 販売名変更等のお知らせ  UJ 305 – Installation and maintenance manual  Cdigo : 5257  取扱説明書 30mm ベルトサンダ  INSTALLATION MANUAL  QA1S6ADP Q-AnS Base Unit Conversion Adapter User`s Manual  Pedestal Belt Sander Model 248-3 USER MANUAL - DeBurr-It!  Lavadora de roupas - Portal do Eletrodomestico  Trust 18657  

Copyright © All rights reserved.
DMCA: DMCA_mwitty#outlook.com.