Name
elliptic_axis elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis — Calculate the parameters of the equivalent 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 )
The operator elliptic_axis elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis calculates the radii Ra Ra Ra Ra Ra ra and
Rb Rb Rb Rb Rb rb and the orientation Phi Phi Phi Phi Phi phi of the ellipse having the
same orientation and the same aspect ratio as the input region in Regions Regions Regions Regions Regions regions .
Several input regions can be passed as tuples.
Ra Ra Ra Ra Ra ra represents the main radius of the ellipse whereas the radius
Rb Rb Rb Rb Rb rb represents the secondary radius of the ellipse.
The orientation of the main axis with regard to the x-axis is returned in
Phi Phi Phi Phi Phi phi which is represented in radians.
The principle axis of the ellipse is equivalent to the principle axis of the
inertia moment of the input region.
In the documentation of the operator region_features region_features RegionFeatures region_features RegionFeatures RegionFeatures , you can
find an image illustrating regions which vary in their Phi, Ra and Rb.
Calculation:
If the moments
,
and
are
normalized and passed to the area (see moments_region_2nd moments_region_2nd MomentsRegion2nd moments_region_2nd MomentsRegion2nd MomentsRegion2nd ),
the radii Ra Ra Ra Ra Ra ra and Rb Rb Rb Rb Rb rb are calculated as:
The orientation Phi Phi Phi Phi Phi phi is defined by:
If more than one region is passed, the results are stored in tuples. The index
of an resulting tuple element corresponds to the index of the respective input
region.
If an empty region is passed, all parameters have the value 0.0 if no other
behavior was set
(see 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>) ).
It should be noted that, like for all region-moments-based
operators, the region's pixels are regarded as mathematical,
infinitely small points that are represented by the center of the
pixels. This means that Ra Ra Ra Ra Ra ra and Rb Rb Rb Rb Rb rb can assume the
value 0 . In particular, for an empty region and a region
containing a single point Ra Ra Ra Ra Ra ra = Rb Rb Rb Rb Rb rb = 0
is returned. Furthermore, for regions whose points lie exactly on a
straight line (e.g., one pixel high horizontal regions or one pixel
wide vertical regions), Rb Rb Rb Rb Rb rb = 0 is returned.
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Automatically parallelized on tuple level.
Ra Ra Ra Ra Ra ra (output_control) real(-array) → HTuple HTuple HTuple VARIANT Htuple (real) (double ) (double ) (double ) (double ) (double )
Main radius (normalized to the area).
Assertion: Ra >= 0.0
Rb Rb Rb Rb Rb rb (output_control) real(-array) → HTuple HTuple HTuple VARIANT Htuple (real) (double ) (double ) (double ) (double ) (double )
Secondary radius (normalized to the area).
Assertion: Rb >= 0.0 && Rb <= Ra
Angle between main radius and x-axis in radians.
Assertion: - 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)
If F is the area of a region the mean runtime
complexity is O(sqrt(F)).
The operator elliptic_axis elliptic_axis EllipticAxis elliptic_axis EllipticAxis EllipticAxis returns the value 2 (H_MSG_TRUE) if the input
is not empty. The behavior in case of empty input (no input regions available)
is set via the operator
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>) .
The behavior in case of empty region (the region is the empty set) is set via
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>) .
If necessary an exception is raised.
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