add_metrology_object_genericT_add_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic (Operator)

Name

add_metrology_object_genericT_add_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic — Add a metrology object to a metrology model.

Signature

add_metrology_object_generic( : : MetrologyHandle, Shape, ShapeParam, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index)

Herror T_add_metrology_object_generic(const Htuple MetrologyHandle, const Htuple Shape, const Htuple ShapeParam, const Htuple MeasureLength1, const Htuple MeasureLength2, const Htuple MeasureSigma, const Htuple MeasureThreshold, const Htuple GenParamName, const Htuple GenParamValue, Htuple* Index)

void AddMetrologyObjectGeneric(const HTuple& MetrologyHandle, const HTuple& Shape, const HTuple& ShapeParam, const HTuple& MeasureLength1, const HTuple& MeasureLength2, const HTuple& MeasureSigma, const HTuple& MeasureThreshold, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Index)

Hlong HMetrologyModel::AddMetrologyObjectGeneric(const HTuple& Shape, const HTuple& ShapeParam, const HTuple& MeasureLength1, const HTuple& MeasureLength2, const HTuple& MeasureSigma, const HTuple& MeasureThreshold, const HTuple& GenParamName, const HTuple& GenParamValue) const

Hlong HMetrologyModel::AddMetrologyObjectGeneric(const HString& Shape, const HTuple& ShapeParam, double MeasureLength1, double MeasureLength2, double MeasureSigma, double MeasureThreshold, const HTuple& GenParamName, const HTuple& GenParamValue) const

Hlong HMetrologyModel::AddMetrologyObjectGeneric(const char* Shape, const HTuple& ShapeParam, double MeasureLength1, double MeasureLength2, double MeasureSigma, double MeasureThreshold, const HTuple& GenParamName, const HTuple& GenParamValue) const

Hlong HMetrologyModel::AddMetrologyObjectGeneric(const wchar_t* Shape, const HTuple& ShapeParam, double MeasureLength1, double MeasureLength2, double MeasureSigma, double MeasureThreshold, const HTuple& GenParamName, const HTuple& GenParamValue) const   (Windows only)

static void HOperatorSet.AddMetrologyObjectGeneric(HTuple metrologyHandle, HTuple shape, HTuple shapeParam, HTuple measureLength1, HTuple measureLength2, HTuple measureSigma, HTuple measureThreshold, HTuple genParamName, HTuple genParamValue, out HTuple index)

int HMetrologyModel.AddMetrologyObjectGeneric(HTuple shape, HTuple shapeParam, HTuple measureLength1, HTuple measureLength2, HTuple measureSigma, HTuple measureThreshold, HTuple genParamName, HTuple genParamValue)

int HMetrologyModel.AddMetrologyObjectGeneric(string shape, HTuple shapeParam, double measureLength1, double measureLength2, double measureSigma, double measureThreshold, HTuple genParamName, HTuple genParamValue)

def add_metrology_object_generic(metrology_handle: HHandle, shape: MaybeSequence[str], shape_param: Sequence[Union[int, float]], measure_length_1: Union[int, float], measure_length_2: Union[int, float], measure_sigma: Union[int, float], measure_threshold: Union[int, float], gen_param_name: Sequence[str], gen_param_value: Sequence[Union[float, int, str]]) -> int

Description

add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic adds a metrology object of type ShapeShapeShapeShapeshapeshape to a metrology model and prepares the rectangular measure regions.

For an explanation of the concept of 2D metrology see the introduction of chapter 2D Metrology.

The handle of the model is passed in MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandlemetrology_handle.

