CTViz

© Martin Gasser, October 2001


Worum gehts hier?

CTViz ist ein Volume Renderer für die Visualisierung von medizinischen Daten.

Überblick

CTViz implementiert im wesentlichen den von Levoy [1] vorgeschlagenen Algorithmus zur Visualisierung von Volumendaten durch Raycasting. Die Software ist mit Hilfe eines GUI in einfacher Weise konfigurierbar. Die Eingabedaten werden in Form eines Binärfiles in einem bestimmten Format bereitgestellt, es ist jedoch leicht möglich, andere Formate zu laden (indem man eine eigene Implementierung des VolumeLoader-Interfaces anfertigt).

Beschreibung des Algorithmus

Der Rendering-Prozess ist ein mehrstufiger, wobei einzelne Schritte eventuell parallelisiert bzw. zusammengelegt werden können. Daher erscheint es sinnvoll, die einzelnen Stufen in einer Pipeline zu organisieren. Die einzelnen Teilprozesse sind wie folgt zu beschreiben:

Datenerfassung Ein dreidimensionaler Körper wird mit Hilfe eines 3D-Scanners digitalisiert und in geeigneter Form gespeichert.
Datenvorbereitung Die Daten werden eingelesen und in eine algorithmisch gut verarbeitbare Form (z.B. dreidimensionales Array, Octree etc.) gebracht. Außerdem kann noch eine Vorbearbeitung der Dichtewerte stattfinden (Interpolation, Filterung, Quantisierung).
Gradientenberechnung In jedem Gitterpunkt wird ein Vektor in der Richtung der größten Dichtewertänderung (Gradient) berechnet. Dieser Vektor kann als Annäherung an die Oberflächennormale in diesem Punkt verstanden werden.
Klassifikation In diesem Schritt wird versucht, Oberflächen zu finden, indem Dichtewerte auf Opazitätswerte abgebildet werden. Für die Klassifikation kann entweder das Isovalue Contour surfaces-Modell oder das Region Boundary Surfaces-Modell verwendet werden.
Shading Mittels des Phong-Beleuchtungsmodells wird für jeden Gitterpunkt ein Farbwert ausgerechnet. Transferfunktionen geben hierbei die für jeden Dichtewertbereich zu verwendenden Koeffizienten für diffuse, specular und ambient Beleuchtung an.
Raycasting Beim Raycasting wird das die Projektionsebene Zeile für Zeile durchlaufen und durch jedes Pixel ein Sichtstrahl geschickt. Mittels back-to-front composing wird ein Farbwert für diesen Pixel ermittelt, indem Farbwerte und Opazitäten von hinten nach vorne entlang des Sichtstrahls akkumuliert werden. Der Algorithmus verwendet Parallelprojektion. Voxelwerte können entweder mit Nearest Neighbour- oder mit Trilinearer Interpolation angenähert werden.

GUI

GUI

Das grafische User Interface erlaubt die Einstellung folgender Parameter:

Scaling: Der Faktor, mit dem das Datenvolumen im 3D-Raum skaliert werden soll (Zoom-Effekt).
Sampling Factor: Die Dichte der Samplingpunkte auf dem Sichtstrahl. Bei einem Faktor von 1 haben die Punkte einen Abstand von 1 zueinander.
Shiny Surface: Erlaubt die Aus/Einblendung der spekularen Komponente im Phong-Beleuchtungsmodell.
Transferfunktion: Die Transferfunktion wird mit Hilfe von maximal 3 Peaks spezifiziert. Jedem Peak kann dabei eine Dichte, eine Opazität, eine Farbe und eine Breite zugeordnet werden. Ein Peak hat die Form eines gleichschenkeligen Dreiecks, wobei zwischen dem Opazitätswert an der Spitze und den Werten an der Basis (=0) linear interpoliert wird (in gleicher Weise wird mit den Farbwerten verfahren, wobei hier die Farbe an der Basis schwarz ist).
Viewpoint: Der Beobachterstandpunkt kann mit Hilfe eines Längen- und eines Breitengrades eingestellt werden. Als Modell dient hier die Lage eines Punktes auf der Erdoberfläche.

Weitere Bedienelemente:

Menü: Mit File -> Load kann ein Volumsdatensatz geladen werden. Der Ladevorgang kann bei großen Volumina durchaus länger dauern, da gleichzeitig die Gradientenberechnung stattfindet. File -> Quit beendet die Applikation.
Button Render: Dieser Button dient zum Starten des eigentlichen Renderingvorganges.
Button Snapshot: Dient zum Anfertigen eines Bildes des aktuellen Renderings im jpeg-Format.

Softwaredokumentation

Javadoc

Beispielbilder

head solid head semitransparent
Lobster 1 Lobster 2
Big Head

Referenzen

[1] Marc Levoy, Display of Surfaces from Volume Data, IEEE Computer Graphics and Applications, Vol. 8, No. 3, May, 1988, pp. 29-37
[2] Thomas Möller, Eric Haines, Real-Time Rendering, A K Peters Ltd., 1999

Valid HTML 4.0!