0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Halcon中的测量工具之Metrology介绍

机器人及PLC自动化应用 来源:CSDN 2023-03-24 16:35 次阅读

1. Halcon中的工具助手

对于使用Halcon的小伙伴们来说,在菜单栏上的“助手”一栏中可以找到一些可以快捷使用的工具。

6f873806-ca1b-11ed-bfe3-dac502259ad0.png

以18.11版本为例,助手工具栏里有五种工具,分别是:

Image Acquisition :图片获取工具,包括基于Halcon的图像采集接口等;

Calibration:标定工具,用于对图像进行标定;

Matching: 匹配工具,包括形状及灰度匹配等;

Measure: 卡尺工具,注意这里只包括卡尺工具;

OCR:字符识别工具。

对于Measure工具,小白给出的翻译是“卡尺工具”。但是按照英文原意,应该叫“测量工具”。

这里是Halcon的设计上一个非常让小白想不通的地方。因为助手这里的所谓“测量工具”,其实只包含了卡尺这一种功能——即只能查找边缘,或者查找边缘对。所谓的“测量”无非就是测量边缘对之间的距离。

而通常意义上,基于边缘卡尺工具之上的一些找边、找圆等常用的测量工具,却并未包含在这个Measure工具之中。

2. Metrology工具系列

在Halcon中,真正的“测量工具”,却是来自一系列名称中带有“Metrology”的算子。下面以表格的形式给出:

序号算子名称算子作用备注

1create_metrology_model创建一个几何测量句柄

2add_metrology_object_circle_measure添加一个找圆工具

3add_metrology_object_ellipse_measure添加一个找椭圆工具

4add_metrology_object_generic添加一个测量工具可以添加找圆、找边、找椭圆、找矩形等多种工具

5add_metrology_object_line_measure添加一个找边工具

6add_metrology_object_rectangle2_measure添加一个找矩形工具

7get_metrology_model_param获取对整个测量模型有效的参数

8get_metrology_object_indices获取一个测量模型中测量对象的索引序号

9get_metrology_object_measures获取一个测量模型中的测量区域以及得到的边缘位置

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

11get_metrology_object_num_instances获取测量模型的测量对象的实例数量

12get_metrology_object_param获取测量模型的一个或多个参数

13get_metrology_object_result获取测量模型的测量结果

14get_metrology_object_result_contour获取测量对象的结果轮廓

15apply_metrology_model测量和拟合测量模型的所有测量对象的几何形状顾名思义就是执行测量

16align_metrology_model将测量工具与平移旋转绑定通常与模版匹配联合使用

17clear_metrology_object删除测量对象并释放分配的内存

18clear_metrology_model删除测量模型并释放分配的内存

19clear_all_metrology_models此运算符不可操作。它具有以下功能:删除所有测量模型并释放分配的内存即将从Halcon中删除,不建议使用

20get_metrology_object_fuzzy_param获取测量模型中的模糊参数

21copy_metrology_model复制测量模型

22copy_metrology_object复制测量对象

23set_metrology_model_image_size设置测量对象的图像大小

24set_metrology_model_param设置对整个测量模型有效的参数

25set_metrology_object_fuzzy_param为测量模型设置模糊参数或模糊函数

26set_metrology_object_param为测量模型的测量对象设置参数

27reset_metrology_object_fuzzy_param重置测量模型的所有模糊参数和模糊函数

28reset_metrology_object_param重置测量模型的所有参数

29transform_metrology_object转换测量模型的测量对象,例如用于绑定

30read_metrology_model从文件中读取测量模型

31write_metrology_model将测量模型写入到文件中

32serialize_metrology_model将测量模型序列化

33deserialize_metrology_model将测量模型反序列化

总体来说,Halcon的测量工具类,包含有找边、找圆、找椭圆、找矩形四种功能,另外还可以通过模糊函数的定义实现模糊测量。

下面我们来看看Metrology工具的一些实例。