ShapeShapeShapeShapeshapeshape specifies which type of object is added to the metrology model. The operator add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic returns the index of the added metrology object in the parameter IndexIndexIndexIndexindexindex. Note that add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic provides the functionality of the operators add_metrology_object_circle_measureadd_metrology_object_circle_measureAddMetrologyObjectCircleMeasureAddMetrologyObjectCircleMeasureAddMetrologyObjectCircleMeasureadd_metrology_object_circle_measure, add_metrology_object_ellipse_measureadd_metrology_object_ellipse_measureAddMetrologyObjectEllipseMeasureAddMetrologyObjectEllipseMeasureAddMetrologyObjectEllipseMeasureadd_metrology_object_ellipse_measure, add_metrology_object_rectangle2_measureadd_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2MeasureAddMetrologyObjectRectangle2MeasureAddMetrologyObjectRectangle2Measureadd_metrology_object_rectangle2_measure and add_metrology_object_line_measureadd_metrology_object_line_measureAddMetrologyObjectLineMeasureAddMetrologyObjectLineMeasureAddMetrologyObjectLineMeasureadd_metrology_object_line_measure in one operator.

Possible shapes

Depending on the object specified in ShapeShapeShapeShapeshapeshape the following values are expected:

'circle'"circle""circle""circle""circle""circle":

The geometric shape of the metrology object of type circle is specified by its center (Row, Column) and radius.

ShapeParamShapeParamShapeParamShapeParamshapeParamshape_param=[Row, Column, Radius]

'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2""rectangle2":

The geometric shape of the metrology object of type rectangle is specified by its center (Row, Column), the orientation of the main axis Phi, and the half edge lengths Length1 and Length2. The input value for Phi is mapped automatically to the interval .

ShapeParamShapeParamShapeParamShapeParamshapeParamshape_param=[Row, Column, Phi, Length1, Length2]

'ellipse'"ellipse""ellipse""ellipse""ellipse""ellipse":

The geometric shape of the metrology object of type ellipse is specified by its center (Row, Column), the orientation of the main axis Phi, the length of the larger half axis Radius1, and the length of the smaller half axis Radius2. The input value for Phi is mapped automatically to the interval .

ShapeParamShapeParamShapeParamShapeParamshapeParamshape_param=[Row, Column, Phi, Radius1, Radius2]

'line'"line""line""line""line""line":

The geometric shape of the metrology object of type line is described by the coordinates of its start point (RowBegin, ColumnBegin) and the coordinates of its end point (RowEnd, ColumnEnd).

ShapeParamShapeParamShapeParamShapeParamshapeParamshape_param=[RowBegin, ColumnBegin, RowEnd, ColumnEnd]

Definition of measure regions

add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic also prepares the rectangular measure regions. The rectangular measure regions lie perpendicular to the boundary of the object. The half edge lengths of the measure regions perpendicular and tangential to the boundary of the object are set in MeasureLength1MeasureLength1MeasureLength1MeasureLength1measureLength1measure_length_1 and MeasureLength2MeasureLength2MeasureLength2MeasureLength2measureLength2measure_length_2. The centers of the measure regions lie on the boundary of the object. The parameter MeasureSigmaMeasureSigmaMeasureSigmaMeasureSigmameasureSigmameasure_sigma specifies a standard deviation that is used by the operator apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_model to smooth the gray values of the image. Salient edges can be selected with the parameter MeasureThresholdMeasureThresholdMeasureThresholdMeasureThresholdmeasureThresholdmeasure_threshold, which constitutes a threshold on the amplitude, i.e., the absolute value of the first derivative of the edge.

Generic parameters

Generic parameters and their values can be specified using GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name and GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value. All generic parameters that are available in the operator set_metrology_object_paramset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParamSetMetrologyObjectParamset_metrology_object_param can also be set in add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic. But note that for a lot of applications the default values are sufficient and no adjustment is necessary. Furthermore, the following values for GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name and GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value are available only for ShapeShapeShapeShapeshapeshape = 'circle'"circle""circle""circle""circle""circle" and 'ellipse'"ellipse""ellipse""ellipse""ellipse""ellipse":

'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi":

