apply_metrology_modelT_apply_metrology_modelApplyMetrologyModelApplyMetrologyModelapply_metrology_model应用计量模型(算子)
名称
apply_metrology_modelT_apply_metrology_modelApplyMetrologyModelApplyMetrologyModelapply_metrology_model — 测量并拟合计量模型中所有计量对象的几何形状。
签名
描述
apply_metrology_modelapply_metrology_modelApplyMetrologyModelApplyMetrologyModelApplyMetrologyModelapply_metrology_model 在 ImageImageImageImageimageimage 中定位计量模型 MetrologyHandleMetrologyHandleMetrologyHandleMetrologyHandlemetrologyHandlemetrology_handle 的计量对象测量区域内的边缘,并将相应的几何形状拟合到生成的边缘位置。
有关二维计量概念的说明,请参阅 二维计量 一章的引言。
测量过程如下:
确定边缘位置
在计量对象的测量区域内,确定边缘的位置。边缘位置通过内部算子 measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_pos 或 fuzzy_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
模块
二维计量