王湘明, 劉明春, 王浩任, 鄭黎成
(沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 沈陽 110870)
根據(jù)國家標(biāo)準(zhǔn)GB 7544-1999(2000-05-01實(shí)施)《橡膠避孕套》要求,安全套出廠為每只必檢,而主流檢測方式為電干檢.現(xiàn)階段在一條標(biāo)準(zhǔn)的安全套生產(chǎn)線上,安全套的生產(chǎn)以及出廠打包封裝等過程已經(jīng)實(shí)現(xiàn)了自動(dòng)化,但是安全套電干檢的上料過程仍然需要人工的高度參與,由人工將每只待檢安全套套在電檢模型棒上進(jìn)行檢測.為了將操作人員從安全套電干檢的上套過程中解脫出來,本文設(shè)計(jì)了一款與電干檢系統(tǒng)相匹配的自動(dòng)上料機(jī)器人來解決該問題.比較典型的自動(dòng)上料機(jī)器人主要由拾取機(jī)械手、安全套姿態(tài)視覺識(shí)別裝置、轉(zhuǎn)移機(jī)械手、上套機(jī)械手以及控制系統(tǒng)組成,系統(tǒng)的工作流程如圖1所示.
圖1 自動(dòng)上料機(jī)器人工作流程Fig.1 Workflow of automatic feeding robot
由圖1可知,本文所研究的視覺識(shí)別系統(tǒng)是自動(dòng)上料機(jī)器人工作時(shí)的重要環(huán)節(jié),其主要工作內(nèi)容可分為安全套姿態(tài)圖像獲取和安全套特征區(qū)域識(shí)別與定位兩部分.
按照自動(dòng)上料機(jī)器人系統(tǒng)的工作節(jié)拍及流程,要求本文所研究的視覺識(shí)別系統(tǒng)的目標(biāo)識(shí)別時(shí)間小于100 ms,x、y方向目標(biāo)定位誤差范圍為[-0.5 cm,0.5 cm],這就對系統(tǒng)中視覺識(shí)別算法的執(zhí)行效率和定位精度提出了較高的要求.
在目標(biāo)的識(shí)別與定位方面,現(xiàn)階段比較典型的算法包括尺度不變性特征轉(zhuǎn)換(SIFT,2004)、加速魯棒特征(SURF,2006)、二進(jìn)制魯棒獨(dú)立基礎(chǔ)特征(BRIEF,2010)[1]、定向快速旋轉(zhuǎn)(BRISK)特征(ORB,2011)[2]以及近幾年提出的二值化魯棒尺度不變特征(BRISK,2011)[3]等.其中,SIFT、SURF屬于浮點(diǎn)算子,占用內(nèi)存大,時(shí)間復(fù)雜度高.而ORB、BRISK特征算子是一種新型具有尺度不變性和旋轉(zhuǎn)不變性的角點(diǎn)檢測和描述算法,由于采用了二進(jìn)制形式的描述以及Hamming距離作為匹配度量,使得算法自身的運(yùn)算速度以及內(nèi)存占用量有了明顯改善,同時(shí)也為本文應(yīng)用視覺識(shí)別算法來快速定位多形變多旋轉(zhuǎn)的目標(biāo)提供了可能.
由于攝像頭的設(shè)計(jì)缺陷、生產(chǎn)和裝配誤差等因素都會(huì)引起攝像頭的畸變,而對于本文所涉及的自動(dòng)上料機(jī)器人中的廣角攝像頭而言,其視場的四周區(qū)域會(huì)產(chǎn)生更加明顯的畸變,故攝像機(jī)標(biāo)定是視覺識(shí)別與定位的前期基礎(chǔ).對于三維空間中的任一點(diǎn)(xw,yw,zw),其齊次坐標(biāo)描述為(xw,yw,zw,1),利用攝像機(jī)的小孔成像模型將該點(diǎn)從世界坐標(biāo)系投影到二維圖像平面坐標(biāo)系下的過程為
(1)
式中:(u0,v0)為攝像機(jī)主點(diǎn);α=f/dx,β=f/dy,分別為二維圖像像素坐標(biāo)系下u軸和v軸上的尺度因子;f為相機(jī)的焦距;dx和dy為圖像中每個(gè)像素在圖像坐標(biāo)和像素坐標(biāo)系下的換算比例;γ為描述兩圖像坐標(biāo)軸傾斜程度的參數(shù)(稱為傾斜因子);R為攝像機(jī)坐標(biāo)系相對于世界坐標(biāo)系的3×3旋轉(zhuǎn)矩陣;T為攝像機(jī)坐標(biāo)系相對于世界坐標(biāo)系的3×1平移矩陣.
在實(shí)際成像系統(tǒng)中,由于各種誤差因素的存在,使得像點(diǎn)、光心和物點(diǎn)三個(gè)點(diǎn)并不一定在同一條直線上.為了更加準(zhǔn)確地描述成像系統(tǒng),本文引入透鏡畸變[4],其計(jì)算表達(dá)式為
x=xd+δx(x,y)
(2)
y=yd+δy(x,y)
(3)
式中:δx(x,y)和δy(x,y)為非線性畸變值的x、y軸分量;x、y和xd、yd分別為圖像上任意點(diǎn)的理想坐標(biāo)值和實(shí)際坐標(biāo)值.
OpenCV中的非線性畸變描述公式為
(4)
式中:k1、k2為徑向畸變;a1、a2為切向畸變.在實(shí)際應(yīng)用中舍棄高階系數(shù),可得在攝像機(jī)標(biāo)定過程中的畸變系數(shù)矩陣與內(nèi)參矩陣分別為
D=[k1,k2,a1,a2]
(5)
(6)
本文使用的攝像頭圖像傳感器為30萬逐行掃描全彩CMOS,分辨率為640×480,像素尺寸為6.0μm×6.0μm,鏡頭焦距范圍為2.8~12mm.采用標(biāo)準(zhǔn)的9×9黑白棋盤格標(biāo)定板(方格尺寸為2cm×2cm)為基礎(chǔ)工具,用張氏標(biāo)定法對攝像機(jī)進(jìn)行標(biāo)定,最終得出攝像機(jī)畸變矩陣及內(nèi)參數(shù)矩陣分別為
D=[-0.369 24,0.103 539,0.003 03,-0.000 24]
(7)
(8)
由于圖像在獲取時(shí)受背景光、拍攝狀態(tài)以及傳輸干擾等不確定因素的影響,將會(huì)在最終的圖像中產(chǎn)生噪點(diǎn)、模糊、過曝等現(xiàn)象,本文采用中值濾波來解決該問題.同時(shí)鑒于邊緣檢測對安全套特征區(qū)域識(shí)別與定位的重要性,利用Canny邊緣檢測算法來實(shí)現(xiàn)目標(biāo)邊界的提取[5].
1.2.1 算法設(shè)計(jì)思想
由于整個(gè)自動(dòng)上料機(jī)器人的動(dòng)作需要配合電干檢系統(tǒng)的工作節(jié)拍,故對視覺識(shí)別與定位算法的實(shí)時(shí)性和有效性提出了較高的要求.當(dāng)前環(huán)境下影響整個(gè)視覺識(shí)別與定位效率的因素主要有檢測時(shí)所需的特征點(diǎn)數(shù)和所采取的檢測算法,因此,在特征點(diǎn)檢測階段提出了一種預(yù)檢測與精檢測結(jié)合的兩步檢測算法.
1) 預(yù)檢測.由于視覺識(shí)別的特征區(qū)域?yàn)榘踩椎捻敳浚搮^(qū)域相對于整只安全套在邊界上有明顯的曲率變化.在圖像進(jìn)行預(yù)處理并提取出邊界之后,根據(jù)邊界的曲率變化趨勢便可以在整幅圖像中劃定出一塊疑似特征區(qū)域.
2) 精檢測.在預(yù)檢測所劃定的疑似特征區(qū)域內(nèi)進(jìn)行二次特征算子檢測并生成特征描述子.由于在自動(dòng)上料機(jī)器人中攝像頭的安裝位置與拾取機(jī)械手的最終回程位置是相對固定的,所以在視覺識(shí)別的整個(gè)過程中主要考慮的是被檢測物體與匹配模板之間的旋轉(zhuǎn)和非線性形變.在精檢測階段,特征算子以及特征描述子分別采用ORB算子和BRISK描述子.
1.2.2 預(yù)檢測實(shí)現(xiàn)
FAST角點(diǎn)定義:若某像素點(diǎn)與其周圍鄰域內(nèi)足夠多的像素點(diǎn)處于不同的區(qū)域,則該像素點(diǎn)可能為角點(diǎn),也就是某些屬性與眾不同.考慮到灰度圖像,若該點(diǎn)的灰度值比其周圍領(lǐng)域內(nèi)足夠多的像素點(diǎn)的灰度值大或者小,則該點(diǎn)可能為角點(diǎn)[6].FAST算法步驟如下:
1) 以任意像素點(diǎn)P為中心,做一半徑為3個(gè)像素的離散化Bresenham圓,則在該圓的邊界上共有16個(gè)像素,檢測模型如圖2所示.
圖2 FAST 9~16的關(guān)鍵點(diǎn)檢測模型Fig.2 Critical point detection model for FAST 9-16
2) 獲取該像素點(diǎn)P的亮度值,記為L.
3) 設(shè)定合適的閾值t,對于點(diǎn)P,將其離散化Bresenham圓的鄰域位置設(shè)為n,第n∈{1,2,…,16}個(gè)點(diǎn)表示為Pn,將Pn分為3類,即暗點(diǎn),亮點(diǎn)與相似點(diǎn).
4) 如果在圓上有9個(gè)連續(xù)的像素點(diǎn),它們的像素值要么都比L+t大,要么都比L-t小,則當(dāng)前點(diǎn)P就是一個(gè)角點(diǎn).
受FAST算法啟發(fā),以半徑長度為3個(gè)像素的Bresenham圓為例來闡述安全套的邊界曲率檢測過程,檢測模型如圖3所示.
圖3 曲率檢測模型Fig.3 Curvature detection model
圖3中,黑色方格代表當(dāng)前被檢測物體的輪廓點(diǎn),綠色方格代表當(dāng)前檢測點(diǎn)的Bresenham圓鄰域,藍(lán)色的方格PO1和PO2代表輪廓與Bresenham圓鄰域交叉的像素點(diǎn).用PO1與PO2的標(biāo)值之差來近似計(jì)算這兩點(diǎn)之間的圓弧弧度.為PO1與PO2的標(biāo)值之差設(shè)定一個(gè)合適的范圍[Pmin,Pmax],則可以分離出可疑邊界點(diǎn)集C,即
C={Pmin≤|P1i-P2i|≤Pmax,Pi∈U}
(9)
式中:U為圖像的邊界點(diǎn)集;P1i、P2i為點(diǎn)Pi的Bresenham圓鄰域與輪廓的兩個(gè)交叉點(diǎn)標(biāo)值.
對可疑點(diǎn)集C中的所有像素點(diǎn)進(jìn)行如下分類運(yùn)算:
1) 根據(jù)相鄰兩個(gè)邊界點(diǎn)Pi、Pi+1與形心連線的向量角度關(guān)系對將可疑點(diǎn)集C進(jìn)行劃分,即
(10)
2) 分別針對集合Qup、Qdrop、Qdown中的像素點(diǎn)求取當(dāng)前點(diǎn)P與其它各個(gè)點(diǎn)Pi之間的歐氏距離Distence(P,Pi).
3) 以集合Qup為例,根據(jù)歐氏距離從點(diǎn)集Qup中進(jìn)一步分離出呈現(xiàn)聚類效應(yīng)的點(diǎn)集J,即
(11)
式中,Dmax、Dmin分別為點(diǎn)集J內(nèi)部各點(diǎn)之間的最大、最小歐氏距離.
經(jīng)過以上步驟篩選出的最終可疑點(diǎn)集J所代表的是一段曲率變化連續(xù)、緩慢、無突變且滿足一定要求的邊界.求取該可疑點(diǎn)集J的幾何中心點(diǎn),并以該點(diǎn)為中心做特定大小的矩形掩膜區(qū)域,在該區(qū)域內(nèi)進(jìn)行二次精檢測.
1.2.3 精檢測實(shí)現(xiàn)
計(jì)算FAST特征點(diǎn)時(shí),要在一個(gè)圖像鄰域內(nèi)進(jìn)行.將該點(diǎn)所在區(qū)域的中心點(diǎn)設(shè)為E,同時(shí)找出這個(gè)圖像鄰域內(nèi)的重心位置H,則E與H的連線矢量方向便是該特征點(diǎn)的方向,如圖4所示.
一般零階矩是物體的質(zhì)量,一階矩和零階矩可以算出物體的幾何中心,而二階矩可用于計(jì)算物體的方向.對于二維pq階矩,數(shù)學(xué)上可表述為mpq=∑xpyqI(x,y),其中,I(x,y)為圖像像素.對圖像而言,m10/m00=∑xI(x,y)/∑I(x,y)代表了圖像像素在x方向上的偏重,即重心的x坐標(biāo);同理,m01/m00=∑yI(x,y)/∑I(x,y)代表了圖像像素在y方向上的偏重,即重心的y坐標(biāo),因此,重心坐標(biāo)為(m10/m00,m01/m00),由此可以得特征點(diǎn)主方向?yàn)?/p>
圖4 特征點(diǎn)主方向Fig.4 Principal direction of feature points
(12)
BRIEF描述子是基于這個(gè)圖像塊中特征點(diǎn)之間像素兩兩比較后的二進(jìn)制串,取值滿足
(13)
式中:e(x)為點(diǎn)(u0,v0)的灰度值;e(y)為點(diǎn)(u1,v1)的灰度值.當(dāng)選取N組測試點(diǎn)時(shí),二進(jìn)制串表達(dá)式為
(14)
在融合特征檢測子主方向信息之后,可得BRIEF描述子為
(15)
式中:F為二進(jìn)制串fN的矩陣形式;Rθ為角度的旋轉(zhuǎn)矩陣.
BRISK特征點(diǎn)描述子是上述BRIEF描述子的一種改良算法.首先在圖像金字塔空間得到特征點(diǎn)的位置和尺度,然后為特征點(diǎn)賦予描述子.在生成特征點(diǎn)描述子的過程中,BRISK算法所采用的是均勻采樣模式:以特征點(diǎn)為中心,構(gòu)建不同半徑的同心圓,在每個(gè)圓上獲取一定數(shù)目的等間隔采樣點(diǎn).為了避免上述鄰域采樣模式引起混疊效應(yīng),需要對同心圓上的采樣點(diǎn)進(jìn)行高斯濾波,其標(biāo)準(zhǔn)差σi正比于每個(gè)采樣點(diǎn)對應(yīng)于各自中心的距離.采樣點(diǎn)個(gè)數(shù)為60,尺度為1的均勻采樣模式如圖5所示.
圖5中,以采樣點(diǎn)為中心、σi為方差進(jìn)行高斯濾波,濾波的范圍用紅圈表示,濾波半徑大小與高斯方差的大小成正比;用藍(lán)圈表示經(jīng)過高斯平滑后最終用到的60個(gè)采樣點(diǎn).
圖5 BRISK描述子采樣模式Fig.5 Sampling pattern of BRISK descriptor
對M個(gè)采樣點(diǎn)兩兩組合,共有M(M-1)/2種組合方式,即M(M-1)/2組點(diǎn)對,采用集合(Zi,Zj)表示,這些采樣點(diǎn)的平滑像素值分別表示為I(Zi,σi)和I(Zj,σj)[7],用于估計(jì)局部梯度值G(Zi,Zj),估算表達(dá)式為
(16)
所有的采樣點(diǎn)對(組合方式)可用集合A表示,定義短距離點(diǎn)對子集S、長距離點(diǎn)對子集l分別為
(17)
(18)
式中:σmax=9.57T;σmin=13.67T;T為特征點(diǎn)所在的尺度.
要解決旋轉(zhuǎn)不變性,則需將特征點(diǎn)周圍的采樣區(qū)域旋轉(zhuǎn)至主方向,旋轉(zhuǎn)后得到新的采樣區(qū)域.BRISK描述子的生成過程借鑒了上述BRIEF描述子的編碼方式,由短距離點(diǎn)對S兩兩比較來產(chǎn)生二進(jìn)制編碼,計(jì)算規(guī)則為
(19)
經(jīng)過上述兩步算法檢測之后,對生成的模板圖像角點(diǎn)描述子和視頻幀圖像角點(diǎn)描述子進(jìn)行以漢明距離為度量的最近鄰域匹配[8],采用RANSAC算法剔除因圖像遮擋或背景混亂而產(chǎn)生誤匹配關(guān)系的關(guān)鍵點(diǎn)[9].當(dāng)最終匹配角點(diǎn)的質(zhì)量達(dá)到要求后,對該區(qū)域經(jīng)預(yù)檢測篩選后的邊界點(diǎn)集求均值,并以該點(diǎn)為中心做半徑為15個(gè)像素的Bresenham圓.根據(jù)邊界點(diǎn)集與Bresenham圓周的交點(diǎn)得出其中點(diǎn),并以中點(diǎn)代表當(dāng)前安全套特征區(qū)域的幾何形心.
本文所研究的自動(dòng)上料機(jī)器人視覺識(shí)別系統(tǒng)對安全套特征區(qū)域的定位過程主要分為攝像機(jī)標(biāo)定、中值濾波、Canny邊緣檢測、預(yù)檢測+精檢測兩步檢測法的目標(biāo)識(shí)別、最近鄰域匹配、RANSAC誤匹配剔除、形心定位等過程,其工作流程如圖6所示.
圖6 視覺識(shí)別系統(tǒng)工作流程Fig.6 Workflow of visual identity system
本文在實(shí)驗(yàn)中所用計(jì)算機(jī)平臺(tái)的硬件配置為Intel Core i5-2450M & 2.5 GHz處理器、4 Gbit內(nèi)存,用Opencv2.4.13+VS 2013編寫了自動(dòng)上料機(jī)器人視覺識(shí)別測試軟件.該軟件主要包括視頻監(jiān)視模塊、視覺識(shí)別與定位模塊(涵蓋本文算法、BRISK、ORB+BRISK 3種獨(dú)立的測試算法)、通信模塊以及攝像頭校準(zhǔn)模塊.在測試軟件中分別利用本文算法、BRISK算法、ORB+BRISK算法對特征區(qū)域與匹配模板呈0°、30°、90° 3種姿態(tài)的安全套進(jìn)行視覺識(shí)別與定位測試,匹配結(jié)果如表1所示.
表1 匹配效果比較Tab.1 Comparison in matching effect
表2為利用上述3種算法分別對3種姿態(tài)的安全套各進(jìn)行50次測試結(jié)果的統(tǒng)計(jì)值.表2中匹配成功的判別標(biāo)準(zhǔn)為:剔除誤匹配后的匹配特征點(diǎn)對個(gè)數(shù)大于等于7,則認(rèn)為匹配成功;如果匹配特征點(diǎn)對個(gè)數(shù)小于7,則認(rèn)為匹配失敗.
表2 3種算法的性能比較Tab.2 Performance comparison of three algorithms
表3~5所示為上述3種算法分別對3種姿態(tài)的安全套各進(jìn)行50次測試的定位誤差統(tǒng)計(jì)均值,誤差為安全套頂部區(qū)域的形心位置與拾取機(jī)械手回程位置之間的實(shí)測距離和實(shí)驗(yàn)計(jì)算距離的差值.
表3 姿態(tài)1的定位誤差比較Tab.3 Comparison in location errors of first gesture cm
本文所提出的兩步檢測算法與單純的BRISK算法相比,特征算子提取時(shí)特征點(diǎn)分布更均勻,而單純BRISK算法所提取的特征點(diǎn)過于稀疏.對于安全套這種易發(fā)生形變的柔性目標(biāo),BRISK算法容易出現(xiàn)無法匹配的情況;ORB+BRISK算法所提取的特征點(diǎn)分布比較散亂且無目的性,要完整描述安全套頂部區(qū)域特征所需的特征點(diǎn)數(shù)和定位時(shí)間是最多、最長的,而且匹配時(shí)經(jīng)過RANSAC處理后難以剔除的誤匹配點(diǎn)較多.兩步檢測算法由于經(jīng)過預(yù)檢測之后確定了可疑區(qū)域,所以最終的特征點(diǎn)分布更加密集、更有指向性,在保持較高匹配成功率的同時(shí),每次匹配還具有較高的匹配質(zhì)量.
表4 姿態(tài)2的定位誤差比較Tab.4 Comparison in location errors of second gesture cm
注:表中‘-’代表BRISK算法對當(dāng)前姿態(tài)下的安全套無法識(shí)別和定位其特征區(qū)域,故無有效數(shù)據(jù).
表5 姿態(tài)3的定位誤差比較Tab.5 Comparison in location errors of third gesture cm
綜合可得,由于兩步檢測法在預(yù)檢測階段根據(jù)邊界曲率劃定了疑似目標(biāo)區(qū)域,規(guī)避了在整個(gè)圖像范圍內(nèi)最為耗時(shí)的特征描述子生成過程,同時(shí)也使得精檢測過程具有更好的目的性,單一情況下的定位誤差較其余兩種算法相比至少減少5倍,3種姿態(tài)下安全套的最大定位誤差比其余兩種算法至少減少10倍,并且可以控制在±0.1 cm范圍內(nèi).與其余兩種算法相比,本文兩步算法具有最高的識(shí)別效率和最低的定位誤差,整體上符合自動(dòng)上料機(jī)器人對視覺識(shí)別系統(tǒng)的要求.
針對自動(dòng)上料機(jī)器人對視覺識(shí)別與定位算法高實(shí)時(shí)性、高效性的要求,提出了一種預(yù)檢測與精檢測的兩步法.該算法與純凈的ORB算法或ORB+BRISK算法相比,除了注重圖像的被檢測區(qū)域與目標(biāo)模板之間所存在的相似性之外,還優(yōu)先考慮了被檢測區(qū)域的邊界屬性.在精檢測階段僅對區(qū)域內(nèi)的圖像進(jìn)行特征描述子的提取并采用最近鄰域算法對該特征描述子與目標(biāo)模板的特征描述子進(jìn)行模板匹配[10]操作,以驗(yàn)證二者之間的相似程度.實(shí)驗(yàn)結(jié)果表明,兩步檢測算法對安全套特征區(qū)域的定位成功率可達(dá)97.6%,定位誤差范圍為[-0.1 cm,0.1 cm],定位時(shí)間為32 ms,完全滿足安全套自動(dòng)上料機(jī)器人對視覺識(shí)別與定位的要求.