王書宇,田建艷,蔡文站,李濟(jì)甫,王素鋼,李麗宏
太原理工大學(xué) 電氣與動(dòng)力工程學(xué)院,太原 030024
抓取和放置工件是工業(yè)環(huán)境下機(jī)器人系統(tǒng)的主要任務(wù)之一,視覺伺服是機(jī)器人系統(tǒng)的重要控制手段[1],采用圖像技術(shù)對(duì)工件進(jìn)行識(shí)別在現(xiàn)代化智能生產(chǎn)線上具有重要的意義[2]。
圖像紋理是一種通過像素及其周圍空間鄰域的灰度分布來(lái)表現(xiàn)的局部紋理信息,傳統(tǒng)的目標(biāo)識(shí)別算法根據(jù)圖像的顏色紋理建立具有較高辨識(shí)度的局部特征描述子,如SIFT、SURF、ORB等,然后進(jìn)行特征匹配從而實(shí)現(xiàn)目標(biāo)檢測(cè)[3]。但工業(yè)環(huán)境中大部分工件為弱紋理工件,如PVC零件、金屬零件等,對(duì)于這些弱紋理工件,其表面紋理缺乏,紋理像素較大,并且紋理像素之間的色調(diào)差異較小,導(dǎo)致傳統(tǒng)的局部特征描述子辨識(shí)度較低,無(wú)法建立從場(chǎng)景到模型的穩(wěn)定特征點(diǎn)匹配關(guān)系,對(duì)于弱紋理工件識(shí)別效果不佳[4]。Rusu等[5]基于三維點(diǎn)云提出了快速點(diǎn)特征直方圖描述子(fast point feature histogram,F(xiàn)PFH),把關(guān)鍵點(diǎn)鄰域內(nèi)的幾何特征轉(zhuǎn)換為多維直方圖進(jìn)行描述。但點(diǎn)云描述符對(duì)噪聲比較敏感,描述符質(zhì)量依賴于點(diǎn)云的質(zhì)量,尤其是金屬零件等非朗伯體表面,獲取的點(diǎn)云數(shù)據(jù)有嚴(yán)重的缺失和形變失真,都會(huì)降低點(diǎn)云描述符的可靠性[6]。
模板匹配是用事先定義好的模板在輸入圖像中搜索,從而找到匹配區(qū)域的一種高級(jí)機(jī)器視覺技術(shù),不需對(duì)大量的數(shù)據(jù)樣本進(jìn)行訓(xùn)練[7]?;诨叶鹊哪0迤ヅ鋵?duì)光照變化敏感,計(jì)算時(shí)間長(zhǎng),且不具備旋轉(zhuǎn)不變性[8]?;谛螤畹哪0迤ヅ渚哂谐叨炔蛔冃院托D(zhuǎn)不變性,如基于Hu矩[9]、Zernike矩、形狀上下文[10]等方法,但都需要先進(jìn)行邊緣提取得到目標(biāo)單獨(dú)輪廓,才能進(jìn)行相似度計(jì)算,而對(duì)于堆疊的工件,由于工件之間相互遮擋,工件輪廓分割難度較大,導(dǎo)致識(shí)別效果不佳。吳曉軍等[11]提出了基于圖像邊緣的幾何模板匹配算法,將邊緣的梯度方向和亞像素坐標(biāo)作為匹配信息,該方法對(duì)光照、遮擋和旋轉(zhuǎn)具有較強(qiáng)的魯棒性,但當(dāng)工件堆疊時(shí)工件發(fā)生傾斜且尺度發(fā)生變化,導(dǎo)致目標(biāo)物與模板相差較大,匹配效果較差。
當(dāng)工件散亂堆疊時(shí),對(duì)工件進(jìn)行分揀則需要空間的6D位姿信息,而對(duì)于弱紋理工件,由于很難提取紋理特征進(jìn)行描述,大部分方法都基于特征顯著的邊界信息,HE等[12]提出了規(guī)整化直線檢測(cè)子(complete line segment detector,CLSD)用于檢測(cè)直線輪廓,但需先對(duì)物體模型進(jìn)行渲染,生成大量不同視角下的邊界特征描述子再進(jìn)行匹配,計(jì)算復(fù)雜度高且精度較低。
工業(yè)零件的孔洞常作為裝配、定位、識(shí)別的特征,Li等[13]以螺釘安裝孔為基準(zhǔn)特征用于AGV的精準(zhǔn)定位,王青等[14]為了實(shí)現(xiàn)飛機(jī)大部件的最佳位姿裝配,提出一種基于制造準(zhǔn)確度與對(duì)接深孔協(xié)調(diào)準(zhǔn)確度的大部件位姿優(yōu)化算法。由于同一工件上的孔洞在不同角度、位置、尺度以及堆疊情況下的幾何約束均保持不變,因此本文針對(duì)目前工業(yè)現(xiàn)場(chǎng)弱紋理堆疊工件識(shí)別困難的問題,著重研究帶孔弱紋理工件的識(shí)別問題,以工件表面的孔洞為特征,提出一種改進(jìn)幾何模板匹配算法用于帶孔弱紋理堆疊工件識(shí)別,不需進(jìn)行紋理特征的提取、樣本訓(xùn)練和建立不同視角的模板,根據(jù)孔特征之間的幾何約束進(jìn)行工件識(shí)別,本文以合頁(yè)為例進(jìn)行工件識(shí)別,可用于機(jī)器人打磨前代替人工進(jìn)行分揀。本文將從工件圖像預(yù)處理,工件孔特征提取和帶孔弱紋理工件識(shí)別三個(gè)部分對(duì)工件識(shí)別過程進(jìn)行闡述。
在進(jìn)行孔特征提取之前,先對(duì)工件圖像進(jìn)行預(yù)處理,包括工件圖像灰度化和對(duì)灰度化后的圖像進(jìn)行邊緣檢測(cè),圖1給出了預(yù)處理階段的實(shí)驗(yàn)結(jié)果。
圖1 預(yù)處理階段實(shí)驗(yàn)結(jié)果Fig.1 Experimental results of preprocess stage
工業(yè)相機(jī)采集的工件圖像是RGB彩色圖像,如圖1(a)所示為采集的原始圖像。對(duì)三個(gè)通道依次進(jìn)行處理耗時(shí)較長(zhǎng),為了提高系統(tǒng)的處理速度,采用加權(quán)平均法[15]將彩色工件圖像轉(zhuǎn)變成灰度圖像以降低算法的時(shí)間復(fù)雜度:
式中,R、G、B為彩色圖像中像素點(diǎn)的三個(gè)顏色分量;Gray為使用加權(quán)平均法灰度化后對(duì)應(yīng)像素點(diǎn)的灰度值。
邊緣是圖像像素值發(fā)生跳變的位置,是圖像的顯著特征之一,包含了重要的形狀信息和語(yǔ)義信息。與Sobel等單一邊緣檢測(cè)算法相比,Canny邊緣檢測(cè)算法所提取的邊界具有較高的連續(xù)性和聚合性,因此本文采用Canny算法進(jìn)行邊緣檢測(cè),包括高斯模糊、計(jì)算梯度幅值和方向、梯度幅值非極大值抑制與雙閾值滯后邊界跟蹤。
(1)高斯模糊
由于圖像中的噪聲通常是高頻信號(hào),很容易被識(shí)別為偽邊緣,因此先采用高斯模糊減少噪聲,降低偽邊緣的干擾,從而提高邊緣檢測(cè)的質(zhì)量。
(2)計(jì)算梯度幅值和方向
采用Sobel一階微分算子分別計(jì)算水平和垂直方向的梯度,如式(2)所示,S x和S y分別為水平和垂直方向的Sobel算子,將兩個(gè)算子分別與原圖像進(jìn)行卷積,分別得到水平和垂直方向的梯度幅值矩陣G x和G y,根據(jù)式(3)和式(4)計(jì)算求得梯度幅值矩陣G和方向θ。
(3)梯度幅值非極大值抑制
對(duì)梯度幅值矩陣G進(jìn)行非極大值抑制(non maximum suppression,NMS),沿著每個(gè)像素點(diǎn)的梯度方向比較前后兩點(diǎn)的幅值,若該點(diǎn)大于前后兩點(diǎn)則保留,否則置為0,達(dá)到保留局部最大梯度而抑制所有其他梯度值的目的,同時(shí)實(shí)現(xiàn)細(xì)化邊緣的效果。
(4)雙閾值滯后邊界跟蹤
采用雙閾值法確定邊界,即一個(gè)低閾值和一個(gè)高閾值來(lái)區(qū)分邊緣像素。若梯度值大于高閾值,標(biāo)記為強(qiáng)邊緣點(diǎn),為真實(shí)邊緣;若梯度值小于低閾值,直接剔除;若梯度值介于高低閾值之間,標(biāo)記為弱邊緣點(diǎn),并進(jìn)一步判斷其8連通鄰域內(nèi)是否存在強(qiáng)邊緣點(diǎn),若存在,則這個(gè)弱邊緣點(diǎn)認(rèn)為是真實(shí)邊緣,否則直接剔除該點(diǎn)。
如圖1(b)所示為Canny邊緣檢測(cè)后的圖像,可以看出,兩個(gè)工件的邊緣已經(jīng)連接在一起,不易分割,而未被遮擋的孔洞輪廓清晰且未與工件邊緣相連,易于后續(xù)的孔輪廓提取以及工件識(shí)別。
在工件圖像預(yù)處理的基礎(chǔ)上進(jìn)行工件孔特征提取,首先求解每個(gè)輪廓的最小面積外接矩形(minimum area bounding rectangle,MABR),再進(jìn)行幾何約束得到孔特征對(duì)應(yīng)的孔輪廓,最后計(jì)算孔輪廓對(duì)應(yīng)的最小外接圓(minimum enclosing circle,MEC),得到孔特征的圓心坐標(biāo),為后續(xù)工件識(shí)別奠定基礎(chǔ)。
Canny邊緣檢測(cè)后的輪廓不僅包括孔輪廓,還包括工件的邊緣、噪聲干擾等,因此必須從所有輪廓中將孔輪廓提取出來(lái),通過求取每個(gè)輪廓的最小面積外接矩形,并進(jìn)行幾何約束,從而達(dá)到提取工件孔輪廓的目的。
2.1.1 求解輪廓凸包
在求解輪廓最小面積外接矩形時(shí),通常先求輪廓的凸包代替輪廓的二維點(diǎn)集,這樣不僅可以減少點(diǎn)集頂點(diǎn)的個(gè)數(shù),而且從根本上把一個(gè)無(wú)序的點(diǎn)集變成了有序的凸多邊形,形成了線性的結(jié)構(gòu),從而簡(jiǎn)化了最小面積外接矩形的求解步驟,提高運(yùn)算效率。假設(shè)單個(gè)輪廓上的所有點(diǎn)構(gòu)成點(diǎn)集S,則包含S中所有點(diǎn)的最小凸多邊形稱為S的凸包,采用Graham算法構(gòu)造每個(gè)輪廓的凸包,具體步驟為:
步驟1找到點(diǎn)集S中縱坐標(biāo)最小的點(diǎn)p0,若存在多個(gè)縱坐標(biāo)相同的點(diǎn),選擇其中橫坐標(biāo)最小的點(diǎn)。
步驟2以p0為參考點(diǎn),分別求出p0與點(diǎn)集S中剩余點(diǎn)的極角,并從小到大排序得到點(diǎn)集S1={p i|pi=(x i,yi),i=0,1,…,n}。
步驟3由于凸包逆時(shí)針相鄰兩邊的向量叉乘為正值,根據(jù)式(5)依次對(duì)S1中的點(diǎn)進(jìn)行判斷,若α為正值,則p i為凸包頂點(diǎn),否則剔除該點(diǎn),更新得到凸包點(diǎn)集S2。
2.1.2 求解輪廓最小面積外接矩形
在遍歷過程中,逆時(shí)針旋轉(zhuǎn)到下一條邊后不需要再重新掃描所有點(diǎn),只要分別從上一條邊確定的三點(diǎn)出發(fā),向后比較找到最大值即可,三個(gè)點(diǎn)的指針都只會(huì)對(duì)每個(gè)頂點(diǎn)訪問一次,因此整個(gè)過程的時(shí)間復(fù)雜度為O(m)。
2.1.3 幾何約束提取孔輪廓
對(duì)每個(gè)輪廓對(duì)應(yīng)最小面積外接矩形的寬W、高H、寬高比ratio進(jìn)行幾何約束從而提取孔輪廓:式中,Rth為最小面積外接矩形寬和高的約束閾值,與相機(jī)和工件平面的高度有關(guān),實(shí)際采集并計(jì)算多幅圖像距離,取Rth=35像素;rmax為最小面積外接矩形的寬高比約束閾值,由于最小面積外接矩形的W為x軸逆時(shí)針遇到的第一條邊,W和H無(wú)絕對(duì)的大小關(guān)系,所以需分別判斷,圓的外接矩形近似于一個(gè)正方形,寬高比接近于1,但考慮光照對(duì)圖像采集的影響以及工件堆疊時(shí)工件傾斜導(dǎo)致孔輪廓發(fā)生形變,寬高比發(fā)生改變,因此取rmax=2。
依次求取每個(gè)輪廓的最小面積外接矩形,并進(jìn)行幾何約束,對(duì)滿足式(10)的輪廓即可認(rèn)為是孔輪廓,對(duì)圖1(b)中的輪廓進(jìn)行幾何約束,提取的孔輪廓如圖2所示。
圖2 幾何約束提取的孔輪廓Fig.2 Hole contours extracted by geometric constraints
由圖2可知,對(duì)比于圖1(b),對(duì)輪廓進(jìn)行幾何約束可以很好地將工件的邊緣和噪聲剔除,保留需要的孔輪廓。
采用隨機(jī)增量法求解孔輪廓的最小外接圓,得到孔特征的圓心坐標(biāo),主要思想是:將孔輪廓所對(duì)應(yīng)的凸包隨機(jī)排序,得到新的點(diǎn)集P={p0,p1,…,p n},以p0p1為直徑作圓得到初始圓心o和半徑r,遍歷剩余的所有點(diǎn),根據(jù)式(11)判斷點(diǎn)到當(dāng)前圓心的距離,如果其余點(diǎn)均在該圓內(nèi),則該圓為最小外接圓,否則進(jìn)行循環(huán)迭代,不斷更新圓心o和半徑r,直至遍歷所有點(diǎn),得到孔輪廓的最小外接圓,同時(shí)得到最小外接圓的圓心坐標(biāo),算法流程圖如圖3所示。
圖3 隨機(jī)增量法求最小外接圓流程圖Fig.3 Flow chart of obtaining minimum enclosed circle by randomized incremental algorithm
式中,p=(p x,p y);o=(o x,o y)。
如圖2所示,紅色標(biāo)記為孔輪廓最小外接圓的圓心位置,根據(jù)縱坐標(biāo)位置從大到小排列存儲(chǔ),便于后續(xù)工件識(shí)別,孔特征圓心坐標(biāo)如表1所示。
表1 圖2中孔特征圓心坐標(biāo)表Table 1 Center coordinates of hole features in Fig.2
在提取工件孔特征的基礎(chǔ)上,首先采用改進(jìn)幾何模板匹配算法進(jìn)行工件識(shí)別,再根據(jù)孔特征之間是否存在邊緣剔除誤識(shí)別工件,從而實(shí)現(xiàn)對(duì)帶孔弱紋理工件的識(shí)別。
傳統(tǒng)的幾何模板匹配是基于模板的顯著邊緣進(jìn)行匹配,只適用于平面物體的檢測(cè),當(dāng)工件堆疊時(shí)工件發(fā)生傾斜時(shí)目標(biāo)物與模板相差較大,導(dǎo)致傳統(tǒng)的幾何模板匹配識(shí)別效果不佳,且無(wú)法得到工件的6D位姿信息。本文所提出的改進(jìn)幾何模板匹配算法是根據(jù)工件表面的加工特征(如:孔洞、槽等)之間的幾何約束進(jìn)行工件識(shí)別,包括特征之間的距離約束和角度約束。在提取孔特征的基礎(chǔ)上,采用改進(jìn)幾何模板匹配算法進(jìn)行工件識(shí)別,實(shí)驗(yàn)結(jié)果如圖4。
如圖4(a)和圖4(b)所示分別為工件在水平放置和30°傾斜放置時(shí)的模板工件特征圖,A、B、C、D分別為從上到下4個(gè)孔特征,可以看出真實(shí)工件滿足:與的約束條件,所以可根據(jù)孔特征之間的幾何約束進(jìn)行工件識(shí)別:
圖4 工件識(shí)別階段實(shí)驗(yàn)結(jié)果Fig.4 Experimental results of workpiece recognition stage
式中,dth為相同距離約束的閾值;θ為相同角度約束的閾值;δ為之間的角度約束閾值。由于在圖像采集、圓心計(jì)算過程會(huì)產(chǎn)生誤差,其距離、角度不完全相同,但誤差依然很小,因此取dth=8像素,θ=4°,δ=7°。
首先根據(jù)距離約束尋找工件上下兩個(gè)孔特征:
改進(jìn)幾何模板匹配算法主要分為以下三個(gè)步驟:
步驟1已知各個(gè)孔特征的圓心坐標(biāo),根據(jù)式(5)尋找符合距離約束的上下兩孔特征。
步驟2提取步驟1中上下兩孔特征間的所有孔特征。
步驟3對(duì)步驟2中提取的孔特征根據(jù)式(12)~式(14)進(jìn)行判斷,符合約束條件的孔特征與上下兩孔特征相組合,構(gòu)成真實(shí)工件。
已知圖2的孔特征圓心坐標(biāo)如表1所示,采用上述步驟進(jìn)行工件識(shí)別,計(jì)算得到序號(hào)為0、2、3、4的孔特征滿足式(12)~式(15)的約束條件,構(gòu)成真實(shí)工件,識(shí)別結(jié)果如圖4(c)所示。
由圖4(c)可知,本文所提出的改進(jìn)幾何模板匹配算法可以有效地對(duì)上層帶孔弱紋理堆疊工件進(jìn)行識(shí)別。
基于孔特征之間的幾何約束進(jìn)行工件識(shí)別,在多工件識(shí)別時(shí)會(huì)出現(xiàn)不是同一工件的孔特征也滿足約束條件,從而導(dǎo)致誤識(shí)別情況發(fā)生,實(shí)驗(yàn)結(jié)果如圖5,圖5(a)中存在誤識(shí)別的工件。由于真實(shí)工件的4個(gè)孔特征之間無(wú)其他邊緣,而誤識(shí)別的工件為跨工件識(shí)別,孔特征之間存在其他工件的邊緣(如圖5(a)黃色邊框所示),因此可以根據(jù)工件孔特征之間是否存在其他邊緣信息,對(duì)已識(shí)別的工件進(jìn)行判斷,從而將誤檢的工件剔除,結(jié)合邊緣信息對(duì)圖5(a)進(jìn)行判斷識(shí)別結(jié)果如圖5(b)所示。由圖5(b)可知,結(jié)合邊緣信息對(duì)已識(shí)別的工件進(jìn)行判斷,可以將圖5(a)中誤識(shí)別的工件剔除,從而降低工件的誤檢率。
為了定量評(píng)價(jià)工件的識(shí)別結(jié)果,使用查全率(Recall)和誤檢率(false positive rate,F(xiàn)PR)作為評(píng)價(jià)指標(biāo)[16],其計(jì)算公式為:
式中,REC為查全率;FPR為誤檢率;TP為工件被正確識(shí)別的個(gè)數(shù);FN為工件未被正確識(shí)別的個(gè)數(shù);FP為誤識(shí)別工件的個(gè)數(shù);TOTAL為應(yīng)該被識(shí)別工件的個(gè)數(shù)。
為了驗(yàn)證本文提出的以工件表面孔洞為特征的改進(jìn)幾何模板匹配算法的有效性,對(duì)合頁(yè)在任意旋轉(zhuǎn)、堆疊情況下進(jìn)行實(shí)驗(yàn),采集堆疊圖像200張進(jìn)行工件識(shí)別實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境為CPU Intel Core i5-8250U,基于Visual Studio 2017和OpenCV 3.2進(jìn)行實(shí)驗(yàn)。首先對(duì)所采集圖像中應(yīng)該被識(shí)別工件的約束閾值進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果表明,dth的最大值為7.2像素,θ的最大值為2.7°,δ的最大值為6.0°,綜合考慮工件識(shí)別的容錯(cuò)率以及運(yùn)行時(shí)間,取dth=8像素,θ=4°,δ=7°。采用上述約束閾值在不同約束條件下進(jìn)行工件識(shí)別實(shí)驗(yàn),統(tǒng)計(jì)結(jié)果如表2所示。
表2 不同約束條件下合頁(yè)識(shí)別統(tǒng)計(jì)結(jié)果Table 2 Statistical results of hinges recognition with different constraints
由表2可知,約束條件不會(huì)對(duì)真實(shí)工件產(chǎn)生影響,只是加速對(duì)誤識(shí)別工件的剔除,因此當(dāng)減少約束條件時(shí),并不會(huì)對(duì)識(shí)別的查全率產(chǎn)生影響。分別減少式(12)~(14)的約束條件時(shí),工件的誤識(shí)別率以及剔除誤識(shí)別工件的時(shí)間相較于3個(gè)約束條件時(shí)明顯增加。其中,式(12)的約束條件對(duì)誤識(shí)別率的影響最大,因此本文選擇3個(gè)約束條件進(jìn)行工件識(shí)別,以降低工件的誤檢率,工件識(shí)別查全率為98.3%,誤檢率為0.9%。
工件的部分識(shí)別結(jié)果如圖6所示,圖6所識(shí)別工件的信息如表3所示,圖6工件識(shí)別中每個(gè)步驟的運(yùn)行時(shí)間如表4所示。
表3 圖6中工件識(shí)別結(jié)果信息表Table 3 Information of workpieces recognition results in Fig.6
表4 圖6中工件識(shí)別運(yùn)行時(shí)間表Table 4 Running time of workpieces recognition in Fig.6ms
圖6 部分工件識(shí)別結(jié)果Fig.6 Partial workpieces recognition results
由圖6可知,本文所提出的改進(jìn)幾何模板匹配算法可以有效地對(duì)上層的帶孔弱紋理堆疊工件進(jìn)行識(shí)別,當(dāng)上層工件被分揀后再進(jìn)行工件識(shí)別,循環(huán)完成對(duì)工件的識(shí)別和分揀。所提出的改進(jìn)幾何模板匹配算法是基于工件的孔洞進(jìn)行識(shí)別,工件的正確識(shí)別依賴于幾何特征的準(zhǔn)確檢測(cè),所以需要良好的光照條件易于孔洞與工件表面產(chǎn)生明顯的亮度差,便于工件孔輪廓提取,以提高工件識(shí)別的查全率和降低工件識(shí)別的誤檢率。
由表3可知,工件識(shí)別的平均偏差為0.63像素,而工件在圖像中長(zhǎng)度為290像素,實(shí)際長(zhǎng)度為115 mm,因此工件識(shí)別的平均偏差約為0.25 mm,滿足實(shí)際工件抓取的精度要求。
由表4可知,工件識(shí)別平均運(yùn)行時(shí)間為52.4 ms,滿足實(shí)際工件抓取的速度要求,在圖像處理過程中,除加載圖像外,最耗時(shí)的步驟是工件孔特征提取。
本文對(duì)帶孔弱紋理堆疊工件的識(shí)別進(jìn)行研究,提出了改進(jìn)幾何模板匹配算法對(duì)具有孔洞特征的工件進(jìn)行識(shí)別,有效解決了傳統(tǒng)工件識(shí)別方法中工件的平移、旋轉(zhuǎn)和堆疊對(duì)識(shí)別結(jié)果干擾的問題。在后續(xù)的研究中,(1)由于工件孔特征提取耗時(shí)較長(zhǎng),可以先對(duì)每個(gè)輪廓進(jìn)行預(yù)判斷,包括尺寸、面積等,從而將明顯不符合孔輪廓特征的輪廓剔除,減少計(jì)算量,提高運(yùn)行速度;(2)還需解決由于光照不均勻而引起的誤檢和漏檢情況,進(jìn)一步提升算法的魯棒性。由于已經(jīng)得到工件孔特征的圓心坐標(biāo),再基于EPnP(efficient perspective-n-point)算法并結(jié)合目標(biāo)工件孔洞實(shí)際的幾何尺寸,可以得到工件的精準(zhǔn)6D位姿信息,進(jìn)行坐標(biāo)變換后可引導(dǎo)機(jī)器人對(duì)工件進(jìn)行分揀。