Schnellste Delaunay-Triangulationsbibliothek für Sätze von 3D-Punkten


26

Welches ist die schnellste Bibliothek für die Delaunay-Triangulation von Mengen mit Millionen von 3D-Punkten? Gibt es auch GPU-Versionen? Auf der anderen Seite würde es (in Bezug auf die Leistung) helfen, die Delaunay-Triangulation zu erhalten, wenn man die Voronoi-Tessellation derselben Punktemenge hat?


Haben Sie die Implementierungen in den Programmen CGAL und TRIANGLE ausprobiert? Beide enthalten Algorithmen, die (theoretisch) die schnellsten verfügbaren sind (wenn auch nicht parallel). O(nlog(n))
Paul

Jonathan Shewchuk hat auch eine Streaming-Version für 2D, die lächerlich große Datensätze verarbeiten kann, wenn Sie Ihrem Stream zusätzliche Daten hinzufügen können. Wofür benutzt du das?
Victor Liu

Antworten:


13

Für die Berechnung dreidimensionaler Delaunay-Triangulationen (Tetraeder) ist TetGen eine häufig verwendete Bibliothek.

Hier ist ein kleiner Vergleich, wie lange es dauert, die Terehedralisierung einer Reihe von zufälligen Punkten aus dem Einheitswürfel zu berechnen. Für 100.000 Punkte benötigt ein alter Pentium M 4,5 Sekunden.

Mathematica-Grafiken

(Dies geschah mit der TetGen-Oberfläche von Mathematica. Ich weiß nicht, wie viel Overhead damit verbunden ist.)

Zu Ihrer anderen Frage: Wenn Sie bereits die Voronoi-Tessellation haben, ist das Erhalten der Delaunay-Triangulation eine relativ einfache Transformation .


10

gStar4D ist ein schneller und robuster 3D-Delaunay-Algorithmus für die GPU. Es wird mit CUDA implementiert und funktioniert auf NVIDIA-GPUs.

Ähnlich wie GPU-DT erstellt dieser Algorithmus zuerst das digitale 3D-Voronoi-Diagramm. In 3D kann dies jedoch aufgrund topologischer und geometrischer Probleme nicht zu einer Triangulation verdoppelt werden. Stattdessen verwendet gStar4D die Nachbarschaftsinformationen aus diesem Diagramm, um Sterne zu erstellen, die auf 4D angehoben wurden, und führt auf der GPU eine effiziente Sternspaltung durch. Durch Extrahieren der unteren Hülle daraus wird die 3D-Delaunay-Triangulation erhalten.

Die schnellste 3D-Delaunay-Implementierung ist gDel3D , ein hybrider GPU-CPU-Algorithmus.

Die GPU wird parallel eingefügt und umgedreht. Das Ergebnis liegt in der Nähe von Delaunay. Dieses Ergebnis wird dann mithilfe einer konservativen Sternwiedergabemethode auf der CPU korrigiert.

Beide Methoden sind robust und können daher mit jeder Art von entarteter Eingabe umgehen. Sie können Millionen von Punkten verarbeiten, wenn der GPU-Speicher groß genug ist, um die dazwischen liegenden Datenstrukturen aufzunehmen.

Offenlegung: Ich bin der Autor dieser Algorithmen und Implementierungen :)


Willkommen bei SciComp.Se, Ashwin! Im Interesse einer vollständigen Offenlegung sollten Sie hinzufügen, dass Sie der Autor dieser Software sind (siehe meta.scicomp.stackexchange.com/a/342/1804 ).
Christian Clason

3

Ich würde CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 empfehlen , wie Paul oben vorgeschlagen hat. CGAL ist eine robuste und gut unterstützte Bibliothek, die es schon seit einiger Zeit gibt. Ich habe es in der Vergangenheit gerne verwendet, auch bei Punktmengen mit co-linearen und co-planaren Punkten. Ich weiß nicht, ob es heute die schnellste ist, aber es ist auf jeden Fall ein guter Anfang.

Der obige Link enthält auch einige Leistungszahlen: Er kann eine Million Punkte in etwa 10 Sekunden und 10 Millionen in etwa 1,5 Minuten erzielen.


Könnten Sie auch erläutern, warum Sie es empfehlen? Hast du erfahrung damit
Godric Seer

1

Wenn Sie bereits das Voronoi-Diagramm für eine Reihe von Punkten haben, erhalten Sie für die Berechnung der Delaunay-Triangulation nur O (n). Genauso kann man mit einem Voronoi-Punkt sein Delaunay-Dreieck in O (1) erhalten. Sie sind dual, also versuchen Sie, diese Situation auszunutzen, wann immer dies möglich ist.


1

Sie können die von mir entwickelte Geogrammsoftware ausprobieren: http://alice.loria.fr/software/geogram/doc/html/index.html

Es verfügt über einen parallelen Algorithmus, der die DT von 14 Millionen Scheitelpunkten in weniger als 19 Sekunden auf einem Intel Core I7 berechnet (für 1 Million Scheitelpunkte werden ungefähr 0,8 Sekunden benötigt).


Willkommen bei SciComp.SE! Im Interesse einer vollständigen Offenlegung (und um zu zeigen, dass Sie wissen, wovon Sie sprechen) sollten Sie erwähnen, dass Sie der Entwickler dieser Software sind.
Christian Clason
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.