Dokumentation
Voraussetzungen
Gegeben sei ein Array V[x][y][z] von Voxelwerten (evtl. bereits einer
durch Filter- und Korrekturfunktionen bearbeitet).
Berechnung der Farbwerte der Voxel
Die Farbwerte Cr,g,b[x][y][z] werden mittels
Phong-Shading unabhängig für jede der Farbkomponenten r, g
und b ermittelt. Dabei setzt sich der Farbwert aus Umgebungslicht sowie diffuser und
spekularer Reflektion zusammen:
Cr,g,b[x][y][z] = ambient + diffuse + specular
Das Umgebungslicht ambient ergibt sich aus dem Produkt der Intensität des
Umgebungslichts (Ia ) und eines Reflektionskoeffizienten
Ka :
ambient = Ia·Ka
Die diffuse Reflektion ergibt sich aus dem Produkt von Lichtquellen-Intensität
Il , Reflektionsfaktor Kd und skalarem
Produkt der Oberflächennormale N sowie der Richtung der Lichtquelle
L (beide Vektoren sind normalisiert):
diffuse = Il·Kd·(N[x][y][z]·L)
Die spekulare Reflektion ergibt sich aus dem Produkt von Lichtquellen-Intensität
I , Reflektionsfaktor Ks und skalarem Produkt der
Oberflächennormale N sowie der Richtung der maximalen Reflexion
H (beide Vektoren sind normalisiert):
specular = Il·Ks·(N[x][y][z]·H) ,
wobei H = (L+V)/2 (V ist der normalisierte Blickvektor)
Die Oberflächennormale N[x][y][z] ist durch den normalisierten
Gradientenvektor g[x][y][z] gegeben und kann wie folgt approximiert werden:
(V[x+1][y][z]-V[x-1][y][z])/2,
g[x][y][z] = { (V[x][y+1][z]-V[x][y-1][z])/2, }
(V[x][y][z+1]-V[x][y][z-1])/2
Zusammengefasst ergibt sich also:
Cr,g,b[x][y][z] = Ia·Ka + Il
·[Kd·(g[x][y][z]·L) + Ks·(g[x][y][z]·H)]
Berechnung der Transparenzwerte der Voxel
Um für region boundary surfaces passende Transparenzwerte
α[x][y][z] , benötigt man eine Zuordnung zunächst eine definierte
Zuordnung von Voxelwerten Vi zu Transparenzwerten
αi . Zur Superposition mehrerer surfaces sowieso zur
Interpolation dazwischen liegender Transparenzwerte ergibt sich folgende Funktion:
α[x][y][z] = |g[x][y][z]| · {
αi+1·[(V[x][y][z]-Vi)/(Vi+1-Vi)] +
αi·[(Vi+1-V[x][y][z])/(Vi+1-Vi)] }
(wenn Vi ≤ V[x][y][z] ≤ Vi+1 ,
0 sonst)
Berechnung des Bildes
Für jeden Bildpunkt P[x][y] wird ein Blickstrahl durch die Arrays der
Farbwerte C[x][y][z] sowie der Transparenzwerte V[x][y][z]
gelegt und an Z = max(z) Positionen trilinearer interpoliert. Die Farbe des
Bildpunkts P[x][y] resultiert dann aus einer Kombination der interpolierten
Werte:
P[x][y] = ∑z=0,…,Z
[ C[x][y][z]·α[x][y][z] · ∏zz=z+1,…,Z
(1-α[x][y][zz]) ] wobei C[x][y][0] = B (B
ist die Hintergrundfarbe) und α[x][y][0] = 1 .
Top
Um einen Volumendatensatz anzeigen zu koennen muss er zunaechst per File->Load
geladen werden, danach im Menu View die Verschiedenen Anzeigeformen zur
verfügung. Nach dem Laden werden die Eckdaten des Datensatzes in einer Leiste
unter dem Menü angezeigt.
Der Sliceviewer zeigt die Slices in drei verschiedenen Ebenen (Top, Front
und Side) an. Im Histogramfenster können die untere und obere Farbwertgrenze mit
der Mouse verschoben werden. Zu Beginn befinden sie sich am oberen und unteren Rande der
Anzeige. Mit dem Kontrollkästchen Use Transferf. können die Farbwerte nach der
Transferfunktion angezeigt werden.
Der Average Viewer zeigt so etwas wie ein drei dimensionales Röntgenbild an. Mit dem
obersten Slider kann die Auflösung des Raycasters geändert werden. Höhere Auflösung
bedeutet aber auch eine längere Wartezeit. Mit Window Size wird die Auflösung
auf die Fenstergröße eingestellt. Bei sehr hohen Auflösungen wird empfohlen, das
Automatic Repaint abzuschalten. Mit dem Detail-Slider kann die
Schrittweite des Raycasters eingestellt werden.
Der First Hit Viewer zeigt eine Fläche mit einer bestimmten Dichtewert an. Mit dem
senkrechten Slider links neben dem Bild kann dieser Wert verändert werden.
Beim Transparenten Raycaster kommt die Transferfuntion zur Anwendung. Diese legt fest,
welcher Dichtewert mit welcher Farbe und wie durchsichtig dargestellt werden soll.
Bei der Maximum Intensity Projection wird der Maximalwert, der entlang des Strahles
aufgetreten ist, angezeigt.
Der Non-Photorealistic Volume Renderer versucht, eine Silhouette darzustellen. Dabei wird
mit dem Gradientenvector gearbeitet und jene stellen betont, wo er senkrecht auf den Blickvektor
steht. Man hat daneben die Möglichkeit, Isolinien (Level Lines) einzuzeichnen.
Der Two Level Volume Renderer verfolgt einen zweistufigen ansatz. Dabei wird der Ray in
Abschnitte geteilt. Für jeden dieser Abschnitte kann ein eigener Ray Casting Typ festgelegt
werden. Dieser arbeitet den Abschnitt des Rays ab, und gibt sein Ergebnis an den übergeordneten
Ray Caster weiter. Die Einteilung des Ray in Abschnitte erfolgt über die Dichte und wird deshalb
im Transferfunktion Editor vorgenommen werden. Dort kann jedem Bereich des Spektrums, also jeder
Linie der Transferfunktion, eine Name gegeben werden.
Über diese Namen wird dem Ray Caster nun mitgeteilt, für welchen Bereich er zuständig ist. Die
Auswahl erfolgt Über die Liste im Karteireiter für den jeweiligen Ray Caster. Bis auf den First
Hit können jedem Raycaster mehrere Bereiche zugeteilt werden. Manche der Ray Caster bieten
zusätzliche Einstellungsmöglichkeiten, auf die hier nicht näher eingegangen werden soll.
Neben der Möglichkeit, im Bildfenster duch Klicken und Ziehen den Blickwinkel zu vertellen, kann,
wenn man die Ctrl-Taste gedrückt hält, klickt und zieht, auch die Licht-Position verändert
werden.
Die Berechnung kann jederzeit mit dem Stop-Button links unten gestopt, sowie mit dem Start-Button
gleich daneben wieder gestartet werden. Mit dem Knopf rechts unten kann das aktuelle Bild
abgespeichert werden.
Mit dem Transferfunktion Editor kan die Transferfunktion bearbeitet werden. Sie legt fest,
mit welchem Farbwert und welcher Transparenz ein Dichtewert dargestellt werden soll. Im
Editor stellt die senkrechte Position der Linie die Transparenz und dessen Farbe die
darzustellende Farbe dar. Mit der Zeigewerkzeug () können
Linien und deren Eckpunkte ausgewählt werden. Ist ein Eckpunkt selektiert, dann werd das
Kreuz fett. Jetzt kann dessen Farbe durch einen Klick auf das obere der beiden Kästchen
rechts unten eingestellt werden. Mit dem Splitwerkzeug ()
können Linien geteilt werden. Sobald ein Fadenkreuz erscheint, kann die Linie per Klick
geteilt werden. Das Movewerkzeug verschiebt Linien. Die beiden letzten Werkzeuge
dienen zum Laden und Speichern von Transferfunktionen. Die beiden Werte neben
Histo zeigen jeweils den Dichtewert und den Transparenzwert an. Im Properties
Bereich kann eine Linie mit einem Namen asoziiert werden. Mehrer Linine können den selben
namen haben.
Top
|