fit_ellipse_contour_xldfit_ellipse_contour_xldFitEllipseContourXldFitEllipseContourXldfit_ellipse_contour_xld — Approximieren von bogenförmigen XLD-Konturen durch Ellipsen.
Minimiert wird der algebraische Abstand
zwischen
den Konturpunkten und der gesuchten Ellipse.
Durch die Nebenbedingung wird dabei
sichergestellt, dass eine Ellipse (und nicht etwa eine Hyperbel oder
Parabel) angepasst wird.
'fhuber'"fhuber""fhuber""fhuber""fhuber"
Wie 'fitzgibbon'"fitzgibbon""fitzgibbon""fitzgibbon""fitzgibbon". Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von
Huber gedämpft werden (siehe unten).
'ftukey'"ftukey""ftukey""ftukey""ftukey"
Wie 'fitzgibbon'"fitzgibbon""fitzgibbon""fitzgibbon""fitzgibbon". Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von
Tukey ignoriert werden (siehe unten).
Minimiert wird der geometrische Anstand von Konturpunkten und der
gesuchten Ellipse.
Dieses Fehlermaß ist in einem statistischen Sinne optimal,
braucht aber auch eine längere Rechenzeit, da die Berechnung iterative
erfolgt. Besonders bei merklich verrauschten Konturpunkten ist die Wahl
dieser Option zu empfehlen.
Wie 'geometric'"geometric""geometric""geometric""geometric". Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von
Huber gedämpft werden (siehe unten).
Wie 'geometric'"geometric""geometric""geometric""geometric". Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von
Tukey ignoriert werden (siehe unten).
'voss'"voss""voss""voss""voss"
Die Eingabekontur wird in eine affine Standardlage transformiert. Dann
wird vermöge der Momente der transformierten Kontur (bzw. der davon
eingeschlossenen Bildregion) dasjenige Einheitskreissegment bestimmt,
dessen Standardlage am besten mit der der transformierten Kontur
übereinstimmt. Aus der zugehörigen Ellipse in Standardlage und der
affinen Transformation, die die Kontur in Standardlage überführt hat,
wird dann die entsprechende Ellipse ermittelt.
Es werden VossTabSizeVossTabSizeVossTabSizevossTabSizevoss_tab_size Einheitskreissegment
unterschieden (und deren Momente etc. beim ersten Aufruf des Operators
tabelliert).
Für jeden Punkt P auf einer Ellipse gilt, dass die Summe seiner
Abstände zu den Brennpunkten der Ellipse gleich
dem doppelten Hauptradius a ist. Bei diesem Ansatz wird die
Abweichung für alle Konturpunkte
durch eine least squares Ausgleichsrechnung minimiert.
'fphuber'"fphuber""fphuber""fphuber""fphuber"
Wie 'focpoints'"focpoints""focpoints""focpoints""focpoints". Es wird jedoch eine gewichtete
Least-Squares-Ausgleichsrechnung durchgeführt,
bei der Ausreißer nach dem Ansatz von
Huber gedämpft werden (siehe unten).
'fptukey'"fptukey""fptukey""fptukey""fptukey"
Wie 'focpoints'"focpoints""focpoints""focpoints""focpoints". Es wird jedoch eine gewichtete
Least-Squares-Ausgleichsrechnung durchgeführt,
bei der Ausreißer nach dem Ansatz von
Tukey ignoriert werden (siehe unten).
In den Modi '*huber' und '*tukey' wird eine robuste Fehlerstatistik
verwendet, um die Standardabweichung der Abstände der Konturpunkte (ohne
Ausreißer) von der approximierenden Ellipse zu ermitteln. Der Parameter
ClippingFactorClippingFactorClippingFactorclippingFactorclipping_factor (ein Skalierungsfaktor für diese Standardabweichung)
steuert in diesen Modi den Grad der Ausreißerdämpfung: Je kleiner der Wert
gewählt wird, desto mehr Punkte werden als Ausreißer behandelt. Jeder
Konturpunkt fließt individuell gewichtet in die Berechnung der
Ellipsenparameter mit ein.
Dieser Prozess kann iteriert werden, und der Parameter IterationsIterationsIterationsiterationsiterations
enthält die Anzahl durchzuführender Iterationen.
IterationsIterationsIterationsiterationsiterations ist relevant für alle Verfahren bis auf
die beiden auf dem geometrischen Abstand basierenden Verfahren
'geohuber'"geohuber""geohuber""geohuber""geohuber" und 'geotukey'"geotukey""geotukey""geotukey""geotukey", bei denen dieser Parameter
ignoriert wird. Falls der Algorithmus innerhalb dieser Anzahl von Iterationen
keine passende Ellipse finden kann, so wird eine Linie gefittet; für
Radius2Radius2Radius2radius2radius_2 wird null zurückgegeben.
Ausreißer werden nach dem Ansatz von Tukey komplett eliminiert, während bei
dem Verfahren nach Huber diese noch gering, i.e., linear, gewichtet werden.
Ohne robuste Gewichtung geht der Abstand quadratisch in die Optimierung mit
ein. In der Praxis ist der Ansatz nach Tukey zu empfehlen.
Die notwendige, minimale Anzahl an Konturpunkten zur Anpassung
einer Ellipse ist fünf.
Es wird daher vorausgesetzt, dass die Konturen mindestens
Punkte enthalten.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Sind die Parameterwerte korrekt und konnte eine Ellipsenanpassung
durchgeführt werden, liefert fit_ellipse_contour_xldfit_ellipse_contour_xldFitEllipseContourXldFitEllipseContourXldfit_ellipse_contour_xld den Wert 2 (
H_MSG_TRUE)
.
Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt
sich mittels set_system('no_object_result',<Result>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Wenn der Parameter ClippingFactorClippingFactorClippingFactorclippingFactorclipping_factor so klein gewählt worden ist,
dass alle Punkte als Ausreißer klassifiziert werden, wird die Fehlermeldung
3264 zurückgeliefert.