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