gen_measure_arc ( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle )
Prepare the extraction of straight edges perpendicular to an annular arc.
gen_measure_arc prepares the extraction of straight
edges which lie perpendicular to an annular arc. Here,
annular arc denotes a circular arc with an associated width. The
center of the arc is passed in the parameters CenterRow and
CenterCol, its radius in Radius, the starting
angle in AngleStart, and its angular extent relative to the
starting angle in AngleExtent. If AngleExtent >
0, an arc with counterclockwise orientation is generated, otherwise
an arc with clockwise orientation. The radius of the annular arc,
i.e., half its width, is determined by AnnulusRadius.
The edge extraction algorithm is described in the documentation of
the operator measure_pos. As discussed there, different
types of interpolation can be used for the calculation of the
one-dimensional gray value profile. For Interpolation =
'nearest_neighbor', the gray values in the measurement are
obtained from the gray values of the closest pixel, i.e., by
constant interpolation. For Interpolation =
'bilinear', bilinear interpolation is used, while for
Interpolation = 'bicubic', bicubic interpolation
is used.
With gen_measure_arc, all computations which can be
used for multiple measurements are removed from the actual
measurement. To effect this, an optimized data structure, a
so-called measure object, is constructed and returned in
MeasureHandle. In order to perform the measurement at the
optimum speed, the size of the images for which subsequent
measurements will be made must already be specified in
gen_measure_arc with the parameters Width
and Height. This technique increases the speed of the
actual measurement significantly.
The system parameter 'int_zooming' (see set_system)
affects the accuracy and speed of the calculations used to construct
the measure object. If 'int_zooming' is set to
'true', the internal calculations are performed using fixed
point arithmetic, leading to much shorter execution times. However,
the geometric accuracy is slightly lower in this mode. If
'int_zooming' is set to 'false', the internal
calculations are performed using floating point arithmetic, leading
to the maximum geometric accuracy, but also to significantly
increased execution times.
Parameters
CenterRow (input_control)
|
point.y -> real / integer
|
|
Row coordinate of the center of the arc. |
|
Default value: 100.0 |
|
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 |
|
Typical range of values: 0.0 <= CenterRow <= 511.0 (lin) |
|
Minimum increment: 1.0
|
Recommended increment: 10.0
|
CenterCol (input_control)
|
point.x -> real / integer
|
|
Column coordinate of the center of the arc. |
|
Default value: 100.0 |
|
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 |
|
Typical range of values: 0.0 <= CenterCol <= 511.0 (lin) |
|
Minimum increment: 1.0
|
Recommended increment: 10.0
|
Radius (input_control)
|
number -> real / integer
|
|
Radius of the arc. |
|
Default value: 50.0 |
|
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 |
|
Typical range of values: 0.0 <= Radius <= 511.0 (lin) |
|
Minimum increment: 1.0
|
Recommended increment: 10.0
|
AngleStart (input_control)
|
angle.rad -> real / integer
|
|
Start angle of the arc in radians. |
|
Default value: 0.0 |
|
Suggested values: -3.14159265359, -2.35619449019, -1.5707963268, -0.785398163398, 0.0, 0.785398163398, 1.5707963268, 2.35619449019, 3.14159265359 |
|
Typical range of values: -3.14159265359 <= AngleStart <= 3.14159265359 (lin) |
|
Minimum increment: 0.0314159265359
|
Recommended increment: 0.314159265359
|
AngleExtent (input_control)
|
angle.rad -> real / integer
|
|
Angular extent of the arc in radians. |
|
Default value: 6.28318530718 |
|
Suggested values: -6.28318530718, -5.49778714378, -4.71238898038, -3.926990817, -3.14159265359, -2.35619449019, -1.5707963268, -0.785398163398, 0.785398163398, 1.5707963268, 2.35619449019, 3.14159265359, 3.926990817, 4.71238898038, 5.49778714378, 6.28318530718 |
|
Typical range of values: -6.28318530718 <= AngleExtent <= 6.28318530718 (lin) |
|
Minimum increment: 0.0314159265359
|
Recommended increment: 0.314159265359
|
|
Restriction: AngleExtent != 0.0 |
AnnulusRadius (input_control)
|
number -> real / integer
|
|
Radius (half width) of the annulus. |
|
Default value: 10.0 |
|
Suggested values: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 |
|
Typical range of values: 0.0 <= AnnulusRadius <= 511.0 (lin) |
|
Minimum increment: 1.0
|
Recommended increment: 10.0
|
|
Restriction: AnnulusRadius <= Radius |
Width (input_control)
|
extent.x -> integer
|
|
Width of the image to be processed subsequently. |
|
Default value: 512 |
|
Suggested values: 128, 160, 192, 256, 320, 384, 512, 640, 768 |
|
Typical range of values: 0 <= Width <= 1024 (lin) |
|
Minimum increment: 1
|
Recommended increment: 16
|
Height (input_control)
|
extent.y -> integer
|
|
Height of the image to be processed subsequently. |
|
Default value: 512 |
|
Suggested values: 120, 128, 144, 240, 256, 288, 480, 512, 576 |
|
Typical range of values: 0 <= Height <= 1024 (lin) |
|
Minimum increment: 1
|
Recommended increment: 16
|
Interpolation (input_control)
|
string -> string
|
|
Type of interpolation to be used. |
|
Default value: 'nearest_neighbor' |
|
List of values: 'nearest_neighbor', 'bilinear', 'bicubic' |
MeasureHandle (output_control)
|
measure_id -> integer
|
|
Measure object handle. |
Result
If the parameter values are correct, the operator
gen_measure_arc returns the value 2 (H_MSG_TRUE). Otherwise an
exception handling is raised.
Parallelization Information
gen_measure_arc is reentrant and processed without parallelization.
Possible Predecessors
draw_circle
Possible Successors
measure_pos,
measure_pairs,
fuzzy_measure_pos,
fuzzy_measure_pairs,
fuzzy_measure_pairing
Alternatives
edges_sub_pix
See also
gen_measure_rectangle2
Module
Sub-pixel operators
Copyright © 1996-2005 MVTec Software GmbH