Volumenrendering Modellierung der visuellen Erscheinung von semitransparenten, beleuchteten Objekten Marcel Petrick
Einleitung Anwendung zur Visualisierung von Skalarfunktionen dreidimensionaler Variablen Datenquellen: mathematisches Modell (Volumenfunktion, Finite-Element-Berechnungen) oder Messwerte aus realer Welt (von CT/MRI, Wetterstationen, ) beide Typen werden gleich behandelt Hauptunterschied besteht in Form des Volumenelementes: dem Voxel http://de.wikipedia.org/wiki/bild:voxelgitter.png 2
Was ist ein Voxel? steht für volumetric pixel (oder volume element ) in der Medizin: meist würfel- oder kugelförmige Zelle im Raum; Auflösung begrenzt ansonsten: räumlicher Datensatz in kartesischen Koordinaten, bei dem ein Voxel den diskreten Wert an einer XYZ-Koordinate bezeichnet -> ohne Volumen dargestellter Wert: Dichte, Wassergehalt, Temperatur, Druck, 3
Datenaufbereitung in medizinischer Bildgestaltung werden die 3D-Daten aus Stapeln paralleler CTs/MRIs gewonnen Auflösung innerhalb einer Ebene (512*512) höher als dazwischen (0,5 cm -> ~200) begrenzt bei lebendem Gewebe exaktere Daten beim Visible Human Project (geplant als allgemeine Referenz der menschlichen Anatomie) Zwischenwerte kann man entweder anhand der gegebenen Volumenfunktion oder durch (lineare) Interpolation schaffen 4
Volumenrendering Grundlegende Optionen für die Anzeige 1) Aufschneiden der Datenmenge in einer Querschnittsebene; trivial und wenig anspruchsvoll; hier nicht behandelt 2) Direkte Darstellung: den Voxeln Transparenz und Farbe zuweisen und die Volumendaten aus einem beliebigen Blickwinkel betrachten -> Raycasting / Splatting 3) Objektextraktion und herkömmliches Rendering -> marching cubes 5
Gliederung 1. Direkte Darstellung a. Raycasting - Schattierungsverfahren b. Projected Tetrahedra c. Splatting 2. Indirektes Rendering a. Konturverbinden b. Marching Cubes - Grid Snapping 6
1.a. Raycasting [ Graphische Datenverarbeitung 2 ], Seite 335, Bild 7.2 7
1.a. Raycasting bildraumorientiertes Verfahren analog zum Raytracing Ablauf: die Voxel klassifizieren und Farb-/ Opazitätswerte (R, G, B, α) zuordnen Volumendaten in Blickrichtung transformieren (oder: Schnittpunkte bestimmen und Strahl transformieren) für jedes Pixel des Bildraumes einen Strahl aussenden und dessen Farbe durch Summation entlang des Strahls feststellen (Richtung: von hinten nach vorn): c out = c * α + (1 - α) * c in für die abgetasteten Schnittpunkte Zwischenwerte mit Interpolation berechnen Nachteil: keine Berücksichtigung der Beleuchtung, da die Lichtquelle an Beobachterstandpunkt angenommen wurde 8
1.a. Raycasting: Schattierungsproblem http://graphics.cs.uni-sb.de/volumert/img/wonormal.png 9
1.a. Raycasting: Schattierungsproblem Annahme: alle Gitterzellen sind Würfel -> maximal drei Seitenflächen sichtbar -> max. drei Oberflächenprojektionen Tiefenpuffer-Gradientenschattierung (bildraumorientiert): Oberflächenpunkt mithilfe Z- Buffers ermitteln, lokale Nachbarschaft in x- und y- Richtung differenzieren, darauf Kreuzprodukt -> Normalenvektor; leichte Implementierung, schnell, geringe Auflösung, Probleme bei kleinen Winkeln Grauwert-Gradientenschattierung: GW-Gradient mithilfe eines Differenzoperators berechnen, daraus analog den Normalenvektor bestimmen 10
1.a. Raycasting: Schattierungsproblem [ Graphische Datenverarbeitung 2 ], Seite 337, Bild 7.4 links: rechts: Tiefenpuffer-Gradientenschattierung Grauwert-Gradientenschattierung 11
1.a. Raycasting: Schattierungsproblem Tiefenschattierung: Strahlverfolgung (Aufsummierung) bei Schwellwert abbrechen, Entfernung in hell-dunkel kodieren Maximumsprojektion: größter auf dem Strahl gefundener Wert wird zurückgegeben (Blutgefäße zum Beispiel gut sichtbar) 12
1.a. Raycasting: Schattierungsproblem http://www5a.biglobe.ne.jp/~pc-3d/gallery/gallery.html oben: unten: Tiefenschattierung Maximumsprojektion 13
1.b. Projected Tetrahedra forward mapping -Algorithmus, der ganze Bereiche des Volumens auf den Bildraum projiziert Algorithmus: 1) Zerlegung des Volumens in Tetraeder (fünf oder sechs) 2) Klassifikation der Tetraeder entsprechend des Bildes ihrer momentanen Projektion (nur sechs Äquivalenzklassen) 3) Zerlegung der Projektion in Dreiecke 4) Farb-/Opazitätsbestimmung für Eckpunkte (eigtl. nur einer!) dabei eine back to front -Sortierung verwenden 5) Füllen, Goraud-Shading und Scan-Konvertierung für jedes Dreieck 14
1.b. Projected Tetrahedra http://www.gris.uni-tuebingen.de/people/staff/rsonders/ 15
1.c. Splatting Westover beschrieb 1990 als Erster dieses Verfahren zur Voxelprojektion: Abbildung des Kernes zwei mögliche Wege: ein Datum in einem Voxel wird auf ein einziges Pixel projiziert: dessen Wert durch Filter über 3D-Region des Voxels bestimmen ein Voxelwert wird über eine Anzahl von Pixeln in der Bildebene verteilt bei 3D-Gauß-Verteilung als Filter erfolgt eine Projektion als Kreisfunktion auf Bildebene -> Vorverarbeitung des footprints (Basisfläche des V.) und Abspeicherung in Tabelle möglich kartesisches Gitter -> rotationssymetrische Kerne quaderförmige Zellen -> elliptische Kerne danach nur noch Skalierung des footprints in der Ebene entsprechend der affinen Transformation des Volumens nötig 16
1.c. Splatting [ 3D-Computergrafik ], Seite 432, Bild 13.16 17
2. Indirekte Volumendarstellung die Extraktion und Darstellung von Isokonturen und Isoflächen einer kontinuierlichen Volumenfunktion verbessert deren Interpretation es gibt zwei Ansätze: konturverbindende Verfahren (hauptsächlich bei Daten aus der Computertomographie): Finden von Isolinien in den 2D-Schnitten, danach Verbinden zu Oberflächen Marching cubes/tetrahedras : Berechnung einer Approximation der Isoflächen in den Zellen 18
2.a. Konturverbinden Topologische Rekonstruktion durch Lösen des Korrespondenz-Problems bei kleinen Abständen (oftmals): reicht es benachbarte Schichten in gemeinsame Ebene zu projizieren, wenn Schnitt, dann verbunden Darstellung durch Verbindungsgraph [ Graphische Datenverarbeitung 2 ], Seite 353, Bild 7.16 19
2.a. Konturverbinden Geometrische Rekonstruktion: Konturen der Schichten liegen bereits als geschlossene Polygone vor diese Isolinien müssen in geeigneter Weise mit Dreiecken verbunden werden (3D-Delaunay- Triangulierung), deshalb vorher Punktdatenreduktion Algorithmus von Barequet und Sharir: 1) korrespondierende Punkte in überlappenden Konturen durch Matching bei gleicher Orientierung finden 2) verbliebene Konturen zu geschlossenem Polygon zusammenfassen 3) fast immer richtige Annahme: kein Schnitt bei Projektion -> Restpolygone einfach triangulieren 20
2.b. Marching Cubes es ist möglich Oberflächen aus den Volumendaten zu extrahieren, wenn diese stetige Iso-Oberflächen enthalten dazu Volumenfunktion mit einem strukturierten Gitter abtasten danach in Polygon-Netze umwandeln -> konventionelle Rendering-Techniken können zum Einsatz kommen 1987 von Lorenson/Cline eingeführt Polygone in Voxel einpassen, wo man eine Oberfläche vermutet Voxel: acht Ecken -> 256 Möglichkeiten eine Fläche aufzuspannen durch Symetriebetrachtungen auf 14 Fälle reduzierbar Nachteile: es wird ausdrücklich eine Oberfläche extrahiert, auch wenn das vielleicht nur zwei benachbarte Oberflächenfragmente sind Menge der Grundkörper zu groß viele projizieren später auf das selbe Pixel (Lösung: Dividing cubes nachschalten) 21
2.b. Marching Cubes [ 3D-Computergrafik ], Seite 426, Bild 13.9 22
2.b. Marching Cubes Algorithmus: 1) vier Schichten des Gitters laden (Optimierung) 2) eine Zelle betrachten, die je vier Ecken in den mittleren beiden Schichten enthält 3) Eckpunkte anhand der Volumenfunktion als innen oder außen klassifizieren 4) anhand dessen dann die notwendigen Dreiecke bestimmen 5) genaue Position der Dreieckspunkte auf den Kanten durch lineare Interpolation feststellen 6) Normalenvektoren der Dreiecksecken in den Originaldaten bestimmen, danach gesamten Normalenvektor durch lineare Interpolation berechnen 7) mit 2) fortfahren, bis man das gesamte Volumen betrachtet hat (danach natürlich zu 1) gehen ) 23
2.b. Marching Cubes Probleme bei der Triangulierung: markierte und unmarkierte Punkte liegen manchmal auf einer Würfelseite -> nicht klar, ob man die markierten Ecken trennt oder miteinander verbinden soll falls angrenzende Würfel unterschiedlich trianguliert werden, führt das zu Löchern in der Oberfläche Lösungsmöglichkeiten: Marching tetrahedra : stets eindeutige Triangulierung, aber auch fast doppelt so viele Dreiecke zweideutige Seiten zwischen benachbarten Würfeln gleich behandeln 24
2.b. Grid Snapping [ Graphische Datenverarbeitung 2 ], Seite 373, Bild 7.40 links: rechts: reiner Marching Cubes -Algorithmus mit Grid Snapping 25
2.b. Grid Snapping Probleme bei Marching Cubes : falls eine Oberfläche einen Würfel nahe seinem Eckpunkt schneidet, entsteht ein sehr kleines Dreieck liegt der Schnitt nahe der Kante, wird das Dreieck spitz Folge: Güte der Triangulierung der Oberfläche sinkt und Anzahl der Polygone steigt deshalb werden die Abstände zwischen Schnittpunkten und Würfeleckpunkte berechnet -> falls kleiner als ein Schwellwert, dann Schnittpunkt in Ecke ziehen nach Ende des Marching Cubes -Algorithmus alle degenerierten Dreiecke streichen schnell, aber leider nur geringe Reduktionsraten möglich (außer bei großen Schwellwerten) 26
Quellen [ 3D-Computergrafik ]: Alan Watt, 3D- Computergrafik, Pearson Studium (15. Dez. 2001), Seiten 413 434, ISBN 3827370140 [ Graphische Datenverarbeitung 2 ]: Jose L. Encarnacao, Wolfgang Straßer, Reinhard Klein, Graphische Datenverarbeitung 2, Oldenbourg (1997), Encarnacao et al, Seiten 329 374, ISBN 3486234692 http://graphics.cs.uni-sb.de/volumert/index_de.html http://de.wikipedia.org/ http://www.gris.unituebingen.de/projects/grdev/applets/marchingcube/ge rmanapplet.html 27
Ende Herzlichen Dank für Ihre Aufmerksamkeit. 28