Praktikum an der Universität Leipzig, Fakultät für Mathematik und Informatik

10.07.2011 bis 15.07.2011

David Geistert

Thema: Manuelle Registrierung von Dreiecksdaten mit anatomischen Daten in OpenWalnut

1. Einleitung

Dreidimensionale Scans des menschlichen Körpers, die z.B. durch die Computertomographie oder Magnetresonanztomographie gewonnen werden, liefern eine Unmenge von Daten. Diese Daten müssen für Wissenschaftler und Mediziner aufbereitet werden. Die Visualisierung der gewonnenen Daten aus einzelnen oder mehreren dreidimensionalen Bildern ermöglicht so den Wissenschaftlern und Medizinern, neue Informationen und Erkenntnisse zu gewinnen.
Solche medizinischen und neurowissenschaftlichen Daten können in dem Open-Source-Softwaresystem "OpenWalnut" visualisiert werden. "OpenWalnut" wird hauptsächlich an der Universität und am MPI CBS in Leipzig entwickelt. Die Programmierung erfolgt in C++. Anatomische Daten werden angezeigt. Über diese anatomischen Daten können zu Anschauungszwecken Modelle aus Dreiecksdaten ("Meshs") gelegt werden. Diese "Meshs" können vom Benutzer per Hand auf die anatomischen Daten angepasst werden.
Das Modul sollte nun derart erweitert werden, dass eine Skalierung, Rotation bzw. ein Verschieben des "Meshs" möglich ist.

2. Durchführung

Zuerst wurde für alle Funktionen im "OpenWalnut" ein Schieberegler programmiert (Abb. 1). Danach wurde die Matrix Funktionen von OpenSceneGraph verwendet, um den "Mesh" zu drehen, zu skalieren und zu verschieben. Der "Mesh" drehte sich jedoch nicht wie gewünscht um seinen Mittelpunkt, sondern um den echten Null-Punkt des Koordinatensystems. Um dieses Problem zu lösen wurde zuerst ein Algorithmus geschrieben, der den Mittelpunkt ausrechnet und dann die Matrix so angepasst, dass sich der "Mesh" um seinen Mittelpunkt dreht.
Nach Abschluss dieser Transformationen, wurde ein visuelles Koordinatensystem eingefügt, welches aus 3 Zylindern, 3 Spitzen und 3 Schriftlabels besteht. Das Besondere hierbei ist, dass die Schriftlabel nicht mit eingefärbt sind und dass für die Achsen ein extra "Shader" für den Farbverlauf benutzt wird. Das gesamte Koordinatensystem wurde in einer Funktion zusammengefasst und in den "Core" von "OpenWalnut" aufgenommen, da ein fertiges Koordinatensystem vielfältig nutzbar ist.
Desweiteren wurde die Colormappingfunktion von "OpenWalnut" angewandt, wodurch Texturen der anatomischen Daten auf den "Mesh" übertragen werden konnten.
Abbildung 1
Abb. 1 Neue Optionen für das Modul

3. Anwendungsbeschreibung

3.1 Triangle Mesh Rendere
Über das Modul "Triangle Mesh Rendere" (Abb. 2), werden die Dreiecksdaten in "OpenWalnut" geladen. Zuerst wird die zu ladende "Mesh"- Datei ausgewählt. Dies erfolgt über den Button "Mesh File".

Abbildung 2
Abb. 2 Triangle Mesh Rendere Daten laden

Wenn der "Mesh" ausgewählt und der Button "Do Read" betätigt wurde, wird der "Mesh" in das Programm geladen (Abb. 3). Jetzt ist es möglich, über die Regler den "Mesh" zu skalieren, zu verschieben und zu drehen. In Abbildung 3 ist der geladene "Mesh" mit dem programmierten Koordinatensystem dargestellt.
Abbildung 3
Abb. 3 Mesh mit Koordinatensystem


3.2 Transformation Tool
In der Gruppe "Transformation" (Abb. 1) kann der "Mesh" transformiert werden. Es gibt 3 Varianten - das Skalieren (scale), das Rotieren (rotate) und das Verschieben (translate). Diese Operationen könne auf alle Achsen anwendet werden.
Bei dem Skalieren (Scale), gibt es ein zusätzliches Feld, welches das gleichzeitige Skalieren aller Achsen erlaubt (Abb. 4).

Abbildung 5
Abb. 4 Negativ skalierter Mesh

Es ist möglich alle Transformations-Tools gleichzeitig einzusetzen (Abb. 5).
Abbildung 6
Abb. 5 Komlett transformierter Mesh

Der zusätzliche Button "Reset to default" dient dazu, die einzelnen Parameter auf den Standard zurück zu setzen (Abb. 6).

Abbildung 6
Abb. 6 Pararmeter zum Standart zurücksetzen


3.3 Colormapping
Durch das Setzen eines Häckchen hinter "Enable Colormapping", wird das Colormapping aktiviert (Abb. 7).
Abbildung 7
Abb. 7 Feld um Colormapping zu aktivieren

Dadurch werden die anatomischen Texturen auf den "Mesh" übertragen (Abb. 8). Der Schieberegler ist standardmäßig auf 50% (Colormap Ratio 0.5).

Abbildung 8
Abb. 8 Colormapping aktiviert

Wird der Regler "Colormap Ratio" nach links verschoben, wird immer mehr Textur auf den Mesh übertragen. Bei einer Colormap Ratio von 0, ist auf dem "Mesh" 100 % der Textur dargestellt (Abb. 9).
Abbildung 9
Abb. 9 100% der Texturen auf dem Mesh

Wird der Regler "Colormap Ratio" nach rechts verschoben, wird immer weniger Textur von den anatomischen Daten angezeigt. Bei einer Colormap Ratio von 1, wird keine Textur auf dem "Mesh" dargestellt (Abb. 10).
Abbildung 10
Abb. 10 0% der Texturen auf dem Mesh

4. Zusammenfassung

Im Rahmen der Entwicklung und Implementierung einer manuellen Registrierung von Dreieckgittern in volumetrisch gegebene, anatomische Messdaten wurde das Softwaresystem "OpenWalnut" um ein benutzerfreundliches Interface zur direkten Manipulation von geladenen Dreieckgitter erweitert. Dazu wurde eine grafische Schnittstelle sowie eine dreidimensionale Repräsentation des Gitterkoordinatensystems entwickelt. Das entwickelte Gitterkoordinatensystem wurde darauf hin in die Grundfunktionen (Core) des Open-Source-Softwaresystems "OpenWalnut" aufgenommen. Außerdem haben wurde der Mesh Renderer um eine neue nützliche Funktion, das "Colormapping", erweitert. Diese Funktion ermöglicht das Anzeigen von volumetrischen Daten auf dem Gitter ("Colormapping").

5. Tools

- Geany (Editor)
- c/make (Compiler)
- FireFox recherche in OpenWalnut & OpenSceneGraph Dokumentation

6. Danksagung

An dieser Stelle möchte ich mich besonders bedanken bei:

- Herrn Eichelbaum, für die kompetente Betreuung während des Praktikums
- Prof. Scheuermann, für die Ermöglichung des Praktikums
- Frau Dr. Meiler, für das Organisieren des Praktikumsplatzes

Praktikum I - Praktikum II - Praktikum III