二维计量

算子列表 ↓

本章包含用于二维计量的算子。

二维计量概念

通过二维计量技术,可测量由特定几何基元表示的对象尺寸。可测量的几何形状包括圆、椭圆、矩形和直线。您需要先获取待测对象位置、方向及尺寸的近似值。随后,图像中对象的真实边缘位置将定位于近似对象的边界附近。基于这些边缘位置,系统将优化几何形状的参数以更契合图像数据,最终作为测量结果返回。

对象的形状参数近似值以及控制测量的某些参数存储在称为计量对象的数据结构中。图像中对象的边缘位于所谓的测量区域内。这些矩形区域垂直于计量对象的边界排列。用于调整测量区域尺寸与分布的参数,需与每个计量对象的近似形状参数共同设定。测量执行时,系统将确定所有测量区域内的边缘位置,并通过 RANSAC(Random sample consensus,随机样本一致) 算法将其拟合为几何形状。所有计量对象、测量所需的附加信息及测量结果,均存储于名为计量模型的数据结构中。

( 1) ( 2)
(1)中的几何形状采用二维计量技术(2)进行测量:创建包含 4 个计量对象(蓝色轮廓线)的计量模型。通过各计量对象测量区域(灰色矩形)内的边缘位置(青色叉号标记),可拟合几何形状(绿色轮廓)并查询其参数。如圆所示,每个对象可识别多个实例。本图摘自示例程序 apply_metrology_model.hdev

以下简要描述了使用二维计量技术所需的步骤。

创建计量模型并指定图像尺寸:

首先,必须创建计量模型,使用算子

计量模型作为容器用于容纳一个或多个计量对象。为实现高效测量,创建计量模型后,应指定待测量图像的尺寸,使用算子

提供近似值:

随后,计量对象被添加至计量模型。每个计量对象包含图像中对应目标的近似形状参数,以及控制测量的参数。控制测量的参数包括如指定测量区域尺寸与分布的参数。此外,每个计量对象可调整若干通用参数。计量对象通过以下方式指定:

要目视检查定义的计量对象,可通过算子 get_metrology_object_model_contourget_metrology_object_model_contourGetMetrologyObjectModelContourGetMetrologyObjectModelContourGetMetrologyObjectModelContourget_metrology_object_model_contour 访问其 XLD 轮廓。要目视检查创建的测量区域,可通过算子 get_metrology_object_measuresget_metrology_object_measuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasuresGetMetrologyObjectMeasuresget_metrology_object_measures 访问其 XLD 轮廓。

修改模型参数:

若已执行相机标定,可设置相机参数和测量平面的姿态,通过算子

随后,由 get_metrology_object_resultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResultGetMetrologyObjectResultget_metrology_object_result 返回的测量结果将采用世界坐标系。通过 set_metrology_model_paramset_metrology_model_paramSetMetrologyModelParamSetMetrologyModelParamSetMetrologyModelParamset_metrology_model_param 算子,也可更改计量对象所定义的参考坐标系。。

修改对象参数:

在将计量对象添加到计量模型时,可设置多个参数。其中部分参数后续也可以进行修改,使用算子

对齐计量模型:

要在执行下一次测量之前对计量模型进行平移和旋转,可使用算子

对齐是暂时的,将被下一次对齐所取代。计量模型本身不会改变。请注意,通常通过基于形状的匹配来获取对齐参数。

应用测量:

图像中的实际测量的执行,通过算子

该算子定位测量区域内的边缘,并通过 RANSAC 算法将指定的几何形状拟合到边缘位置。边缘定位采用内部算子 measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_posfuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePosFuzzyMeasurePosfuzzy_measure_pos 实现(参见 一维测量 一章)。后者采用模糊方法,仅当在应用测量前通过 set_metrology_object_fuzzy_paramset_metrology_object_fuzzy_paramSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamSetMetrologyObjectFuzzyParamset_metrology_object_fuzzy_param 置至少一个模糊函数时才会启用。若需返回多个对象形状实例(参见上图),则通用参数 'num_instances'"num_instances""num_instances""num_instances""num_instances""num_instances" 必须设置为所需返回的实例数量。该参数可在添加单个计量对象时设置,也可通过算子 set_metrology_object_paramset_metrology_object_paramSetMetrologyObjectParamSetMetrologyObjectParamSetMetrologyObjectParamset_metrology_object_param 后续配置。

访问结果:

测量完成后,可获取测量结果。可查询对象适配几何形状的参数,通过调用算子

仅查询用于返回结果的边缘及其振幅也通过 get_metrology_object_resultget_metrology_object_resultGetMetrologyObjectResultGetMetrologyObjectResultGetMetrologyObjectResultget_metrology_object_result 实现。

所有定位边缘的行和列坐标均可获取,通过算子

要可视化调整后的几何形状,可获取其 XLD 轮廓,通过算子

其他算子

