Halcon知识:矩形测量

发布者:数据舞者最新更新时间:2023-04-23 来源: 机器人及PLC自动化应用作者: Lemontree 手机看文章 扫描二维码
随时随地手机看文章

首先给出一个问题:如下边一个图片中,如何获取矩形的测量,也就是说,需要更准确的矩形位置参数?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)直接得到平行线的距离,(长、宽各一个)

审核编辑 :李倩

引用地址:Halcon知识:矩形测量

上一篇:工业机器人的伺服电机结构解析
下一篇:如何连接到不同配置的图像采集卡和相机

小广播
最新机器人文章
换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关:

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved