前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【测量篇】(2)测量助手详解

【测量篇】(2)测量助手详解

作者头像
threeQing
发布2019-06-19 15:53:04
1.9K0
发布2019-06-19 15:53:04
举报

书写是为了更好的思考

测量助手的熟练使用对于新项目的快速评估是很有必要的,通常实际测量项目中,客户QC质检部门,会进行GRR测试,验证测量设备的重复性和复现性,所以,各种条件下的重复性是测量项目主要衡量标准,这通常考验着整体系统的稳定性,机械、电气、光学、算法等,例如机械的振动、照明的变化、来料位置的变化、相机每一帧成像的差异等,都有可能影响重复性。在算法层面,针对照明系统不良的情况,使用模糊条件限制是不错的选择。


- 重点 -

1. 测量助手的使用 2. 模糊测量参数的设置

1

面板介绍

菜单栏

文件:加载图像、加载参数、保存参数等设置

测量:绘制测量区域,显示测量区域边缘轮廓线

代码生成:插入、生成、删除、预览代码等操作

帮助:halcon帮助文档

工具栏

选项卡及其参数

输入选项卡:

图像源选择输入图像的来源,加载本地图像文件还是通过采集助手在线实时采集;

期望灰度值范围设定输入图像灰度级的最小和最大值;

标定来源选择不标定或者选择已经标定过的标定文件,或者选择标定助手实时标定。

边缘选项卡:

边缘提取中的最小边缘幅度为沿着所画得直线或者圆弧与边缘的交点中的最小灰度值;平滑是高斯平滑系数,值越大,唯一边缘越清晰,值越小,干扰边缘越多。

边缘选择中变换是选择正向边缘还是负向边缘,位置为选择第几个边缘。

显示参数选择ROI区域颜色以及边缘的宽度、显示颜色等。

模糊选项卡:

此部分属于测量的高级内容。以更加柔性的标准来定义边缘,防止一刀切的规则导致错误的边缘。需要使用模糊参数时,首先将“使用模糊测量(高级)”选项卡勾选。

后续可以对边缘的对比度、边缘位置、中心位置、边缘对宽度、边缘对平均灰度增加模糊处理,即设置柔性边缘检测规则。

结果选项卡:

显示测量结果,包括边缘特征,特征处理是否变换到世界坐标系下实际物理尺寸,边缘数据中选择图像中的具体哪个测量ROI。

代码生成选项卡:

自动代码生成,点击“插入代码”按钮,即可生成使用测量助手配置的测量代码以及测量结果。

2

使用流程

3

模糊参数

介绍模糊参数之前,熟悉下模糊测量理论部分的相关名词---模糊隶属度。

模糊隶属度:隶属度的数学模型表示一个对象x隶属于集合A的程度的函数。所以,使用模糊条件的限制,对于点集合的划分是柔性的。

Halcon测量助手的模糊选项卡包括以下参数:一般选项、模糊对比度、模糊边缘位置、模糊边缘对中心位置、模糊边缘对宽度、模糊边缘对平均灰度值,以下一一介绍。

一般选项

模糊阈值为基于模糊度进行阈值分割的最小模糊值,在结果选项卡可以看到模糊分数,根据模糊得分调节模糊阈值,归一化比例为归一化模糊值得尺寸大小,此事内部采用的是归一化算法,需要在模糊参数将“归一化”选项卡使能,此滑动条才会有效。一般这二者的调节可以选择右侧的自动条件按钮,halcon内部会调用自适应模糊阈值算法自行调节。

模糊对比度

调节此部分参数时,需要将右侧“Enable”勾选上,此部分可以添加、删除认为好的对比值,下侧曲线显示的是所添加合格值得规律曲线。添加、删除合格值,改变合格值的公差大小,规律曲线都会变化,如下图所示。

模糊边缘位置

此部分子类型(Subtype)所在Combox控件(下拉组合框)中,有如下类型选项

各参数含义如下:

postion: ROI的起始设置为0.

position_center:ROI的中心设置为0.

positon_end: ROI终点位置为0

positon_first_edge:定义第一个边缘位置为0

positon_last_edge:定义最后一个边缘位置为0

将Normlized的复选框(CheckBox)勾选,一般选项中的归一化比例滑动条调节才会有效。

其他部分含义与模糊对比度相同。

模糊边缘对中心位置

Subtype选项

各参数含义如下:

postion_pair: 所定义边缘对ROI的起始设置为0.

postion_pair_center:边缘对ROI的中心设置为0.

postion_pair_end: 边缘对ROI终点位置为0

postion_pair_first_edge:定义第一个边缘对位置为0

postion_pair_last_edge:定义最后一个边缘对位置为0

模糊边缘对宽度

Subtype选项

各参数含义如下:

size: 边缘对之间的距离.

size_diff:边缘对在参考点宽度与实际之间距离的差异.

size_abs_diff: 边缘对在参考点宽度与实际之间距离的绝对差异

此部分参数如何设置为后续实例分析中详细介绍,其他模糊参数可与此对比参考。

模糊边缘对平均灰度值

各参数含义同上。

4

实例分析

开关引脚测量

点击“助手”-》打开测量助手

图像源选择“Image File”,点击右侧文件浏览图标,选择待测图像

切换边缘选项卡,使用划线工具,垂直引脚划线

调节边缘幅度参数,使其出现三组边缘队

将Group Edges to Pairs勾选,选择测量边缘对

边缘极性,选择negitave,表示一组边缘对,第一个边缘从白到黑

将图像所测得边缘对放大显示

可知,由于中间引脚反光的影响,其边缘对不正确

此时不在勾选“Group Edges to Pairs”,将极性Transition选择ALL

调节边缘幅度和光滑系数等边缘参数,使其出现如下左图所示

即中间引脚检测到做左侧边缘

调节出现如红色箭头所指情况后,

将“Group Edges to Pairs”勾选,Transition极性选择negative

针对上述情况,需要剔除中间边缘,选择正确的边缘对,由于调节边缘幅度等参数无效,可以选择模糊参数调节

切换至模糊选项卡

配置模糊参数,必须优先勾选“Use Fuzzy Measure”选项卡

从上图可知,中间引脚边缘对与其他边缘对存在明显的宽度差异,所以,将模糊边缘对使能

点击“增加当前值”按钮,好的值中出现三个边缘对距离值,分别对应三个引脚边缘对

其中索引值第0个,为中间引脚边缘对值,只有3pix左右

其他两个值在9pix左右

下图中的公差在5.11pix,所有最下方的合格值曲线,将3,8,9三个距离连在一起,都为合格的

我们将公差调节至0.01

出现互相分离的3段合格值

从上图可知看出,当前三个边缘对的距离值,为3pix,8pix,9pix

我们合格值定在9pix,公差为2pix,这样可以将3pix剔除在外,包含其他在9pix左右的合格值

点击“Remove All”按钮,清除所有好的值

设置好的宽度值为9pix

设置公差为2pix

呈现测量效果如下图

此时能正确找到合适边缘对

切换结果选项卡

选择结果特征,边缘对宽度,和模糊分数

点击测量ROI Measure01

可以得出测量结果

切换代码生成选项卡

点击插入代码

插入代码后,程序编辑框代码如下

经过整理注释后如下

代码语言:javascript
复制
*设置最小边缘幅度40
AmplitudeThreshold := 20
*设置宽为13.5
RoiWidthLen2 := 5
*设置系统参数
set_system ('int_zooming', 'true')
* 设置检测直线的起点和终点
LineRowStart_Measure_01_0 := 250
LineColumnStart_Measure_01_0 := 221
LineRowEnd_Measure_01_0 := 340
LineColumnEnd_Measure_01_0 := 137
* 计算测量矩形的参数,为下一步生成测量矩形做准备
TmpCtrl_Row := 0.5*(LineRowStart_Measure_01_0+LineRowEnd_Measure_01_0)
TmpCtrl_Column := 0.5*(LineColumnStart_Measure_01_0+LineColumnEnd_Measure_01_0)
TmpCtrl_Dr := LineRowStart_Measure_01_0-LineRowEnd_Measure_01_0
TmpCtrl_Dc := LineColumnEnd_Measure_01_0-LineColumnStart_Measure_01_0
TmpCtrl_Phi := atan2(TmpCtrl_Dr, TmpCtrl_Dc)
TmpCtrl_Len1 := 0.5*sqrt(TmpCtrl_Dr*TmpCtrl_Dr + TmpCtrl_Dc*TmpCtrl_Dc)
TmpCtrl_Len2 := RoiWidthLen2
* 生成测量矩形
gen_measure_rectangle2 (TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2, 640, 480, 'nearest_neighbor', MsrHandle_Measure_01_0)
* 设置模糊测量函数
FuzzyThreshold := 0.6
create_funct_1d_pairs ([7,8,10,11], [0,1,1,0], TmpCtrl_FunctionSize)
set_fuzzy_measure (MsrHandle_Measure_01_0, 'size', TmpCtrl_FunctionSize)
* 加载图片
read_image (Image, 'C:/Users/Administrator/Desktop/bin_switch_2.png')
* 进行模糊测量边缘对
fuzzy_measure_pairs (Image, MsrHandle_Measure_01_0, 1.1, AmplitudeThreshold, 0.6, 'negative', Row1_Measure_01_0, Column1_Measure_01_0, Amplitude1_Measure_01_0, Row2_Measure_01_0, Column2_Measure_01_0, Amplitude2_Measure_01_0, TmpCtrl_RowCenter, TmpCtrl_ColumnCenter, Score_Measure_01_0, Width_Measure_01_0, Distance_Measure_01_0)
* 清除测量句柄

注:文章前半部分在家所写,halcon中文版,后半部分在公司所写,使用英文版,虽然测量工具比较常用,但相关知识点梳理总结,再以文字形式叙述出来,还是需要一定时间的,如果觉得本文对您有所帮助,请点击文中广告,加以鼓励!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器视觉那些事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档