杜柳青,許賀作,余永維,張建恒
(重慶理工大學 機械工程學院,重慶400054)(*通信作者電子郵箱weiyy@cqut.edu.cn)
柔性工裝技術能大幅降低制造成本、縮短工裝準備周期、提高生產率。研制高精度、高效率的機器人柔性裝夾系統,是我國工業發展的必然要求。結合機器視覺的柔性裝夾機器人是當前研究的熱點。
圖像匹配是計算機視覺研究領域的重點。目前,用于圖像匹配的方法有很多種,匹配算法的基本思想主要可以分為兩大類:一類是基于灰度匹配方法;一類是基于特征匹配方法[1-4]。文獻[5]針對匹配精度低和匹配速度慢的問題提出了一種基于灰度相關的2類匹配算法,該算法對上述問題有很好的改善。文獻[6]采用Harris角點圖像匹配算法,該算法具有很好的魯棒性;但增加了算法的復雜度。針對此問題文獻[7]提出了一種改進的Harris特征點檢測算法。另外上述文獻匹配算法對尺度變化圖像匹配效果較差,2004年,Low[8]提出了一種尺度不變特征變換(Scale Invariant Feature Transform, SIFT)算法,該算法具有很好的穩定性和魯棒性,對尺度、旋轉、縮放、仿射變換等有很好的不變性;但由于SIFT算法復雜度較高、計算量大,造成特征描述和匹配時間比較長。隨后,Bay等[9-10]提出了SURF(Speeded-Up Robust Feature)算法,它是SIFT的改進算法。SURF算法采用近似的Hessian矩陣行列式(Determinant of Hessian matrix, DoH)算子檢測出特征點,具有很好的魯棒性,而且速度比SIFT算法提高了3倍;但是,SURF算法在特征點描述階段采用的是基于梯度直方圖的局部特征描述方法[11],因而其運算仍需要消耗大量的時間,難以滿足實時性的要求。近年來,國外研究者提出一種新的特征描述符——二進制描述符[12],如:BRISK(Binary Robust Invariant Scalable Keypoint)描述符[13]、BRIEF(Binary Robust Independent Elementary Feature)描述符[14]、ORB(Oriented FAST and Rotated BRIEF)描述符[15]、FREAK(Fast Retina Keypoint)描述符[16]等,這些算子在運算時間上比SIFT、SURF有著顯著的降低,計算速度提高了一個數量級[17-18],具有很好的實時性。
BRIEF描述符摒棄了傳統的用梯度直方圖描述區域的方法,改用檢測隨即響應,大幅度提高了描述子建立速度;生成的二進制描述子便于高速匹配,且易于在硬件上實現。本文借助于BRIEF描述子的快速性,提出了一種SURF與BRIEF相結合的改進算法,用于柔性裝夾機器人抓取工件時的圖像快速匹配。首先由SURF算法提取出圖像特征點,并且確定特征點的位置;然后運用BRIEF描述符對特征點進行局部描述,并采用灰度質心法確定特征點主方向,降低算法的復雜度,縮短特征描述時間,實現機器人柔性裝夾工件的快速、準確的圖像匹配。
柔性裝夾機器人實驗平臺如圖1所示,主要包括以下幾個部分:機器人、雙目CCD攝像頭、工業計算機、圖像采集卡、控制器、工件傳送帶。計算機是柔性裝夾機器人系統的核心,它的主要功能是進行圖像處理、操作界面的顯示以及控制系統各部分的通信任務;工件放置在傳送帶上傳送,由于工件在傳送帶上位置放置的隨意性,因而兩個CCD攝像機(下置光源)需要安裝在傳送帶的正上方以獲得目標工件的圖像信息。圖2為柔性裝夾機器人實驗所用的視覺系統。

圖1 柔性裝夾機器人系統
該系統首先由雙目CCD攝像機對傳送帶上的目標工件進行圖像采集,并通過數據線將采集到的圖像存入到工業計算機內;然后計算機對采集到的圖像進行預處理,接著對圖像中的目標工件提取特征并進行目標匹配,以獲得目標工件的空間坐標;最后根據目標工件的空間坐標規劃機器人的軌跡路線,通過控制器控制機器人對目標工件的抓取工作。該系統實現過程中,圖像匹配是該系統研究的重點和難點,因而本文主要采用SURF算法和BRIEF算法對目標工件的匹配進行研究。

