Applied Geometry (CAGD)

The Ball-Pivoting Algorithm – Eine Implementierung

  • Type:Studienarbeit
  • Date:2002
  • Author(s):Sven Oberländer
  • Links:.PDF
    .BIB
  • Im Rahmen dieser Studienarbeit wurde der sogenannte "Ball-Pivoting Algorithm" (BPA) von Bernardini et al, der zur Rekonstruktion von Oberflächen aus Punktwolken mittels Dreiecksnetzen dient, implementiert und mit einem weiteren Algorithmus verglichen, dem Algorithmus von Linsen/Preuß. Hierzu wurde das Verhalten des Algorithmus genauer untersucht und Messungen zum Laufzeitverhalten und zur Korrektheit durchgeführt.

    Schon in der Implementierungsphase stellte sich heraus, dass der BPA auf Grund seiner Konzeption bei bestimmten Punktkonstellationen Fehler verursacht. Solche Fehler können sowohl bei einem einzelnen Durchlauf als auch bei mehreren Durchläufen des BPA auftreten. Diese Fehler werden in der vorliegenden Implementierung abgefangen, ohne dass dies gravierende Auswirkungen auf die Laufzeit verursacht. Im Vergleich mit dem Algorithmus von Linsen/Preuß lieferte der BPA die qualitativ besseren Triangulationen, insbesondere neigte der BPA mit den vorgenommenen Ausbesserungen nur in Ausnahmefällen zu topologischen Fehlern in einer Triangulation. Bei der Messung der Laufzeit schnitt der BPA meist schlechter ab als der Algorithmus von Linsen/Preuß, war in Ausnahmefällen aber auch schneller.

    Die Ergebnisse der durchgeführten Messungen zeigt die unten aufgeführte Tabelle. Als Testsystem wurde ein Rechner mit einem Intel Pentium II 400MHz Prozessor und 384MB Hauptspeicher unter der Linux-Distribution SuSE Linux 7.3 der SuSE Linux AG verwendet.

     

Punktwolke Linsen/Preuß-Algorithmus
Dateiname Anzahl
Punkte
verwendete
Punkte
gebildete
Dreiecke
gemessene
Laufzeit
Dreiecke/sec
bunny 10.784 10.784 21.539 00:23,373 921.53
club 16.864 16.862 33.688 00:45,315 743,42
fuss 20.021 20.019 40.036 00:41,117 973,71
knot 10.000 10.000 20.001 00:27,827 718,76
mannequin 12.772 12.744 25.488 01:03,443 401,75
monkey 19.208 18.174 38.208 00:59,633 640,72
nascar 20.621 20.560 41.164 01:30,808 453,31
oilpump 30.937 30.936 61.794 00:51,101 1209,25
skidoo 37.974 37.869 75.843 01:00,827 1246,86
teapot 26.130 25.316 51.738 07:35,069 113,69
Punktwolke Ball-Pivoting Algorithm
Dateiname Anzahl
Punkte
verwendete
Punkte
gebildete
Dreiecke
gemessene
Laufzeit
Dreiecke/sec
bunny 10.784 10.742 21.293 00:34,354 626,97
club 16.864 16.843 33.534 00:45,290 743,83
fuss 20.021 19.876 38.242 01:07,599 592,26
knot 10.000 9.966 16.929 00:35,386 565,22
mannequin 12.772 12.190 21.842 08:18,990 51,08
monkey 19.208 19.189 35.871 01:12,683 525,68
nascar 20.621 20.602 40.337 00:54,555 754,54
oilpump 30.937 30.098 58.800 01:50,215 560,67
skidoo 37.974 37.969 75.174 01:31,458 829,27
teapot 26.130 24.139 45.084 02:56,978 292,34


Hinweis: Die schwarzen Querstriche im Diagramm gehören zur Skala rechts und stehen für die Größe der Punktwolke.

Literatur

  • [1] Fausto Bernardini, Joshua Mittleman, Holly Rushmeier, Cláudio Silva, Gabriel Taubin: The Ball-Pivoting Algorithm for Surface Reconstruction. IEEE Transactions on Visualization and Computer Graphics, Seite 349-359, IEEE Press, 1999
  • [2] Lars Linsen: Oberflächenrepräsentation durch Punktwolken. Shaker Verlag Aachen, 2001
  • [3] Stefan Preuß: Von Punktwolken zu Dreiecksnetzen. Diplomarbeit, Uni Karlsruhe, 2002