【Halcon&二维测量】——2D计量模型

2D计量

2D 计量的概念

        通过二维计量,可以测量用特定几何体表示的物体的尺寸。可以测量的几何形状包括圆圈、椭圆、矩形和线条。我们需要测量对象的位置、方向和尺寸的近似值。然后,图像中对象的实际边缘位置位于近似对象的边界附近。通过这些边缘位置,对几何形状的参数进行优化,以更好地适应图像数据,并作为测量结果返回。

        对象形状参数的近似值以及控制测量的某些参数存储在称为计量对象的数据结构中。图像中对象的边缘位于所谓的测量区域内。这些是垂直于计量对象边界排列的矩形区域。调整测量区域的尺寸和分布的参数与每个计量对象的近似形状参数一起指定。应用测量时,使用 RANSAC 算法确定所有测量区域内的边缘位置并拟合成几何形状。所有计量对象、测量所需的所有进一步信息以及测量结果都存储在称为计量模型的数据结构中。

【Halcon&二维测量】——2D计量模型_第1张图片
(1) 中的几何形状使用 2D 计量 测量
(2): 创建一个含有 4 个计量对象(蓝色轮廓)的计量模型。使用位于测量区域(灰色矩形)   内的每个计量对象的边缘位置(青色十字),适应几何形状(绿色轮廓),并可以查询其参           数。如圆所示,每个对象可以找到多个实例。图像来自:apply_metrology_model.hdev。

2D计量简述步骤,如下所示:

创建计量模型并指定图像大小:

          首先,必须使用create_metrology_model.创建计量模型。

          计量模型用作一个或多个计量对象的容器。为了进行有效的测量,在创建计量模型后,      应使用set_metrology_model_image_size指定执行测量的图像大小。

提供近似值:

         然后,计量对象被添加到计量模型中。每个计量对象包括图像中相应对象的大致形状参数和控制测量的参数。控制测量的参数包括指定测量区域尺寸和分布的参数。此外,还可以针对每个计量对象调整几个通用参数。计量对象用下列算子指定:

  • add_metrology_object_circle_measure  指定圆圈,

  • add_metrology_object_ellipse_measure指定椭圆,

  • add_metrology_object_rectangle2_measure指定矩形,

  • add_metrology_object_line_measure指定线。

  • add_metrology_object_generic允许使用一个算子创建不同形状的计量对象(例如椭圆、圆等)。

        要更直观的查看定义的计量对象,可以使用get_metrology_object_model_contour算子访问其 XLD 轮廓;

        若要直观的查看创建的测量区域,可以使用get_metrology_object_measures算子访问其 XLD 轮廓.

修改模型参数:

       如果已执行了相机标定,则摄像机参数和测量平面的姿态可以用set_metrology_model_param来设置。

       然后,get_metrology_object_result返回的测量结果将是世界坐标。定义度量对象的参考坐标系统也可以使用set_metrology_model_param进行更改。

修改对象参数:

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

匹配计量模型:

       要在进行下一次测量之前平移和旋转计量模型,可以使用算子align_metrology_model。校准是暂时的,会被下一个校准取代。计量模型本身没有改变。请注意,校准参数通常是使用基于形状的匹配获得的。

应用测量:

       使用apply_metrology_model对图像进行实际测量

       该算子在测量区域内定位边缘,并使用 RANSAC 算法将指定的几何形状与边缘位置进行配合。使用measure_pos或fuzzy_measure_pos(另见第1章测量)来定位这些边缘。后者使用模糊方法,在应用测量之前通过set_metrology_object_fuzzy_param设置至少一个模糊函数来使用。如果需要返回对象形状的多个实例(上图比较),则通用参数"num_instances"必须设置为应返回的实例数。可以在添加单个计量对象或之后与使用算子set_metrology_object_param 设置该参数