3. Metrology工具实例

3.1 实例1 找边工具

以下实例在一张虚拟工件图上添加一个找直线卡尺组工具(cyan色表示),并找到该工件的上边缘(red色表示)。

从这张图我们也能初步得出一个结论:测量工具都是基于卡尺(边缘检测)工具开发的,通常的做法是在卡尺工具找到边缘点的基础上进行拟合。

* 清空屏幕,显式控制图像显示

dev_close_window ()

dev_update_off ()

read_image (Image, '形状模板图.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

dev_display (Image)

* 创建测量模型

create_metrology_model (MetrologyHandle)

Row1 := 113.427

Column1 := 152.106

Row2 := 111.438

Column2 := 336.028

* 添加找直线工具,给定参数,显示过程卡尺的轮廓

add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 20, 5, 1, 30, [], [], Index)

get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)

get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

dev_set_color('cyan')

dev_display (Contour)

dev_display (Contours)

* 执行找直线并显示结果

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)

get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

dev_set_line_width (3)

dev_set_color ('red')

dev_display (Contour1)

clear_metrology_model (MetrologyHandle)

6fa076fe-ca1b-11ed-bfe3-dac502259ad0.png

所找到直线的相关参数信息存储在变量Parameter之中。

3.2 实例2 找圆工具

以下实例在一张虚拟工件图上添加一个找圆卡尺组工具(cyan色表示),并找到该工件的圆孔边缘(red色表示)。

* 清空屏幕,显式控制图像显示

dev_close_window ()

dev_update_off ()

read_image (Image, '形状模板图.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

dev_display (Image)

* 创建测量模型

create_metrology_model (MetrologyHandle)

Row1 := 149.248

Column1 := 321.116

Radius := 23.954

* 添加找圆工具,给定参数,显示过程卡尺

add_metrology_object_circle_measure (MetrologyHandle, Row1, Column1, Radius, 12, 3, 1, 30, [], [], Index)

get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)

get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

dev_set_color('cyan')

dev_display (Contour)

dev_display (Contours)

* 执行找圆并显示结果

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)

get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

dev_set_line_width (3)

dev_set_color ('red')

dev_display (Contour1)

clear_metrology_model (MetrologyHandle)

6fb2bf30-ca1b-11ed-bfe3-dac502259ad0.png

所找到圆的相关参数信息存储在变量Parameter之中。

3.3 实例3 找椭圆工具

以下实例在一张虚拟工件图上添加一个找椭圆卡尺组工具(cyan色表示),并找到该工件的内侧椭圆边缘(red色表示)。

* 清空屏幕,显式控制图像显示

dev_close_window ()

dev_update_off ()

read_image (Image, '椭圆测量图.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

dev_display (Image)

* 创建测量模型

create_metrology_model (MetrologyHandle)

Row1 := 167.02

Column1 := 246.855

Phi := -0.366964

Radius1 := 93.6498

Radius2 := 32.8862

* 添加找椭圆工具,给定参数,显示过程卡尺

add_metrology_object_ellipse_measure (MetrologyHandle, Row1, Column1, Phi, Radius1, Radius2, 12, 3, 1, 30, [], [], Index)

get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)

get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

dev_set_color('cyan')

dev_display (Contour)

dev_display (Contours)

* 执行找椭圆并显示结果

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)

get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

dev_set_line_width (3)

dev_set_color ('red')

dev_display (Contour1)

clear_metrology_model (MetrologyHandle)

6fcc2a06-ca1b-11ed-bfe3-dac502259ad0.png

所找到椭圆的相关参数信息存储在变量Parameter之中。

3.4 实例4 找矩形工具

以下实例在一张虚拟工件图上添加一个找矩形卡尺组工具(cyan色表示),并找到该工件的外侧边缘(red色表示)。

* 清空屏幕,显式控制图像显示

dev_close_window ()

dev_update_off ()

read_image (Image, '形状模板图.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

dev_display (Image)

* 创建测量模型

create_metrology_model (MetrologyHandle)

Row1 := 192.033

Column1 := 248.541

Length1 := 120.299

Length2 := 79.696

Phi := 0.00827113

* 添加找矩形工具,给定参数,显示过程卡尺

add_metrology_object_rectangle2_measure (MetrologyHandle, Row1, Column1, Phi, Length1, Length2, 12, 3, 1, 30, [], [], Index)

get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)

get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

dev_set_color('cyan')

dev_display (Contour)

dev_display (Contours)

* 执行找矩形并显示结果

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)

get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

dev_set_line_width (3)

dev_set_color ('red')

dev_display (Contour1)

clear_metrology_model (MetrologyHandle)

所找到矩形的相关参数信息存储在变量Parameter之中。

3.5 实例5 generic法添加测量工具

Halcon的Metrology工具主要功能就是完成以上四种测量,而使用generic时,可以添加任意的工具。以下实例通过generic向Metrology模型中添加找矩形(cyan色)和找圆工具(green色)。找到矩形的外侧边缘轮廓(red色),以及圆孔的边缘轮廓(red色)。

* 清空屏幕,显式控制图像显示

dev_close_window ()

dev_update_off ()

read_image (Image, '形状模板图.png')

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)

dev_display (Image)

* 创建测量模型

create_metrology_model (MetrologyHandle)

Row1 := 192.033

Column1 := 248.541

Length1 := 120.299

Length2 := 79.696

Phi := 0.00827113

* 添加找矩形工具,给定参数,显示过程卡尺

add_metrology_object_generic (MetrologyHandle, 'rectangle2', [Row1, Column1, Phi, Length1, Length2], 12, 3, 1, 30, [], [], Index)

get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)

get_metrology_object_measures (Contours, MetrologyHandle, 0, 'all', Row, Column)

dev_set_color('cyan')

dev_display (Contour)

dev_display (Contours)

* 添加找圆工具,给定参数,显示过程卡尺

Row2 := 149.248

Column2 := 321.116

Radius := 23.954

add_metrology_object_generic (MetrologyHandle, 'circle', [Row2, Column2, Radius], 12, 3, 1, 30, [], [], Index1)

get_metrology_object_model_contour(Contour2, MetrologyHandle, 1, 1.5)

get_metrology_object_measures (Contours3, MetrologyHandle, 1, 'all', Row3, Column3)

dev_set_color ('green')

dev_display (Contour2)

dev_display (Contours3)

dev_set_line_width (3)

* 执行找矩形并显示结果

apply_metrology_model (Image, MetrologyHandle)

get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter1)

get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

get_metrology_object_result (MetrologyHandle, 1, 'all', 'result_type', 'all_param', Parameter2)

get_metrology_object_result_contour (Contour3, MetrologyHandle, 1, 'all', 1.5)

dev_set_color ('red')

dev_display (Contour1)

dev_display (Contour3)

clear_metrology_model (MetrologyHandle)

6fdfa0fe-ca1b-11ed-bfe3-dac502259ad0.png

注意到get_metrology_object_result和get_metrology_object_result_contour中通过index参数的调整分别按顺序提取到矩形和圆的结果轮廓。

若index参数设置为'all'时,则可以一次性取出所有的结果轮廓。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7141

    浏览量

    161969
  • HALCON
    +关注

    关注

    16

    文章

    63

    浏览量

    27000
  • OCR
    OCR
    +关注

    关注

    0

    文章

    137

    浏览量

    16122

