Name
elliptic_axis elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis — Ermitteln der Parameter der äquivalenten Ellipse.
Herror elliptic_axis (const Hobject Regions , double* Ra , double* Rb , double* Phi )
Herror T_elliptic_axis (const Hobject Regions , Htuple* Ra , Htuple* Rb , Htuple* Phi )
Der Operator elliptic_axis elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis berechnet die Radien Ra Ra Ra Ra Ra ra und
Rb Rb Rb Rb Rb rb sowie die Orientierung Phi Phi Phi Phi Phi phi der äquivalenten Ellipse mit der
gleichen Orientierung und dem gleichen Seitenverhältnis wie die Eingaberegion
Regions Regions Regions Regions Regions regions .
Mehrere Eingaberegionen können in Form eines Tupels übergeben werden.
Ra Ra Ra Ra Ra ra repräsentiert die Länge des Hauptradius der Ellipse während
der Radius Rb Rb Rb Rb Rb rb den Nebenradius der Ellipse repräsentiert.
Die Orientierung der Hauptachse bezüglich der x-Achse wird im Winkel
Phi Phi Phi Phi Phi 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 Phi Phi Phi Phi phi , Ra Ra Ra Ra Ra ra und
Rb Rb Rb Rb Rb rb unterscheiden.
Berechnung:
Seien die Momente
,
und
normiert auf die Fläche gegeben (siehe moments_region_2nd moments_region_2nd MomentsRegion2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd ), 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:
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>) 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>) ).
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 Ra Ra Ra Ra ra und Rb Rb Rb Rb Rb 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 Ra Ra Ra Ra ra = Rb Rb Rb Rb Rb 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 Rb Rb Rb Rb rb = 0
zurückgeliefert.
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Ra Ra Ra Ra Ra ra (output_control) real(-array) → HTuple HTuple HTuple VARIANT Htuple (real) (double ) (double ) (double ) (double ) (double )
Hauptradius (normiert auf die Fläche).
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 (normiert auf die Fläche).
Zusicherung: Rb >= 0.0 && Rb <= Ra
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)
read_image(&Image,"fabrik");
open_window(0,0,-1,-1,0,"visible","",&WindowHandle);
regiongrowing(Image,&Seg,5,5,6.0,100);
T_elliptic_axis(Seg,&Ra,&Rb,&Phi);
T_area_center(Seg,NULL,&Row,&Column);
T_gen_ellipse(&Ellipses,Row,Column,Phi,Ra,Rb);
set_draw(WindowHandle,"margin");
disp_region(Ellipses,WindowHandle);
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)
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)
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)
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 elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis 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>) 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. Das Verhalten bei einer leeren Region (Region ist die leere Menge)
wird mit set_system('empty_region_result',<Result>) set_system("empty_region_result",<Result>) SetSystem("empty_region_result",<Result>) set_system("empty_region_result",<Result>) SetSystem("empty_region_result",<Result>) SetSystem("empty_region_result",<Result>) bestimmt.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
threshold threshold Threshold threshold Threshold Threshold ,
regiongrowing regiongrowing Regiongrowing regiongrowing Regiongrowing Regiongrowing ,
connection connection Connection connection Connection Connection
gen_ellipse gen_ellipse GenEllipse gen_ellipse GenEllipse GenEllipse
smallest_rectangle2 smallest_rectangle2 SmallestRectangle2 smallest_rectangle2 SmallestRectangle2 SmallestRectangle2 ,
orientation_region orientation_region OrientationRegion orientation_region OrientationRegion OrientationRegion
moments_region_2nd moments_region_2nd MomentsRegion2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd ,
select_shape select_shape SelectShape select_shape SelectShape SelectShape ,
set_shape set_shape SetShape set_shape SetShape SetShape
R. Haralick, L. Shapiro
„Computer and Robot Vision“
Addison-Wesley, 1992, pp. 73-75
Foundation