【机器视觉运动控制一体机小课堂】三分钟进行灰度匹配

在这里插入图片描述

背景

不同的模板匹配方法,其操作步骤也不一样,其生成模板的方式也有不同的地方,在之前的课程中我们讲述了基于形状的模板匹配,本期课程我们去了解一下基于灰度值的模板匹配。

基于灰度值的模板匹配适用于图像内灰度变化比较稳定,噪声比较少,且灰度差异比较明显的检测目标。 这是一种不太推荐的匹配方法,因为该方法复杂度高,一次只能检测一个目标,耗时,且对光照和尺寸变化十分敏感。

如果在视觉检测项目过程中,遇到采集到的图像特征一致性差的情况下。我们可通过灰度匹配指令将待检测目标的灰度值特征框选出来。首先去创建一个灰度模板,然后在图像中去搜索与灰度模板的相似度最接近的区域,并找出相似度达到最大,即匹配到该模板。
在这里插入图片描述

在上期课程中,我们讲述了如何使用VPLC系列机器视觉运动控制一体机进行进行ROI创建的课程。本期课程正运动小助手给大家分享一下VPLC系列机器视觉运动控制一体机对图像进行灰度匹配的课程。

腾讯视频

教学视频

01VPLC控制器

(一)VPLC516E构架图

在这里插入图片描述

(二)课前准备
1.电脑一台,安装ZDevelop3.10以上版本软件
2.VPLC516E一台
3.24V直流电源一个
4.网线一根
5.WinSCP软件
6.电线若干

02课程主要使用的指令

1.ZV_FASTTEMPL – 快速简单匹配
ZV_FASTTEMPL(img,modImg,tab_rst[,method = 0])
描述:

获取最佳匹配位置的整型值 x、y 坐标。

参数:

img:ZVOBJECT 类型,待匹配图像

modImg:ZVOBJECT 类型,模板图像

tab_rst:TABLE 索引,匹配结果,输出参数,依次为 x、y 坐标

Method:匹配算法

在这里插入图片描述

2.ZV_BESTTEMPL – 灰度模板匹配
ZV_BESTTEMPL(img,modImg,min_score,tab_rst[,is_sub_pix=0,polar=0])

描述:

获取最佳匹配位置,支持亚像素精度。
参数:

img:ZVOBJECT 类型,待匹配图像,图片为单通道图片

modImg:ZVOBJECT 类型,模板图像

min_score:最低匹配分值

tab_rst:TABLE 索引,匹配结果,输出参数,依次为 score、x、y

is_sub_pix:是否子像素精度插值,0-否,1-是

polar:匹配极性模式

在这里插入图片描述

3.ZV_MULTITEMPL – 灰度模板匹配
ZV_MULTITEMPL(img,modImg,mat_rst,min_score[,nums=0,min_dist=0,

is_sub_pix=0,polar=0])
描述:
多目标灰度匹配,在搜索图像中查找与模板匹配的目标,返回分值最高的前nums个匹配中分值大于min_score的结果。
参数 :

img:ZVOBJECT 类型,待匹配图像

modImg:ZVOBJECT 类型,匹配模板图像

mat_rst:ZVOBJECT 类型,匹配结果,矩阵类型,N 行 3 列,每行一

个结果,结果顺序依次为分数 score、x 坐标和 y 坐标

min_score:最低匹配分值

nums:最大匹配数量,取分值最高的前 nums 个结果,为 0 则取全部

结果

min_dist:两个匹配结果的最小距离,大于等于 0,等于 0 则自动选

择距离

is_sub_pix:是否使用子像素精度插值

polar:匹配极性

在这里插入图片描述

→本期课程就使用第三条灰度匹配指令做多目标灰度匹配编写示例代码。

03软件实现

1.打开ZDevelop软件:新建名称为“基于灰度匹配的视觉定位.zpj”项目→新建“HMI”文件→新建“主函数.bas”文件 (用于编写界面响应函数、并开启HMI自动运行任务) →新建“相机采集.bas”文件 (用于实现相机采集功能) →新建“绘图刷新.bas”文件 (用于更新绘制ROI数据) →新建“初始化.bas”文件 (用于初始化测量参数) →文件添加到项目。

在这里插入图片描述

2.设计HMI主界面和创建模板,并关联它的控件变量。

在这里插入图片描述

主界面
在这里插入图片描述

创建模板界面

3.编写实现对图像进行灰度匹配的执行函数。

'灰度匹配

GLOBAL SUB btn_match()

    if ga_cutModel=0 THEN

        ?"先截取模板图像"

        RETURN

    endif

    ticks=0  

    GLOBAL match_rst(500)  

    ZV_GAUSSBLUR(grabImg, sImg, 3)

    ZV_MULTITEMPL(sImg,subImg,ga_match_rst,ga_match_param(0), ga_match_param(3),ga_match_param(4),ga_match_param(1),ga_match_param(2))

    ZV_MATINFO(ga_match_rst, 0)     '获取矩阵结果信息。并存放到起始地址为0的table数组

    ZV_GRAYTORGB(sImg, colorImg) '灰度图转换到RGB图

    if TABLE(0) > 0 then         '如果匹配到目标

       local rowr

       for rowr = 0 to TABLE(0)-1

          '获取match_rst矩阵中第rowr行的数据存放到起始地址为3的table数组中,table最大长度5

          ZV_MATGETROW(ga_match_rst, rowr, 3, 3)  

          match_rst(rowr*3+0) = TABLE(3)          '将匹配结果赋值给定义的结果变量,显示到界面

          match_rst(rowr*3+1) = TABLE(4)

          match_rst(rowr*3+2) = TABLE(5)

          match_rst(rowr*3+3) = TABLE(6)

          match_rst(rowr*3+4) = TABLE(7)        

          '在匹配目标上绘制对应的编号,以便和输出结果信息相对应

          ZV_MARKER(colorImg,TABLE(4),TABLE(5),0,60,ZV_COLOR(255,0,0))'绘制十字  

       next

    endif  

    ZV_LATCH(colorImg, 0)     '显示匹配结果图像

    ga_match_time = abs(TICKS) '计算匹配消耗时间

ENDSUB

4.效果演示。

腾讯视频

在这里插入图片描述

本次,正运动技术【机器 视觉运动控制 一体机小课堂】三分钟进行灰度匹配,就分享到这里。

更多精彩内容请关注“ 正运动小助手 ”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师: 400-089-8936 。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正运动技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值