張龍,鄭燦
(河北工程大學(xué) 機械與裝備工程學(xué)院,河北 邯鄲 056038)
工業(yè)機器人作為新興產(chǎn)業(yè)迅速發(fā)展并廣泛應(yīng)用于制造業(yè)中,機器視覺技術(shù)使機器人具備更強的感知能力。目標(biāo)識別、三維重建等作為機器視覺的一大分支,目前普遍應(yīng)用在生活和工業(yè)領(lǐng)域。在工業(yè)生產(chǎn)中,機器人在抓取物體時,可能會受到遮擋、旋轉(zhuǎn)、傾斜、光照等因素干擾,影響目標(biāo)識別和抓取準(zhǔn)確率,為了實現(xiàn)機器人在復(fù)雜環(huán)境下能夠準(zhǔn)確抓取,特征匹配和特征點篩選成為目標(biāo)識別的關(guān)鍵環(huán)節(jié)。
近年普遍利用的特征匹配算法有SURF、SIFT和ORB算法。20世紀90年代,David Lowe提出SIFT算法,被普遍利用在圖像識別,圖像處理和三維重建等各個領(lǐng)域。SURF算法是對SIFT的優(yōu)化,提出積分圖對海塞矩陣和盒子濾波器的使用,提升了運算效率。ORB算法雖然運算時間快,但不具有尺度不變性,在識別圖像穩(wěn)定性方面較差。隨著機器視覺技術(shù)日益成熟,應(yīng)用領(lǐng)域愈加廣泛,針對復(fù)雜圖像物體特征點過多,易出現(xiàn)誤匹配降低運算效率等情況,國內(nèi)外學(xué)者提出了許多解決方法。Bay等提出了通過SURF算法用Fast-Hessian矩陣來提高檢測點的計算速度,但降低了匹配精度;施威格在保證特征點尺度不變性的前提下,提出了一種線性化的SURF特征識別分類器來改善特征點之間的差異,與原算法相比速度有所提高,但圖像調(diào)整范圍縮小了;陳天華為了提升識別精度,提出了雙向匹配方法,在反向選取閾值時需要不斷嘗試,若設(shè)置錯誤準(zhǔn)確率反而會被降低;蔣凌志使用KMean聚類算法和RANSAC算法實現(xiàn)精確匹配,但該算法只適用于缺乏計算能力和資源的移動設(shè)備。
本文針對傳統(tǒng)SURF和RANSAC算法在圖像匹配中出現(xiàn)較多誤匹配點和迭代次數(shù)過多導(dǎo)致運算速度降低的問題,提出運用SURF算法獲取模板特征點,利用雙向歐式距離搜索相似度較高的對應(yīng)點,通過海塞矩陣跡進行判斷,若兩個特征點矩陣跡正負號不同,表明變化方位相反,即使求出的歐氏距離為0也直接剔除,最后采用改進的RANSAC算法對已經(jīng)匹配成功的像素點反向檢查,進行二次優(yōu)化,縮短了參數(shù)的檢驗時間,同時,基于FLANN結(jié)合SURF算法,采用K-d樹存儲圖像中所有歐式距離匹配點,進行多層次劃分,尋找模板和目標(biāo)圖像所有匹配對,自上而下依次篩選,最后通過勞氏算法求出最優(yōu)化匹配點,實現(xiàn)物體的實時匹配。
SURF特征檢測算法通過Hessian矩陣進行二階微分計算,在離散空間內(nèi),尺度為σ的Hessian矩陣H(X,σ)在某像素點I(x,y)定義:
式中,Lxx(X,σ)為高斯二階偏導(dǎo)數(shù)在x處與I的卷積,Lyy(X,σ),Lxx(X,σ)為g(σ)在y方向,x,y方向上與像素點I(x,y)的卷積,為了簡化計算,SURF算法中使用9×9的盒子模板來取代原來的高斯濾波與二階求導(dǎo)的過程,表達式為:
式中,ω為權(quán)值,一般取0.9。
對極值點進行如圖1所示的3×3×3非最大值抑制。為了實現(xiàn)亞像素級別定位,利用三維線性差值尋找亞像素特征點。
圖1 3×3×3非最大值抑制
以特征點為中心,6s(s為特征點尺度)為半徑,π/3角度大小的扇形區(qū)域為一個基本計量單位。統(tǒng)計計量單元的Haar小波特征,按照特征節(jié)點周圍與中心差異的明顯程度而賦不同權(quán),最接近圓心處時權(quán)較大。對每個特征整體權(quán)重相加,累加值較大的扇形區(qū)域角平分線所在方位即為特征節(jié)點的主體方位,主位置選取方式如圖2所示。
圖2 主方向選取
主方向確定后,在邊長20s(s是尺度因子)的區(qū)域構(gòu)建16個大小相等的子區(qū)域,統(tǒng)計16個區(qū)域中每個小區(qū)域25個像素的豎直和水平方向的haar小波特征,分別記為dy和dx,同時,計算dy和dx的累加絕對值,一共16×4=64維,進行歸一化處理后得出較好的效果,如圖3所示。
圖3 特征點描述
計算2個n維向量特征點之間的歐氏距離,公式如下:
式中,n為特征向量維數(shù),公式得出的值越小,說明特征點相似度越高,在特征點符合相似度要求時,同號匹配成功異號匹配失敗。根據(jù)公式(3)求解出模板圖上的特征點到目標(biāo)圖中的特征點Xi的歐式最短距離為Dist(Xi,Yi),同理,次短距離為Dist(Xi,Yi)。
將兩者進行比較:
再反向進行從目標(biāo)圖到模板圖的匹配,最后將同時滿足兩個方向的匹配提取出來,將Xi,Yi作為歐式距離的特征點放入矩陣P1中,將次短距離特征點Xi,Yi’放入矩陣中P2,匹配特征點集為:
RANSAC的基本原理是:首先,在第一次匹配的結(jié)果中抽取部分匹配點,構(gòu)造一個匹配點對的初級模型,將其余匹配點代入初始模型中進行運算,并將配對結(jié)果分成符合初始模型的與不符合初始模型的匹配點對,前者稱為有效數(shù)據(jù),后者則稱為無效數(shù)據(jù),而這些分離運算都是按照預(yù)先設(shè)置的閾值完成的。將所有失效數(shù)據(jù)全部去除,接著在所有有效數(shù)據(jù)內(nèi)提取部分錯誤匹配對,形成新的模型,然后不斷分離所有有效數(shù)據(jù),再繼續(xù)重復(fù)以上步驟,不斷迭代得到最優(yōu)的預(yù)測模型。最后,再按照最優(yōu)預(yù)測模型中的有效數(shù)據(jù)求取最新的參數(shù)模型,并利用該模型去除所有錯誤匹配對,優(yōu)化匹配結(jié)果。
本文實驗均在Visual Studio 2017+opencv4.5.1環(huán)境下進行編譯,為了驗證傳統(tǒng)算法和改進算法在目標(biāo)識別準(zhǔn)確率和運算效率方面的差距,設(shè)計了兩種工件在不同條件下的匹配識別實驗。
實驗一:設(shè)計外形相似的一對螺絲刀目標(biāo)識別實驗,傳統(tǒng)SURF算法與改進算法的工件識別效果如圖4所示。
圖4 工件識別效果圖
記錄數(shù)據(jù),如表1所示。
表1 兩種算法識別數(shù)據(jù)統(tǒng)計
從實驗圖片和表1的數(shù)據(jù)可以看出,斜線為誤匹配,傳統(tǒng)算法明顯有較多的誤匹配點,識別物體特征點明顯少于改進算法,而本文改進算法無明顯錯誤匹配點,匹配對數(shù)增多,匹配準(zhǔn)確率為100,沒有受到旁邊物體的干擾,成功識別目標(biāo)工件。
實驗二:設(shè)計螺釘在物體干擾、遮擋、旋轉(zhuǎn)條件下的目標(biāo)識別實驗。圖5(a)為傳統(tǒng)算法的特征匹配結(jié)果,特征點匹配較為雜亂,有較多誤匹配對,圖5(b)為改進算法后的特征匹配,匹配效果得到很大改善,誤匹配點基本被消除。
圖5 兩種算法圖像匹配
圖6、圖7為螺釘在物體干擾、遮擋、旋轉(zhuǎn)條件下兩種算法識別結(jié)果。
圖6 傳統(tǒng)算法在不同條件下的識別效果
圖7 改進算法在不同條件下的識別效果
在實驗過程中,記錄了傳統(tǒng)算法和改進算法在不同情況下模板與目標(biāo)圖像中特征點數(shù)目、匹配對數(shù)及匹配用時,識別數(shù)據(jù)如表2所示。
表2 兩種算法識別數(shù)據(jù)統(tǒng)計
由識別效果和表格數(shù)據(jù)可知:當(dāng)圖像有較多干擾時,計算耗時相對較長,圖像特征點可以正確識別匹配;目標(biāo)被遮擋時,雖然識別出遮擋物特征點但并未與模板匹配;工件旋轉(zhuǎn)時,目標(biāo)圖像因為擺放角度比例縮小,仍能準(zhǔn)確匹配,體現(xiàn)出算法尺度不變性的優(yōu)點。從匹配對數(shù)和計算耗時來看,與原始算法相比,改進算法在目標(biāo)識別精度和運算時間方面均有提升,能更好地滿足圖像匹配需求。
快速最近鄰搜索包FLANN(fast library for approximate nearest neighbors)由Muja和Lowe于2009年提出,是對大數(shù)據(jù)集進行最近鄰搜索算法的集合,目前經(jīng)常用于物體特征檢測,匹配算法流程如圖8所示。
圖8 算法流程圖
FLANN搜索算法分為兩組特征集,第一組為訓(xùn)練集,第二組為查詢集,訓(xùn)練匹配器來優(yōu)化cv::FlannBasedMatcher的性能,Train類創(chuàng)建特征集索引樹并優(yōu)化參數(shù)以提高匹配精度。在n維實數(shù)向量空間pn中所有數(shù)據(jù)點通過多層隨機k-d Tree(k-dimensional樹的簡稱)方法進行不重疊的多層次劃分,判斷劃分點和目標(biāo)點的坐標(biāo)關(guān)系,若目標(biāo)點小于切分點坐標(biāo),則移動到K-d樹的左子結(jié)點,否則為右。在查詢集鄰域范圍內(nèi)搜索出距離查詢集最近的歐式距離,自上而下逐層遞進搜索,設(shè)置閾值指定遞歸遍歷的次數(shù),若搜索到其他層次劃分區(qū)域內(nèi)有距離目標(biāo)點更近的點,則移動到這一結(jié)點,以此點為基準(zhǔn)繼續(xù)進行搜索,直到全部搜索完畢。
為了解決圖像中有其他因素干擾,提出了一種比較最近距離和最近鄰距離的方法:隨機選擇第一幅圖像的關(guān)鍵點,歐氏距離找到第二幅圖像最近的前兩個關(guān)鍵點,最近距離/次近距離<r,(0<r<1),r為人為設(shè)定的閾值,在本文實驗中取值0.6。
確定模板圖像為特征豐富表面有文字圖案的口香糖盒,分辨率為647×337,設(shè)計了口香糖盒在翻轉(zhuǎn)、傾斜、遮擋、替換4種條件下的目標(biāo)識別實驗,識別結(jié)果如圖9所示。
圖9 不同條件下的實時匹配
計算不同情況圖像特征點數(shù)目和匹配對數(shù),結(jié)果如表3所示。
在圖9(a)中模板圖像與目標(biāo)圖像中翻轉(zhuǎn)的口香糖盒匹配正確率高,手指、水管等干擾物體并未匹配;(b)圖中傾斜的口香糖盒上面有圖畫和文字干擾,匹配點較少,但精度未下降;(c)圖中遮擋和上面文字同樣沒有干擾與模板圖像的特征匹配;(d)圖能明顯看出口香糖盒與牛奶包裝瓶沒有特征點對應(yīng)。結(jié)合表3得出結(jié)論:基于FLANN結(jié)合SURF的改進算法可以實現(xiàn)目標(biāo)物體準(zhǔn)確識別,穩(wěn)定性較高,可用于工業(yè)現(xiàn)場多目標(biāo)實時檢測。
表3 改進算法識別數(shù)據(jù)統(tǒng)計
本文在傳統(tǒng)目標(biāo)識別算法依賴Hessian矩陣和單向歐氏距離匹配的基礎(chǔ)上,提出了RANSAC算法篩選外點,反向匹配優(yōu)化數(shù)據(jù)點。通過實驗對比,改進算法減少了部分雜亂特征點數(shù)量,提高了目標(biāo)識別的準(zhǔn)確率,加快了原始程序運算速度;同時,根據(jù)FLANN算法進行多維kd樹特征點匹配,利用勞氏算法優(yōu)化,實驗結(jié)果表明,改進算法增強了匹配效果,在干擾下仍有較強的魯棒性,能保證工件在復(fù)雜環(huán)境下的實時匹配。