圖2 機器人視覺系統
2.1.1 積分圖像
SURF算法借用積分圖像理論,通過對積分圖像的簡單加減運算替代圖像和高斯二階微分模板的濾波,來提高計算速度。積分圖像的定義如文獻[10]所述。因而計算圖3中的S區域的灰度值積分可以由S=A-B-C+D來得到。

圖3 積分圖像法
2.1.2 DoH近似
圖像J中點(x,y)的尺度為σ的Hession矩陣為:
(1)
其中:Lxx(x,σ)是點x處高斯函數二階偏導數和圖像J(x)的卷積,Lxy(x,σ)和Lyy(x,σ)與之類似。
將卷積運算轉化為盒子濾波運算,也就是對高斯二階微分模板的簡化。模板尺寸大小為9×9的盒子濾波器是σ=1.2的高斯濾波器的近似,在對圖像進行濾波和斑點檢測時將它作為最新尺度空間值,卷積運算后的值分別為Dxx、Dxy、Dyy,用它們代替Lxx、Lxy、Lyy。如圖4所示。

圖4 盒子濾波器
因此,可以將Hessian矩陣的行列式簡寫為:
Det(Happrox)=DxxDyy-(ωDxy)2
(2)
其中:Det(Happrox)表示點x附近區域的盒子濾波響應值,可以用于檢測極值點;ω是一個協調參數,它的大小與σ有關,通常ω取值為0.9。
2.1.3 尺度空間建立
為了獲取不同尺度的斑點,首先需要構建圖像的高斯金字塔。建立圖像高斯金字塔的基本思想是保持原圖像大小不變,通過改變濾波器大小,就能得到尺度空間。SURF算法通過連續增大盒子濾波模板的大小,利用大小不一樣的盒子濾波模板與積分圖像得到Hessian矩陣的響應值,在響應圖像上計算出不同尺度的特征點。
2.1.4 特征點定位
在不同尺度特征點的響應圖像上進行3×3×3鄰域非極大值抑制,使每層圖像上的像素點都與其同一尺度上的8個像素點和與它相鄰的上下2層圖像的9個像素點相比較,如圖5所示。

圖5 非極大值抑制
如果該極值大于或小于這26個點的極值,則該點作為候選特征點。然后利用二次函數擬合方法對興趣點進行定位[19],且使定位精度達到亞像素和亞尺度級,獲得穩定興趣點的尺度及位置信息,完成定位。
2.2.1 確定特征點主方向
為了使目標圖像具有旋轉不變性,那么就必須要確定特征點的主方向。首先以上述得到的特征點為中心,計算半徑為6s(s為特征點所在的尺度值)鄰域內的點分別在x,y方向上的Harr小波響應,Harr小波邊長取4s,并對響應值進行高斯加權。然后,將60°扇形區域內的響應值累加形成新的矢量,遍歷整個圓形區域,選擇長度最長的矢量方向為該特征點的主方向,如圖6所示。

圖6 確定主方向
2.2.2 生成描述子
上述操作已經確定了特征點的位置和主方向,接下來為局部區域計算描述子。首先將坐標軸旋轉為特征點的方向,以確保旋轉不變性。以特征點為中心,在沿主方向平行的矩形區域中進行。此區域的大小為20s×20s,把它劃分為4×4個子塊,然后用尺寸大小為2s的Harr小波模板對每個子塊進行響應值計算,得到每個子塊的矢量。因為此區域一共有4×4個子塊,所以生成的特征描述子共由4×4×4=64維特征矢量構成。
SURF算法在特征描述階段運算時間較長,難以滿足加工場景的實時性要求,針對此問題本文提出了一種改進SURF的圖像特征匹配算法。該算法首先利用原SURF算法的特征檢測方法DoH檢測出特征點;接著采用灰度質心法對提取的特征點計算出主方向;然后運用二進制描述符BRIEF算子對特征點進行描述;最后使用漢明距離雙向匹配,并采用比率檢測法和RANSAC(Random Sample Consensus)法剔除誤匹配點,極大地提高了算法的實時性和穩定性。改進算法與原SURF算法圖像特征匹配流程如圖7所示。

