Name
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld — Parameter der äquivalenten Ellipse von Konturen oder Polygonen, die wie
Punktwolken behandelt werden.
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
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld EllipticAxisPointsXld berechnet die Radien (Ra Ra Ra Ra ra ,
Rb Rb Rb Rb rb ) und die Orientierungen (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 ),dann
berechnen sich die Länge der Hauptachse Ra Ra Ra Ra ra und die Länge der
Nebenachse Rb Rb Rb Rb rb zu:
Die Orientierung 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 sollte dann verwendet werden, wenn die
Kontur 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 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 ü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 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 bzw. Polygone.
Hauptradius.
Zusicherung: Ra >= 0.0
Nebenradius.
Zusicherung: Rb >= 0.0 && Rb <= Ra
Winkel zwischen Hauptachse und Spalten-Achse
(Bogenmaß).
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
Sei n die Anzahl der Punkte in der Kontur bzw. dem
Polygon. Dann ist die Laufzeit O(n).
elliptic_axis_points_xld elliptic_axis_points_xld EllipticAxisPointsXld EllipticAxisPointsXld EllipticAxisPointsXld 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>)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
gen_contours_skeleton_xld gen_contours_skeleton_xld GenContoursSkeletonXld GenContoursSkeletonXld GenContoursSkeletonXld ,
edges_sub_pix edges_sub_pix EdgesSubPix EdgesSubPix EdgesSubPix ,
threshold_sub_pix threshold_sub_pix ThresholdSubPix ThresholdSubPix ThresholdSubPix ,
gen_contour_polygon_xld gen_contour_polygon_xld GenContourPolygonXld GenContourPolygonXld GenContourPolygonXld ,
test_self_intersection_xld test_self_intersection_xld TestSelfIntersectionXld TestSelfIntersectionXld TestSelfIntersectionXld
area_center_points_xld area_center_points_xld AreaCenterPointsXld AreaCenterPointsXld AreaCenterPointsXld ,
gen_ellipse_contour_xld gen_ellipse_contour_xld GenEllipseContourXld GenEllipseContourXld GenEllipseContourXld
elliptic_axis_xld elliptic_axis_xld EllipticAxisXld EllipticAxisXld EllipticAxisXld ,
smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 SmallestRectangle2
moments_xld moments_xld MomentsXld MomentsXld MomentsXld ,
smallest_circle_xld smallest_circle_xld SmallestCircleXld SmallestCircleXld SmallestCircleXld ,
smallest_rectangle1_xld smallest_rectangle1_xld SmallestRectangle1Xld SmallestRectangle1Xld SmallestRectangle1Xld ,
smallest_rectangle2_xld smallest_rectangle2_xld SmallestRectangle2Xld SmallestRectangle2Xld SmallestRectangle2Xld ,
shape_trans_xld shape_trans_xld ShapeTransXld ShapeTransXld ShapeTransXld
R. Haralick, L. Shapiro
„Computer and Robot Vision“
Addison-Wesley, 1992, pp. 73-75
Foundation