Visualisierung 1 - Rendern von Volumsdaten

Beschreibung

Diese Aufgabenstellung behandelt das Rendern von 3D Volumsdaten. Rendern von Volumsdaten ermöglichst es, Bereiche in den Daten transparent oder halb-transparent darzustellen, um das Innere eines Datensatzer erforschen zu können. Dadurch können Datensätze in ihrer Gesamtheit besser verstanden werden.

Aufgabenstellung

In dieser Aufgabe soll als Renderingtechnik Raycasting implementiert werden, um Volumsdaten darzustellen. Raycasting ist ein gebräuchliches Verfahren um ein Bild aus Volumendaten zu berechnen, ohne vorher geometrische Primitive (z.B. Polygone) aus den Volumendaten generieren zu müssen.
Um ein Bild mittels Raycasting zu erzeugen wird pro Pixel ein Blickstrahl (ray) durch die Bildebene geworfen (casting). Der Blickstrahl wird mit dem Volumen geschnitten. Die Volumsdaten sind in einem kartesischen 3D-Gitter angeordnet. An den Gitterpositionen sind Voxelinformationen gespeichert (Dichtewerte). Entlang des Blickstrahls wird an regelmä6szlig;igen Positionen (Samples) die Dichte ausgelesen, und je nach Kompositionsverfahren ein Farbwert für den aktuellen Strahl ermittelt. Eines der einfacheren Kompositionsverfahren ist die Maximum-Intensity-Projektion (MIP), bei der immer nur das Sample mit dem größten Dichtewert verwendet wird, um den Farbwert des Strahls zu ermitteln.

Punktevergabe

Beschreibung Punkte Output
Raycasting
Mindestanforderung, genauere Beschreibung siehe oberhalb
Anforderungen: Visualisierung eines Volumendatensatzes mittels Raycasting und MIP, Strukturen sind in den Daten erkennbar
26
GPU-Implementierung
Raycasting kann sowohl auf der CPU, als auch mit GPU-Unterstützung im Shader implementiert werden (GPU-based ray casting).
Anforderungen: Raycasting auf der GPU implementiert
4
Alpha-Compositing
Bei MIP wird entlang des Strahls immer nur der größte Dichtewert berücksichtigt. Eine Alternative dazu ist Alpha-Compositing (Info), wo alle Werte entlang des Strahls akkumuliert werden. Der Farb- und Transparenzwert jedes Samples ergibt sich anhand einer vorher definierten Transferfunktion. Diese ordnet jedem Dichtewert im Volumen eine Farbe und Transparenz zu. Diese Werte sollen dann entlang des Strahls mittels des Over-Operator (Info) kombiniert werden. Es wird empfohlen Front-To-Back-Compositing (Info) zu verwenden, damit die Berechnung früher abgebrochen werden kann, wenn der maximale Alphawert erreicht wurde (Early Ray Termination).
Anforderungen: Korrekte Implementierung von Alpha-Compositing mit dem Over-Operator, Implementierung einer Transferfunktion (darf fix sein)
4
Berechnung der Gradienten
Gradienten, in diesem Fall definiert als 3D-Vektoren, beschreiben die Richtung der größten Änderung in den Volumendaten an einer bestimmten Stelle. Die Berechnung der Gradienten kann im Allgemeinen auch als ein Filterprozess mittels Faltung gesehen werden. Gradienten können durch die Rückwärts-Differenzen- oder durch die Zentral-Differenzen-Methode (Info), oder mittels eines Sobel-Filters (Info) berechnet werden.
Anforderungen: Korrekte Berechnungen der Gradienten durch eine beliebige Methode, Verifizierung des Ergebnisses (z.B. durch Darstellung der Gradienten mit einfachen Primitiven wie färbige Kugeln) - HINWEIS: falls auch Gradientenbasiertes Shading (siehe unten) implementiert wurde, ist eine zusätzliche Verifikation mit Primitiven nicht notwendig
4
Gradientenbasiertes Shading
Durch Shading (gradient-based shading) kann die Darstellung des Rendering noch zusätzlich verbessert werden. Zur Berechnung des Shadings verwendet man den Gradientenvektor als Oberflächennormale an der Stelle des Sample-Punkts. Das Shading wird dann während des Raycasting berücksichtigt. Es kann z.B. Blinn-Phong Shading (Info) angewandt werden.
Anforderungen: Korrektes Shading
4
Interaktionsmöglichkeiten
Das Rendering wird durch mehrere Parameter beeinflusst (z.B. die Transferfunktion, die Sample-Distance, etc) und es ist sehr hilfreich wenn man diese Parameter direkt im Userinterface verändern kann. Weiters ist es üblich, dass man den Datensatz durch Rotation/Translation von mehreren Seiten betrachten kann.
Anforderungen: Mindestens drei interaktive Möglichkeiten das Rendering zur beeinflussen - HINWEIS: Rotation/Translation/Zoomen des Volumens gilt als eine Interaktionsmöglichkeit
4
Weitere Renderingtechnik
Außer dem erwähnten MIP und Alpha-Compositing gibt es noch weitere Möglichkeiten, wie Samples entlang des Blickstrahls akkumuliert werden können, z.B. First-Hit, Average oder MIDA (Maximum Intensity Difference Accumulation).
Anforderungen: Funktionierende Implementierung einer weiteren Technik
4

Datensätze

Für diese Aufgabe stellen wir drei Computertomographie-Datensätze in verschiedenen Auflösungen zur Verfügung. Die kleinen Datensätze eignen sich sehr gut zum Testen während der Implementierung.
Alle Datensätze liegen im DAT-Format vor. Die Dateien bestehen aus einem 6 Byte Header gefolgt von den eigentlichen Daten. Die ersten zwei Byte des Headers geben an wie groß das Volumen in x-Richtung ist, die folgenden zwei Byte geben an wie groß es in y-Richtung ist und die nächsten zwei Byte geben die Größe der z-Dimension an. Die eigentlichen Daten sind als 16 Bit pro Datenwert gespeichert (ushort), wobei immer nur 12 Bit in Verwendung sind.
Lobster x = 120, y = 120, z = 34
Download
 
Beetle SMALL
x = 138, y = 138, z = 82
Download
LARGE
x = 277, y = 277, z = 164
Download
Head SMALL
x = 128, y = 128, z = 112
Download
LARGE
x = 256, y = 256, z = 224
Download
Die Datensätze dürfen im Rahmen der Visualisierung 1 VU für den Übungsteil verwendet, aber NICHT weitergegeben werden.

Links

Wikipedia - Volume Ray Casting; Informationen in Englisch
Wikipedia - Raycasting; Informationen in Deutsch
Raycasting; Vorlesungsfolien der ETH Zürich
Display of Surfaces from Volume Data; Artikel von Marc Levoy, 1987
GPU-basiertes Raycasting; Studienarbeit
Wikipedia - Alpha Compositing; Informationen in Englisch
Wikipedia - Differenzenquotient; Informationen zum Berechnung der Gradienten
Wikipedia - Sobel-Operator; Information zum Sobel-Filter
MIDA; Artikel von Bruckner et al., 2009