机器人
返回首页

Halcon知识:矩形测量

2023-04-23 来源:机器人及PLC自动化应用

首先给出一个问题:如下边一个图片中,如何获取矩形的测量,也就是说,需要更准确的矩形位置参数?halcon提供的一般方法是,首先基本将矩形框住,然后用测量对象进行精确测量。因此,该矩形大致的中心点,长度、宽度、方向角要基本给出,见

首先给出代码,然后一条一条解释代码的意义:

re_image (Image, 'rect2')

rgb1_to_gray(Image,Image)

create_metrology_model (MetrologyHandle)

get_image_size (Image, Width, Height)

set_metrology_model_image_size (MetrologyHandle, Width, Height)

add_metrology_object_rectangle2_measure (MetrologyHandle, 172.3, 239.2, rad(11.609), 146.7, 50.9, 30, 12, 1, 30, [], [], Index)

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, Index, 'all', 'result_type', 'all_pa', Rectangle)

get_metrology_object_result_contour (Contour, MetrologyHandle, Index, 'all', 1.5)

clear_metrology_model (MetrologyHandle)

1) create_metrology_model (MetrologyHandle)

该语句定义一个测量容器,该容器可以盛放许多不同的测量对象,本例中测量对象只有一个。

2) set_metrology_model_image_size (MetrologyHandle, Width, Height)

定义测量容器针对的测量范围,本例是全图。

3) add_metrology_object_rectangle2_measure( : : MetrologyHandle, Row, Column, Phi, Length1, Length2, *定义外侧包含矩形框 MeasureLength1,MeasureLength2, *定义测量对象

MeasureSigma, MeasureThreshold, GenParamName, GenParamValue : Index) *定义被检图像灰度

理解该语句,首先要理解【被检物体、矩形范围框、和对象】三者的关系。如下图:

【被检物体、矩形范围框、和检测对象】三者的对应参数定义如下图:

* 矩形类计量对象的几何形状由其中心(Row, Column)、主轴φ的方向以及半边长度Length1和Length2指定。

* Phi的输入值自动映射到间隔。

* 矩形测量区域垂直于区域矩形的边界。与矩形边界垂直和相切的测量区域的半边长度在“ Length1”和“ Length2”中设置。

* 测量区域的中心位于矩形的边界上。参数MeasureSigma指定了一个标准偏差,算子使用该标准偏差应用计量学模型来平滑图像的灰度值。

* 可以使用参数MeasureThreshold来选择突出边缘,该参数构成了一个振幅阈值,即边缘一阶导数的绝对值。

此外,还可以在GenParamName和GenParamValue中调整一些通用参数。特别是,可以设置运算 set_metrology_object_param 中可用的所有通用参数。但请注意,对于许多应用程序,默认值已足够,无需进行调整。

运算符 add_metrology_object_rectangle2_measure返回参数索引中计量模型内添加的计量对象的Index索引。

4)get_metrology_object_result( : : MetrologyHandle, Index, Instance, GenParamName, GenParamValue : Parameter)

获取测量结果。

get_metrology_object_result 允许访问通过apply_metrology_model 获得的测量测量对象MetrologyHandle的测量结果。参数 Index指定查询结果的计量对象(MetrologyHandle中有多个计量对象)。对于设置为“all”的 Index,将返回所有计量对象的结果。通过参数 Instance,可以指定,在参数中返回结果是哪个测量实例的结果。将实例 Instance 设置为“all”将返回所有实例的结果。可以使用不同的泛型参数来控制参数中的返回值Parameter。泛型参数名称以 GenParamName传递。相应的值以GenParamValue传递。以下参数和值是可能的:

5)get_metrology_object_result_contour( : Contour : MetrologyHandle, Index, Instance, Resoluon : )

获取测量结果。即以上测量的轮廓线。

最后轮廓结果如图:

如果原理上还不明白,参考下文,文中继续探讨本问题。也可参考网文:测量函数

测量问题

以上得到轮廓线并非测量结果。如何进一步解决测量问题,因为针对的情况很多,无法一一列举,这里仅对案例中提出的矩形进行矩形测量。

法1:用 fit_rectangle2_contour_xld可以从轮廓线提取矩形,根据长宽边满足测量。

法2:用gen_parallel_contour_xld(contour, parallelcontour, ‘regression_normal’, -Distance)直接得到平行线的距离,(长、宽各一个)

审核编辑 :李倩

进入机器人查看更多内容>>
相关视频
  • 直播回放: Keysight 小探头,大学问,别让探头拖累你的测试结果!

  • 控制系统仿真与CAD

  • MIT 6.622 Power Electronics

  • 直播回放:基于英飞凌AIROC™ CYW20829低功耗蓝牙芯片的无线组网解决方案

  • 直播回放:ADI & WT·世健MCU痛点问题探索季:MCU应用难题全力击破!

  • Soc Design Lab - NYCU 2023

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章