Parameters of the equivalent ellipse.
The operator ::elliptic_axis calculates the radii and the orientation of the ellipse having the ``same orientation'' and the ``same side relation'' as the input region. Several input regions can be passed in Regions as tuples. The length of the main radius Ra and the secondary radius Rb as well as the orientation of the main axis with regard to the horizontal (Phi) are determined. The angle is indicated in arc measure.
Calculation:
If the moments M20, M02 and M11 are
normalized to the area (see ::moments_region_2nd),
the radii Ra and Rb are calculated as:
Ra = sqrt(8.0*(M20+M02+sqrt((M20-M02)^2+4.0*M11^2)))/2.0
Rb = sqrt(8.0*(M20+M02-sqrt((M20-M02)^2+4.0*M11^2)))/2.0
The orientation Phi is defined by:
Phi = -0.5 * atan2(2.0 * M11,M02 - M20)
If more than one region is passed the results are stored in tuples, the index of a value in the tuple corresponding to the index of a region in the input.
In case of empty region all parameters have the value 0.0 if no other behavior was set (see ::set_system('no_object_result',<Result>)).
|
Regions (input_object) |
region(-array) -> Hobject: HRegion(Array) |
| Region(s) to be examined. | |
|
Ra (output_control) |
real(-array) -> (HTuple.) double * |
| Main radius (normalized to the area). | |
| Assertion: Ra >= 0.0 | |
|
Rb (output_control) |
real(-array) -> (HTuple.) double * |
| Secondary radius (normalized to the area). | |
| Assertion: (Rb >= 0.0) && (Rb <= Ra) | |
|
Phi (output_control) |
real(-array) -> (HTuple.) double * |
| Angle between main radius and x axis (arc measure). | |
| Assertion: ((- pi / 2) < Phi) && (Phi <= (pi / 2)) | |
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,_t,&Row,&Column); T_gen_ellipse(&Ellipses,Row,Column,Phi,Ra,Rb); set_draw(WindowHandle,"margin"); disp_region(Ellipses,WindowHandle);
If F is the area of a region the mean runtime complexity is O(F).
The operator ::elliptic_axis returns the value 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>). The behavior in case of empty region (the region is the empty set) is set via ::set_system('empty_region_result',<Result>). If necessary an exception handling is raised.
::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
Region processing