elliptic_axis
— Ermitteln der Parameter der äquivalenten Ellipse.
Der Operator elliptic_axis
berechnet die Radien Ra
und
Rb
sowie die Orientierung Phi
der äquivalenten Ellipse mit der
gleichen Orientierung und dem gleichen Seitenverhältnis wie die Eingaberegion
Regions
.
Mehrere Eingaberegionen können in Form eines Tupels übergeben werden.
Ra
repräsentiert die Länge des Hauptradius der Ellipse während
der Radius Rb
den Nebenradius der Ellipse repräsentiert.
Die Orientierung der Hauptachse bezüglich der x-Achse wird im Winkel
Phi
zurückgegeben und ist im Bogenmaß angegeben. Die Hauptachse
der Ellipse entspricht der Hauptachse des Trägheitsmoments der Eingaberegion.
In der Dokumentation zu diesem Kapitel (Regionen / Merkmale) finden
Sie ein Bild mit Regionen, die sich in Phi
, Ra
und
Rb
unterscheiden.
Berechnung:
Seien die Momente , und
normiert auf die Fläche gegeben (siehe moments_region_2nd
), dann
berechnen sich die Radien Ra
und Rb
zu:
Die Orientierung Phi
ist definiert durch:
Wird mehr als eine Region übergeben, werden die Ergebnisse in Form von Tupeln zurückgeliefert, wobei der Index eines Tupelelements dem Index der zugehörigen Eingabregion entspricht.
Wird eine leere Region übergeben, haben alle Parameter den Wert 0.0,
soweit kein anderes Verhalten eingestellt wurde
(siehe set_system('no_object_result',<Result>)
).
Es ist zu beachten, dass, wie bei allen regionenmomentenbasierten
Operatoren, die Pixel als mathematische Punkte ohne flächenhafte
Ausdehnung betrachtet werden, die durch die Mitte des jeweiligen
Pixels gegeben sind. Daraus folgt, dass Ra
und Rb
auch den Wert 0 annehmen können. Für eine leere Region und
eine Region, die aus genau einem Punkt besteht, wird folglich
Ra
= Rb
= 0 zurückgeliefert.
Weiterhin wird für Regionen, deren Punkte genau auf einer Geraden
liegen (also z.B. ein Pixel hohe horizontale Regionen oder ein Pixel
breite vertikale Regionen) Rb
= 0
zurückgeliefert.
Regions
(input_object) region(-array) →
object
Eingaberegion(en).
Ra
(output_control) real(-array) →
(real)
Hauptradius (normiert auf die Fläche).
Zusicherung: Ra >= 0.0
Rb
(output_control) real(-array) →
(real)
Nebenradius (normiert auf die Fläche).
Zusicherung: Rb >= 0.0 && Rb <= Ra
Phi
(output_control) angle.rad(-array) →
(real)
Winkel zwischen Hauptradius und x-Achse im Bogenmaß.
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
read_image(Image,'fabrik') regiongrowing(Image,Seg,5,5,6,100) elliptic_axis(Seg,Ra,Rb,Phi) area_center(Seg,_,Row,Column) gen_ellipse(Ellipses,Row,Column,Phi,Ra,Rb) dev_set_draw('margin') dev_display(Ellipses)
Sei F die Fläche einer Region, dann beträgt die Laufzeitkomplexität im Mittel O(sqrt(F)).
elliptic_axis
liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe nicht
leer ist. Das Verhalten bei leerer Eingabe (keine Eingaberegionen vorhanden)
lässt sich mittels set_system('no_object_result',<Result>)
festlegen. Das Verhalten bei einer leeren Region (Region ist die leere Menge)
wird mit set_system('empty_region_result',<Result>)
bestimmt.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
threshold
,
regiongrowing
,
connection
smallest_rectangle2
,
orientation_region
moments_region_2nd
,
select_shape
,
set_shape
R. Haralick, L. Shapiro „Computer and Robot Vision“ Addison-Wesley, 1992, pp. 73-75
Foundation