圖7 圖像配準流程
BRIEF算法的核心理論是在特征點周圍任意選取若干點對組成圖像塊,對其灰度值進行二值化處理,然后把所得的結果組成一個二進制串,并把它作為該特征點的特征描述子。BRIEF描述子的任意一位都是采用隨機選取兩個二進制點作比較得到的。定義一個圖像鄰域P的二進制比較準則τ,其大小為s×s。

(3)
其中:x,y為圖像鄰域P中的任意兩個像素點,p(x),p(y)為x,y處的灰度值。選擇n個點對(x,y),唯一定義了一個二進制準則,所以由此生成的BRIEF描述子為n維的二進制比特字符串:
(4)
實際使用中n可以為128、256、512等。
為了解決BRIEF描述子對噪聲比較敏感的問題,本文采用高斯濾波的方法進行處理。首先采用31×31像素鄰域內的5×5子窗口,而且對子窗口的選擇要服從高斯分布,最后利用上文SURF算法中的積分圖像來進行加速計算。從s×s大小的圖像塊上選取nd個(xi,yi)像素對有許多不同的方法,Calonder等[14]使用5種采樣方法對其進行研究,最終實驗證明第2種方法相較其他方法得到的結果較好,所以BRIEF描述子采用的是第2種方法,即xi、yi均呈高斯分布[0,11s2/25],準則采樣服從各向同性的同一高斯分布。
因為上述生成的描述子沒有方向性,所以描述子不具備旋轉不變性。為了解決這一問題,本文對由SURF算法提取的特征點,利用灰度質心法求取特征點主方向θ。對任意特征點q,它鄰域像素的矩為:
(5)
其中,I(x,y)為點(x,y)處的灰度值。
圖像質心為:
C=(m10/m00,m01/m00)
(6)
則特征點的主方向為:
θ=tan-1(m01,m10)
(7)
對于任意特征點序列在(xi,yi)像素位置處,由二進制準則選取n對點集,然后定義一個2×n的矩陣S:
(8)
采用特征點及其附近鄰域組成的圖像小塊的方向和與其相對應的旋轉矩陣,構造帶有方向特性的Sθ:
Sθ=RθS
(9)
其中:θ為圖像塊主方向,Rθ為旋轉矩陣。
這樣就得到了具有旋轉不變性的描述子:
gn(p,θ)=fn(p)|(xi,yi)∈Sθ
(10)
其中,gn(p,θ)為具有方向的特征描述子。
由于BRIEF描述符生成的描述子形式為二進制碼串,因而本文采用Hamming距離對特征點進行匹配,漢明距離就是將一個字符串變換成另外一個字符串所需要替換的字符個數,因此漢明距離越大說明兩幅圖像的相似性越差;然后使用比率檢測法[20]去除那些多點匹配的誤匹配點;最后使用RANSAC算法[21]進一步剔除誤匹配點,實現精準匹配。
本文從算法的尺度不變性、旋轉不變性以及算法的實時性3個方面進行了仿真實驗,分別用本文算法和SURF算法對若干組圖像進行運算仿真來比較算法的性能。
實驗在Visual Studio 2010+OpenCV 2.4.8編程環境中運行。計算機為64位Windows 10系統,相機采用HNY-CV- 002型平行雙目攝像機,圖形軟件系統為AmcapImage。工件為柔性裝夾機器人常見工作環境下的雙頭螺栓和三通螺母。在程序實現中,改進算法設置minHessian閾值為400,來判定特征點的數量與質量。BFMatcher匹配第一個參數為NORM_HAMMING;第二個參數為True,返回最好的一組匹配,而非最近鄰。
匹配實驗所用的主程序如下所示:
1)特征檢測與描述程序。
Mat src1=imread("007- 11.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat src2=imread("007- 11m.jpg",CV_LOAD_IMAGE_GRAYSCALE);
if(!src1.data‖!src2.data)
{
cout<<"Error reading images"< return -1; } vector double t=getTickCount(); cv::SurfFeatureDetector surf(400); surf.detect(src1,kp1); surf.detect(src2,kp2); BriefDescriptorExtractor brief; Mat des1,des2; brief.compute(src1,kp1,des1); brief.compute(src2,kp2,des2); 2)特征點匹配程序。 BFMatcher matcher(NORM_HAMMING); std::vector matcher.match(des1,des2,matches); 使用本文改進算法獲取兩幅不同尺度的雙頭螺栓匹配圖像的特征點,其中包含特征點的大小及其主方向,如圖8所示。 圖8 特征點檢測(雙頭螺栓) 通過拍攝多組不同尺度圖像,分別使用SURF算法和改進的SURF算法進行實驗比較,如圖9所示。 圖9 兩種算法的匹配結果(雙頭螺栓) 從匹配結果中分別取其中的7組進行統計分析,實驗分析結果如表1所示。其中匹配精度是由圖像特征匹配中精匹配對除以總匹配對計算獲得,即,匹配精度=(精匹配對數/總匹配對數)×100%。 由實驗結果可知,對不同尺度的圖像進行匹配時,雖然SURF算法匹配對數多于本文改進算法,但其受周圍環境因素影響較大。由表1實驗結果可以知道,與原SURF算法相比,本文改進算法匹配精度提升了3.37個百分點,表明本文改進算法具有很好的尺度不變性。 表1 圖像尺度變化時匹配精度對比 使用改進SURF算法獲得兩幅不同旋轉角度下的三通螺母匹配圖像的特征點,其中包含特征點的大小和主方向,如圖10所示。 圖10 特征點檢測(三通螺母) 分別使用SURF算法、改進SURF算法進行圖像匹配,如圖11所示。 圖11 兩種算法的匹配結果(三通螺母) 從匹配結果中分別取其中的7組進行統計分析,實驗分析結果如表2所示。其中匹配精度是由圖像特征匹配中精匹配對除以總匹配對計算獲得,即:匹配精度=(精匹配對數/總匹配對數)×100%。 表2 圖像旋轉變化時匹配精度對比 由表2中結果可以得到,當圖像發生旋轉時,原SURF算法匹配對數多于本文改進算法。由表2實驗結果可以知道,與原SURF算法相比,本文改進算法的匹配精度提升了1.82個百分點,由此可知本文改進算法具有很好的旋轉不變性。 原SURF算法在特征描述階段采用的是梯度直方圖描述區域的方法,該方法較為復雜,因而本文算法改用檢測隨即響應,大幅度提高了描述子建立速度,且生成的二進制描述子便于高速匹配,且易于在硬件上實現。隨機抽取7組不同尺度的雙頭螺栓圖像的特征描述階段和算法的總耗時實驗數據,分別對SURF算法和改進的SURF算法的實時性進行比較分析,統計結果如表3所示。 表3 兩種算法的實時性比較 由表3中結果可以得到,本文算法的特征描述階段速度約為原來SURF算法的10倍,且本文算法總耗時為86.29 ms,而SURF算法的為214.10 ms,因而與原SURF算法相比,本文改進算法的總耗時減少了59.7%,說明本文算法具有很好的實時性。 通過以上實驗分析可知,改進的SURF算法不但具備了尺度不變性和旋轉不變性,而且極大地縮短了算法的計算時間,滿足了算法實時性要求。 本文針對柔性裝夾機器人抓取工件過程的快速視覺匹配應用需求,結合BRIEF算子在特征點描述階段的快速性,提出了改進SURF匹配算法,即采用近似DoH法提取圖像的關鍵點,運用BRIEF描述符對提取的特征點進行描述。為了解決BRIEF算法不具備旋轉不變性的問題,采用灰度質心法計算出特征點主方向,構造帶有方向的特征描述符,使其具有旋轉不變性。最后采用比率檢驗法、RANSAC算法對匹配結果進一步提純。本文算法極大地降低了特征描述的復雜度,提高了算法的運算速度,保證了算法的實時性要求,同時也保留了SURF算法的尺度不變性和旋轉不變性的優點。由匹配實驗可知本文算法具有很好的實時性。4.2 尺度不變性對比實驗



4.3 旋轉不變性對比實驗



4.4 匹配時間對比實驗

5 結語