apply_metrology_modelT_apply_metrology_modelApplyMetrologyModelApplyMetrologyModelapply_metrology_model应用计量模型(算子)

名称

apply_metrology_modelT_apply_metrology_modelApplyMetrologyModelApplyMetrologyModelapply_metrology_model — 测量并拟合计量模型中所有计量对象的几何形状。

签名

apply_metrology_model(Image : : MetrologyHandle : )

Herror T_apply_metrology_model(const Hobject Image, const Htuple MetrologyHandle)

void ApplyMetrologyModel(const HObject& Image, const HTuple& MetrologyHandle)

void HMetrologyModel::ApplyMetrologyModel(const HImage& Image) const

static void HOperatorSet.ApplyMetrologyModel(HObject image, HTuple metrologyHandle)

void HMetrologyModel.ApplyMetrologyModel(HImage image)

def apply_metrology_model(image: HObject, metrology_handle: HHandle) -> None

描述

apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_modelImageImageImageImageimageimage 中定位计量模型 MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandlemetrology_handle 的计量对象测量区域内的边缘,并将相应的几何形状拟合到生成的边缘位置。

有关二维计量概念的说明,请参阅 二维计量 一章的引言。

测量过程如下:

确定边缘位置

在计量对象的测量区域内,确定边缘的位置。边缘位置通过内部算子 measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_posfuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePosFuzzyMeasurePosfuzzy_measure_pos 进行计算。当计量对象通过 set_metrology_object_fuzzy_paramset_metrology_object_fuzzy_paramSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamset_metrology_object_fuzzy_param 设置了至少一个模糊函数时,则使用后者。

将几何形状拟合到边缘位置

计量对象的几何形状经过调整,以最佳方式契合生成的边缘位置。具体而言,采用RANSAC算法选取一组初始边缘位置,这些位置对于创建特定几何形状的实例至关重要——例如,对于圆形类型的计量对象,需选取三个边缘位置。随后,确定那些靠近几何形状对应实例的边缘位置,若合适的边缘位置数量充足(参见 set_metrology_object_paramset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParamSetMetrologyObjectParamset_metrology_object_param 中的通用参数 'min_score'"min_score""min_score""min_score""min_score""min_score"),则选取这些位置用于几何形状的最终拟合。若合适的边界位置数量不足,则测试另一组初始边界位置,直至找到合适的边界位置组合。最终选定的边界位置将用于几何形状拟合,其参数将存储于计量模型中。请注意,如果通用参数 'num_instances'"num_instances""num_instances""num_instances""num_instances""num_instances" 的值大于 1,则每个计量对象将返回多个实例。此参数及其他参数可在将计量对象添加至计量模型时设置,也可通过算子 set_metrology_object_paramset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParamSetMetrologyObjectParamset_metrology_object_param 单独设置。请注意,对于每个计量对象实例,均采用不同的初始边缘位置,即第二个实例基于尚未用于第一个实例拟合的边缘位置。当找到 'num_instances'"num_instances""num_instances""num_instances""num_instances""num_instances" 个实例时,或剩余的合适初始边位置数量不足以继续拟合几何形状时,算法即停止。

访问结果

测量结果可通过 get_metrology_object_resultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResultGetMetrologyObjectResultget_metrology_object_result 从计量模型中获取。请注意,若返回多个对象实例,则返回实例的顺序是随机的,因此无法衡量拟合的质量。请注意,如果通过 set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParamset_metrology_model_param 为计量模型设置了 'camera_param'"camera_param""camera_param""camera_param""camera_param""camera_param"'plane_pose'"plane_pose""plane_pose""plane_pose""plane_pose""plane_pose" 参数,则拟合将采用世界坐标系。否则,将使用图像坐标。可通过 get_metrology_object_result_contourget_metrology_object_result_contourGetMetrologyObjectResultContourGetMetrologyObjectResultContourGetMetrologyObjectResultContourget_metrology_object_result_contour 获取被测物体的 XLD 轮廓。

注意

请注意,若输入 ImageImageImageImageimageimage 的宽度或高度与计量对象中存储的宽度和高度不一致(例如通过 set_metrology_model_image_sizeset_metrology_model_image_sizeSetMetrologyModelImageSizeSetMetrologyModelImageSizeSetMetrologyModelImageSizeset_metrology_model_image_size 设置),则必须重新计算所有计量对象的测量区域。这将导致算子的执行时间延长。

请注意,出于效率考虑,apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_model 会忽略 ImageImageImageImageimageimage 的定义域(另请参阅 measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_pos)。

执行信息

此算子修改后续输入参数的状态:

在执行此算子时,若该参数值需在多个线程间使用,则必须对其访问进行同步。

参数

ImageImageImageImageimageimage (输入对象)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2 / real)

输入图像。

MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandlemetrology_handle (输入控制,状态被修改)  metrology_model HMetrologyModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

计量模型的句柄。

结果

如果参数有效,算子 apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_model 返回值 2 ( H_MSG_TRUE )。如有必要,则抛出异常。

可能的前趋

add_metrology_object_genericadd_metrology_object_genericAddMetrologyObjectGenericAddMetrologyObjectGenericAddMetrologyObjectGenericadd_metrology_object_generic, 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_line_measureadd_metrology_object_line_measureAddMetrologyObjectLineMeasureAddMetrologyObjectLineMeasureAddMetrologyObjectLineMeasureadd_metrology_object_line_measure, add_metrology_object_rectangle2_measureadd_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2MeasureAddMetrologyObjectRectangle2MeasureAddMetrologyObjectRectangle2Measureadd_metrology_object_rectangle2_measure, align_metrology_modelalign_metrology_modelAlignMetrologyModelAlignMetrologyModelAlignMetrologyModelalign_metrology_model, set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParamset_metrology_model_param, set_metrology_object_paramset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParamSetMetrologyObjectParamset_metrology_object_param

可能的后继

get_metrology_object_resultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResultGetMetrologyObjectResultget_metrology_object_result, get_metrology_object_result_contourget_metrology_object_result_contourGetMetrologyObjectResultContourGetMetrologyObjectResultContourGetMetrologyObjectResultContourget_metrology_object_result_contour, get_metrology_object_measuresget_metrology_object_measuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasuresget_metrology_object_measures

另见

set_metrology_object_fuzzy_paramset_metrology_object_fuzzy_paramSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamset_metrology_object_fuzzy_param, read_metrology_modelread_metrology_modelReadMetrologyModelReadMetrologyModelReadMetrologyModelread_metrology_model, write_metrology_modelwrite_metrology_modelWriteMetrologyModelWriteMetrologyModelWriteMetrologyModelwrite_metrology_model

模块

二维计量