YaDiV
YaDiV ("Yet Another DIcom Viewer") ist ein Programm zur interaktiven Visualisierung von 3D Volumendaten aus dem Bereich der Medizin. Das Programm kann Daten im DICOM Format (genaugenommen DICOM File Sets) einlesen und enthält u.a. Module zur
- 2D Visualisierung,
- 3D Volumen-Visualisierung (2- und 3D-texturbasiert),
- 3D Segmentierung,
- 3D Segment-Visualisierung,
- Unterstützung für stereographische Visualisierung und haptische Eingabegeräte.
Das Programm wird seit 2005 von Dr. Karl-Ingo Friese zusammen mit Studenten des Welfenlab entwickelt und dient derzeit als Plattform für unsere eigene Forschung im Bereich der medizinischen 3D-Datenverarbeitung. Durch die Doktorarbeit von Roman Vlasov wurde das Programm um eine flexibele haptische Schnittstelle erweitert.
Download
Die sechste Beta-Version von YaDiV ist inzwischen als Closed Source erhältlich!
YaDiV 1.0 beta 6 ist nahezu identisch mit der aktuellen Entwickler Version, lediglich die haptische Schnittstelle wurde entfernt.
Neu in der 6. Beta Version sind u.a.:
- Four-View GUI
- Erweiterte Deforable Model Segmentierung
- Beschleunigung vieler Komponenten
Diese Beta-Version darf nur zum Testen des Programmes heruntergeladen und nicht weitergegeben werden. Eine nicht-kommerzielle Nutzung im Rahmen von Forschung und Lehre ist erlaubt, nähere Details stehen in der mitgelieferten Programmhilfe. Das Programm muss nach dem Herunterladen nicht installiert werden. Einfach die zip Datei auspacken und LaunchYaDiV.jar ausführen. Eine aktuelle Java Version (8.x oder neuer) muss auf dem System bereits installiert sein. Frei erhältliche DIOCM Datensätze können bspw. hier heruntergeladen werden. Je nach Auflösung des Datensatzes werden 2-4 GB Hauptspeicher benötigt.
Technisches
YaDiV wird in der Programmiersprache Java entwickelt und läuft problemlos unter Windows, Linux (fedora 8) und MacOS X. Das Programm wurde unter 32 und 64 bit getestet, letzteres ist für sehr große Volumendaten absolut erforderlich. Da YaDiV speziell für schnelle, interaktive Visualisierung und Segmentierung angelegt wurde, ist es stark thread-basiert und profitiert direkt von Mehrkernprozessoren bzw. Multiprozessorumgebungen. Aber auch auf einem normalen Laptop lassen sich mittlere Voxeldatendatensätze (~ 512³) schnell ansehen und bearbeiten.
Für die 3D-Visualisierung wird Java3D (Version 1.6.0) eingesetzt. Alle zeitkritischen Verfahren wie eine Level-Set Segmentierung oder das Einlesen großer Daten wurden als eigener Thread implementiert, so dass die Programmoberfläche niemals blockiert wird. So wird z.B. nach einer Änderung eines Segmentes im Hintergrund ein automatisch verfeinernder Algorithmus für die 3D Darstellung gestartet, damit Änderungen sofort sichtbar werden. Wenn sich das Segment erneut ändert bevor die höchste Verfeinerungsstufe erreicht wurde, startet der Verfeinerungsalgorithmus automatisch neu.
Im Zuge der Entwicklung wurden mehrere vom Hauptpaket unabhängige APIs entworfen, z.B. eine Settings-API, die es erlaubt zur Laufzeit spezielle Klassenattribute zu definieren die automatisch mit einem GUI Element verknüpft werden. Für das Layout wurde ebenfalls eine spezielle API ("GridMaker") entworfen, die die Layout Beschreibung der SWING Oberfläche in einer HTML-Tabellen ähnlichen Syntax erlaubt. Beide APIs, GridMaker und die Settings-API werden in naher Zukunft als eigenständige Open Source Pakete veröffentlicht.