背景 不同的模板匹配方法,其操作步骤也不一样,其生成模板的方式也有不同的地方,在之前的课程中我们讲述了基于形状的模板匹配,本期课程我们去了解一下基于灰度值的模板匹配。
基于灰度值的模板匹配适用于图像内灰度变化比较稳定,噪声比较少,且灰度差异比较明显的检测目标。 这是一种不太推荐的匹配方法,因为该方法复杂度高,一次只能检测一个目标,耗时,且对光照和尺寸变化十分敏感。
如果在视觉检测项目过程中,遇到采集到的图像特征一致性差的情况下。我们可通过灰度匹配指令将待检测目标的灰度值特征框选出来。首先去创建一个灰度模板,然后在图像中去搜索与灰度模板的相似度最接近的区域,并找出相似度达到最大,即匹配到该模板。
在上期课程中,我们讲述了如何使用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
本次,正运动技术【机器 视觉运动控制 一体机小课堂】三分钟进行灰度匹配,就分享到这里。
加州机动车辆数字牌照法案正式生效 使警方能够轻松找到被盗汽车
LPC213X通过μC/OS-II的多种移植方案
iphone8什么是上市?最新消息:iphone8、iphone7s一同发布,最新完美外观设计,完虐网传丑图!1000美元贵吗?
乐驾科技发布首款语音手势操控HUD车载设备
tl431参数及封装介绍
使用VPLC控制器对图像进行灰度匹配
苹果手机数据线老是坏惹恼欧盟 苹果或遭巨额处罚
植物微量元素检测仪是什么,它的作用又是什么
采用LT8610A和LT8610AB降低汽车DDR电源的待机电流
手机市场变局 华为再次自救
新型无接触门禁方案,助力实现智慧安防的创新发展
深刻探讨无人机行业的安全和隐私问题
雷蛇发布首款游戏手机--Razer Phone
什么是半波整流电路
FCC正在美国进行28GHz毫米波5G频谱的拍卖
LG截胡三星推出QNED电视
芯恩青岛与欧洲半导体签订技术授权协议 将提升中国市场的芯片自制率
现货FLUKE54200 福录克54200 彩色信号源/13
中银航空租赁已向葡萄牙航空公司交付了一架空客A320NEO飞机
一种产生DSN放大攻击的深度学习技术