除上述算子外,您还可以使用 copy_metrology_modelcopy_metrology_modelCopyMetrologyModelCopyMetrologyModelCopyMetrologyModelcopy_metrology_model 复制计量学句柄,使用 write_metrology_modelwrite_metrology_modelWriteMetrologyModelWriteMetrologyModelWriteMetrologyModelwrite_metrology_model 将计量学模型写入文件,使用 read_metrology_modelread_metrology_modelReadMetrologyModelReadMetrologyModelReadMetrologyModelread_metrology_model 从文件中读取模型,并使用 serialize_metrology_modelserialize_metrology_modelSerializeMetrologyModelSerializeMetrologyModelSerializeMetrologyModelserialize_metrology_modeldeserialize_metrology_modeldeserialize_metrology_modelDeserializeMetrologyModelDeserializeMetrologyModelDeserializeMetrologyModeldeserialize_metrology_model 对计量模型进行序列化或反序列化。

此外,您还可以从计量模型中查询各类信息。例如:使用 get_metrology_object_indicesget_metrology_object_indicesGetMetrologyObjectIndicesGetMetrologyObjectIndicesGetMetrologyObjectIndicesget_metrology_object_indices 查询计量对象的索引;使用 get_metrology_model_paramget_metrology_model_paramGetMetrologyModelParamGetMetrologyModelParamGetMetrologyModelParamget_metrology_model_param 查询整个计量模型适用的参数;使用 get_metrology_object_fuzzy_paramget_metrology_object_fuzzy_paramGetMetrologyObjectFuzzyParamGetMetrologyObjectFuzzyParamGetMetrologyObjectFuzzyParamget_metrology_object_fuzzy_param 查询计量模型的模糊参数; 使用 get_metrology_object_num_instancesget_metrology_object_num_instancesGetMetrologyObjectNumInstancesGetMetrologyObjectNumInstancesGetMetrologyObjectNumInstancesget_metrology_object_num_instances 查询计量模型中计量对象的实例数量,以及使用 get_metrology_object_paramget_metrology_object_paramGetMetrologyObjectParamGetMetrologyObjectParamGetMetrologyObjectParamget_metrology_object_param 查询计量模型的当前配置。

此外,您可以使用 reset_metrology_object_paramreset_metrology_object_paramResetMetrologyObjectParamResetMetrologyObjectParamResetMetrologyObjectParamreset_metrology_object_param 重置计量模型的所有参数,或使用 reset_metrology_object_fuzzy_paramreset_metrology_object_fuzzy_paramResetMetrologyObjectFuzzyParamResetMetrologyObjectFuzzyParamResetMetrologyObjectFuzzyParamreset_metrology_object_fuzzy_param 仅重置计量模型中的所有模糊参数和模糊函数。

术语表

以下将阐述二维计量领域中使用的重要术语。

计量模型

包含所有计量对象、测量所需全部信息及测量结果的数据结构。

计量对象

用于二维计量测量的待测对象数据结构。该计量对象由特定几何形状表示,其形状参数大致已知。此外,它还包含控制测量的参数,例如指定测量区域尺寸和分布的参数。

测量区域

垂直于近似对象边界排列的矩形区域。在这些区域内,提取用于获取计量对象精确形状参数的边缘。

计量对象的返回实例

对于每个计量对象,测量结果可能返回该对象的不同实例,例如当近似几何形状的边界附近存在相同形状的平行结构时(参见上图)。返回实例的顺序是任意的,即该顺序不能作为拟合质量的衡量标准。

更多信息

有关二维计量的更多详情,请参阅 “二维测量解决方案指南”


算子列表

