背景
膨脹與腐蝕是形態(tài)學(xué)的基礎(chǔ),在實(shí)際的視覺檢測(cè)項(xiàng)目過程中,常常需要組合運(yùn)用膨脹與腐蝕對(duì)圖像進(jìn)行預(yù)處理。而開運(yùn)算和閉運(yùn)算用途就是組合使用這兩種方法。同時(shí)開運(yùn)算和閉運(yùn)算不僅能在保留圖像目標(biāo)主體的同時(shí),還能處理圖像中出現(xiàn)的各種雜點(diǎn)、小間隙、存在毛糙的邊緣等。
所以我們?cè)谝曈X檢測(cè)項(xiàng)目過程中相機(jī)采集到的圖像遇到上述問題時(shí)可以合理運(yùn)用開運(yùn)算與閉運(yùn)算,可以簡(jiǎn)化圖像預(yù)處理的操作步驟,去除圖像上的非目標(biāo)主體外的干擾,有效的優(yōu)化目標(biāo)主體核心區(qū)域,使之提取出圖像上理想的區(qū)域范圍。運(yùn)行效果如下圖所示:
在上期課程中,我們講述了如何使用VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)使用相機(jī)進(jìn)行圖像膨脹腐蝕的課程。本期課程正運(yùn)動(dòng)小助手給大家分享一下VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)進(jìn)行圖像開運(yùn)算和閉運(yù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_OPENING ?-- 開運(yùn)算
?
ZV_OPENING(src,dst,kw[,kh = 0])
參數(shù)說明:
?
src:ZVOBJECT類型,源圖像
?
dst:ZVOBJECT類型,開運(yùn)算后的圖像
kw:結(jié)構(gòu)元素寬度,大于0
kh:結(jié)構(gòu)元素高度,大于等于0,若為 0 則 kh = kw
?
2.ZV_CLOSING ?-- 閉運(yùn)算
?
ZV_CLOSING(src,dst,kw[,kh = 0])
參數(shù):
src:ZVOBJECT類型,源圖像
?
dst:ZVOBJECT類型,閉運(yùn)算后的圖像
kw:結(jié)構(gòu)元素寬度,大于0
kh:結(jié)構(gòu)元素高度,大于等于0,若為 0 則 kh = kw
3.原理
圖像開運(yùn)算與閉運(yùn)算與膨脹和腐蝕運(yùn)算有關(guān),由膨脹和腐蝕兩個(gè)運(yùn)算的復(fù)合與集合操作(并、交、補(bǔ)等)組合成的運(yùn)算構(gòu)成。
A.開運(yùn)算
它是先對(duì)圖像腐蝕后膨脹。通過腐蝕能夠去除小范圍內(nèi)非目標(biāo)區(qū)域,同時(shí)也能把閾值范圍相近的元素分隔開,最后通過膨脹填補(bǔ)腐蝕過大造成的小間隙。
因此,它可以去除一些孤立、細(xì)小的點(diǎn),平滑毛躁的樣品邊緣,同時(shí)目標(biāo)區(qū)域內(nèi)的面積也不會(huì)有明顯的變化,類似于給樣品“去毛刺”的處理效果。?所下圖所示:
通過以上對(duì)比圖可得知,原圖經(jīng)過開運(yùn)算處理后,可見目標(biāo)主體邊緣的干擾被消除,圖像上的目標(biāo)主體更突出。
B.閉運(yùn)算
它是先對(duì)圖像膨脹后腐蝕。它處理圖像上目標(biāo)區(qū)域內(nèi)部的空洞、外部孤立的點(diǎn)、目標(biāo)區(qū)域的外觀和面積不會(huì)有所明顯的變化,簡(jiǎn)單來說它類似于“填補(bǔ)空隙”。它與之前課程中講述到單獨(dú)進(jìn)行膨脹運(yùn)算不同的是,它在填補(bǔ)縫隙的同時(shí)不會(huì)使目標(biāo)邊緣輪廓加粗。下圖所示:
通過以上對(duì)比圖可得知,原圖經(jīng)過閉運(yùn)算處理后,可見目標(biāo)主體邊緣與四周引腳沒有連接和邊緣缺失的部分得到了填充,使圖像上的目標(biāo)主體形狀變得更完整。
C.總結(jié)
綜上所述可知,開運(yùn)算更適合去除圖像上的雜點(diǎn)和噪聲等非目標(biāo)主體的特征元素。而閉運(yùn)算則是相反,它是用于填補(bǔ)區(qū)域中小空隙等目標(biāo)主體缺失的部分。所以開運(yùn)算和閉運(yùn)算與進(jìn)行膨脹腐蝕相比,它們是不會(huì)改變目標(biāo)主體特征的核心形態(tài)。
03 軟件實(shí)現(xiàn)
1.打開ZDevelop軟件:新建名稱為“開閉運(yùn)算.zpj”項(xiàng)目→新建“HMI”文件→新建“main.bas”文件(用于編寫界面響應(yīng)函數(shù)、并開啟HMI自動(dòng)運(yùn)行任務(wù))→新建“圖像采集.bas”文件(用于實(shí)現(xiàn)相機(jī)采集功能)→新建“初始化.bas”文件(用于初始化測(cè)量參數(shù))→文件添加到項(xiàng)目。
2.設(shè)計(jì)HMI主界面和關(guān)聯(lián)它的控件變量。
?
?
?
?
3.編寫實(shí)現(xiàn)對(duì)圖像進(jìn)行開運(yùn)算和閉運(yùn)算的執(zhí)行函數(shù)。
?
? ? ? ? ? GLOBAL sub main()
?
? ? ? ? ? ? ? ? ?ZV_IMGCOPY(GrabImg,testImg)? ? '復(fù)制圖像??
? ? ? ? ? ? ? ? ?if gv_open_switch=1 THEN
? ? ? ? ? ? ? ? ? ? ZV_OPENING(testImg,testImg,ga_open(0),ga_open(1))? ? ? '矩形結(jié)構(gòu)的圖像開運(yùn)算
? ? ? ? ? ? ? ? ?endif
? ? ? ? ? ? ? ? ?if gv_clos_switch=1 THEN
? ? ? ? ? ? ? ? ? ? ZV_CLOSING(testImg,testImg,ga_closed(0),ga_closed(1))? ? '矩形結(jié)構(gòu)的圖像閉運(yùn)算
? ? ? ? ? ? ? ? ?endif
? ? ? ? ? ? ? ? ?ZV_LATCH(testImg,1)
? ?
? ? ? ? ?ENDSUB
?
?
本次,正運(yùn)動(dòng)技術(shù)【機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)小課堂】三分鐘實(shí)現(xiàn)開運(yùn)算和閉運(yùn)算,就分享到這里。
?
評(píng)論
查看更多