Name
elliptic_axis_xld elliptic_axis_xld EllipticAxisXld elliptic_axis_xld EllipticAxisXld EllipticAxisXld — Parameter der äquivalenten Ellipse von Konturen oder Polygonen.
Herror elliptic_axis_xld (const Hobject XLD , double* Ra , double* Rb , double* Phi )
Herror T_elliptic_axis_xld (const Hobject XLD , Htuple* Ra , Htuple* Rb , Htuple* Phi )
Herror elliptic_axis_xld (Hobject XLD , double* Ra , double* Rb , double* Phi )
Herror elliptic_axis_xld (Hobject XLD , HTuple* Ra , HTuple* Rb , HTuple* Phi )
double HXLD ::EllipticAxisXld (double* Rb , double* Phi ) const
HTuple HXLDArray ::EllipticAxisXld (HTuple* Rb , HTuple* Phi ) const
void EllipticAxisXld (const HObject& XLD , HTuple* Ra , HTuple* Rb , HTuple* Phi )
HTuple HXLD ::EllipticAxisXld (HTuple* Rb , HTuple* Phi ) const
double HXLD ::EllipticAxisXld (double* Rb , double* Phi ) const
elliptic_axis_xld elliptic_axis_xld EllipticAxisXld elliptic_axis_xld EllipticAxisXld EllipticAxisXld berechnet die Radien und die Orientierungen
der Ellipsen, die die gleiche Orientierung und das gleiche
Seitenverhältnis wie die jeweiligen Eingabekonturn bzw. Eingabepolygone
haben.
Es wird die Länge der Hauptachse Ra Ra Ra Ra Ra ra und der Nebenachse
Rb Rb Rb Rb Rb rb sowie die Orientierung der Hauptachse bezüglich der
Horizontalen (Phi Phi Phi Phi Phi phi ) bestimmt. Der Winkel wird dabei im
Bogenmaß angegeben. Es wird vorausgesetzt, dass die Konturen bzw. die
Polygone geschlossen sind. Ist das nicht der Fall, werden sie künstlich
geschlossen.
Berechnung:
Seien die Momente
,
und
normiert auf die Fläche gegeben (siehe moments_xld moments_xld MomentsXld moments_xld MomentsXld MomentsXld ), dann
berechnen sich die Radien Ra Ra Ra Ra Ra ra und Rb Rb Rb Rb Rb rb zu:
Die Orientierung Phi Phi Phi Phi Phi phi ist definiert durch:
Es ist zu beachten, dass elliptic_axis_xld elliptic_axis_xld EllipticAxisXld elliptic_axis_xld EllipticAxisXld EllipticAxisXld nur dann
sinnvolle Ergebnisse liefert, falls die Kontur oder das Polygon eine
Fläche in der Ebene einschließt. Insbesondere darf sich die Kontur
oder das Polygon nicht selbst schneiden. Dies ist insbesondere dann
zu beachten, wenn offene Konturen und Polygone übergeben werden, da
diese automatisch geschlossen werden, was dazu führen kann, dass sich
die Kontur oder das Polygon selbst schneidet. Ob sich die Konturen
oder Polygone selbst schneiden, kann leicht mit
test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld überprüft werden. Falls sich die
Kontur oder das Polygon selbst schneidet, können sinnvolle Werte
für die Ellipsenparameter mit elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld
berechnet werden.
Wird mehr als eine Kontur oder ein Polygon übergeben, dann werden
die Ergebnisse in Tupeln in der Reihenfolge ihrer entsprechenden Konturen
bzw. Polygone in XLD XLD XLD XLD XLD XLD abgespeichert.
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Zu untersuchende Konturen oder Polygone.
Ra Ra Ra Ra Ra ra (output_control) real(-array) → HTuple HTuple HTuple VARIANT Htuple (real) (double ) (double ) (double ) (double ) (double )
Hauptradius.
Zusicherung: Ra >= 0.0
Rb Rb Rb Rb Rb rb (output_control) real(-array) → HTuple HTuple HTuple VARIANT Htuple (real) (double ) (double ) (double ) (double ) (double )
Nebenradius.
Zusicherung: Rb >= 0.0 && Rb <= Ra
Winkel zwischen Hauptachse und x-Achse
(Bogenmaß).
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
Sei N die Anzahl der Punkte in der Kontur bzw. im Polygon, dann beträgt
die Laufzeitkomplexität O(N).
elliptic_axis_xld elliptic_axis_xld EllipticAxisXld elliptic_axis_xld EllipticAxisXld EllipticAxisXld liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe
nicht leer ist. Das Verhalten bei leerer Eingabe lässt sich
mittels set_system(::'no_object_result',<Result>:) set_system("no_object_result",<Result>) SetSystem("no_object_result",<Result>) set_system("no_object_result",<Result>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
gen_contours_skeleton_xld gen_contours_skeleton_xld GenContoursSkeletonXld gen_contours_skeleton_xld GenContoursSkeletonXld GenContoursSkeletonXld ,
edges_sub_pix edges_sub_pix EdgesSubPix edges_sub_pix EdgesSubPix EdgesSubPix ,
threshold_sub_pix threshold_sub_pix ThresholdSubPix threshold_sub_pix ThresholdSubPix ThresholdSubPix ,
gen_contour_polygon_xld gen_contour_polygon_xld GenContourPolygonXld gen_contour_polygon_xld GenContourPolygonXld GenContourPolygonXld ,
test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld
area_center_xld area_center_xld AreaCenterXld area_center_xld AreaCenterXld AreaCenterXld ,
gen_ellipse_contour_xld gen_ellipse_contour_xld GenEllipseContourXld gen_ellipse_contour_xld GenEllipseContourXld GenEllipseContourXld
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld ,
smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2
moments_xld moments_xld MomentsXld moments_xld MomentsXld MomentsXld ,
smallest_circle_xld smallest_circle_xld SmallestCircleXld smallest_circle_xld SmallestCircleXld SmallestCircleXld ,
smallest_rectangle1_xld smallest_rectangle1_xld SmallestRectangle1Xld smallest_rectangle1_xld SmallestRectangle1Xld SmallestRectangle1Xld ,
smallest_rectangle2_xld smallest_rectangle2_xld SmallestRectangle2Xld smallest_rectangle2_xld SmallestRectangle2Xld SmallestRectangle2Xld ,
shape_trans_xld shape_trans_xld ShapeTransXld shape_trans_xld ShapeTransXld ShapeTransXld
R. Haralick, L. Shapiro
„Computer and Robot Vision“
Addison-Wesley, 1992, pp. 73-75
Foundation