访问结果:

       测量后,可以访问结果。可以使用算子get_metrology_object_result 获取匹配到的计量模型的测量结果,如几何图形参数等。  

       使用get_metrology_object_result 获取返回结果中的边缘及它们的振幅。

        使用get_metrology_object_measures可以获取所有定位边的行列坐标 。

       想要显现匹配到的几何图形,可以使用get_metrology_object_result_contour来获取它们的XLD轮廓。

销毁计量对象句柄:

        当不需要使用计量模型时,可以使用clear_metrology_model来释放该计量模型的句柄。

其他算子:

           除了上述算子,还可以复制计量句柄(copy_metrology_model),保存计量模型(write_metrology_model)到文件,再次使用从文件中读取模型(read_metrology_model),并序列化(serialize_metrology_model)或反序列化(deserialize_metrology_model)一个计量模型。

           此外,还可以从计量模型中查询各种信息。例如:可以使用get_metrology_object_indices查询计量对象的索引,使用get_metrology_model_param查询对整个计量模型有效的参数,使用get_metrology_object_fuzzy_param查询计量模型的模糊参数

         使用get_metrology_object_num_instances查询计量模型的计量对象的实例数量并使用get_metrology_object_param查询计量模型的当前配置。

         此外,可以使用reset_metrology_object_param重置计量模型的所有参数,或者使用reset_metrology_object_fuzzy_param只重置计量模型的所有模糊参数和模糊函数。

Glossary:术语表

下述是在 2D 计量中使用的最重要的术语。

metrology model:计量模型

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

metrology object:计量对象

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

measure regions:测量区域

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

returned instance of a metrology object:返回的计量对象实例

          对于每个计量对象,可以通过测量返回对象的不同实例,例如,如果在近似几何形状的边界附近存在相同形状的平行结构(见上图)。返回实例的顺序是任意的,即,它不能衡量配件的质量。

算子列表

add_metrology_object_circle_measure ——在计量模型中添加一个圆圈或圆形弧线。

add_metrology_object_ellipse_measure——在计量模型中添加椭圆或椭圆弧。

add_metrology_object_generic——将计量对象添加到计量模型中。

add_metrology_object_line_measure——在计量模型中添加一条线。

add_metrology_object_rectangle2_measure——在计量模型中添加矩形。

align_metrology_model——计量模型的对齐/校准。

apply_metrology_model——测量并匹配计量模型中所有计量对象的几何形状。

clear_metrology_model——删除计量模型并释放分配的内存。

clear_metrology_object——删除计量对象并释放分配的内存。

copy_metrology_model——复制计量模型。

create_metrology_model——创建测量几何形状所需的数据结构。

deserialize_metrology_model——取消序列化计量模型。

get_metrology_model_param——获取适用于整个计量模型的参数。

get_metrology_object_fuzzy_param——获取地铁模型的模糊参数。

get_metrology_object_indices——获取计量模型的计量对象指数。

get_metrology_object_measures——获取计量模型计量对象的测量区域和边缘位置结果。

get_metrology_object_model_contour——在图像坐标中查询计量对象的模型轮廓。

get_metrology_object_num_instances——获取计量模型的计量对象实例数。

get_metrology_object_param——获取一计量模型的一个或多个参数。

get_metrology_object_result——获取计量模型的测量结果。

get_metrology_object_result_contour——查询计量对象的结果轮廓。

read_metrology_model——从文件中读取计量模型。

reset_metrology_object_fuzzy_param——重置计量模型的所有模糊参数和模糊功能。

reset_metrology_object_param——重置计量模型的所有参数。

serialize_metrology_model——序列化计量模型。

set_metrology_model_image_size——设置计量对象图像的大小。

set_metrology_model_param——设置适用于整个计量模型的参数。

set_metrology_object_fuzzy_param——为计量模型设置模糊参数或模糊功能。

set_metrology_object_param——计量模型的计量对象设置参数。

write_metrology_model——将计量模型写到文件中。

你可能感兴趣的:(Halcon视觉库,Halcon,二维测量)