fit_circle_contour_xld fit_circle_contour_xld FitCircleContourXld FitCircleContourXld fit_circle_contour_xld (Operator)
Name
fit_circle_contour_xld fit_circle_contour_xld FitCircleContourXld FitCircleContourXld fit_circle_contour_xld — Approximieren von bogenförmigen XLD-Konturen durch Kreise.
Signatur
fit_circle_contour_xld (Contours : : Algorithm , MaxNumPoints , MaxClosureDist , ClippingEndPoints , Iterations , ClippingFactor : Row , Column , Radius , StartPhi , EndPhi , PointOrder )
Herror fit_circle_contour_xld (const Hobject Contours , const char* Algorithm , const Hlong MaxNumPoints , double MaxClosureDist , const Hlong ClippingEndPoints , const Hlong Iterations , double ClippingFactor , double* Row , double* Column , double* Radius , double* StartPhi , double* EndPhi , char* PointOrder )
Herror T_fit_circle_contour_xld (const Hobject Contours , const Htuple Algorithm , const Htuple MaxNumPoints , const Htuple MaxClosureDist , const Htuple ClippingEndPoints , const Htuple Iterations , const Htuple ClippingFactor , Htuple* Row , Htuple* Column , Htuple* Radius , Htuple* StartPhi , Htuple* EndPhi , Htuple* PointOrder )
void FitCircleContourXld (const HObject& Contours , const HTuple& Algorithm , const HTuple& MaxNumPoints , const HTuple& MaxClosureDist , const HTuple& ClippingEndPoints , const HTuple& Iterations , const HTuple& ClippingFactor , HTuple* Row , HTuple* Column , HTuple* Radius , HTuple* StartPhi , HTuple* EndPhi , HTuple* PointOrder )
void HXLDCont ::FitCircleContourXld (const HString& Algorithm , Hlong MaxNumPoints , double MaxClosureDist , Hlong ClippingEndPoints , Hlong Iterations , double ClippingFactor , HTuple* Row , HTuple* Column , HTuple* Radius , HTuple* StartPhi , HTuple* EndPhi , HTuple* PointOrder ) const
void HXLDCont ::FitCircleContourXld (const HString& Algorithm , Hlong MaxNumPoints , double MaxClosureDist , Hlong ClippingEndPoints , Hlong Iterations , double ClippingFactor , double* Row , double* Column , double* Radius , double* StartPhi , double* EndPhi , HString* PointOrder ) const
void HXLDCont ::FitCircleContourXld (const char* Algorithm , Hlong MaxNumPoints , double MaxClosureDist , Hlong ClippingEndPoints , Hlong Iterations , double ClippingFactor , double* Row , double* Column , double* Radius , double* StartPhi , double* EndPhi , HString* PointOrder ) const
void HXLDCont ::FitCircleContourXld (const wchar_t* Algorithm , Hlong MaxNumPoints , double MaxClosureDist , Hlong ClippingEndPoints , Hlong Iterations , double ClippingFactor , double* Row , double* Column , double* Radius , double* StartPhi , double* EndPhi , HString* PointOrder ) const
(Nur Windows)
static void HOperatorSet .FitCircleContourXld (HObject contours , HTuple algorithm , HTuple maxNumPoints , HTuple maxClosureDist , HTuple clippingEndPoints , HTuple iterations , HTuple clippingFactor , out HTuple row , out HTuple column , out HTuple radius , out HTuple startPhi , out HTuple endPhi , out HTuple pointOrder )
void HXLDCont .FitCircleContourXld (string algorithm , int maxNumPoints , double maxClosureDist , int clippingEndPoints , int iterations , double clippingFactor , out HTuple row , out HTuple column , out HTuple radius , out HTuple startPhi , out HTuple endPhi , out HTuple pointOrder )
void HXLDCont .FitCircleContourXld (string algorithm , int maxNumPoints , double maxClosureDist , int clippingEndPoints , int iterations , double clippingFactor , out double row , out double column , out double radius , out double startPhi , out double endPhi , out string pointOrder )
def fit_circle_contour_xld (contours : HObject, algorithm : str, max_num_points : int, max_closure_dist : float, clipping_end_points : int, iterations : int, clipping_factor : float) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[str]]
def fit_circle_contour_xld_s (contours : HObject, algorithm : str, max_num_points : int, max_closure_dist : float, clipping_end_points : int, iterations : int, clipping_factor : float) -> Tuple[float, float, float, float, float, str]
Beschreibung
fit_circle_contour_xld fit_circle_contour_xld FitCircleContourXld FitCircleContourXld FitCircleContourXld fit_circle_contour_xld approximiert die XLD-Konturen
Contours Contours Contours Contours contours contours durch Kreise. Eine Segmentierung der
Eingabekonturen erfolgt dabei nicht. Es muss also sichergestellt
sein, dass jede Kontur in Contours Contours Contours Contours contours contours genau einem Kreis
entspricht. Zurückgegeben wird der Mittelpunkt (Row Row Row Row row row ,
Column Column Column Column column column ) und der Radius Radius Radius Radius Radius radius radius .
Das gewünschte Approximationsverfahren wird über den Parameter
Algorithm Algorithm Algorithm Algorithm algorithm algorithm ausgewählt:
'algebraic' "algebraic" "algebraic" "algebraic" "algebraic" "algebraic"
Minimiert wird der algebraische Abstand zwischen
den Konturpunkten und dem gesuchten Kreis.
'ahuber' "ahuber" "ahuber" "ahuber" "ahuber" "ahuber"
Wie 'algebraic' "algebraic" "algebraic" "algebraic" "algebraic" "algebraic" . Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von Huber gedämpft
werden (siehe unten).
'atukey' "atukey" "atukey" "atukey" "atukey" "atukey"
Wie 'algebraic' "algebraic" "algebraic" "algebraic" "algebraic" "algebraic" . Es wird jedoch eine Gewichtung der Konturpunkte
vorgenommen, bei der Ausreißer nach dem Ansatz von Tukey ignoriert
werden (siehe unten).
'geometric' "geometric" "geometric" "geometric" "geometric" "geometric"
Minimiert wird der geometrische Anstand von Konturpunkten und dem
gesuchten Kreis.
Dieses Fehlermaß ist in einem statistischen Sinne optimal,
braucht aber auch eine längere Rechenzeit.
Besonders bei merklich verrauschten Konturpunkten ist die Wahl
dieser Option zu empfehlen.
'geohuber' "geohuber" "geohuber" "geohuber" "geohuber" "geohuber"
Wie 'geometric' "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).
'geotukey' "geotukey" "geotukey" "geotukey" "geotukey" "geotukey"
Wie 'geometric' "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).
In den Modi '*huber' und '*tukey' wird eine robuste Fehlerstatistik
verwendet, um die Standardabweichung der Abstände der Konturpunkte (ohne
Ausreißer) von dem approximierenden Kreis zu ermitteln. Der Parameter
ClippingFactor ClippingFactor ClippingFactor ClippingFactor clippingFactor clipping_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
Kreisparameter mit ein.
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.
Der Parameter Iterations Iterations Iterations Iterations iterations iterations
enthält die Anzahl durchzuführender Iterationen für die Algorithmen
'algebraic' "algebraic" "algebraic" "algebraic" "algebraic" "algebraic" , 'ahuber' "ahuber" "ahuber" "ahuber" "ahuber" "ahuber" und 'atukey' "atukey" "atukey" "atukey" "atukey" "atukey" . Für die
Algorithmen 'geometric' "geometric" "geometric" "geometric" "geometric" "geometric" , 'geohuber' "geohuber" "geohuber" "geohuber" "geohuber" "geohuber" und 'geotukey' "geotukey" "geotukey" "geotukey" "geotukey" "geotukey"
wird dieser Parameter ignoriert. Wird
Iterations Iterations Iterations Iterations iterations iterations auf null gesetzt, so versucht der Algorithmus nicht, den
gefitteteten Kreis iterativ zu verbessern. Er überprüft lediglich, ob der
erste Fit bereits ausreichend approximiert, abhängig von der gewählten
Behandlung der Ausreißer.
Zur Reduktion des Aufwands lässt sich die Berechnung auf eine
Teilmenge der Konturpunkte einschränken: Wird für
MaxNumPoints MaxNumPoints MaxNumPoints MaxNumPoints maxNumPoints max_num_points eine Zahl ungleich -1 übergeben, werden nur
maximal MaxNumPoints MaxNumPoints MaxNumPoints MaxNumPoints maxNumPoints max_num_points gleichmäßig über die Kontur
verteilte Punkte verwendet.
Für Kreisbögen, also offene Konturen, werden die Anfangs- und
Endpunkte bestimmt, indem zu den Anfangs- und Endpunkten der
Eingabekonturen die nächstgelegenen Kreispunkte ermittelt werden.
Zurückgegeben werden dann in StartPhi StartPhi StartPhi StartPhi startPhi start_phi und EndPhi EndPhi EndPhi EndPhi endPhi end_phi
die korrespondierenden Winkel dieser Punkte bezogen auf die
Horizontale, vgl. gen_ellipse_contour_xld gen_ellipse_contour_xld GenEllipseContourXld GenEllipseContourXld GenEllipseContourXld gen_ellipse_contour_xld . Konturen, deren
Anfangs- und Endpunkte weniger als MaxClosureDist MaxClosureDist MaxClosureDist MaxClosureDist maxClosureDist max_closure_dist
voneinander entfernt sind, werden als geschlossen betrachtet und
entsprechend durch einen Kreis (anstelle eines Kreisbogens)
approximiert. Da die Start- und Endpunkte einer Kontur je nach
Vorverarbeitung nicht exakt bekannt sein können, besteht die
Möglichkeit, ClippingEndPoints ClippingEndPoints ClippingEndPoints ClippingEndPoints clippingEndPoints clipping_end_points Punkte am Anfang und Ende
der Kontur von der Kreisanpassung auszuschließen. Sie werden
jedoch weiterhin für die Bestimmung der Anfangs- und Endwinkel
verwendet.
Die notwendige, minimale Anzahl an Konturpunkten zur Anpassung
eines Kreises ist drei.
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).
Wird ohne Parallelisierung verarbeitet.
Parameter
Contours Contours Contours Contours contours contours (input_object) xld_cont(-array) → object HXLDCont HObject HXLDCont Hobject
Eingabekonturen.
Algorithm Algorithm Algorithm Algorithm algorithm algorithm (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Algorithmus zur Kreisanpassung.
Defaultwert:
'algebraic'
"algebraic"
"algebraic"
"algebraic"
"algebraic"
"algebraic"
Werteliste: 'ahuber' "ahuber" "ahuber" "ahuber" "ahuber" "ahuber" , 'algebraic' "algebraic" "algebraic" "algebraic" "algebraic" "algebraic" , 'atukey' "atukey" "atukey" "atukey" "atukey" "atukey" , 'geohuber' "geohuber" "geohuber" "geohuber" "geohuber" "geohuber" , 'geometric' "geometric" "geometric" "geometric" "geometric" "geometric" , 'geotukey' "geotukey" "geotukey" "geotukey" "geotukey" "geotukey"
MaxNumPoints MaxNumPoints MaxNumPoints MaxNumPoints maxNumPoints max_num_points (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Maximale Anzahl Konturpunkte zur Kreisanpassung
(-1 für alle Punkte).
Defaultwert: -1
Restriktion: MaxNumPoints >= 3
MaxClosureDist MaxClosureDist MaxClosureDist MaxClosureDist maxClosureDist max_closure_dist (input_control) real → HTuple float HTuple Htuple (real) (double ) (double ) (double )
Maximaler Abstand zweier Konturendpunkte, so dass die
Kontur noch als geschlossene Kontur akzeptiert wird.
Defaultwert: 0.0
Restriktion: MaxClosureDist >= 0.0
ClippingEndPoints ClippingEndPoints ClippingEndPoints ClippingEndPoints clippingEndPoints clipping_end_points (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Anzahl der Konturpunkte am Anfang und Ende der
Kontur, die für die Kreisanpassung ignoriert werden
sollen.
Defaultwert: 0
Restriktion: ClippingEndPoints >= 0
Iterations Iterations Iterations Iterations iterations iterations (input_control) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Maximale Anzahl von Iterationen bei der gewichteten
Optimierung.
Defaultwert: 3
Restriktion: Iterations >= 0
ClippingFactor ClippingFactor ClippingFactor ClippingFactor clippingFactor clipping_factor (input_control) real → HTuple float HTuple Htuple (real) (double ) (double ) (double )
Clipping Faktor für die Ausreißerdämpfung
(typisch: 1.0 bei Huber und 2.0 bei Tukey).
Defaultwert: 2.0
Wertevorschläge: 1.0, 1.5, 2.0, 2.5, 3.0
Restriktion: ClippingFactor > 0
Row Row Row Row row row (output_control) circle.center.y(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Zeilenkoordinate des Mittelpunktes des Kreises.
Column Column Column Column column column (output_control) circle.center.x(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Spaltenkoordinate des Mittelpunktes des Kreises.
Radius Radius Radius Radius radius radius (output_control) circle.radius(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Radius des Kreises.
StartPhi StartPhi StartPhi StartPhi startPhi start_phi (output_control) angle.rad(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Winkel des Startpunktes [rad].
EndPhi EndPhi EndPhi EndPhi endPhi end_phi (output_control) angle.rad(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Winkel des Endpunktes [rad].
PointOrder PointOrder PointOrder PointOrder pointOrder point_order (output_control) string(-array) → HTuple Sequence[str] HTuple Htuple (string) (string ) (HString ) (char* )
Mathematischer Umlaufsinn.
Werteliste: 'negative' "negative" "negative" "negative" "negative" "negative" , 'positive' "positive" "positive" "positive" "positive" "positive"
Ergebnis
Sind die Parameterwerte korrekt und konnte eine Kreisanpassung
durchgeführt werden, liefert fit_circle_contour_xld fit_circle_contour_xld FitCircleContourXld FitCircleContourXld FitCircleContourXld fit_circle_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>) set_system("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) set_system("no_object_result",<Result>) festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Wenn der Parameter ClippingFactor ClippingFactor ClippingFactor ClippingFactor clippingFactor clipping_factor so klein gewählt worden ist,
dass alle Punkte als Ausreißer klassifiziert werden, wird die Fehlermeldung
3264 zurückgeliefert.
Vorgänger
gen_contours_skeleton_xld gen_contours_skeleton_xld GenContoursSkeletonXld GenContoursSkeletonXld GenContoursSkeletonXld gen_contours_skeleton_xld ,
lines_gauss lines_gauss LinesGauss LinesGauss LinesGauss lines_gauss ,
lines_facet lines_facet LinesFacet LinesFacet LinesFacet lines_facet ,
edges_sub_pix edges_sub_pix EdgesSubPix EdgesSubPix EdgesSubPix edges_sub_pix ,
smooth_contours_xld smooth_contours_xld SmoothContoursXld SmoothContoursXld SmoothContoursXld smooth_contours_xld
Nachfolger
gen_ellipse_contour_xld gen_ellipse_contour_xld GenEllipseContourXld GenEllipseContourXld GenEllipseContourXld gen_ellipse_contour_xld ,
disp_circle disp_circle DispCircle DispCircle DispCircle disp_circle ,
get_points_ellipse get_points_ellipse GetPointsEllipse GetPointsEllipse GetPointsEllipse get_points_ellipse
Siehe auch
fit_ellipse_contour_xld fit_ellipse_contour_xld FitEllipseContourXld FitEllipseContourXld FitEllipseContourXld fit_ellipse_contour_xld ,
fit_line_contour_xld fit_line_contour_xld FitLineContourXld FitLineContourXld FitLineContourXld fit_line_contour_xld ,
fit_rectangle2_contour_xld fit_rectangle2_contour_xld FitRectangle2ContourXld FitRectangle2ContourXld FitRectangle2ContourXld fit_rectangle2_contour_xld
Modul
Foundation