1 / 103

Marching Cubes

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.

trang
Download Presentation

Marching Cubes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Marching Cubes von Arnfried Weber

  2. Überblick • Motivation • Marching Cubes Algorithmus • Topologisch korrekter MC • Extended MC

  3. Motivation • Marching Cubes (Wofür?)

  4. Motivation • Marching Cubes (Wofür?) • Visualisierungstechniken (1987) waren entweder ineffizient oder zu ungenau

  5. 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

  6. Marching Squares(2D) • Ni x Nj Dichteraster • Objekt liegt im Raster

  7. Marching Squares(2D) • Ni x Nj Dichteraster • Objekt liegt im Raster • jeder Punkt besitzt einen gemessenen Dichtewert F(i,j) = [0,0…1,0]

  8. 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 α

  9. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  10. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  11. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  12. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  13. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  14. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  15. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  16. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  17. Marching Squares(2D) Vorgehen - Punkte mit größerer Dichte als Isowert werden markiert F(i,j) >= Isowert

  18. Marching Squares(2D) - Wie viele verschiedene Möglichkeiten gibt es für die Markierungen eines Quadrates?

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. Marching Squares(2D) - Tabelle erstellen in der alle möglichen Konfigurationen gespeichert sind

  30. 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

  31. 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

  32. 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

  33. 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)

  34. 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.

  35. 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]

  36. 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

  37. Marching Cubes(3D) -Tabelle der verschiedenen Würfelkonfigurationen muss erstellt werden

  38. 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 ?

  39. 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

  40. 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

  41. 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

  42. 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

  43. Marching Cubes(3D) • auch hier wird der Tabellen-Index über die Markierungen des Würfels als Binärzahl aufgefasst dargestellt

  44. 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

  45. 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

  46. 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

  47. Marching Cubes(3D) - Nachdem man alle Würfel des Rasters bearbeitet hat erhält man ein Drahtgittermodell, das die Isofläche mit Isowert α approximiert

  48. 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

  49. 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

  50. 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

More Related