The parameter specifies the angle at the start point of a circular or elliptic arc. For an ellipse, the angle at the start point is measured relative to the positive main axis and corresponds to the smallest surrounding circle of the ellipse. The actual start point of the ellipse is the intersection of the ellipse with the orthogonal projection of the corresponding circle point onto the main axis. To create a closed circle or ellipse the value of the parameter 'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi" is set to 0 and the value of the parameter 'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi" is set to (with positive point order). The input value is mapped automatically to the interval .

List of values: 0.0, 0.78, 6.28318

Default value: 0.0

'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi":

The parameter specifies the angle at the end point of a circular or elliptic arc. For an ellipse, the angle at the end point is measured relative to the positive main axis and corresponds to the smallest surrounding circle of the ellipse. The actual end point of the ellipse is the intersection of the ellipse with the orthogonal projection of the corresponding circle point onto the main axis. To create a closed circle or ellipse the value of the parameter 'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi" is set to 0 and the value of the parameter 'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi" is set to (with positive point order). The input value is mapped internally automatically to the interval .

List of values: 0.0, 0.78, 6.28318

Default value: 6.28318

'point_order'"point_order""point_order""point_order""point_order""point_order":

The parameter specifies the direction of the circular or elliptic arc. For the value 'positive'"positive""positive""positive""positive""positive", the arc is defined between 'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi" and 'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi" in mathematically positive direction (counterclockwise). For the value 'negative'"negative""negative""negative""negative""negative", the arc is defined between 'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi" and 'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi" in mathematically negative direction (clockwise).

List of values: 'positive'"positive""positive""positive""positive""positive", 'negative'"negative""negative""negative""negative""negative"

Default value: 'positive'"positive""positive""positive""positive""positive"

Execution Information

This operator modifies the state of the following input parameter:

During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.

Parameters

MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandlemetrology_handle (input_control, state is modified)  metrology_model HMetrologyModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the metrology model.

ShapeShapeShapeShapeshapeshape (input_control)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Type of the metrology object to be added.

Default value: 'circle' "circle" "circle" "circle" "circle" "circle"

List of values: 'circle'"circle""circle""circle""circle""circle", 'ellipse'"ellipse""ellipse""ellipse""ellipse""ellipse", 'line'"line""line""line""line""line", 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2""rectangle2"

ShapeParamShapeParamShapeParamShapeParamshapeParamshape_param (input_control)  attribute.value-array HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Parameters of the metrology object to be added.

