Laborübung Visualisierung WS 2003/04 |
Weidlich Andrea - 0026715 Emsenhuber Gerlinde - 0026580 |
|
|
Überblick |
Das Programm dient dazu, Volumensdaten, wie
sie z.B. bei einem CT entstehen, mittels eines Ray-Casting Algorithmus wie
er im Paper "Display of Surfaces from Volume Data" von Marc Levoy
beschrieben wird, darzustellen. Folgende Funktionalität wurde
implementiert:
- Darstellung der Slices in den drei Hauptrichtungen
- Volumerendering:
First Hit/Average/Maximum Intensity Projection/Compositing
Modus
- Bearbeiten der Transferfunktion
- Interaktive Einstellung der Blickrichtung
|
|
|
Benutzerführung
Slicing |
Volumerendering |
Bearbeiten der Transferfunktion
|
Nach dem Starten des Programms wird folgendes Fenster angezeigt: |
|
Um einen Datensatz zu
laden, muss zunächst der Button "General" angeklickt werden; daraufhin
wird das entsprechende Dialogfenster angezeigt. Dort kann man mittels anklicken
des Load - Buttons einen Datensatz auswählen. |
|
Slicing |
|
Die Slices des Datensatzes werden
in den drei kleineren Fenstern neben dem Hauptfenster in x-, y- und
z-Richtung dargestellt. Mithilfe der Slider rechts neben den Fenstern kann
die Tiefe im Datensatz verändert werden; die Tiefe des betrachteten Slices
wird im Eingabefeld unter dem Slider angezeigt und kann auch von dort aus
verändert werden.
Durch einen Linksklick auf ein bestimmtes Slice kann man dieses vergrößert
im Hauptfenster anzeigen. Die Einstellung des Zoomfaktors erfolgt im
General-Dialog, ebenso die Auswahl der Interpolationsmethode. Folgende
Interpolationsmethoden sind möglich:- Voxel: Bei diesem Verfahren
werden nur die Voxel dargestellt
- Nearest Neighbour: An jeder Position wird der dichtewert des am
nächsten liegenden Voxels dargestellt.
- Bilinear: An jeder Position wird der Dichtewert aus den vier
benachbarten Voxel interpoliert.
- Bicucbic: An jeder Position wird der Dichtewert aus den sechzehn
benachbarten Voxel interpoliert.
Grundsätzlich werden die Slices
durch Grauwerte dargestellt, es ist aber möglich, eine benutzerdefinierte
Transferfunktion auf sie anzuwenden. Dazu muss zuerst im Slicing - Dialog die Option "Use
Transfer Function"
ausgewählt werden. Danach kann die Transferfunktion bearbeitet werden:
Bearbeiten der Transferfunktion |
|
Volumerendering |
Durch klicken auf den
gleichnamigen Button wird der Volumerendering - Dialog angezeigt. Um den
das Rendern des Datensatzes zu starten, muss der Render - Button betätigt
werden. Sobald der Rendervorgang gestartet wurde, kann er
abgebrochen werden, indem der Benutzer einmal linksklickt. |
Es sind vier verschiedene Modi implementiert, die durch auswählen des
entsprechenden Radiobuttons im Unterpunkt "Rendering" ausgewählt werden
können.
- First Hit:
Bei diesem Verfahren wird für jeden Blickstrahl der erste Dichtewert,
der getroffen wird, dargestellt, sofern er über einem vom Benutzer
anzugebenden Schwellenwert liegt. Der Schwellwert kann über das
Eingabefeld "Treshold Value" gesteuert werden.
Beispielbilder
- Average:
Entlang eines jeden Blickstrahls wird der Mittelwert aller gesampelten
Dichtewerte berechnet und dargestellt. Beispielbilder
- MIP:
Maximum Intensity Projection - Hier wird für jeden Blickstrahl der
maximale Dichtewert ermittelt und anschließend dargestellt. Beispielbilder
- Compositing:
Bei diesem Verfahren spielen die in der
Transferfunktion eingestellten Alphawerte eine Rolle: Die Werte, die
sich entlang des Blickstrahls ergeben, werden mit einem
"Resttransparenzfaktor" multipliziert und aufsummiert. Dabei ist der
Resttransparenzfaktor anfangs eins (d.h. der erste Wert wird mit voller
Intensität dargestellt), wird jedoch immer geringer, je tiefer der
Blickstrahl in den Datensatz eindringt, da die Alphawerte, die sich an
den Samplepositionen ergeben, von der Resttransparenz abgezogen werden.
Um das Verfahren zu beschleunigen, wird abgebrochen, so bald die
Resttransparenz kleiner als 0.05 wird, da sich Werte die mit einem so
kleinen Faktor multipliziert werden kaum noch auf das Ergebnis
auswirken. Beispielbilder
|
|
Zusätzlich kann man zwischen zwei verschiedenen
Interpolationsmethoden wählen:
- Nearest Neighbour Interpolation:
Bei dieser Interpolationsmethode
wird an jeder Samplingposition der Dichtewert des am nächsten liegenden
Voxels bestimmt und verwendet. Die Methode ist meistens schneller als
die Trilineare Interpolation, liefert dafür aber zum Teil Bilder von
geringerer Qualität.
- Trilineare Interpolation:
Hier wird der Dichtewert an einer
Samplingposition aus den Dichtewerten der acht benachbarten Voxel (Cell)
bestimmt. Da die Interpolation zwischen den acht Dichtewerten
zeitaufwendig ist, dauert die Trilineare Interpolation länder als die
Nearest Neighbour Interpolation, dafür sind die Ergebnisbilder besser.
|
Einstellung der Blickrichtung: Die
Einstellung der Blickrichtung ist auf zwei verschiedene Arten möglich:
- Erstens kann der Rotationswinkel um die x-, y- und z-Achse
durch die gleichnamigen Slider im Punkt "View" verändert werden.
- Es gibt jedoch noch eine andere, intuitivere Methode, die
Blickrichtung zu ändern: Dafür wird mit der Maus ein Vektor über das
Bild des Datensatzes gezogen, der die Rotation um die x- und y-Achse
angibt. Dies funktioniert folgendermaßen: Die Stelle, an der die linke
Maustaste niedergedrückt wird, bestimmt den Anfangspunkt des Vektors.
Danach wird die Maus, ohne die tast loszulassen, bis zum gewünschten
Endpunkt gezogen; dort wird die maustaste losgelassen. Die absolute
Position von Anfangs- und Endpunkt spielen dabei keine Rolle, nur die
richtung und die Länge des Vektors sind wichtig: abhängig von Länge und
Richtung des Vektors verändert sich die Blickrichtung. Wird zum Beispiel
ein horizontaler Vektor nach links gezogen, wird die Blickrichtung je
nach Länge des Vektors mehr oder weniger um die y-Achse nach rechts
rotiert, d.h. man hat den Eindruck, der Datensatz würde um die y-Achse
nach links rotiert. Ein vertikaler Vektor entspricht einer Rotation um
die x-Achse, und ein schräger Vektor einer Mischung aus x- und
y-Rotation.
|
Einstellung des Zoomfaktors: Der Zoomfaktor
kann im General-Dialog eingestellt werden, über den Slider mit der
Beschriftung "Zoom". |
|
Bearbeiten der
Transferfunktion |
Damit die Transferfunktion verwendet wird,
muss die Option "Use Transfer Function" im Volumerendering - Dialog
ausgewählt werden. Die Transferfunktion wird folgendermaßen auf den
Datensatz angewendet: Für jeden Dichtewert können in der Transferfunktion
der Farb- und Alphawert (Transparenz) ermittelt werden. Diese Werte werden
zum darstellen des Datensatzes verwendet.
Um die Transferfunktion bearbeiten zu können,
muss der Button mit der Aufschrift "Transfer Function" betätigt werden; daraufhin öffnet sich ein eigenes
Dialogfenster: |
|
Das weiße Fenster stellt ein Histogramm der Dichtewerte im Datensatz dar.
Dabei werden die niedrigsten Dichtewerte, beginnend bei Null links, die
höchsten Dichtewerte bis maximal 4095 rechts dargestellt.
- Bearbeiten des Farbverlaufes:
Unter dem Histogramm wird der Farbverlauf der Transferfunktion
angezeigt: Wenn die Transferfunktion zum ersten mal nach dem Starten des
Programms bearbeitet wird, ist das einfach ein Verlauf von Schwarz
(niedrigster Dichtewert) nach Weiß (höchster Dichtewert). Durch
Linksklicken auf eine bestimmte Stelle wird entweder ein euer Punkt
eingefügt, oder, falls sich dort bereits ein Punkt befindet, wird dieser
ausgewählt, und kann danach durch ziehen der Maustaste verschoben
werden. Durch Doppelklicken auf einen Punkt kann man dessen Farbe
verändern; durch einen Rechtsklick wird er gelöscht.
- Bearbeiten der Transparenzfunktion:
Ebenso wie für die Farbe kann
auch für die Transparenz ein Verlauf angegeben werden; dieser Verlauf
wird im Histogrammfenster angezeigt. Das Einfügen und Löschen von
Punkten funktioniert wie beim Farbverlauf durch einen Links- bzw.
Rechtsklick. Um den Wert an einem Punkt einzustellen, wird dieser mit
der Maus im Fenster nach oben oder unten gezogen: wird ein Punkt nach
oben gezogen, wird seine Transparenz verringert, d.h. er wird
undurchsichtiger, wird er nach unten gezogen, wird seine Transparenz
erhöht.
|
eine einfache Transferfunktion |
|
|
Beispielbilder
vergrößerte Version |
First Hit, trilineare Interpolation |
First Hit, nearest neighbour Interpolation |
Average, trilineare Interpolation |
Average, nearest neighbour Interpolation |
MIP, trilineare Interpolation |
MIP, nearest neighbour Interpolation |
Compositing, trilineare Interpolation |
Compositing, nearest neighbour Interpolation |
|