正运动技术
正运动技术

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

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

1.png

背景

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

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

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

2.png

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



教学视频



01
VPLC控制器


(一)VPLC516E构架图

3.png

(二)课前准备
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:匹配算法

4.png

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:匹配极性模式 

5.png

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:匹配极性

6.png

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




03
软件实现


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

7.png

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

8.png
主界面

9.png

创建模板界面

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.效果演示。



10.png

正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位等等。

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

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

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



邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询