MeasureLength1MeasureLength1MeasureLength1MeasureLength1measureLength1measure_length_1 (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Half length of the measure regions perpendicular to the boundary.

Default value: 20.0

Suggested values: 10.0, 20.0, 30.0

Typical range of values: 1.0 ≤ MeasureLength1 MeasureLength1 MeasureLength1 MeasureLength1 measureLength1 measure_length_1 ≤ 511.0 (lin)

Minimum increment: 1.0

Recommended increment: 10.0

MeasureLength2MeasureLength2MeasureLength2MeasureLength2measureLength2measure_length_2 (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Half length of the measure regions tangential to the boundary.

Default value: 5.0

Suggested values: 3.0, 5.0, 10.0

Typical range of values: 1.0 ≤ MeasureLength2 MeasureLength2 MeasureLength2 MeasureLength2 measureLength2 measure_length_2 ≤ 511.0 (lin)

Minimum increment: 1.0

Recommended increment: 10.0

MeasureSigmaMeasureSigmaMeasureSigmaMeasureSigmameasureSigmameasure_sigma (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Sigma of the Gaussian function for the smoothing.

Default value: 1.0

Suggested values: 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 7.0, 10.0

Typical range of values: 0.4 ≤ MeasureSigma MeasureSigma MeasureSigma MeasureSigma measureSigma measure_sigma ≤ 100 (lin)

Minimum increment: 0.01

Recommended increment: 0.1

Restriction: 0.4 <= MeasureSigma && MeasureSigma <= 100

MeasureThresholdMeasureThresholdMeasureThresholdMeasureThresholdmeasureThresholdmeasure_threshold (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Minimum edge amplitude.

Default value: 30.0

Suggested values: 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0

Typical range of values: 1 ≤ MeasureThreshold MeasureThreshold MeasureThreshold MeasureThreshold measureThreshold measure_threshold ≤ 255 (lin)

Minimum increment: 0.5

Recommended increment: 2

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  attribute.name-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Names of the generic parameters.

Default value: []

List of values: 'distance_threshold'"distance_threshold""distance_threshold""distance_threshold""distance_threshold""distance_threshold", 'end_phi'"end_phi""end_phi""end_phi""end_phi""end_phi", 'instances_outside_measure_regions'"instances_outside_measure_regions""instances_outside_measure_regions""instances_outside_measure_regions""instances_outside_measure_regions""instances_outside_measure_regions", 'max_num_iterations'"max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations", 'measure_distance'"measure_distance""measure_distance""measure_distance""measure_distance""measure_distance", 'measure_interpolation'"measure_interpolation""measure_interpolation""measure_interpolation""measure_interpolation""measure_interpolation", 'measure_select'"measure_select""measure_select""measure_select""measure_select""measure_select", 'measure_transition'"measure_transition""measure_transition""measure_transition""measure_transition""measure_transition", 'min_score'"min_score""min_score""min_score""min_score""min_score", 'num_instances'"num_instances""num_instances""num_instances""num_instances""num_instances", 'num_measures'"num_measures""num_measures""num_measures""num_measures""num_measures", 'point_order'"point_order""point_order""point_order""point_order""point_order", 'rand_seed'"rand_seed""rand_seed""rand_seed""rand_seed""rand_seed", 'start_phi'"start_phi""start_phi""start_phi""start_phi""start_phi"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  attribute.value-array HTupleSequence[Union[float, int, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Values of the generic parameters.

Default value: []

Suggested values: 1, 2, 3, 4, 5, 10, 20, 'all'"all""all""all""all""all", 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 'first'"first""first""first""first""first", 'last'"last""last""last""last""last", 'positive'"positive""positive""positive""positive""positive", 'negative'"negative""negative""negative""negative""negative", 'uniform'"uniform""uniform""uniform""uniform""uniform", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor", 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'bicubic'"bicubic""bicubic""bicubic""bicubic""bicubic"

IndexIndexIndexIndexindexindex (output_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Index of the created metrology object.

Example (HDevelop)

create_metrology_model (MetrologyHandle)
read_image (Image, 'fabrik')
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
LinePar := [45,360,415,360]
RectPar1 := [270,232,rad(0),30,25]
RectPar2 := [360,230,rad(0),30,25]
LinePar := [45,360,415,360]
RectPar3 := [245,320,rad(-90),70,35]
* Add two rectangles
add_metrology_object_generic (MetrologyHandle, 'rectangle2', \
                             [RectPar1,RectPar2], 20, 5, 1, 30, [], [], \
                             Indices)
* Add a rectangle and a line
add_metrology_object_generic (MetrologyHandle, ['rectangle2','line'], \
                             [RectPar3,LinePar], 20, 5, 1, 30, [], [], \
                             Index)
get_metrology_object_model_contour (Contour, MetrologyHandle, 'all', 1.5)
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_result_contour (Contour1, MetrologyHandle, 'all', \
                                    'all', 1.5)

Result

If the parameters are valid, the operator add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic returns the value TRUE. If necessary, an exception is raised.

Possible Predecessors

set_metrology_model_image_sizeset_metrology_model_image_sizeSetMetrologyModelImageSizeSetMetrologyModelImageSizeSetMetrologyModelImageSizeset_metrology_model_image_size, set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParamset_metrology_model_param

Possible Successors

align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModelalign_metrology_model, apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_model, set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParamset_metrology_model_param

See also

get_metrology_object_model_contourget_metrology_object_model_contourGetMetrologyObjectModelContourGetMetrologyObjectModelContourGetMetrologyObjectModelContourget_metrology_object_model_contour

Module

2D Metrology