elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld elliptic_axis_points_xld (Operator)
Name
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld elliptic_axis_points_xld — Parameter der äquivalenten Ellipse von Konturen oder Polygonen, die wie
Punktwolken behandelt werden.
Signatur
Herror elliptic_axis_points_xld (const Hobject XLD , double* Ra , double* Rb , double* Phi )
Herror T_elliptic_axis_points_xld (const Hobject XLD , Htuple* Ra , Htuple* Rb , Htuple* Phi )
void EllipticAxisPointsXld (const HObject& XLD , HTuple* Ra , HTuple* Rb , HTuple* Phi )
HTuple HXLD ::EllipticAxisPointsXld (HTuple* Rb , HTuple* Phi ) const
double HXLD ::EllipticAxisPointsXld (double* Rb , double* Phi ) const
def elliptic_axis_points_xld (xld : HObject) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]
def elliptic_axis_points_xld_s (xld : HObject) -> Tuple[float, float, float]
Beschreibung
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld EllipticAxisPointsXld elliptic_axis_points_xld berechnet die Radien (Ra Ra Ra Ra ra ra ,
Rb Rb Rb Rb rb rb ) und die Orientierungen (Phi Phi Phi Phi phi phi , im Bogenmaß) der
Ellipsen, die die gleiche Orientierung und das
gleiche Seitenverhältnis wie die von den Eingabekonturen oder -polygonen
definierten Punktwolken haben. (d.h. die Reihenfolge der Kontur- oder
Polygonpunkte wird nicht berücksichtigt). Bei
geschlossenen Konturen oder Polygonen (Anfangspunkt = Endpunkt) wird
der Endpunkt der Kontur oder des Polygons nicht berücksichtigt, da
er sonst doppeltes Gewicht erhielte.
Berechnung:
Seien die Momente
,
und
normiert auf die Fläche gegeben (siehe moments_points_xld moments_points_xld MomentsPointsXld MomentsPointsXld MomentsPointsXld moments_points_xld ),dann
berechnen sich die Länge der Hauptachse Ra Ra Ra Ra ra ra und die Länge der
Nebenachse Rb Rb Rb Rb rb rb zu:
Die Orientierung Phi Phi Phi Phi phi phi , also der Winkel zwischen der
Hauptachse und der x- bzw. Spaltenachse, ist definiert durch:
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld EllipticAxisPointsXld elliptic_axis_points_xld sollte dann verwendet werden, wenn die
Kontur XLD XLD XLD XLD XLD xld entweder nicht kreuzungsfrei ist oder nicht
kreuzungsfrei durch eine Line vom End- zum Anfangspunkt geschlossen werden
kann. In diesem Fall liefert elliptic_axis_xld elliptic_axis_xld EllipticAxisXld EllipticAxisXld EllipticAxisXld elliptic_axis_xld keine sinnvollen
Ergebnisse. Ob sich die Konturen oder Polygone selbst schneiden, kann
leicht mit test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld TestSelfIntersectionXld test_self_intersection_xld überprüft werden.
Wird mehr als eine Kontur oder ein Polygon übergeben, dann werden
die Ergebnisse in Tupeln in der gleichen Reihenfolge wie die
entsprechenden Konturen bzw. Polygone in XLD XLD XLD XLD XLD xld abgespeichert.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Parameter
XLD XLD XLD XLD XLD xld (input_object) xld(-array) → object HXLD HObject HXLD Hobject
Zu untersuchende Konturen bzw. Polygone.
Ra Ra Ra Ra ra ra (output_control) real(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Hauptradius.
Zusicherung: Ra >= 0.0
Rb Rb Rb Rb rb rb (output_control) real(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Nebenradius.
Zusicherung: Rb >= 0.0 && Rb <= Ra
Phi Phi Phi Phi phi phi (output_control) angle.rad(-array) → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Winkel zwischen Hauptachse und Spalten-Achse
(Bogenmaß).
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
Komplexität
Sei n die Anzahl der Punkte in der Kontur bzw. dem
Polygon. Dann ist die Laufzeit O(n).
Ergebnis
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld EllipticAxisPointsXld elliptic_axis_points_xld 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>) SetSystem("no_object_result",<Result>) SetSystem("no_object_result",<Result>) set_system("no_object_result",<Result>)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
Vorgänger
gen_contours_skeleton_xld gen_contours_skeleton_xld GenContoursSkeletonXld GenContoursSkeletonXld GenContoursSkeletonXld gen_contours_skeleton_xld ,
edges_sub_pix edges_sub_pix EdgesSubPix EdgesSubPix EdgesSubPix edges_sub_pix ,
threshold_sub_pix threshold_sub_pix ThresholdSubPix ThresholdSubPix ThresholdSubPix threshold_sub_pix ,
gen_contour_polygon_xld gen_contour_polygon_xld GenContourPolygonXld GenContourPolygonXld GenContourPolygonXld gen_contour_polygon_xld ,
test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld TestSelfIntersectionXld test_self_intersection_xld
Nachfolger
area_center_points_xld area_center_points_xld AreaCenterPointsXld AreaCenterPointsXld AreaCenterPointsXld area_center_points_xld ,
gen_ellipse_contour_xld gen_ellipse_contour_xld GenEllipseContourXld GenEllipseContourXld GenEllipseContourXld gen_ellipse_contour_xld
Alternativen
elliptic_axis_xld elliptic_axis_xld EllipticAxisXld EllipticAxisXld EllipticAxisXld elliptic_axis_xld ,
smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 SmallestRectangle2 smallest_rectangle2
Siehe auch
moments_xld moments_xld MomentsXld MomentsXld MomentsXld moments_xld ,
smallest_circle_xld smallest_circle_xld SmallestCircleXld SmallestCircleXld SmallestCircleXld smallest_circle_xld ,
smallest_rectangle1_xld smallest_rectangle1_xld SmallestRectangle1Xld SmallestRectangle1Xld SmallestRectangle1Xld smallest_rectangle1_xld ,
smallest_rectangle2_xld smallest_rectangle2_xld SmallestRectangle2Xld SmallestRectangle2Xld SmallestRectangle2Xld smallest_rectangle2_xld ,
shape_trans_xld shape_trans_xld ShapeTransXld ShapeTransXld ShapeTransXld shape_trans_xld
Literatur
R. Haralick, L. Shapiro
„Computer and Robot Vision“
Addison-Wesley, 1992, pp. 73-75
Modul
Foundation