1.03k likes | 1.39k Views
Marching Cubes. von Arnfried Weber. Überblick. Motivation Marching Cubes Algorithmus Topologisch korrekter MC Extended MC. Motivation. Marching Cubes (Wofür?). Motivation. Marching Cubes (Wofür?) Visualisierungstechniken (1987) waren entweder ineffizient oder zu ungenau. Motivation.
E N D
Marching Cubes von Arnfried Weber
Überblick • Motivation • Marching Cubes Algorithmus • Topologisch korrekter MC • Extended MC
Motivation • Marching Cubes (Wofür?)
Motivation • Marching Cubes (Wofür?) • Visualisierungstechniken (1987) waren entweder ineffizient oder zu ungenau
Motivation • Marching Cubes (Wofür?) • Visualisierungstechniken (1987) waren entweder ineffizient oder zu ungenau • Technik zum extrahieren einer Oberfläche aus medizinischen 3D-Daten musste gefunden werden
Marching Squares(2D) • Ni x Nj Dichteraster • Objekt liegt im Raster
Marching Squares(2D) • Ni x Nj Dichteraster • Objekt liegt im Raster • jeder Punkt besitzt einen gemessenen Dichtewert F(i,j) = [0,0…1,0]
Marching Squares(2D) • Ni x Nj Dichteraster • Objekt liegt im Raster • jeder Punkt besitzt einen gemessenen Dichtewert F(i,j) = [0,0…1,0] • Approximation des Linienzuges mit Dichtewert 0,5 := Isowert α
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert
Marching Squares(2D) - Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung - Reduktion der Konfigurationen auf 4 durch Rotationssymmetrie
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung - Reduktion der Konfigurationen auf 4 durch Rotationssymmetrie
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung - Reduktion der Konfigurationen auf 4 durch Rotationssymmetrie
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung - Reduktion der Konfigurationen auf 4 durch Rotationssymmetrie
Marching Squares(2D) • Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?- 2^4 = 16 , denn es gibt 4 Punkte mit je 2 Zuständen • Reduktion der Konfigurationen auf 8 durch Komplementbildung - Reduktion der Konfigurationen auf 4 durch Rotationssymmetrie
Marching Squares(2D) - Tabelle erstellen in der alle möglichen Konfigurationen gespeichert sind
Marching Squares(2D) - Tabelle erstellen in der alle möglichen Konfigurationen gespeichert sind - Nun erstellt man sich für ein Quadrat einen 4-Bit Vektor [v3,v2,v1,v0] mit v0,v1,v2,v3 € [0,1], der als Binärzahl aufgefasst einen Index zwischen 0 und 15 liefert, wobei markierte Punkte gleich 1, unmarkierte gleich 0 gesetzt werden
Marching Squares(2D) - Tabelle erstellen in der alle möglichen Konfigurationen gespeichert sind - Nun erstellt man sich für ein Quadrat einen 4-Bit Vektor [v3,v2,v1,v0] mit v0,v1,v2,v3 € [0,1], der als Binärzahl aufgefasst einen Index zwischen 0 und 15 liefert, wobei markierte Punkte gleich 1, unmarkierte gleich 0 gesetzt werden - anhand dieses Index kann nun aus der Tabelle ermittelt werden welche Kanten e0,e1,e2,e3 geschnitten werden
Marching Squares(2D) • Vorgehen • - nehme erstes Quadrat • - errechne Index für dieses • siehe in der Tabelle nach welche Schnitte auftreten • interpoliere entlang der Schnittkanten um die genauen Schnittpunkte zu errechnen • verbinde die Schnittpunkte
Marching Squares(2D) • Vorgehen • - nehme erstes Quadrat • - errechne Index für dieses • siehe in der Tabelle nach welche Schnitte auftreten • interpoliere entlang der Schnittkanten um die genauen Schnittpunkte zu errechnen • verbinde die Schnittpunkte • fahre mit nächstem Quadrat fort (marschiere)
Marching Squares(2D) • Vorgehen • - nehme erstes Quadrat • - errechne Index für dieses • siehe in der Tabelle nach welche Schnitte auftreten • interpoliere entlang der Schnittkanten um die genauen Schnittpunkte zu errechnen • verbinde die Schnittpunkte • fahre mit nächstem Quadrat fort (marschiere)- usw.
Marching Cubes(3D) - 3-Dimensionales Raster Ni x Nj x Nk mit gemessenem Dichtewert an jedem Punkt F(i,j,k) = [0,0…1,0]
Marching Cubes(3D) - 3-Dimensionales Raster Ni x Nj x Nk mit gemessenem Dichtewert an jedem Punkt F(i,j,k) = [0,0…1,0] - Statt Quadraten werden Würfel(Cubes) benutzt
Marching Cubes(3D) -Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden
Marching Cubes(3D) -Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden- Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Würfels ?
Marching Cubes(3D) • Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden- Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Würfels ? • 2^8 = 256 , da es 8 Punkte mit je 2 Zuständen gibt
Marching Cubes(3D) • Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden- Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Würfels ? • 2^8 = 256 , da es 8 Punkte mit je 2 Zuständen gibt • durch Komplementbildung noch 128 verschiedene Konfigurationen
Marching Cubes(3D) • Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden- Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Würfels ? • 2^8 = 256 , da es 8 Punkte mit je 2 Zuständen gibt • durch Komplementbildung noch 128 verschiedene Konfigurationen • durch Rotationssymmetrie kann man die Zahl der Konfigurationen auf 15 reduzieren
Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden- Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Würfels ? • 2^8 = 256 , da es 8 Punkte mit je 2 Zuständen gibt • durch Komplementbildung noch 128 verschiedene Konfigurationen • durch Rotationssymmetrie kann man die Zahl der Konfigurationen auf 15 reduzieren
Marching Cubes(3D) • auch hier wird der Tabellen-Index über die Markierungen des Würfels als Binärzahl aufgefasst dargestellt
Marching Cubes(3D) • auch hier wird der Tabellen-Index über die Markierungen des Würfels als Binärzahl aufgefasst dargestellt - die Tabelle liefert daraufhin die Kanten e1,…,e12 die geschnitten werden
Marching Cubes(3D) • auch hier wird der Tabellen-Index über die Markierungen des Würfels als Binärzahl aufgefasst dargestellt • die Tabelle liefert daraufhin die Kanten e1,…,e12 die geschnitten werden • nun interpoliert man entlang der gelieferten Strecken die Schnittpunkte und verbindet diese zu Dreiecken wie in der Tabelle beschrieben
Marching Cubes(3D) • auch hier wird der Tabellen-Index über die Markierungen des Würfels als Binärzahl aufgefasst dargestellt • die Tabelle liefert daraufhin die Kanten e1,…,e12 die geschnitten werden • nun interpoliert man entlang der gelieferten Strecken die Schnittpunkte und verbindet diese zu Dreiecken wie in der Tabelle beschrieben • nun „marschiert“ man zum nächsten Würfel und wiederholt den Vorgang
Marching Cubes(3D) - Nachdem man alle Würfel des Rasters bearbeitet hat erhält man ein Drahtgittermodell, das die Isofläche mit Isowert α approximiert
Marching Cubes(3D) • Nachdem man alle Würfel des Rasters bearbeitet hat erhält man ein Drahtgittermodell, das die Isofläche mit Isowert α approximiert • als letztes werden nun noch die Normalen für jeden Dreiecks-Eckpunkt zur besseren Darstellung des Modells berechnet
Marching Cubes(3D) • Nachdem man alle Würfel des Rasters bearbeitet hat erhält man ein Drahtgittermodell, das die Isofläche mit Isowert α approximiert • als letztes werden nun noch die Normalen für jeden Dreiecks-Eckpunkt zur besseren Darstellung des Modells berechnet • hierfür wird an allen Ecken des Würfels, der gerade betrachtet wird, der Gradient über die Differenz von zwei Dichtewerten entlang der drei Koordinatenachsen x,y,z, die den aktuell betrachteten Punkt F(i,j,k) einschließen, berechnet
Marching Cubes(3D) • Nachdem man alle Würfel des Rasters bearbeitet hat erhält man ein Drahtgittermodell das die Isofläche mit Isowert α approximiert • als letztes werden nun noch die Normalen für jeden Dreiecks-Eckpunkt zur besseren Darstellung des Modells berechnet • hierfür wird an allen Ecken des Würfels, der gerade betrachtet wird, der Gradient über die Differenz von zwei Dichtewerten entlang der drei Koordinatenachsen x,y,z, die den aktuell betrachteten Punkt F(i,j,k) einschließen, berechnet G:x(i,j,k) = (F(i+1,j,k) - F(i-1,j,k)) / ∆x wobei F(i,j,k) den Dichtewert des G:y(i,j,k) = (F(i,j+1,k) - F(i,j-1,k)) / ∆y Punktes mit Koordinaten i,j,k G:z(i,j,k) = (F(i,j,k+1) - F(i,j,k-1)) / ∆z repräsentiert und ∆x, ∆y, ∆z die Länge • der Würfelkante entlang der jeweiligen Achse