Volumen Visualisierung Seminar Interaktive Visualisierung (WS 06/07) Fabian Spiegel und Christian Meß Fabian Spiegel und Christian Meß 1
Übersicht Anwendungsbeispiele Volumendaten Entstehung Repräsentation Visualisierung Grundlagen Direktes Volumenrendering Transferfunktion 2D-Texture-Slicing 3D-Texture-Slicing Ray Casting 2
Anwendungsbeispiele: Medizin Visible Human Projekt: CT Angiografie: 3
Anwendungsbeispiele: Archäologie Sotades Pygmaios Statue: Griechische Statue von Isis: 4
Anwendungsbeispiele: Maschinenbau Materialstrukturen: 5
Anwendungsbeispiele: Geologie Seismische Daten: 6
Anwendungsbeispiele: Simulationen Strömungssimulationen: 7
Volumendaten: Entstehung Volumendaten werden in diskreten Abständen gesampled. Hierbei gibt es Verfahren die das Ursprungsmedium erhalten, wie z.b.: Computertomographie (CT) Magnetresonanztomographie (MRT) Und Verfahren die das Medium zerstören, wie z.b: zerschneiden des Gegenstandes in Scheiben (Visible Human Project) 8
Volumendaten: Repräsentation Volumendaten werden in Voxeln gespeichert. Ein Voxel (Volumen Pixel) setzt sich aus seiner Raumposition (x,y,z) und dem entsprechenden Wert an dieser Stelle zusammen. Ein Voxel besitzt analog zum Pixel keine fest definierte Form. 9
Visualisierung: Grundlagen Welche Einflüsse gibt es innerhalb des Volumens auf einen transmitierenden Strahl? verstärkende Einflüsse: Emission Eingangsstreuung (in-scattering) abschwächende Einflüsse: Absorbtion Ausgangsstreuung (out-scattering) Um die Komplexität einzuschränken werden in der Regel nur Emission und Absorbtion betrachtet. 10
Visualisierung: Grundlagen Emission active scattering Absorption active scattering 11
Visualisierung: Grundlagen Um die Ausgabeintensität eines transmitierenden Strahles zu berechnen muss die Intensität in Abhängigkeit von Emission und Absorbtion über den Lichtstrahl integriert werden. Die Ausgabeintensität entspricht dem Lichtanteil der im (fiktiven) Auge des Betrachters ankommt. So kann für eine gegebene Auflösung für jedes Pixel ein Wert errechnet werden. 12
Visualisierung: Transferfunktion Wie kommt man an Emissions- und Absorbtionswerte? Abtastwert Transferfunktion RGB (Emission) Alpha (Absorbtion) 13
Visualisierung: Direktes Volumenrendering Direkte Visualisierung der Volumendatensätze ohne Umweg über Oberflächenrepräsentation Alle Daten tragen zur Visualisierung bei Ausnutzung von Grafikhardware möglich Geschwindigkeit Rendering-Verfahren: Splatting Shear-Warp-Rendering Texture-Slicing 2D-Texture-Slicing 3D-Texture-Slicing Ray Casting 14
Visualisierung: 2D-Texture-Slicing Vorgehensweise: Erzeuge aus Volumendatensatz 2D-Textur-Stapel Transferfunktion RGB- und Alpha-Werte (Klassifikation) Für jede Textur Zeichne Rendering-Primitiv (Rechteck) Mappe die Textur auf das Rechteck (bilineare Farb-Interpolation) Blende die so erzeugten Ebenen übereinander (Compositing) 15
Visualisierung: 2D-Texture-Slicing 16
Visualisierung: 2D-Texture-Slicing Vorteil: Jede Grafikkarte geeignet Nachteile: Slices achsenparallel Qualitätseinbussen beim Rendering 3 Texturstapel notwending hoher Speicherverbrauch 17
Visualisierung: 3D-Texture-Slicing Vorgehensweise: Erzeuge aus Volumendatensatz 3D-Textur Pre-Klassifikation: Transferfunktion RGB- und Alpha-Werte Post-Klassifikation: untransformierte Abtastwerte Für gewünschte Slice-Anzahl Erzeuge Rendering-Primitiv (parallel zur Bildebene) Schneide passende 2D-Textur aus 3D-Textur Mappe Textur auf Primitiv (trilineare Interpolation) Post-Klassifikation: Transferfunktion durch Fragment Shader Blending 18
Visualisierung: 3D-Texture-Slicing Vorteile: Mehr Slices möglich höhere Rendering-Qualität Nur eine Kopie der Volumendaten Slices parallel zur Bildebene höhere Rendering-Qualität 19
Visualisierung: Ray Casting Vorgehensweise: Pro Pixel Erzeuge Sehstrahl (Ray) durch COP und Pixel Pro Ray Sample Volumen an äquidistanten Ray-Punkten RGB + A Pro Sampling-Punkt Kombiniere Ray-RGBA mit Sampling-Punkt-RGBA 20
Visualisierung: Ray Casting 21
Visualisierung: Ray Casting Vorteile: Konstante Sampling-Punkte Distanz Höchste Qualität Einfacher Algorithmus (CPU) Relativ schnell (Shader) Nachteile: Langsam (CPU) Komplexe Implementierung (Shader) 22