尹顏朋,王玉偉,趙紅田,丁祝祥,李記鵬
(四川大學(xué)計算機(jī)學(xué)院,成都 610065)
立體匹配是當(dāng)今計算機(jī)視覺領(lǐng)域重要的研究方向之一,被廣泛的應(yīng)用到智能駕駛、虛擬現(xiàn)實、增強(qiáng)現(xiàn)實、模式識別、機(jī)器人等技術(shù)中。其中圖像特征點提取與匹配是立體匹配的核心。常用的特征點檢測方法有SIFT、SURF、ORB等。
ORB(Orientated FAST and Rotated BRIEF)特征是目前非常具有代表性的圖像特征,并具有尺度和旋轉(zhuǎn)不變性。ORB[1]選取FAST算法提取特征點,并計算特征點的主方向,使用BRIEF作為特征點描述子。ORB由于使用了漢明距離等方法,其速度是SURF[3]的10倍,是SIFT[2]的100倍左右。我們使用圖像矯正、圖像增強(qiáng)、視差矯正去除誤匹配點等方法,提高圖像匹配的準(zhǔn)確性。同時對改進(jìn)的ORB算法進(jìn)行定點化研究,為FPGA實現(xiàn)該算法的加速做好測試。ORB速度仍無法滿足自動駕駛實時響應(yīng)的要求,因此使用FPGA加速該算法。然后將改進(jìn)的ORB算法應(yīng)用到自動駕駛系統(tǒng)當(dāng)中。
在圖像中選取像素p,假設(shè)它的亮度為Ip,設(shè)置一個閾值T(例如,Ip的20%)。以像素 p為中心,選取半徑為3的圓上的16個像素,假如選取的圓上有連續(xù)的N的點亮度大于Ip+T或Ip-T,那么像素p可以被認(rèn)為特征點(通常N常取12),對圖像中的每個像素執(zhí)行這些操作,得到特征點的集合。為了快速排出絕大多數(shù)不是角點的像素,對于每個像素檢測鄰域圓上的第1,5,9,13個像素亮度。只要這4個像素同時大于Ip+T或者小于Ip-T時,否則直接排除。為增加尺度不變性,添加了圖像金字塔。特征的旋轉(zhuǎn)不變性使用灰度質(zhì)心法[8],在一個圖像塊A中,定義圖像塊的矩為:
通過矩可以找到圖像塊的質(zhì)心:
通過以上方法,ORB算法具有了尺度和旋轉(zhuǎn)不變性。
ORB算法對Steer BRIEF進(jìn)行了改進(jìn)。根據(jù)1.1提取特征點。對每個特征點選取31×31鄰域,每個鄰域選擇5×5的平均灰度值代替原來單個像素值進(jìn)行對比??傻玫?N=(31-5+1)×(31-5+1)個可對比的塊,M=C(N,2)個點對。根據(jù)均值和點之間方差最大化原理,篩選出256個點對,即rBRIEF。
ORB特征的匹配使用漢明距離(Hamming dis?tance)。對于兩個描述子Des1,Des2:
然后計算Des1、Des2的漢明距離:
Distance(Des1,Des2)越小代表特征點相似度越高,否則相似度越低。
改進(jìn)的ORB算法步驟為:
對圖像進(jìn)行矯正,去圖像畸變;
對圖像進(jìn)行直方圖均衡化,提高圖像的對比度,使圖像更清晰。對圖像進(jìn)行高斯濾波,消除圖像噪聲;
提取FAST角點,并進(jìn)行非極大抑制,去掉非角點特征點。求取像素的時,對像素進(jìn)行四舍五入,而非ORB-SLAM2[4]中進(jìn)行向上取整,盡量減小誤差;
在特征點匹配過程中,如果特征點相差兩層金字塔則這兩個特征點不匹配。
在匹配點處進(jìn)行基于滑動窗口的亞像素級的矯正,即以左圖的特征點KeyPoint1為中心的窗口大小為11X11的窗口A,在右圖中極線中找到與KeyPoint1視差絕對值為5特征點KeyPoint2,以KeyPoint2為中心窗口大小為11×11的窗口為B。然后求出與A最匹配的窗口B,即可找到最合適的匹配點對。
本部分主要研究ORB算法的定點化,為實現(xiàn)FP?GA加速做鋪墊。在像素位置取整過程中,我們采用四舍五入替代向上取整。研究定點化主要是研究特征點質(zhì)心角度小數(shù)點保留位數(shù)對特征匹配對數(shù)量的影響。針對MH01、MH02數(shù)據(jù)集,對于特征點角度保留兩位小數(shù)(其中特征點的方向為0到360°),分別進(jìn)行五次測試,求取匹配點對數(shù),并取五組點對數(shù)平均值。同理可得,對于角度在?。?,0)、整數(shù)、保留小數(shù)點后4位、保留小數(shù)點后6位、小數(shù)點后8位都可求得對應(yīng)的匹配點對。然后以需要保留的小數(shù)點保留位數(shù)類型為橫坐標(biāo),以匹配點對數(shù)為縱坐標(biāo),畫出折線圖。如下所示。其中圖1為MH01數(shù)據(jù)集測試結(jié)果。圖2為MH02數(shù)據(jù)集測試結(jié)果。
由圖1圖2可以得出結(jié)論,把特征點質(zhì)心角度設(shè)為(0,0),可以增加匹配點對數(shù),但由于特征點失去了旋轉(zhuǎn)不變性,這種方法不提倡。但是把角度保留整數(shù)、小數(shù)點后兩位、小數(shù)點后四位、小數(shù)點后六位、小數(shù)點后八位,對于匹配點對數(shù)幾乎沒有影響。該結(jié)論對實現(xiàn)FPGA加速ORB算法,具有重要意義。
前端使用改進(jìn)的ORB算法,追蹤上一幀初始化當(dāng)前幀的位姿,后端基于滑動窗口(窗口大小為10)優(yōu)化位姿,如圖3所示。算法流程為:當(dāng)新的關(guān)鍵幀到來的時候,移除滑動窗口里的第一張圖片和其對應(yīng)的地圖點,添加新的關(guān)鍵幀到滑動窗口中。每次新的關(guān)鍵幀到來的時候進(jìn)行一次Bundle Adjustment優(yōu)化反投影誤差,得出相對準(zhǔn)確地雙目視覺里程計。
圖3
本文的實驗使用EuRoc提供的數(shù)據(jù)集進(jìn)行評測,實驗結(jié)果如圖4所示。
圖1
圖2
圖4
在實驗中,如果所示,該方法與ground truth已經(jīng)很接近了。但部分區(qū)域和真實結(jié)果還有一些差距,仍有繼續(xù)改善的空間。在算法中,只是借助于雙目立體視覺求解里程計信息,還不夠精確,后期會融合GPS、雷達(dá)、IMU等傳感器信息,使之更好地服務(wù)于機(jī)器人、無人車等設(shè)備的定位與導(dǎo)航。
[1]Rublee E,Rabaud V,Konolige K,et al.ORB:An Efficient Alternative to SIFT or SURF[C].Computer Vision(ICCV),2011 IEEE International conference on.IEEE,2011:2564-2571.
[2]Lowe D G.Distinctive Image Features from Scale-Invariant Keypoints[J].International Journal of Computer Vision,2004,60(2):91-110.
[3]Bay H,Tuytelaars T,Van Gool L.Surf:Speeded up Robust Features[J].Computer Vision-ECCV 2006,2006:404-417.
[4]Mur-Artal R,Tardós J D.Orb-slam2:An Open-Source Slam System for Monocular,Stereo,and RGB-D Cameras[J].IEEE Transactions on Robotics,2017,33(5):1255-1262.
[5]FAST:Rosten E,Drummond T.Machine Learning for High-Speed Corner Detection[J].Computer Vision-ECCV 2006,2006:430-443.
[6]Triggs B,McLauchlan P F,Hartley R I,et al.Bundle Adjustment—a Modern Synthesis[C].International Workshop on Vision Algorithms.Springer,Berlin,Heidelberg,1999:298-372.
[7]Calonder M,Lepetit V,Strecha C,et al.Brief:Binary Robust Independent Elementary Features[J].Computer Vision-ECCV 2010,2010:778-792.
[8]Rosin P L.Measuring Corner Properties[J].Computer Vision and Image Understanding,1999,73(2):291-307.
[9]Yang Z,Shen S.Monocular Visual-Inertial State Estimation with Online Initialization and Camera-IMU Extrinsic Calibration[J].IEEE Transactions on Automation Science and Engineering,2017,14(1):39-51.