add_metrology_object_circle_measureAddMetrologyObjectCircleMeasureadd_metrology_object_circle_measureAddMetrologyObjectCircleMeasureadd_metrology_object_circle_measure添加计量对象圆测量
将圆或圆弧添加到计量模型中。
add_metrology_object_ellipse_measureAddMetrologyObjectEllipseMeasureadd_metrology_object_ellipse_measureAddMetrologyObjectEllipseMeasureadd_metrology_object_ellipse_measure添加计量对象椭圆测量
将椭圆或椭圆弧添加到计量模型中。
add_metrology_object_genericAddMetrologyObjectGenericadd_metrology_object_genericAddMetrologyObjectGenericadd_metrology_object_generic添加计量对象通用
将计量对象添加到计量模型中。
add_metrology_object_line_measureAddMetrologyObjectLineMeasureadd_metrology_object_line_measureAddMetrologyObjectLineMeasureadd_metrology_object_line_measure添加计量对象线测量
在计量模型中添加一条线。
add_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2Measureadd_metrology_object_rectangle2_measureAddMetrologyObjectRectangle2Measureadd_metrology_object_rectangle2_measure添加计量对象矩形2测量
将矩形添加到计量模型中。
align_metrology_modelAlignMetrologyModelalign_metrology_modelAlignMetrologyModelalign_metrology_model对齐计量模型
计量模型的对齐。
apply_metrology_modelApplyMetrologyModelapply_metrology_modelApplyMetrologyModelapply_metrology_model应用计量模型
测量并拟合计量模型中所有计量对象的几何形状。
clear_metrology_modelClearMetrologyModelclear_metrology_modelClearMetrologyModelclear_metrology_model清除计量模型
删除计量模型并释放分配的内存。
clear_metrology_objectClearMetrologyObjectclear_metrology_objectClearMetrologyObjectclear_metrology_object清除计量对象
删除计量对象并释放分配的内存。
copy_metrology_modelCopyMetrologyModelcopy_metrology_modelCopyMetrologyModelcopy_metrology_model复制计量模型
复制计量模型。
create_metrology_modelCreateMetrologyModelcreate_metrology_modelCreateMetrologyModelcreate_metrology_model创建计量模型
创建测量几何形状所需的数据结构。
deserialize_metrology_modelDeserializeMetrologyModeldeserialize_metrology_modelDeserializeMetrologyModeldeserialize_metrology_model反序列化计量模型
反序列化一个序列化的计量模型。
get_metrology_model_paramGetMetrologyModelParamget_metrology_model_paramGetMetrologyModelParamget_metrology_model_param获取计量模型参数
获取对整个计量模型有效的参数。
get_metrology_object_fuzzy_paramGetMetrologyObjectFuzzyParamget_metrology_object_fuzzy_paramGetMetrologyObjectFuzzyParamget_metrology_object_fuzzy_param获取计量对象模糊参数
获取计量模型的模糊参数。
get_metrology_object_indicesGetMetrologyObjectIndicesget_metrology_object_indicesGetMetrologyObjectIndicesget_metrology_object_indices获取计量对象索引
获取计量模型中计量对象的索引。
get_metrology_object_measuresGetMetrologyObjectMeasuresget_metrology_object_measuresGetMetrologyObjectMeasuresget_metrology_object_measures获取计量对象测量
获取计量模型的计量对象的测量区域和边缘位置结果。
get_metrology_object_model_contourGetMetrologyObjectModelContourget_metrology_object_model_contourGetMetrologyObjectModelContourget_metrology_object_model_contour获取计量对象模型轮廓
在图像坐标系中查询计量对象的模型轮廓。
get_metrology_object_num_instancesGetMetrologyObjectNumInstancesget_metrology_object_num_instancesGetMetrologyObjectNumInstancesget_metrology_object_num_instances获取计量对象数量实例
获取计量模型的计量对象的实例数。
get_metrology_object_paramGetMetrologyObjectParamget_metrology_object_paramGetMetrologyObjectParamget_metrology_object_param获取计量对象参数
获取计量模型的一个或多个参数。
get_metrology_object_resultGetMetrologyObjectResultget_metrology_object_resultGetMetrologyObjectResultget_metrology_object_result获取计量对象结果
获取计量模型的测量结果。
get_metrology_object_result_contourGetMetrologyObjectResultContourget_metrology_object_result_contourGetMetrologyObjectResultContourget_metrology_object_result_contour获取计量对象结果轮廓
查询计量对象的结果轮廓。
read_metrology_modelReadMetrologyModelread_metrology_modelReadMetrologyModelread_metrology_model读取计量模型
从文件中读取计量模型。
reset_metrology_object_fuzzy_paramResetMetrologyObjectFuzzyParamreset_metrology_object_fuzzy_paramResetMetrologyObjectFuzzyParamreset_metrology_object_fuzzy_param重置计量对象模糊参数
重置计量模型的所有模糊参数和模糊函数。
reset_metrology_object_paramResetMetrologyObjectParamreset_metrology_object_paramResetMetrologyObjectParamreset_metrology_object_param重置计量对象参数
重置计量模型的所有参数。
serialize_metrology_modelSerializeMetrologyModelserialize_metrology_modelSerializeMetrologyModelserialize_metrology_model序列化计量模型
序列化计量模型。
set_metrology_model_image_sizeSetMetrologyModelImageSizeset_metrology_model_image_sizeSetMetrologyModelImageSizeset_metrology_model_image_size设置计量模型图像大小
设置计量对象的图像大小。
set_metrology_model_paramSetMetrologyModelParamset_metrology_model_paramSetMetrologyModelParamset_metrology_model_param设置计量模型参数
设置对整个计量模型有效的参数。
set_metrology_object_fuzzy_paramSetMetrologyObjectFuzzyParamset_metrology_object_fuzzy_paramSetMetrologyObjectFuzzyParamset_metrology_object_fuzzy_param设置计量对象模糊参数
为计量模型设置模糊参数或模糊函数。
set_metrology_object_paramSetMetrologyObjectParamset_metrology_object_paramSetMetrologyObjectParamset_metrology_object_param设置计量对象参数
为计量模型的计量对象设置参数。
write_metrology_modelWriteMetrologyModelwrite_metrology_modelWriteMetrologyModelwrite_metrology_model写入计量模型
将计量模型写入文件。