尹瑞多,郭剛祥,陳元杰
(浙江省計量科學(xué)研究院 浙江省市場監(jiān)管測力與稱重計量重點實驗室,浙江 杭州 310018)
螺栓是在日常生活和工業(yè)制造當(dāng)中不可或缺的工業(yè)之米,是常見的緊固件。它是由頭部和螺桿(帶外螺紋的圓柱體)兩部分組成的,需要與螺母配合,用于緊固連接兩個帶有通孔的零件。在工業(yè)生產(chǎn)中,螺栓通常由人工進行裝卸,但在對大型管道或大型機械的螺栓進行裝卸時,人工裝卸就顯得效率低,工人勞動強度大。在智能制造技術(shù)發(fā)展下,能夠依靠視覺系統(tǒng)自動識別螺栓位置,并進行裝卸的螺栓自動裝卸機器人應(yīng)運而生。鄭帥超[1]等針對瓣膜螺栓識別定位提出了方案,利用閾值分割和特征提取的方法對螺栓進行定位,定位誤差在1 mm以內(nèi),但需要先對螺栓頂部進行涂白處理;談繼勇[2]等通過對經(jīng)典Camshift算法進行改進,建立H-S二維直方圖,利用直方圖補償策略提高了螺栓定位精度,但因其算法運行在嵌入式系統(tǒng)上,算法幀率有待提高;黃潛[3]等利用激光線結(jié)構(gòu)光掃描儀對螺栓進行識別和定位,利用關(guān)鍵點的快速點特征直方圖(FPFH)來描述點云特征從而識別螺栓的精確位置;胡紹海[4]等針對動車地板螺栓提出了利用暗邊緣特征結(jié)合FAST角點檢測的方法,實現(xiàn)了螺栓定位,但不能適用于亮度較暗的場景;蘇少輝[5]等提出了針對大尺度矩形工件定位的方法,運用改進的Hough直線檢測算法,計算工件角點和旋轉(zhuǎn)角度從而實現(xiàn)工件定位,但是不能適用于柔性大尺度工件;李致金[6]等利用主軸法實現(xiàn)了對工件輪廓快速識別;朱寒[7]等改進了Sobel算子提高了PCB的定位準(zhǔn)確率,但算法運行時間相對較長;韓鳴曉[8]提出了單目視覺孔銷精確定位方法,主要是基于Otsu法閾值分割和Canny算子邊緣提取,得到橢圓輪廓在進行擬合,這種方法同樣易受戶外光線影響,需要配備光源和遮光裝置;Xu[9]提出了基于主動結(jié)構(gòu)光的螺栓定位方案,使用基于形狀的模板匹配方法改善了螺栓定位的準(zhǔn)確性和穩(wěn)定性。
結(jié)合以上文獻的已有方案與缺陷,本文采用雙目視覺與主動結(jié)構(gòu)光結(jié)合的方案,可以利用其提供的深度信息結(jié)合連通域分析[10]等圖像處理方法相結(jié)合,在原理上擺脫了光照不足對目標(biāo)定位的影響,同時又能夠以較快速度進行圖像處理,從而彌補了以上文獻中存在的缺陷與不足。針對端板上的螺栓定位問題,設(shè)計了基于RealSense D435深度相機的螺栓定位算法。通過深度相機提供的點云深度信息,無需外加光源也無需預(yù)先對螺栓進行處理,能夠適用于亮度較暗的場景,不需要進行復(fù)雜的點云處理,就能夠快速實現(xiàn)對端板上有水泥污損螺栓的定位,最后為自動裝卸螺栓機器人提供坐標(biāo)信息。
螺栓在端板上的分布為12、13、14均勻等分,分布圓直徑為360 mm。由于螺栓常年暴露在室外,表面可能會有污損,如圖1。系統(tǒng)要求定位誤差小于2 mm。
圖1 螺栓分布圖Figure 1 Diagram of bolts layout
圖2 D435相機的結(jié)構(gòu)Figure 2 Structure of D435 camera
本文所采用相機為Intel RealSense D435深度相機,如圖2所示D435[11]是基于主動紅外雙目技術(shù)的RGB-DEPTH相機,從左到右的構(gòu)成分別為左紅外相機、紅外點陣投射器、右紅外相機和RGB相機。其中,紅外相機基于結(jié)構(gòu)光測距原理實現(xiàn)三維成像,雙目的結(jié)構(gòu)光相較于傳統(tǒng)的單目結(jié)構(gòu)光具有更強的抗干擾性;紅外點陣投射器的作用類似于一個補光燈,能夠在低紋理的環(huán)境中提供紅外圖案以實現(xiàn)結(jié)構(gòu)光成像;RGB相機用于直接獲取彩色圖像。最終,相機可以輸出最高分辨率為1 280×720的深度數(shù)據(jù)流和分辨率為1 920×1 080的彩色數(shù)據(jù)流,可測量深度范圍為0.11~10 m。
螺栓與相機相對位置如圖3,在進行定位時,相機成像面與螺栓所分布平面盡可能平行,以消除相機姿態(tài)角度對系統(tǒng)定位精度造成的影響。
圖3 螺栓與相機相對位置分布圖Figure 3 Diagram of bolts layout
對于一個已完成標(biāo)定的D435相機,其各個相機的內(nèi)參以及各個相機之間坐標(biāo)變換的外參都是已知的。為實現(xiàn)螺栓的三維定位,需要獲取螺栓的世界坐標(biāo)。本文所采用的方式是將深度圖對齊到RGB圖像,利用深度信息將RGB圖像中的二維像素點投射到三維世界坐標(biāo)系下。對于相機的針孔成像模型,有
(1)
其中(u,v)是相機二維圖像坐標(biāo)系下的某像素坐標(biāo),zc是該像素對應(yīng)點到相機的光心的距離,M1與M2分別為相機的內(nèi)外參矩陣。
由此可以得到RGB圖像與深度圖像對齊的公式:
(2)
其中(x,y)與(x′,y′)分別為某點在RGB圖像坐標(biāo)系和深度圖像坐標(biāo)系下的二維像素坐標(biāo),Md2r是深度相機坐標(biāo)系轉(zhuǎn)換到RGB相機坐標(biāo)系的外參矩陣,Mr與Md分別為RGB攝像頭和深度攝像頭的內(nèi)參矩陣。
為實現(xiàn)像素坐標(biāo)到世界坐標(biāo)的轉(zhuǎn)換,將RGB相機的針孔成像模型,即公式(1)展開,得到
(3)
其中f為相機焦距,dx與dy為比例因子,R與T為相機內(nèi)外參矩陣中的旋轉(zhuǎn)矩陣和平移向量。本文設(shè)置世界坐標(biāo)系與RGB相機坐標(biāo)系一致,因而得到
(4)
由于深度圖像與RGB圖像已實現(xiàn)對齊,即每個圖像像素點的zc已知,因此通過公式(4)即可實現(xiàn)像素坐標(biāo)到世界坐標(biāo)的轉(zhuǎn)換。
圖像處理流程如圖4。
圖4 圖像處理流程圖Figure 4 Image processing flow chart
1) 初始化相機。創(chuàng)建數(shù)據(jù)流。
2) 遍歷ROI。利用RealSense SDK 2.0提供的獲取某一像素深度值的函數(shù)遍歷深度圖像ROI(感興趣區(qū)域)的每一個像素,將符合深度(相機到螺栓上表面的距離,允許誤差為±2 mm)要求的像素在分析圖像顯示,符合深度要求的像素作為前景置為白色,其余像素作為背景保持黑色。
3) 圖像預(yù)處理。將步驟2)得到的分析圖像轉(zhuǎn)換為灰度圖像,然后進行形態(tài)學(xué)腐蝕膨脹[12-13]。腐蝕的數(shù)學(xué)原理如式(5):
A?B=x,y|(B)xy?A。
(5)
腐蝕就是求局部最小值的操作,可以用來消除小且無意義的目標(biāo)。
膨脹的數(shù)學(xué)原理如式(6):
A⊕B=x,y|(B)xy∩A≠?。
(6)
膨脹與腐蝕是一對相反的操作,可以用來填補目標(biāo)區(qū)域中某些空洞以及消除包含在目標(biāo)區(qū)域中的小顆粒噪聲。
4) 連通域分析。經(jīng)過形態(tài)學(xué)濾波以后,開始進行連通域輪廓分析并繪制最大輪廓[14]。連通域是指圖像中相鄰并有相同像素值的圖像區(qū)域,通常分為4鄰接和8鄰接。連通域分析是指將圖像中的各個連通區(qū)域找出并標(biāo)記。在繪制最大輪廓時通過設(shè)定面積閾值(大于500像素)來剔除較小面積的輪廓,以免造成錯誤識別。在分析圖像畫出外部矩形邊界。
5) 繪制最小外接矩形。為最大輪廓[15-16]繪制最小外接矩形,并用線段標(biāo)出。
6) 微調(diào)中心。將最小外接矩形的中心用圓圈標(biāo)記。由于螺栓表面可能有污損,導(dǎo)致每個最小外接矩形的中心可能不在同一距離平面,這樣會造成最終得到的相鄰螺栓之間的距離有誤差。因此,需要對最小外接矩形的中心進行微調(diào),確保它們在同一距離平面上。微調(diào)策略:遍歷每個輪廓內(nèi)的像素,符合要求的像素需要滿足以下三個條件:在同一距離平面;相鄰螺栓之間的距離差閾值為±10 mm范圍內(nèi)和角度差閾值為±5°范圍內(nèi)。是否在同一距離平面可以根據(jù)SDK提供的深度值判斷;相鄰螺栓之間的距離也可以由SDK提供的get_distance函數(shù)得到;連線的角度由式(7)得到計算角度示意圖如圖5所示;直至找到符合要求的像素,將它的坐標(biāo)作為最終的螺栓位置坐標(biāo)。
(7)
圖5 角度計算示意圖Figure 5 Angle calculation diagram
7) 坐標(biāo)系轉(zhuǎn)換。坐標(biāo)系轉(zhuǎn)換一是為了將圖像坐標(biāo)系轉(zhuǎn)換為相機坐標(biāo)系,為后續(xù)螺栓的裝卸提供坐標(biāo)做準(zhǔn)備;二是為了將螺栓定位的中心顯示在彩色圖像中。因此,要先實現(xiàn)深度圖像與彩色圖像的對齊,通過公式(2)即可實現(xiàn)相機像素坐標(biāo)的變換。
8) 直方圖均衡化。圖像的像素灰度變化是隨機的,直方圖會高低不齊,直方圖均衡化就是使圖像的直方圖均勻分布的方法。直方圖均衡化提供拉伸像素強度分布范圍來增強圖像對比度。采用如下步驟對分析圖像進行直方圖均衡化:
a) 計算輸入圖像直方圖H。
b) 進行直方圖歸一化,直方圖的組距的和為255。
c) 計算直方圖積分,如式(8)。
(8)
d) 以H′作為查詢表,將圖像進行變換如式(9)。
dst(x,y)=H′(src(x,y))。
(9)
實驗臺搭建如圖6,D435距螺栓284 mm,使用USB3.0連接線連接至PC,軟件使用Visual Studio 2019用C++編寫,附加依賴項有RealSense SDK 2.0和OpenCV,人機交互界面如圖7,使用MFC編寫而成。
圖6 實驗臺Figure 6 Experiment table
圖7 人機交互界面Figure 7 Software user interface
軟件界面分為彩色圖像、深度圖像和分析圖像三大部分;當(dāng)前設(shè)定檢測距離值,當(dāng)前目標(biāo)個數(shù)等。
螺栓分為12等分、13等分、14等分三種分布,分度圓半徑為180 mm,將分度圓分為n等分,示意圖如圖8所示,根據(jù)式(10)可以算出相鄰螺栓之間理論距離值分別為:93 mm、86 mm、80 mm。分別使用本文算法、查找輪廓內(nèi)切圓算法和直接使用最小外接矩形中心作為螺栓中心的算法進行檢測。內(nèi)切圓算法是找到螺栓外接矩形后,計算矩形的內(nèi)切圓,找到圓心作為螺栓中心點坐標(biāo);最小外接矩形中心算法是找到螺栓的最小外接矩形,并將矩形的中心坐標(biāo)作為螺栓的中心點坐標(biāo)。以13等分為例,分析圖像、深度圖像、彩色圖像如圖9、圖10、圖11。
(10)
圖8 相鄰螺栓距離計算示意圖Figure 8 Schematic diagram of the calculation of the distance between adjacent bolts
圖9 分析圖像Figure 9 Analysis image
圖10 深度圖像Figure 10 Depth image
圖11 彩色圖像Figure 11 Color image
表1是分別對12、13、14等分的螺栓使用3種不同算法測量10次,每次測量后調(diào)整相機位置,共采集90幅分析圖像,得到的相鄰螺栓之間距離平均值與標(biāo)準(zhǔn)差,平均誤差點線圖如圖12所示。結(jié)果表明,單純使用內(nèi)切圓和最小外接矩形進行螺栓定位誤差較大,需利用深度信息進行中心點的微調(diào)。本算法平均誤差為1.629 1 mm,遠小于內(nèi)切圓算法和最小外接矩形中心算法,能夠滿足螺栓定位需求。
圖12 平均誤差點線圖Figure 12 Dot plot of standard deviations
表1 相鄰螺栓距離的平均值與標(biāo)準(zhǔn)差
提出了一種針對螺栓定位的算法,利用RealSense D435深度相機提供的深度信息,結(jié)合形態(tài)學(xué)腐蝕膨脹以及連通域分析等方法,實現(xiàn)了對螺栓的定位,并通過實驗對比了輪廓內(nèi)切圓算法和最小外接矩形中心算法。本算法平均定位誤差為1.629 1 mm,能夠滿足螺栓定位的需求。