原文标题:Halcon中的测量工具(找边找圆等)——Metrology系列

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview调用halcon软件包

    众所周知NI在视觉这块虽然有涉猎,但是它的一些算法性能比一些专业的视觉软件如halcon要差,不可否认,NI_vision在一些尺寸测量方面、找直线还是比较便利的。如今的视觉系统需求越来越复杂
    发表于 05-27 12:04

    Labview里面使用Halcon的函数。 方法一:直接调用Halcon的函数。

    。还有一种就是 需要哪个Halcon的函数,就使用调用节点方式解决。××××××××××××下面阐述用调用节点属性节点等方式运行Halcon。硬件组态:一个普通PC。软件组态: Win7 64位
    发表于 08-15 14:14

    Labview里面使用Halcon的函数。 方式为:直接。运行后缀为hdev 的Halcon程序

    Labview里面使用Halcon的函数。 方式为:直接。运行后缀为hdev 的Halcon程序Halcon是由MVTec这个公司开发的。这家公司对自己有非常清晰的定位,他们就是图像处理函数的。其他
    发表于 08-15 16:38

    求助:labview与halcon之间的对象转换

    labview的视觉模块的识别率确实没有halcon的厉害,但是labview写程序却比halcon+.NET方便,于是在labview调用halcon来编程。有个问题需要向各位请教
    发表于 08-24 09:32

    在labview调用Halcon实例

    `本人写了一个小程序,在labview调用halcon实现扫码功能,还存在一些问题,调用的halcon程序如果在循环中,则无法通过labview停止程序,必须等到halcon循环停止
    发表于 09-13 19:39

    labview调用Halcon

    各位大神,有没有知道labview调用halcon的.net控件,.net控件的类怎么解释啊,有没有详细的解释说明啊?
    发表于 11-14 15:19

    labview与halcon连用

    本帖最后由 x451129684 于 2017-11-16 16:46 编辑 labview通过.net调用halcon算子,测量一个圆的角度
    发表于 11-16 09:39

    labview调用Halcon

    关于调用Halcon的视觉的一些资料
    发表于 03-29 22:41

    关于labview调用halcon程序的方法介绍

    !下面介绍的是调用halcon完整程序的方法:1.首先在halcon里编写好需要处理的程序,如图以车牌的字符识别为例:2.在labview里进行调用(1).通过在前面板放入.net容器,并在其插入
    发表于 10-11 11:54

    labview通过.NET调用Halcon函数示例

    labview 与halcon混合编程,目前有两种方式1、.NET函数调用,接下来要介绍的方法2、.NET Engine调用方法,前面有发帖介绍过该方式,参考https
    发表于 05-07 15:01

    Labview调用Halcon直接调用dll

    文件,此法好像只能取数据不能传数据,不能参数调整但也可以用第三种方法三、把halcon程序导出C#程序,在VS中生成dll,然后在Labview调用生成的dll,程序框图就简单多了个人觉得这样工作量
    发表于 06-14 14:24

    LabVIEW调用Halcon程序的操作步骤

    ,半径就出来了下面开始讲解Labview如何调用Halcon的程序来取得计算结果 Labview的VI截图如下,除了红圈内为属性节点,其他全部为调用节点, 构造器函数选择的dll文件路径在
    发表于 07-30 10:59

    一个HalconRectange2(带角度的矩形)在NI Vision实现的算法

    和中心点Y,矩形的旋转角度(弧度显示),以及矩形的两条边长来计算出矩形的四个顶点,然后在NI Vision根据着4个顶点绘制4条直线,即可实现Halcon的Rectange2这个功能Hal
    发表于 03-29 17:09

    Halcon例程之圆弧测量工具分析

    在图像上相应位置绘制圆,这里用固定变量的方法产生圆的参数,把这个圆绘制代码注释掉了。这个圆用于后面的测量工具
    的头像 发表于 03-21 13:39 1045次阅读

    Halcon知识:矩形测量

    此外,还可以在GenParamName和GenParamValue中调整一些通用参数。特别是,可以设置运算 set_metrology_object_param 中可用的所有通用参数。但请注意,对于许多应用程序,默认值已足够,无需进行调整。
    的头像 发表于 04-23 09:56 1322次阅读
    <b class='flag-5'>Halcon</b>知识:矩形<b class='flag-5'>测量</b>