胡志鋒,許 鋼,陳 玲,伏娜娜
(安徽工程大學(xué) 檢測技術(shù)與節(jié)能裝置安徽省重點(diǎn)實(shí)驗(yàn)室,安徽 蕪湖 241000)
隨著社會(huì)的發(fā)展進(jìn)步,在人類的生活生產(chǎn)中,移動(dòng)式機(jī)器人的身影逐漸增多.移動(dòng)式機(jī)器人能夠幫助人類完成一些生產(chǎn)配裝、服務(wù)、遞送、運(yùn)輸?shù)热蝿?wù)[1].為了提高人們對于機(jī)器人操控的便捷性、機(jī)器人完成任務(wù)時(shí)的準(zhǔn)確性,保障機(jī)器人可靠安全地服務(wù)人類,移動(dòng)機(jī)器人需要具備對于環(huán)境的感知力[2],還需要得知自身在環(huán)境中的位置,實(shí)時(shí)獲取自身的狀態(tài)和位置.目前視覺SLAM的研究成果主要運(yùn)用在機(jī)器人、三維重建、增強(qiáng)現(xiàn)實(shí)及自動(dòng)駕駛等高精度設(shè)備[3]中,提高視覺SLAM的圖像匹配精度和縮短匹配時(shí)間,能夠更好地?cái)U(kuò)大其在現(xiàn)實(shí)中的運(yùn)用范圍和運(yùn)用效果.
針對圖像特征匹配算法精度和速度的發(fā)展,現(xiàn)階段已經(jīng)具有非常大的提升[4].SIFT(Scale-invariant feature-transform)[5]、SURF(Speeded-up Robust Feature)[6]和ORB(Oriented FAST and Rotated BRIEF)[7]等是目前運(yùn)用在圖像匹配中的主流算法.2011年,Rublee等提出了著名的ORB算法[8],特征匹配在匹配速度上相較于另外兩種算法得到巨大的提升.但ORB算法也存在問題,在傳感器提取圖像信息的距離發(fā)生改變時(shí),或者在運(yùn)動(dòng)過程中發(fā)生抖動(dòng)導(dǎo)致圖像尺度變化時(shí),傳統(tǒng)的ORB算法在匹配效率和準(zhǔn)確度上都會(huì)有所降低.2017年Lin等提出FPN[9],利用多尺度融合思想進(jìn)行特征融合,將底層的特征一步一步融合到高層,從而解決特征點(diǎn)的尺度不變性問題,但此方法因?yàn)樾枰獙⒌讓拥奶卣髦鸩脚c高層特征融合,過程較為復(fù)雜,比較耗時(shí),會(huì)增加匹配的時(shí)間.
為了解決ORB算法的尺度不變性問題和匹配速度問題,筆者利用SURF算法的尺度金字塔[10]來檢測和提取特征點(diǎn)[11],同時(shí)利用ORB算法建立特征描述符,依據(jù)相關(guān)性大小降維,剔除相關(guān)性弱的描述符向量,縮短算法匹配的時(shí)間.
SURF算法構(gòu)建的尺度空間能夠提取帶有尺度的特征點(diǎn),ORB算法的描述符便于匹配,所以結(jié)合SURF算法和ORB算法對圖像進(jìn)行特征匹配.首先采用SURF算法構(gòu)建尺度金字塔、特征點(diǎn)定位和方向分配,再采用ORB算法BRIEF特征描述并做降維處理,最后采用漢明距離特征匹配得到結(jié)果.流程圖如圖1所示.
圖1 改進(jìn)ORB算法流程
1.1.1 構(gòu)造Hessian矩陣
SURF算法通過構(gòu)建Hessian矩陣[12]檢測特征點(diǎn).現(xiàn)假設(shè)一個(gè)像素點(diǎn)f(x,y)是一個(gè)實(shí)值二元函數(shù),(x,y)表示該像素點(diǎn)在二維坐標(biāo)系中的坐標(biāo),可以找出其對應(yīng)的一個(gè)Hessian矩陣.
(1)
可以根據(jù)Hessian矩陣的行列式的值來判斷點(diǎn)(x,y)是不是極值點(diǎn):
(2)
在Hessian矩陣的判別式det(H)得到了一個(gè)局部極大值時(shí),比較當(dāng)前點(diǎn)與其周圍鄰域內(nèi)的點(diǎn)的明暗程度.如果比其鄰域內(nèi)的點(diǎn)更亮或者更暗,則說明該點(diǎn)與其鄰域內(nèi)點(diǎn)差異性比較大,可判定為關(guān)鍵點(diǎn),以此確定關(guān)鍵點(diǎn)的位置.
1.1.2 構(gòu)建尺度空間
SURF算法構(gòu)建尺度金字塔[13]的原理是原圖像不改變大小,將模板的大小進(jìn)行改變,即用模板盒子尺寸的變化來對原圖像進(jìn)行濾波,構(gòu)造出尺度空間.同時(shí),SURF還可以處理金字塔中每層的圖像.盒子尺寸濾波模板在不斷地增大,與積分圖像卷積后生成Hessian矩陣行列式的響應(yīng)函數(shù),構(gòu)造出金字塔.
如圖2所示,右邊為SURF構(gòu)建的方法,左邊為高斯金字塔的構(gòu)建方法.
圖2 兩種金字塔
在Hessian矩陣之后進(jìn)行特征點(diǎn)的定位[14],將經(jīng)過Hessian矩陣處理的每個(gè)像素點(diǎn)與其同層的鄰域內(nèi)8個(gè)像素點(diǎn)及與該層相鄰的上下兩層鄰域18個(gè)像素點(diǎn)進(jìn)行比較,初步確定關(guān)鍵點(diǎn),再將一些錯(cuò)誤點(diǎn)和不穩(wěn)定的關(guān)鍵點(diǎn)排除,留下穩(wěn)定的特征點(diǎn),實(shí)現(xiàn)特征點(diǎn)的定位,如圖3所示.
圖3 特征點(diǎn)定位
在以樣本特征點(diǎn)為圓心的圓域內(nèi),用60°的扇形掃描旋轉(zhuǎn),計(jì)算所有特征點(diǎn)的水平和垂直方向Haar小波響應(yīng)總和,重復(fù)上述過程,找尋出最大扇形的方向作為特征點(diǎn)的主方向[15].
在進(jìn)行特征描述時(shí),使用ORB算法的BRIEF算法[16]來計(jì)算特征點(diǎn)的特征描述,優(yōu)勢是速度快. BRIEF描述子是一種二進(jìn)制串描述,其核心思想是在特征點(diǎn)p的附近無規(guī)律地選擇N對點(diǎn)對,將這N對點(diǎn)對進(jìn)行比較,并將比較結(jié)果組合起來作為描述子.假設(shè)τ表示二值測試函數(shù),原理如下.
1)以特征點(diǎn)p為圓心,以一定的半徑作圓.
2)在這個(gè)圓內(nèi)隨機(jī)選取N對點(diǎn).定義τ對比,取值0或1,式(3)為比較N對像素點(diǎn)的灰度值大小的公式.
(3)
式中,p(m)表示m點(diǎn)的像素值數(shù)值,p(n)表示n點(diǎn)的像素值數(shù)值.比較m、n點(diǎn)的像素值大小,n點(diǎn)像素值大則為1,否則為0.
3)分別對已選擇的點(diǎn)對進(jìn)行τ對比,將測試結(jié)果進(jìn)行組合.
4)將nd個(gè)結(jié)果從最低位到最高位依次組成字符串fnd[p],i表示常變量1到256,nd表示描述符向量個(gè)數(shù),在此處為256.
(4)
ORB算法生成64維描述符向量,高維度的描述符會(huì)增加匹配的時(shí)間,并且其中還存在一些無用的特征點(diǎn),在后續(xù)特征匹配中會(huì)增加匹配時(shí)間及增大產(chǎn)生誤匹配的概率.為了解決本文算法無用的特征點(diǎn)和高維度描述符影響圖像匹配效率的問題,對描述符降維處理[17],提升圖像匹配的速度.利用樣本點(diǎn)的相關(guān)系數(shù),剔除每一維中的相關(guān)性最弱的樣本點(diǎn),最后重新整合數(shù)據(jù)樣本,達(dá)到降維效果,具體流程如下.
1)ORB算法生成64維描述符,每維描述符樣本有4個(gè)樣本數(shù)據(jù),構(gòu)建坐標(biāo)系,給每個(gè)樣本數(shù)據(jù)標(biāo)號(hào)為(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4).
2)計(jì)算樣本協(xié)方差:
(5)
3)樣本標(biāo)準(zhǔn)差:
(6)
(7)
4)相關(guān)系數(shù)表達(dá)式:
(8)
5)計(jì)算得到r11,r22,r33,r44.其中相關(guān)系數(shù)的取值在-1到1之間,-1表示兩樣本數(shù)據(jù)負(fù)相關(guān),1表示兩樣本數(shù)據(jù)正相關(guān),0表示兩樣本數(shù)據(jù)無相關(guān)性,數(shù)據(jù)離0越近說明相關(guān)性越差.
6)比較r11,r22,r33,r44相關(guān)性,相關(guān)性最弱的一個(gè)數(shù)據(jù)樣本被剔除.
7)對64維描述符重復(fù)上述步驟,刪除64個(gè)數(shù)據(jù)樣本,剩余的數(shù)據(jù)重新整合,得到48維描述符,達(dá)到降維效果.
首先利用二進(jìn)制值計(jì)算得到描述子之間的漢明距離,然后根據(jù)漢明距離對待匹配的兩特征點(diǎn)進(jìn)行比較,得出相似程度.其相似度的大小區(qū)間為1%~100%,匹配完成后需要盡可能保留具備反映圖像信息的匹配對,同時(shí)保留相似程度較大的匹配對,相似度低意味著是錯(cuò)誤的匹配結(jié)果,所以結(jié)合文獻(xiàn)[18]設(shè)置相似度閾值為80%,即待匹配的兩特征點(diǎn),其相似程度不小于閾值80%,則認(rèn)定匹配成功.
實(shí)驗(yàn)均在i5-3320M CPU、8GB內(nèi)存計(jì)算機(jī),Ubuntu 16.04+OpenCV 3.4.9環(huán)境中運(yùn)行實(shí)現(xiàn),傳感器使用Kinect V2.
圖4和圖5是驗(yàn)證算法得到的特征點(diǎn)尺度不變性的實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)圖片來自實(shí)際相機(jī)不同視角拍攝.圖6和圖7及表1是改進(jìn)ORB算法結(jié)合了相關(guān)性降維處理的算法與傳統(tǒng)ORB算法的對比(實(shí)驗(yàn)1),圖片信息來自NYU v2數(shù)據(jù)集圖像.
圖6 傳統(tǒng)ORB匹配結(jié)果
圖7 改進(jìn)ORB匹配結(jié)果
圖4、圖5是針對ORB算法得到的特征點(diǎn)不具備尺度不變性的實(shí)驗(yàn)結(jié)果.在同一目標(biāo)物體尺度變化后,傳統(tǒng)ORB算法的匹配結(jié)果存在大量的誤差,這樣可能會(huì)影響其對于自身位置的判斷,而改進(jìn)ORB算法利用SURF構(gòu)建尺度金字塔和提取特征點(diǎn),再結(jié)合ORB形成特征描述符后完成匹配,得到很好的匹配結(jié)果,驗(yàn)證了此方法得到的特征點(diǎn)具備尺度不變性.
圖4 傳統(tǒng)ORB尺度實(shí)驗(yàn)
圖5 改進(jìn)ORB尺度實(shí)驗(yàn)
結(jié)合實(shí)驗(yàn)1和表1,對NYU v2數(shù)據(jù)集提供的圖像進(jìn)行實(shí)驗(yàn),匹配總對數(shù)上傳統(tǒng)ORB算法比改進(jìn)ORB算法多,但同時(shí)傳統(tǒng)ORB算法特征匹配的錯(cuò)誤匹配對也比改進(jìn)ORB算法多.依據(jù)最終的正確匹配對,改進(jìn)的ORB算法的正確匹配率達(dá)到90.5%,而傳統(tǒng)ORB算法的正確匹配率達(dá)到91%.此外,改進(jìn)ORB算法在降維處理后的待匹配對數(shù)下降了,進(jìn)而在匹配時(shí)間消耗上較傳統(tǒng)ORB算法有所減少.改進(jìn)ORB算法在匹配正確率上與傳統(tǒng)ORB算法接近,在保證了較高的匹配正確率的前提下,改進(jìn)ORB算法在匹配時(shí)間消耗上比傳統(tǒng)ORB算法減少了55%.
表1 NYU v2數(shù)據(jù)集改進(jìn)前后ORB算法匹配數(shù)量對比
上述實(shí)驗(yàn)的圖像數(shù)據(jù)來自在網(wǎng)絡(luò)上公開的NYU v2數(shù)據(jù)集,基于此進(jìn)一步對改進(jìn)ORB算法做驗(yàn)證實(shí)驗(yàn).圖8、圖9來自數(shù)據(jù)集中的電腦桌圖片,圖10、圖11來自實(shí)驗(yàn)室工作臺(tái)電腦的環(huán)境圖片,運(yùn)用此算法做實(shí)驗(yàn)2對比.
圖8 傳統(tǒng)ORB匹配算法
圖9 改進(jìn)ORB匹配結(jié)果
圖10 傳統(tǒng)ORB匹配算法
圖11 改進(jìn)ORB匹配結(jié)果
結(jié)合實(shí)驗(yàn)1和實(shí)驗(yàn)2,以及表2、表3,筆者提出改進(jìn)的ORB算法:首先利用SURF的尺度金字塔提取特征點(diǎn),以保證提取的特征點(diǎn)具備尺度不變性,并很好地完成了尺度變化的實(shí)驗(yàn)匹配;再對具備尺度不變性的特征點(diǎn)形成的描述符做降維處理,目的是提高匹配速度.最終的實(shí)驗(yàn)表明,改進(jìn)的ORB算法做了降維處理后,在正確匹配率上接近傳統(tǒng)ORB算法,并且在匹配速度上較傳統(tǒng)ORB算法大幅提高.
表2 數(shù)據(jù)集電腦桌面改進(jìn)前后ORB算法匹配數(shù)量對比
表3 實(shí)驗(yàn)室電腦桌面改進(jìn)前后ORB算法匹配數(shù)量對比
針對ORB算法提取的特征點(diǎn)沒有尺度不變性的缺點(diǎn),結(jié)合SURF算法對ORB算法進(jìn)行改進(jìn).實(shí)驗(yàn)結(jié)果表明:改進(jìn)的算法解決了ORB算法尺度不變性的缺點(diǎn),并且在保證正確匹配率接近的前提下,利用相關(guān)性降維處理縮短了匹配的時(shí)間,提高了匹配的速度.但是,最后還存在少許的誤匹配結(jié)果.后續(xù)的工作是提高匹配精度,解決結(jié)果中的錯(cuò)誤匹配部分.