劉祚時(shí),范雨婷,陳 飛
(江西理工大學(xué) 機(jī)電工程學(xué)院,江西 贛州 341000)
隨著機(jī)器人視覺技術(shù)的飛速發(fā)展,對復(fù)雜工況下機(jī)器視覺技術(shù)的應(yīng)用提出了更高的要求。目前,機(jī)器視覺在工件定位[1,2]、物流分揀[3]、零件裝配[4,5]等領(lǐng)域應(yīng)用廣泛。對于復(fù)雜場景的三維視覺技術(shù),目前主要有單目、雙目、多目、3D掃描及多傳感器融合的方式[6]。林義閩等人[7]針對弱紋理特征條件提出一種新的三維重建方法,通過現(xiàn)有設(shè)備人工增加紋理特征,重建出三維場景,實(shí)現(xiàn)對障礙物的識別與自主導(dǎo)航功能。劉曉陽等人[8]通過激光掃描儀獲取場景中散亂工件的點(diǎn)云數(shù)據(jù),并利用相關(guān)工具獲取模型工件精確的點(diǎn)云數(shù)據(jù),通過對比兩者間點(diǎn)云的旋轉(zhuǎn)平移關(guān)系獲取位姿信息。周偉亮等人[9]利用深度學(xué)習(xí)對無序堆疊零件進(jìn)行模型訓(xùn)練,計(jì)算出工件的深度信息。在雙目視覺研究中,立體匹配算法是其中的研究熱點(diǎn),也是研究的重點(diǎn)與難點(diǎn),目前有相位、區(qū)域、特征等匹配法[10,11]。
上述方法中存在平臺復(fù)雜、計(jì)算量較大、定位精度低等問題。為了提高堆疊零件的識別定位精度與算法效率,本文提出了一種改進(jìn)的半全局塊匹配(semi-global block matching,SGBM)算法,以圓形線圈骨架為研究對象,采用固定安裝雙目攝像頭方式,搭建實(shí)驗(yàn)平臺,進(jìn)行了基于雙目視覺的堆疊零件識別與定位研究。
實(shí)驗(yàn)選用KS861型號130萬像素雙目CMOS攝像頭,最大分辨率為2 560×960,通過USB 2.0接入計(jì)算機(jī)。選擇12 mm×9 mm的黑白方格的標(biāo)定板,共計(jì)7×8個角點(diǎn),方格邊長為22 mm×22 mm。固定雙目相機(jī)的安裝位置不動,不斷改變標(biāo)定板的位置,拍攝不同的姿態(tài),實(shí)驗(yàn)過程中采集多組圖片,選取其中的16幅圖像,并利用分割程序?qū)⑵浞指顬楠?dú)立的左右視角的圖片分別存儲在兩個文件夾中。在MATLAB中對左右相機(jī)圖像進(jìn)行網(wǎng)格處理,將分割好的左右視角的棋盤格的圖片導(dǎo)入,自動標(biāo)記出所有角點(diǎn),與人工標(biāo)記的角點(diǎn)相比更加方便、準(zhǔn)確,減少了誤差,角點(diǎn)標(biāo)定結(jié)果如圖1所示。
圖1 標(biāo)定板角點(diǎn)選取情況顯示
對標(biāo)定板圖像進(jìn)行標(biāo)定對比,排除誤差,最終獲得重投影誤差為0.21個像素,左相機(jī)和右相機(jī)的參數(shù)以及相機(jī)的距離關(guān)系如表1所示。
表1 相機(jī)標(biāo)定結(jié)果
由表1可知,相機(jī)標(biāo)定結(jié)果中外參中的旋轉(zhuǎn)矩陣R近似于單位矩陣,平移向量t的第一個參數(shù)表示雙目相機(jī)之間的距離,兩相機(jī)的實(shí)際距離為104 mm,總體標(biāo)定誤差為0.21個像素,小于0.3個像素,在誤差允許范圍內(nèi)。
對圖像進(jìn)行校正處理,得到校正后的效果如圖2所示。
圖2 圖像校正結(jié)果
通過圖像校正,可消除失真和畸變,將左右圖像調(diào)整為同一平面且行對準(zhǔn),確保了立體匹配的效果。
將無序堆疊零件放置在具有固定范圍的相對固定的料框或置物臺平面上,選擇常用的“眼在外”(eye-to-hand)的安裝方式,相機(jī)無需隨機(jī)械手的運(yùn)動而運(yùn)動,計(jì)算出相機(jī)坐標(biāo)系與機(jī)械手基坐標(biāo)系間的轉(zhuǎn)換關(guān)系。
采用基于雙目測量的手眼標(biāo)定方法,控制機(jī)械手末端隨機(jī)平移3次,旋轉(zhuǎn)1次,線性求解轉(zhuǎn)換矩陣。通過手眼標(biāo)定中機(jī)械手坐標(biāo)系、像素坐標(biāo)系相互轉(zhuǎn)換關(guān)系,線性求解出旋轉(zhuǎn)矩陣R如式(1)和平移矩陣T如式(2)
(1)
T=[0.654 4,0.457 6,1.170 7]T
(2)
采用形態(tài)學(xué)處理的彩色標(biāo)記符分水嶺的分割算法[12],對檢測物體用形態(tài)學(xué)處理后添加彩色標(biāo)記符,獲取準(zhǔn)確的零件邊緣輪廓圖,達(dá)到改良過分割的目的。其分割過程如圖3所示。
圖3 堆疊零件分割過程
為了驗(yàn)證零件分割效果,采用3組不同數(shù)量的零件圖進(jìn)行分割實(shí)驗(yàn),不同數(shù)量下的圖像分割率如表2所示。
表2 不同數(shù)量下的圖像分割率
結(jié)果表明,該算法對3組圖像的分割率均在80 %以上,且隨著零件數(shù)量的增加,分割率提高,分割誤差率較小,可以精確地劃分出感興趣區(qū)域(region of interest,ROI)。
使用雙目相機(jī)采集線圈骨架零件圖,進(jìn)行立體校正,保證左、右兩圖像在同一水平面;對于堆疊零件存在遮擋,傾斜的情況,在SGBM算法的基礎(chǔ)上進(jìn)行改進(jìn),利用改進(jìn)的SGBM算法,獲取視差圖,恢復(fù)出零件的三維信息。
SGBM算法繼承了全局匹配和動態(tài)規(guī)劃各自的優(yōu)點(diǎn),得到了一定程度上的優(yōu)化,同時(shí)避免了原算法的缺點(diǎn)。其算法原理過程分為如下4個步驟:
1)預(yù)處理
SGBM算法采用水平Sobel算子進(jìn)行預(yù)處理,其預(yù)處理函數(shù)如式(3)所示
Sobel(x,y)=2[P(x+1,y)-P(x-1,y)]+P(x+1,y-1)-
P(x-1,y-1)+P(x+1,y+1)-P(x-1,y+1)
(3)
由水平Sobel算子處理的圖像上的每個像素被映射到一個新的圖像。映射方程如式(4)所示
(4)
式中Pnew為新圖像的像素值;P為原圖像的像素值;preFilterCap為常數(shù)參數(shù)(默認(rèn)為15)。
2)匹配成本計(jì)算
SGBM利用最優(yōu)化能量函數(shù),通過搜索每個像素點(diǎn)的最佳視差,使整張圖像的全局函數(shù)最小。像素附近的所有路徑的一維成本聚合成像素的所有視差下的匹配成本。最后,將歸納的所有一維成本值相加來近似獲取二維的最佳值,某像素沿著某一條路徑的路徑成本計(jì)算公式為
Lr(p,d)=C(p,d)+
(5)
式中t1=Lr(p-r,d),t2=Lr(p-r,d-1),t3=Lr(p-r,d+1),t4=Lr(p-r,i),t5=Lr(p-r,k)
3)動態(tài)規(guī)劃
其公式如式(6)所示
(6)
由上式可得總路徑成本值S,其表達(dá)式如式(7)所示
(7)
4)后處理
通過唯一性檢測、亞像素插值、左右一致性檢測、連通區(qū)域的檢測等流程對結(jié)果進(jìn)行相應(yīng)優(yōu)化。
經(jīng)典SGBM算法對整幅圖獲取視差,弱紋理區(qū)和遮擋區(qū)存在部分無效點(diǎn)和誤匹配點(diǎn)[13],視差效果差的問題,考慮到背景(弱紋理區(qū))和前景(線圈骨架)重合,背景的誤差會干擾前景的匹配,導(dǎo)致前景的視差圖不準(zhǔn)確,利用孔洞填充的方法,對視差圖進(jìn)行優(yōu)化的方法,獲取更優(yōu)的視差效果圖。算法改進(jìn)思路為:1)采用設(shè)置閾值后的二值化方法進(jìn)行前景分割;2)采用上下文推理方法對視差圖上的“黑洞”進(jìn)行填充;3)采用RANSAC迭代法剔除誤匹配點(diǎn)。
對于遮擋區(qū)域的像素點(diǎn),選取附近背景上的像素點(diǎn)視差。由于前后背景的視差值差異較大,且前景大于背景,故選取所搜集正確視差集合中的較小視差值。選擇第二小視差,針對誤匹配像素,取視差值的中值。其表達(dá)式如式(8)所示
(8)
求取視差結(jié)果如圖4(a)所示,由于零件本身也存在弱紋理和遮擋現(xiàn)象,會出現(xiàn)誤匹配點(diǎn),以致視差結(jié)果有“黑洞”,采用孔洞填充,RANSAC迭代法刪除錯誤匹配點(diǎn),對視差進(jìn)行優(yōu)化,其結(jié)果如圖4(b)所示。
圖4 視差結(jié)果對比
改進(jìn)后的SGBM算法在遮擋區(qū)域和弱紋理區(qū)仍能達(dá)到好的匹配效果,可以較明顯的看出零件輪廓圖,這樣的視差圖能很好地提取出目標(biāo)物體的三維空間坐標(biāo)點(diǎn)。
對雙目測量的精度進(jìn)行實(shí)驗(yàn)驗(yàn)證,其思路是隨機(jī)標(biāo)定3個以上的角點(diǎn),統(tǒng)計(jì)多組數(shù)據(jù),并依次計(jì)算出兩點(diǎn)之間的距離,然后與實(shí)際測量值作比較,并用誤差和均值來驗(yàn)證測量精度。具體步驟為:首先將標(biāo)定板靜置在實(shí)驗(yàn)臺上,隨機(jī)標(biāo)定6個角點(diǎn),分別記錄左右相機(jī)像素坐標(biāo)。
改變標(biāo)定板位置,重復(fù)記錄一次,通過計(jì)算可獲取12組角點(diǎn)坐標(biāo)值。已知雙目相機(jī)旋轉(zhuǎn)矩陣R和T,可以計(jì)算出這些隨機(jī)點(diǎn)相對機(jī)械手基座的三維坐標(biāo),已知各角點(diǎn)的三維坐標(biāo)值,可以計(jì)算出任意兩點(diǎn)之間的距離,按角點(diǎn)序號依次計(jì)算其距離,再用工具測量出標(biāo)定板的實(shí)際距離,對比2組數(shù)據(jù)之間的測量差異。計(jì)算結(jié)果如表3所示。
表3 各角點(diǎn)測量距離與實(shí)際距離差值 mm
由表3可知,角點(diǎn)之間距離越遠(yuǎn),偏差逐漸增大,但總體而言,2組數(shù)據(jù)的測量偏差較小,最大為0.62 mm,整體控制在1 mm以內(nèi),波動較小。
由于手眼標(biāo)定無法單獨(dú)驗(yàn)證,聯(lián)合機(jī)械手利用歐氏距離偏差對系統(tǒng)進(jìn)行定位精度驗(yàn)證,其表達(dá)式如式(9)所示
(9)
式中d為角的歐氏距離偏差;xRl,yRl,zRl為坐標(biāo)集合{Rl}中某點(diǎn)的坐標(biāo);xMa,yMa,zMa為坐標(biāo)集合{Ma}中某角點(diǎn)的坐標(biāo)。
實(shí)驗(yàn)驗(yàn)證過程:首先,不斷調(diào)整標(biāo)定板的位置和姿態(tài),進(jìn)行3次角點(diǎn)定位,選取的棋盤格為7×8,有56個角點(diǎn),共采集168個角點(diǎn)的三維坐標(biāo);然后,將各角點(diǎn)對應(yīng)的機(jī)械手末端坐標(biāo)與像素坐標(biāo)轉(zhuǎn)換成的三維坐標(biāo)點(diǎn)間的空間偏差制成散點(diǎn)折線圖,如圖5所示。
圖5 歐氏距離空間偏差圖
結(jié)果表明,定位精度實(shí)驗(yàn)偏差較小,偏差值在0.5~1.1 mm之間波動,偏差均值為0.78 mm。
基于雙目視覺的堆疊零件的識別與定位研究,本文通過對SGBM算法進(jìn)行優(yōu)化,構(gòu)建視差圖進(jìn)行立體匹配,對堆疊零件的測量精度和定位精度進(jìn)行實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)表明:該雙目視覺系統(tǒng)測量誤差和定位偏差較小,精度滿足一般工業(yè)機(jī)械手的抓取需求,具有一定的可行性,為后續(xù)機(jī)械手的抓取奠定了基礎(chǔ),具有一定的實(shí)際應(yīng)用價(jià)值。