Gigamesh Ellipsenfitting

Umsetzung 1/2

Die Darstellung von Meshes war bereits in GigaMesh implementiert. Ebenso wie diverse Mesh-Operationen und Vektor-Operatoren.
Die Definition der Schnittebenen erfolgt in Hessesche Normalform, da diese den Standard bei der Berechnung von Abständen darstellt, erzeugt wird sie durch den Positionsvektor und der Ebenen-Normale gebildet wird. Um die Schnittpunkte der Dreiecke die das Mesh bilden und der Schnittebenen zu finden, wird die Ebene um die xz-Achse rotiert. Mittels der Hesseschen Normalform wird die Distanz getestet, ein Dreieck gilt dann als geschnitten, wenn die Ebene die Winkelhalbierende des Dreiecks schneidet. Die gefundenen Schnittpunkte in Form eines 3D (x,y,z)-Vektors werden daraufhin als 2D (x,z)-Punkt gespeichert.

Eine Scherbe und drei Schnitte inkl einer visualisierten Schnittebene

 

Durch die anschließende Rotation in die 2D-Ebene sollen die weiteren Berechnungen und Fits erleichtert und beschleunigt werden. Die Rotationsmatrix wird über die Hesseschen Normalform der jeweiligen Schnittebene definiert. Nun folgt das eigentlich fitten einer Ellipse in die gefundenen Schnittpunkte. Dabei greifen wir auf zwei unterschiedliche Verfahren zur Konstruktion der Ellipse zurück. Zum einen mittels Pascal-Theorem und zum Anderen durch den „Direct least square fit“ Ansatz. Beim „Pascal-Theorem“ wird davon ausgegangen das die Eckpunkte eines Sechsecks auf einer Ellipsenbahn liegen. Die drei gegenüberliegenden Seitenpaare definieren sich paarweise schneidende Geraden. Alle Schnittpunkte liegen wiederum auf einer Geraden, der Pascal Gerade. Beim zweiten Ansatz wird versucht die Kurve zu finden, bei der die Summe der Abweichungen (zum Quadrat) zwischen Kurve und einzelnen Messpunkten minimal ist. Anschließend folgt das Mitteln der gefunden Parameter über mehrere Fits mit verschiedenen randomisierten Submengen der Schnittpunkte (RANSAC).

weiter