elliptic_axis_points_xld
— Parameter der äquivalenten Ellipse von Konturen oder Polygonen, die wie
Punktwolken behandelt werden.
elliptic_axis_points_xld
berechnet die Radien (Ra
,
Rb
) und die Orientierungen (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
),dann
berechnen sich die Länge der Hauptachse Ra
und die Länge der
Nebenachse Rb
zu:
Die Orientierung Phi
, also der Winkel zwischen der
Hauptachse und der x- bzw. Spaltenachse, ist definiert durch:
elliptic_axis_points_xld
sollte dann verwendet werden, wenn die
Kontur 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
keine sinnvollen
Ergebnisse. Ob sich die Konturen oder Polygone selbst schneiden, kann
leicht mit 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
abgespeichert.
XLD
(input_object) xld(-array) →
object
Zu untersuchende Konturen bzw. Polygone.
Ra
(output_control) real(-array) →
(real)
Hauptradius.
Zusicherung: Ra >= 0.0
Rb
(output_control) real(-array) →
(real)
Nebenradius.
Zusicherung: Rb >= 0.0 && Rb <= Ra
Phi
(output_control) angle.rad(-array) →
(real)
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
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>:)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
gen_contours_skeleton_xld
,
edges_sub_pix
,
threshold_sub_pix
,
gen_contour_polygon_xld
,
test_self_intersection_xld
area_center_points_xld
,
gen_ellipse_contour_xld
elliptic_axis_xld
,
smallest_rectangle2
moments_xld
,
smallest_circle_xld
,
smallest_rectangle1_xld
,
smallest_rectangle2_xld
,
shape_trans_xld
R. Haralick, L. Shapiro „Computer and Robot Vision“ Addison-Wesley, 1992, pp. 73-75
Foundation