背景
不同的模板匹配方法,其操作步驟也不一樣,其生成模板的方式也有不同的地方,在之前的課程中我們講述了基于形狀的模板匹配,本期課程我們?nèi)チ私庖幌禄诨叶戎档哪0迤ヅ洹?/span>
基于灰度值的模板匹配適用于圖像內(nèi)灰度變化比較穩(wěn)定,噪聲比較少,且灰度差異比較明顯的檢測(cè)目標(biāo)。 這是一種不太推薦的匹配方法,因?yàn)樵摲椒◤?fù)雜度高,一次只能檢測(cè)一個(gè)目標(biāo),耗時(shí),且對(duì)光照和尺寸變化十分敏感。
如果在視覺(jué)檢測(cè)項(xiàng)目過(guò)程中,遇到采集到的圖像特征一致性差的情況下。我們可通過(guò)灰度匹配指令將待檢測(cè)目標(biāo)的灰度值特征框選出來(lái)。首先去創(chuàng)建一個(gè)灰度模板,然后在圖像中去搜索與灰度模板的相似度最接近的區(qū)域,并找出相似度達(dá)到最大,即匹配到該模板。
在上期課程中,我們講述了如何使用VPLC系列機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)進(jìn)行進(jìn)行ROI創(chuàng)建的課程。本期課程正運(yùn)動(dòng)小助手給大家分享一下VPLC系列機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)對(duì)圖像進(jìn)行灰度匹配的課程。
?
?
?
01VPLC控制器
?
?
(一)VPLC516E構(gòu)架圖
(二)課前準(zhǔn)備
1.電腦一臺(tái),安裝ZDevelop3.10以上版本軟件
2.VPLC516E一臺(tái)
3.24V直流電源一個(gè)
4.網(wǎng)線一根
5.WinSCP軟件
6.電線若干
?
?
?
02課程主要使用的指令
?
1.?ZV_FASTTEMPL -- 快速簡(jiǎn)單匹配
ZV_FASTTEMPL(img,modImg,tab_rst[,method = 0])
描述:
獲取最佳匹配位置的整型值 x、y 坐標(biāo)。
img:ZVOBJECT 類型,待匹配圖像
modImg:ZVOBJECT 類型,模板圖像
tab_rst:TABLE 索引,匹配結(jié)果,輸出參數(shù),依次為 x、y 坐標(biāo)
Method:匹配算法
2.ZV_BESTTEMPL -- 灰度模板匹配
ZV_BESTTEMPL(img,modImg,min_score,tab_rst[,is_sub_pix=0,polar=0])
?
描述:
獲取最佳匹配位置,支持亞像素精度。
參數(shù):
img:ZVOBJECT 類型,待匹配圖像,圖片為單通道圖片
modImg:ZVOBJECT 類型,模板圖像
min_score:最低匹配分值
tab_rst:TABLE 索引,匹配結(jié)果,輸出參數(shù),依次為 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]) ?
描述:
多目標(biāo)灰度匹配,在搜索圖像中查找與模板匹配的目標(biāo),返回分值最高的前nums個(gè)匹配中分值大于min_score的結(jié)果。
參數(shù) :
img:ZVOBJECT 類型,待匹配圖像
modImg:ZVOBJECT 類型,匹配模板圖像
mat_rst:ZVOBJECT 類型,匹配結(jié)果,矩陣類型,N 行 3 列,每行一
個(gè)結(jié)果,結(jié)果順序依次為分?jǐn)?shù) score、x 坐標(biāo)和 y 坐標(biāo)
min_score:最低匹配分值
nums:最大匹配數(shù)量,取分值最高的前 nums 個(gè)結(jié)果,為 0 則取全部
結(jié)果
min_dist:兩個(gè)匹配結(jié)果的最小距離,大于等于 0,等于 0 則自動(dòng)選
擇距離
is_sub_pix:是否使用子像素精度插值
polar:匹配極性
→本期課程就使用第三條灰度匹配指令做多目標(biāo)灰度匹配編寫示例代碼。
?
?
03軟件實(shí)現(xiàn)
?
1. 打開(kāi)ZDevelop軟件:新建名稱為“基于灰度匹配的視覺(jué)定位.zpj”項(xiàng)目→新建“HMI”文件→新建“主函數(shù).bas”文件 (用于編寫界面響應(yīng)函數(shù)、并開(kāi)啟HMI自動(dòng)運(yùn)行任務(wù)) →新建“相機(jī)采集.bas”文件 (用于實(shí)現(xiàn)相機(jī)采集功能) →新建“繪圖刷新.bas”文件 (用于更新繪制ROI數(shù)據(jù)) →新建“初始化.bas”文件 (用于初始化測(cè)量參數(shù)) →文件添加到項(xiàng)目。
2.設(shè)計(jì)HMI主界面和創(chuàng)建模板,并關(guān)聯(lián)它的控件變量。
?
主界面
創(chuàng)建模板界面
3.?編寫實(shí)現(xiàn)對(duì)圖像進(jìn)行灰度匹配的執(zhí)行函數(shù)。
?
'灰度匹配
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)? ? ?'獲取矩陣結(jié)果信息。并存放到起始地址為0的table數(shù)組
? ? ZV_GRAYTORGB(sImg, colorImg) '灰度圖轉(zhuǎn)換到RGB圖
? ? if TABLE(0) > 0 then? ? ? ? ?'如果匹配到目標(biāo)
? ? ? ?local rowr
? ? ? ?for rowr = 0 to TABLE(0)-1
? ? ? ? ? '獲取match_rst矩陣中第rowr行的數(shù)據(jù)存放到起始地址為3的table數(shù)組中,table最大長(zhǎng)度5
? ? ? ? ? ZV_MATGETROW(ga_match_rst, rowr, 3, 3)??
? ? ? ? ? match_rst(rowr*3+0) = TABLE(3)? ? ? ? ? '將匹配結(jié)果賦值給定義的結(jié)果變量,顯示到界面
? ? ? ? ? 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)? ? ? ??
? ? ? ? ? '在匹配目標(biāo)上繪制對(duì)應(yīng)的編號(hào),以便和輸出結(jié)果信息相對(duì)應(yīng)
? ? ? ? ? ZV_MARKER(colorImg,TABLE(4),TABLE(5),0,60,ZV_COLOR(255,0,0))'繪制十字??
? ? ? ?next
? ? endif??
? ? ZV_LATCH(colorImg, 0)? ? ?'顯示匹配結(jié)果圖像
? ? ga_match_time = abs(TICKS) '計(jì)算匹配消耗時(shí)間
ENDSUB
?
?
本次,正運(yùn)動(dòng)技術(shù)【機(jī)器 視覺(jué)運(yùn)動(dòng)控制 一體機(jī)小課堂】三分鐘進(jìn)行灰度匹配,就分享到這里。
?
審核編輯:湯梓紅
評(píng)論
查看更多