背景
輪廓提取是基于邊緣輪廓的算法,可用于需要提取工件輪廓信息后進(jìn)行加工處理的檢測(cè)加工項(xiàng)目,可廣泛應(yīng)用于點(diǎn)膠、激光切割、工件打磨等需要提取工件輪廓的領(lǐng)域。
輪廓是一種能存儲(chǔ)一系列點(diǎn)集的數(shù)據(jù)結(jié)構(gòu),可分為像素輪廓或亞像素輪廓。 輪廓指令只能提取特定屬性的輪廓。
提取圖像的邊緣信息時(shí)會(huì)不可避免地提取到一些非檢測(cè)目標(biāo)的干擾輪廓信息,如未閉合的邊緣線條、毛刺等輪廓信息。
此時(shí)我們需要使用圖像預(yù)處理或者設(shè)置一些過濾條件來過濾一些干擾噪點(diǎn)。因此我們還需要根據(jù)目標(biāo)的輪廓特點(diǎn)過濾掉雜散的冗余邊緣或進(jìn)行邊緣的修補(bǔ)等操作去獲取我們實(shí)際所需的目標(biāo)輪廓信息。
輪廓提取效果如下圖所示:
將目標(biāo)輪廓提取完成之后,我們就可以提取輪廓點(diǎn)集位置信息進(jìn)行工件相 關(guān)的輪廓隨動(dòng)加工處理。
注意:提取圖像目標(biāo)輪廓前需確保圖像內(nèi)目標(biāo)輪廓的對(duì)比度明顯,才能保證輪廓提取的精度。
在上期課程中,我們講述了如何使用 VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)進(jìn)行 圖像拼接 的課程。本期課程正運(yùn)動(dòng)小助手給大家分享一下 VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)進(jìn)行輪廓提取的課程。
一.VPLC控制器
(一)VPLC516E構(gòu)架圖
(二)課前準(zhǔn)備
1.電腦一臺(tái),安裝ZDevelop3.10以上版本軟件
2.VPLC516E一臺(tái)
3.24V直流電源一個(gè)
4.網(wǎng)線一根
5.WinSCP軟件
6.電線若干
二.課程主要使用的指令
1.ZV_AUTOTHRESH -- 自動(dòng)二值化
ZV_AUTOTHRESH(src,dst,tab_thresh)
描述:
使用OTSU算法計(jì)算最佳閾值并對(duì)圖像進(jìn)行自動(dòng)二值化處理。
src:ZVOBJECT類型,源圖像,單通道圖像
dst:ZVOBJECT類型,二值圖像
tab_thresh:TABLE索引,輸出參數(shù),使用的分割閾值
2.ZV_CONTGEN -- 生成輪廓
ZV_CONTGEN(img,contlist,mode,appro)
描述:
提取二值圖像的邊緣輪廓。
參數(shù):
img:ZVOBJECT類型,源二值圖像
contlist:ZVOBJECT類型,提取到的輪廓序列,列表類型,輪廓序列中包含多個(gè)輪廓,每個(gè)輪廓由一系列的點(diǎn)集構(gòu)成
mode:輪廓提取方式:0-外輪廓即被某輪廓封閉包圍的所有輪廓將不被提取,1-所有輪廓
appro:輪廓表示方式:0-點(diǎn)集方式即輪廓用一系列的點(diǎn)集表示,1-精簡(jiǎn)方式即輪廓用一系列的點(diǎn)集表示但水平、垂直、對(duì)角線將被精簡(jiǎn)成兩個(gè)端點(diǎn),建議使用1
ZV_CONTFILTER(contlist,feature,min,max,is_invert)
描述:
將輪廓序列中的輪廓以某種特征進(jìn)行過濾,保留滿足特征要求的輪廓。
參數(shù):
contlist:ZVOBJECT類型,待過濾的輪廓序列,列表類型
feature:輪廓特征類型,參考排序,可取值-1,則按照順序取序號(hào)在范圍內(nèi)的輪廓
min:特征值的下限
max:特征值的上限
is_invert:是否反向選擇,為1則保留不在范圍內(nèi)的輪廓,默認(rèn)值為0
4.ZV_CONTSORT -- 排序
ZV_CONTSORT(contlist,feature,is_inc)
描述:
對(duì)輪廓序列按照特征feature進(jìn)行排序。
參數(shù):
contlist:ZVOBJECT類型,待排序的輪廓序列,列表類型
feature:排序的特征類型,如下表所示
is_inc:指定是否升序,為0則降序排列,否則升序
輪廓特征如下:
5.ZV_CONTCOUNT -- 輪廓點(diǎn)數(shù)量
ZV_CONTCOUNT(contour,tab_count)
描述:
獲取輪廓中點(diǎn)的數(shù)量,支持在線命令,使用無需傳入TABLE索引參數(shù)。
參數(shù):
contour:ZVOBJECT類型,輪廓
tab_count:TABLE索引,輸出參數(shù),點(diǎn)的數(shù)量
6.ZV_CONTGETPT -- 輪廓點(diǎn)遍歷
ZV_CONTGETPT(contour,id,tab_pt)
描述:
獲取輪廓中的指定點(diǎn)坐標(biāo)。
參數(shù):
contour:ZVOBJECT類型,輪廓
id:指定點(diǎn)的id,第一個(gè)點(diǎn)的id為0
tab_pt:TABLE索引,輸出參數(shù),獲取的點(diǎn)坐標(biāo)x,y
7.ZV_CONTLIST -- 輪廓繪制
ZV_CONTLIST(img,contlist,color,auto_color)
描述:
繪制輪廓序列。
參數(shù):
img:ZVOBJECT類型,繪制的目標(biāo)圖像
contlist:ZVOBJECT類型,輪廓序列
color:繪制序列的顏色,img為彩色圖像時(shí)可用ZV_COLOR(r,g,b)生成顏色,img為黑白圖像時(shí)顏色取值為[0,255],如黑色0,灰色128,白色255
auto_color:是否自動(dòng)設(shè)置顏色,為1則自動(dòng)設(shè)置不同的顏色,color將不再使用
三、軟件實(shí)現(xiàn)
1. 打開ZDevelop軟件:新建名稱為“輪廓提取.zpj”項(xiàng)目→新建“HMI”文件→新建“Basic.bas”文件 (用于編寫界面響應(yīng)函數(shù)、并開啟HMI自動(dòng)運(yùn)行任務(wù)) →新建“相機(jī)采集.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)行輪廓提取的執(zhí)行函數(shù)。
'輪廓提取執(zhí)行程序
GLOBAL sub main()
LOCAL dot_count,i
DMSET TABLE(10000,10000,0)
ZV_IMGCOPY(GrabImg,testImg) '復(fù)制圖像
ZV_AUTOTHRESH(testImg,testImg,0) '自動(dòng)二值化
ZV_CONTGEN(testImg,contlist,outline_mode,outline_appro) '生成輪廓
ZV_CONTFILTER(contlist,filt_param(0),filt_param(1),filt_param(2),0)'對(duì)輪廓列表中的輪廓進(jìn)行過濾
ZV_GRAYTORGB(GrabImg,ResImg) '灰度圖轉(zhuǎn)彩色圖
ZV_CONTSORT(contlist,filt_param(0),0)'對(duì)輪廓以周長特征進(jìn)行降序排序
ZV_LISTGET(contlist,con,0)'獲取第0個(gè)輪廓
dot_count = ZV_CONTCOUNT(con)'獲取輪廓點(diǎn)數(shù)量
TABLE(10)=dot_count
FOR i = 0 TO dot_count-1
ZV_CONTGETPT(con,i,10000+i*2)'輪廓中的點(diǎn)坐標(biāo)放到TABLE(0)中
NEXT
ZV_CONTLIST(ResImg,contlist,zv_color(0,255,0)) '繪制輪廓序列
ZV_LATCH(ResImg,1)
ENDSUB
本次,正運(yùn)動(dòng)技術(shù)【機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)小課堂】 三分鐘進(jìn)行輪廓提取 ,就分享到這里。
審核編輯 黃昊宇
-
控制器
+關(guān)注
關(guān)注
112文章
16111瀏覽量
177086 -
運(yùn)動(dòng)控制
+關(guān)注
關(guān)注
4文章
564瀏覽量
32794
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論