余正強(qiáng),蔣 林,b,郭宇飛
(武漢科技大學(xué)a.冶金裝備及其控制教育部重點(diǎn)實(shí)驗(yàn)室;b.機(jī)器人與智能系統(tǒng)研究院,武漢 430081)
為實(shí)現(xiàn)機(jī)械代替人工完成多場(chǎng)景下的作業(yè)活動(dòng),移動(dòng)機(jī)器人成為了學(xué)術(shù)研究的重點(diǎn)。GEORG等[1]提出PTAM算法,實(shí)現(xiàn)了SLAM中跟蹤和建圖的并行化,標(biāo)志著SLAM系統(tǒng)的設(shè)計(jì)劃分為前端與后端。視覺里程計(jì)(visual odometry,VO)作為VSLAM的前端,由DAVID等[2]提出,它最核心的問題是如何將相機(jī)輸入的視頻幀轉(zhuǎn)換為估計(jì)相機(jī)的運(yùn)動(dòng)。常用的VO算法主要分為直接法和特征點(diǎn)法。由于直接法不允許機(jī)器運(yùn)動(dòng)幅度過大,且對(duì)相機(jī)的質(zhì)量要求較高,所以基于特征點(diǎn)法的前端便成為現(xiàn)在VO的研究主流。所謂特征點(diǎn)法,主要是從圖像中獲取位置比較特別的點(diǎn),然后基于這些點(diǎn)計(jì)算相機(jī)的位姿,其關(guān)鍵步驟便是特征的提取和匹配。常見的特征提取方案有Harris[3]、SIFT[4]、SURF[5]、ORB[6]等算法,其中ORB算法主要由oFAST[7]角點(diǎn)提取和rBRIEF[8]特征描述兩部分組成,該算法不僅具有旋轉(zhuǎn)、尺度不變性,且較其它算法運(yùn)算效率更快,為保證VSLAM所需的實(shí)時(shí)性,其為最佳的選擇,因此便對(duì)其產(chǎn)生一系列研究。對(duì)于光照變換復(fù)雜的場(chǎng)景,WANG等[9]提出對(duì)感興趣區(qū)域進(jìn)行具有可變提取半徑的自適應(yīng)ORB特征檢測(cè)方法,利用Rol分割技術(shù),對(duì)不同場(chǎng)景下的特征檢測(cè)使用自適應(yīng)閾值進(jìn)行動(dòng)態(tài)調(diào)整,但隨著光照的變化,原有的特征會(huì)與現(xiàn)識(shí)別的特征差異較大,造成原有信息丟失。對(duì)于紋理豐富的圖像,ORB識(shí)別的特征點(diǎn)往往會(huì)出現(xiàn)扎堆現(xiàn)象,即某區(qū)域本由一個(gè)特征點(diǎn)便足以表達(dá),但經(jīng)特征提取后存在十幾個(gè)點(diǎn),造成冗余。更重要的一個(gè)原因是,若較多特征點(diǎn)都集中在一起,會(huì)使后續(xù)相機(jī)位姿計(jì)算無法進(jìn)行,從而影響機(jī)器人運(yùn)行SLAM的精度,因此使特征點(diǎn)適當(dāng)?shù)姆稚?會(huì)讓機(jī)器人的空間幾何關(guān)系解算更精確。YAO等[10]提出了一種基于改進(jìn)四叉樹的ORB算法,通過對(duì)不同金字塔層設(shè)置四叉樹的提取深度,使特征點(diǎn)均勻化,減少了四叉樹的過分割,但該方法會(huì)為圖像中本沒有特征的區(qū)域添加特征點(diǎn),造成大量誤匹配,降低匹配精度。BEBLID是近兩年提出的一種較新的特征描述子,崔建國(guó)等[11]將BEBLID描述子結(jié)合SURF特征檢測(cè),通過機(jī)器學(xué)習(xí)的采樣功能對(duì)提取的特征點(diǎn)建立二進(jìn)制描述子,即可提高特征匹配率,又加快了SURF的運(yùn)行速度,但由于SURF本身所需的算力較大[12],與FAST之間相差幾個(gè)數(shù)量級(jí)[13],是一種“奢侈”的圖像特征,所以在實(shí)時(shí)性要求較高的SLAM算法中,會(huì)讓機(jī)器人的軌跡與真實(shí)軌跡偏差較大。
根據(jù)上述分析,本文在ORBSLAM2[14]的基礎(chǔ)上提出了融合BEBLID和改進(jìn)ORB算法的自適應(yīng)特征提取單目視覺里程計(jì),在對(duì)輸入的圖像幀進(jìn)行特征提取與匹配的同時(shí)完成對(duì)相機(jī)位姿的解算。本文選用滿足實(shí)時(shí)性要求的ORB算法進(jìn)行優(yōu)化,首先,通過對(duì)單目傳感器獲取的一系列視頻幀利用改進(jìn)的FAST算法,改善紋理豐富場(chǎng)景中特征點(diǎn)提取密集的情況,避免后續(xù)相機(jī)位姿的解算誤差過大,對(duì)紋理較少的場(chǎng)景采用自適應(yīng)特征提取,防止圖像信息丟失,造成系統(tǒng)無法完整運(yùn)行;然后,將ORB算法中的BRIEF描述子替換為更優(yōu)越的BEBLID描述子,完成特征的提取與匹配,再進(jìn)行單目相機(jī)位姿的解算;最后,通過對(duì)比實(shí)驗(yàn)來分析本文所提出算法的執(zhí)行效率、圖像匹配精度以及相機(jī)的軌跡精度。
作為角點(diǎn)提取中比較經(jīng)典的FAST算法在提取性能和效率方面相較其它算法十分顯著,其僅以比較像素值之間大小來確立角點(diǎn)的方式效率較高,為滿足VSLAM中實(shí)時(shí)性的要求,其為最佳的選擇。在ORBSLAM2中對(duì)此算法缺乏尺度不變性利用高斯金字塔進(jìn)行了彌補(bǔ),但在惡劣的環(huán)境中還存在一定的缺陷:①在紋理較為復(fù)雜的區(qū)域,檢測(cè)到的特征點(diǎn)十分擁擠,不可避免的為后續(xù)相機(jī)位姿解算增加難度;②在紋理稀疏的環(huán)境中,檢測(cè)到的特征點(diǎn)數(shù)量和質(zhì)量得不到保證,容易造成圖像信息丟失,使SLAM運(yùn)行缺乏魯棒性。針對(duì)上述問題,本文在特征提取方面主要進(jìn)行以下幾個(gè)改進(jìn):首先,在FAST提取算法中篩選超過距離閾值的特征點(diǎn),剔除質(zhì)量較差的點(diǎn),將圖像中的密集點(diǎn)進(jìn)行稀疏化;然后,通過對(duì)提取特征點(diǎn)的數(shù)量判斷,調(diào)整FAST提取策略,使其達(dá)到自適應(yīng)特征提取的效果,保證圖像信息不會(huì)丟失。通過以上改進(jìn)算法的處理,主要是使機(jī)器運(yùn)行到不同的環(huán)境下時(shí),都能提取到優(yōu)良的特征點(diǎn),為后續(xù)的特征匹配和位姿估計(jì)奠定基礎(chǔ),以求在滿足SLAM實(shí)時(shí)性要求的前提下,獲取更精確的相機(jī)位姿。算法框架如圖1所示。
圖1 基于FAST的自適應(yīng)特征提取流程圖
對(duì)從單目傳感器輸入的視頻幀首先需通過高斯處理,利用離散化窗口滑窗卷積對(duì)圖像實(shí)施降噪預(yù)處理,然后構(gòu)建高斯金字塔對(duì)圖像進(jìn)行降采樣后再依次進(jìn)行特征提取。FAST特征提取主要是檢測(cè)局部像素灰度變化明顯的位置,對(duì)于圖像中任意一個(gè)像素點(diǎn)需要與以自身為圓心以一定值為半徑的圓上多個(gè)點(diǎn)的像素值進(jìn)行對(duì)比,如果滿足一定的條件則會(huì)將其定義為一個(gè)候選特征點(diǎn),如圖2所示。由于原FAST算法缺乏一定的環(huán)境魯棒性,本文為解決FAST角點(diǎn)在紋理變化較大的環(huán)境中能十分魯棒的得到圖像特征信息,提出了改進(jìn)的FSAT算法來優(yōu)化特征點(diǎn)的檢測(cè),增強(qiáng)其對(duì)環(huán)境的魯棒性,主本文算法的提取步驟如下:
圖2 FAST特征點(diǎn)檢測(cè)
步驟1:從圖像中選取一個(gè)像素P,設(shè)其亮度為Ip;
步驟2:以該像素P為中心,以3像素為半徑畫一個(gè)圓,在該圓上分別均勻的選取16、12或8個(gè)像素點(diǎn);
步驟3:人為選取一個(gè)合適的閾值T(與Ip相關(guān)),假設(shè)在圓上選取的點(diǎn)中有連續(xù)N個(gè)像素點(diǎn)的亮度大于Ip+T或者小于Ip-T,便將其定義為特征點(diǎn);
步驟4:本文提出3種檢測(cè)策略,若上述N取12,就將其定義為FAST_12_16;若上述N取7,就將其定義為FAST_7_12;若上述N取5,就將其定義為FAST_5_8,這3種檢測(cè)策略會(huì)依次對(duì)特征提取的約束放寬。在原算法中僅采用了FAST_12_16的方式,本文新增另兩種方式,使得對(duì)于紋理較弱的環(huán)境可根據(jù)提取特征點(diǎn)的數(shù)量Num與設(shè)置的閾值Ti對(duì)比,自適應(yīng)調(diào)整檢測(cè)策略S,以便得到良好的特征提取結(jié)果,如式(1)所示;
(1)
步驟5:考慮到對(duì)于紋理性較強(qiáng)的場(chǎng)景,FAST提取的特征點(diǎn)容易產(chǎn)生聚集現(xiàn)象,本文提出通過計(jì)算像素網(wǎng)格中每個(gè)點(diǎn)與待檢測(cè)點(diǎn)之間的歐拉距離Dis,來對(duì)特征點(diǎn)進(jìn)行篩選,如式(2)所示;
(2)
式中:xi與yi分別表示像素坐標(biāo),Dis為像素之間的距離閾值。本文通過計(jì)算所有角點(diǎn)的Harris響應(yīng)值,根據(jù)距離閾值的調(diào)整,剔除響應(yīng)值較小的像素點(diǎn),以此達(dá)到分散特征點(diǎn)的目的。
步驟6:循環(huán)步驟1~步驟5,以此對(duì)圖像中的像素點(diǎn)執(zhí)行相同的操作。
為改善FAST提取算法中特征點(diǎn)的旋轉(zhuǎn)不變性,可利用灰度質(zhì)心法[15]給特征點(diǎn)添加方向性描述,使其效果和魯棒性更加完善。
首先定義圓形鄰域圖像塊D的矩為:
(3)
式中:I(x,y)表示特征點(diǎn)的像素值,p,q={0,1}。將圖像塊的亮度質(zhì)心定義為:
(4)
然后連接圖像塊的幾何中心與質(zhì)心,如圖3所示,將特征點(diǎn)的方向定義為特征點(diǎn)與質(zhì)心間的夾角為:
(5)
圖3 確定特征點(diǎn)的方向
由上述分析可知,本文提出的改進(jìn)FAST算法在保留ORBSLAM2中角點(diǎn)尺度不變和旋轉(zhuǎn)描述的前提下,可在復(fù)雜環(huán)境中使圖像特征點(diǎn)的檢測(cè)策略更完善,以便增強(qiáng)特征點(diǎn)提取的環(huán)境魯棒性。
經(jīng)上述改進(jìn)算法對(duì)圖像進(jìn)行特征檢測(cè)后,需對(duì)輸出的特征點(diǎn)進(jìn)行描述,便于后續(xù)的特征匹配操作,進(jìn)而構(gòu)建兩幀圖像間的數(shù)據(jù)關(guān)聯(lián)(data association),求取相機(jī)位姿。在ORBSLAM2中的特征點(diǎn)匹配階段,采用rBRIEF算法對(duì)特征進(jìn)行描述,它是一種基于二進(jìn)制位串的描述子,其原理是通過比較隨機(jī)選擇的特征點(diǎn)灰度值,將結(jié)果記為由0、1組成的向量,由此生成二進(jìn)制比特串,以此作為特征點(diǎn)的描述符。由于rBRIEF算法采用256對(duì)描述子對(duì)圖像進(jìn)行描述,其中僅對(duì)單個(gè)像素點(diǎn)的灰度值進(jìn)行比較,使其描述符的表達(dá)能力未能充分體現(xiàn),從而降低了ORBSLAM2中的匹配精度,因此本文為改善其表達(dá)能力,融合了更高效的BEBLID特征描述算法,從而實(shí)現(xiàn)特征點(diǎn)的精確匹配。
BEBLID是由SUARE等[16]提出的一種二進(jìn)制描述算法,它是在BELID算法[17]的基礎(chǔ)上對(duì)其描述符進(jìn)行了調(diào)整,使圖像中的特征描述更準(zhǔn)確。BEBLID描述符采用自適應(yīng)增強(qiáng)算法(adaptive boost,AdaBoost)和改進(jìn)的弱分類器訓(xùn)練方案在特征點(diǎn)附近挑選不同大小的圖像采樣特征,然后通過篩選得到特征序列的平均灰度差再與設(shè)定的閾值進(jìn)行比較,由此得出二進(jìn)制描述符。
BEBLID描述子需要提前對(duì)弱分類器進(jìn)行訓(xùn)練,其訓(xùn)練集是具有標(biāo)記的圖像塊B:
(6)
式中:xi,yi∈X,li∈{-1,1},當(dāng)li=1時(shí),表示兩個(gè)圖像塊有一樣的特征描述;當(dāng)li=-1時(shí),則表示相反的情況。訓(xùn)練過程中需要將其損失降到最低,定義其損失函數(shù)為:
(7)
式中:γ是學(xué)習(xí)權(quán)重,決定了最終訓(xùn)練結(jié)果中弱分類器的數(shù)量;hk(x)為第k個(gè)弱分類器,hk(x)=hk(x;f,T);li是訓(xùn)練樣本中圖像的標(biāo)簽。hk(x)依賴于特征提取函數(shù)f和閾值T。當(dāng)f和T確定好后,通過閾值進(jìn)行處理來定義弱學(xué)習(xí)器:
(8)
學(xué)習(xí)效率的高低取決于函數(shù)f(x)的選取,一個(gè)辨識(shí)度高、計(jì)算量小的f可提高學(xué)習(xí)的效率。BEBLID將此處的特征提出函數(shù)定義為:
(9)
式中:I(q)和I(r)表示像素q和r處的灰度值,R(p1,s)、R(p2,s)分別表示以s為邊長(zhǎng),像素點(diǎn)p1、p2為中心的圖像檢測(cè)框內(nèi)灰度值之和,f表示兩圖像塊之間平均灰度值的差。BEBLID描述符的特征提取流程如圖4所示,圖中不同顏色的方框即為R(p1,s)、R(p2,s),通過訓(xùn)練數(shù)據(jù)集中所有特征點(diǎn)的描述子來對(duì)損失函數(shù)不斷優(yōu)化,以至可生成M個(gè)弱學(xué)習(xí)器,使其描述子的像素位置和大小不斷更迭,從而獲得最佳BEBLID二進(jìn)制描述子。
圖4 BEBLID特征提取過程
經(jīng)過不斷更迭,BEBLID總能通過最優(yōu)的模式算出二進(jìn)制描述符,用來描述每一個(gè)特征點(diǎn)。BEBLID經(jīng)過訓(xùn)練獲取最優(yōu)的采樣模式,與rBRIEF算法中的操作相似,但BEBLID采用了類似SIFI描述符的方法,不僅確定了最佳的像素位置,還對(duì)采樣圖像塊的規(guī)格使用自適應(yīng)變換,從而使描述符的表達(dá)更加精確。BEBLID節(jié)約了每個(gè)采樣圖像塊旋轉(zhuǎn)的時(shí)間,直接對(duì)積分圖像進(jìn)行并列處理,使計(jì)算量大大減少,從而提高特征描述的速度。
綜上所述,得到圖像特征的檢測(cè)點(diǎn)和描述子后,便需對(duì)其進(jìn)行匹配。當(dāng)特征點(diǎn)數(shù)量規(guī)模不大時(shí),常采用暴力匹配(Brute-Force)方法對(duì)其進(jìn)行操作,它原理是對(duì)每一個(gè)特征點(diǎn)與所有匹配的特征點(diǎn)進(jìn)行描述子距離比對(duì),經(jīng)排序后取最近的一個(gè)作為配對(duì)點(diǎn)。由于本文采用的是BEBLID二進(jìn)制描述子,通常利用漢明距離(Hamming distance)作為描述子之間的度量單位。
為得到單目傳感器的運(yùn)動(dòng)軌跡,需從局部位姿出發(fā),分析相鄰兩幀圖像間經(jīng)本文算法得到的匹配點(diǎn)對(duì),再進(jìn)行方程的構(gòu)建。由于每次的精準(zhǔn)匹配,均可得出多對(duì)匹配點(diǎn),故此可根據(jù)這些特征點(diǎn)之間的對(duì)應(yīng)關(guān)系解算方程,進(jìn)而對(duì)兩幀圖像間的相機(jī)運(yùn)動(dòng)進(jìn)行測(cè)算。
因本文是對(duì)單目視覺傳感器進(jìn)行研究,故此經(jīng)本文算法所得的特征點(diǎn)僅2D像素坐標(biāo)已知,若根據(jù)匹配點(diǎn)對(duì)估計(jì)相機(jī)的運(yùn)動(dòng),可采用2D-2D的對(duì)極幾何方法解決,其運(yùn)動(dòng)測(cè)算的幾何模型如圖5所示。已知相機(jī)的運(yùn)動(dòng)屬于剛體變換,由剛體不變性可知,同一向量在各個(gè)坐標(biāo)系下的長(zhǎng)度和夾角均不會(huì)發(fā)生變化[18],即對(duì)于目標(biāo)點(diǎn)I在前后兩幀圖像P1、P2坐標(biāo)系下的運(yùn)動(dòng)可由剛體變換求得。此時(shí)特征匹配的正確率顯得尤為重要,若匹配精度高,便可得到投影點(diǎn)在極線上面的正確位置,即I1、I2將是空間點(diǎn)I在像平面P1、P2上的投影。
圖5 對(duì)極幾何模型
從數(shù)學(xué)層面上分析,即已知坐標(biāo)系上的I1、I2,求I點(diǎn)以及相機(jī)的運(yùn)動(dòng)估計(jì)。通過對(duì)幾何模型的解算可得對(duì)極約束條件:
(10)
式中:K為相機(jī)的內(nèi)參矩陣,可對(duì)相機(jī)標(biāo)定后求得,屬于已知量;R、t分別表示相機(jī)在兩個(gè)坐標(biāo)系下的旋轉(zhuǎn)和平移。
為了描述進(jìn)行匹配的兩平面間的映射關(guān)系,可利用單應(yīng)矩陣計(jì)算第1個(gè)圖像中的點(diǎn)轉(zhuǎn)換為第2個(gè)圖像中點(diǎn)的單應(yīng)性,從而去除不合格的匹配點(diǎn)。利用上述對(duì)極幾何模型可得到處于3D空間中共同平面上的點(diǎn)在兩個(gè)像素平面之間的變換關(guān)為:
(11)
式中:n為共同平面的法向量,d為相機(jī)系原點(diǎn)到平面的距離。為簡(jiǎn)化約束,將中間部分記為H,即單應(yīng)矩陣,它包含了相機(jī)的內(nèi)參矩陣K、旋轉(zhuǎn)R、平移t和平面參數(shù)(n,d)等信息。通過引入單應(yīng)矩陣,可以直接通過I1平面上的匹配點(diǎn)算出I2平面上對(duì)應(yīng)點(diǎn)的位姿。
單目SLAM所得到的軌跡存在一個(gè)潛在的缺陷,即無法通過單張圖像確定與真實(shí)軌跡之間的尺度,因此在ORBSLAM2中有一個(gè)單目初始化的過程,即對(duì)兩張圖像中的t進(jìn)行歸一化。此操作相當(dāng)于對(duì)尺度進(jìn)行了固定,以當(dāng)前時(shí)刻的t作為單位1計(jì)算相機(jī)的軌跡。運(yùn)行單目SLAM時(shí),相機(jī)在初始化的過程中需要有足夠大的平移運(yùn)動(dòng),才能確定軌跡的真實(shí)尺度。待相機(jī)尺度確立之后,便可利用三角測(cè)距的方式恢復(fù)所檢測(cè)的地圖點(diǎn)深度。
綜上所述,可通過本文算法得到匹配點(diǎn)對(duì)的位置進(jìn)而求出相機(jī)的位姿以及H,然后根據(jù)單目傳感器尺度的確立,采用八點(diǎn)法[19]恢復(fù)出相機(jī)的運(yùn)動(dòng),即得到R和T,至此便大致完成了單目視覺里程計(jì)在局部圖像序列間運(yùn)動(dòng)軌跡的測(cè)算。本文提出的基于融合BEBLID和改進(jìn)ORB算法的單目視覺里程計(jì)整體流程如圖6所示。
圖6 本文算法流程圖
為實(shí)現(xiàn)對(duì)本文算法的各項(xiàng)效果進(jìn)行校驗(yàn),本文利用單目傳感器獲取的真實(shí)室內(nèi)環(huán)境和TUM數(shù)據(jù)集[20]中的標(biāo)準(zhǔn)場(chǎng)景作為實(shí)驗(yàn)對(duì)象,采用Ubuntu16.04的操作系統(tǒng),運(yùn)用C++編程,電腦配置為Intel Core i3-8100 CPU,8 GB RAM,主頻為3.60 GHz,以工作室內(nèi)自主搭建的輪式差分機(jī)器人為實(shí)驗(yàn)平臺(tái),主要實(shí)驗(yàn)設(shè)備為單目傳感器,如圖7所示。
圖7 實(shí)驗(yàn)設(shè)備
為評(píng)估本文算法相較傳統(tǒng)FAST特征檢測(cè)算法的優(yōu)越性,本小節(jié)采用TUM數(shù)據(jù)集中標(biāo)準(zhǔn)紋理特性的多場(chǎng)景圖片做數(shù)據(jù)采集。在一般簡(jiǎn)單場(chǎng)景下本文算法與ORB算法有相似的效果,但在特殊、復(fù)雜的環(huán)境變化下,本文算法便能顯示出它的優(yōu)異之處。為驗(yàn)證算法在紋理豐富場(chǎng)景下特征點(diǎn)的分散效果和紋理稀缺場(chǎng)景下特征的自適應(yīng)檢測(cè)效果,本文將數(shù)據(jù)集圖像編為兩組分別進(jìn)行實(shí)驗(yàn),從多場(chǎng)景進(jìn)行特征提取,選用較為復(fù)雜的實(shí)驗(yàn)環(huán)境,結(jié)果如表1和表2所示。
表1 紋理豐富的特征點(diǎn)分散效果
表2 紋理稀缺的自適應(yīng)特征提取效果
從表中可以看出,多場(chǎng)景下的特征檢測(cè)效果較優(yōu)。在紋理密集處,相較于傳統(tǒng)的FAST特征檢測(cè)算法,“扎堆”的白色特征點(diǎn)分散良好,本文經(jīng)過對(duì)原算法提取的特征點(diǎn)進(jìn)行距離閾值設(shè)定,在保證特征點(diǎn)能代表此局部區(qū)域的前提下,避免特征點(diǎn)的簇?fù)?但在圖像中部分區(qū)域特征點(diǎn)的分散效果就不太突出,因?yàn)樵搮^(qū)域中的特征本就比較均勻,檢測(cè)結(jié)果與原算法類似,如表1所示。在紋理稀疏處,相較傳統(tǒng)的FAST特征檢測(cè)算法,后者在紋理薄弱的圖像中較難檢測(cè)到黑色特征點(diǎn)或黑色特征點(diǎn)數(shù)量較少,而本文算法通過對(duì)圖像特征點(diǎn)檢測(cè)數(shù)量的監(jiān)控,自適應(yīng)的調(diào)整FAST特征檢測(cè)策略,較好的增加了黑色特征點(diǎn)數(shù)量,避免相機(jī)運(yùn)行到弱紋理場(chǎng)景下造成軌跡丟失的嚴(yán)重錯(cuò)誤,如表2所示??傊?本文改進(jìn)ORB的自適應(yīng)特征提取算法在不同場(chǎng)景下對(duì)不同對(duì)象都能得到較為良好的特征提取效果。
為進(jìn)一步測(cè)試本文提出的匹配算法性能相較于其他算法的優(yōu)越性,本小節(jié)以真實(shí)環(huán)境作為實(shí)驗(yàn)對(duì)象,利用單目相機(jī)獲取實(shí)驗(yàn)室內(nèi)場(chǎng)景對(duì)算法進(jìn)行檢驗(yàn)。如圖8所示,本文選用3組圖像集,以便來展示本文的匹配算法效率和匹配正確率。
圖8 室內(nèi)真實(shí)場(chǎng)景圖集
在各類匹配算法中,SIFT、SURF是浮點(diǎn)數(shù)類型描述子,而ORB跟BEBLID類似,均為二進(jìn)制描述子,因此本文匹配算法效率較高,其匹配結(jié)果如圖9所示。在特征匹配的評(píng)價(jià)指標(biāo)中,圖像的匹配正確率通常利用召回率代替,即對(duì)兩幅匹配的圖像通過特征點(diǎn)的映射得到兩圖像的單應(yīng)矩陣,然后通過單應(yīng)矩陣算出圖像之間實(shí)際為匹配點(diǎn)對(duì)但匹配算法并未求得,即圖9中的灰色線條;而實(shí)際為匹配點(diǎn)對(duì)并且匹配算法成功得到的便由白色線條標(biāo)出,即匹配點(diǎn)中正確的內(nèi)聯(lián)點(diǎn),其中未被白色覆蓋的灰色線條則是需要去掉的不合格特征點(diǎn)。本小節(jié)算法結(jié)合改進(jìn)的FAST算法可以有效的保證匹配的實(shí)時(shí)性和正確性,下面將從圖像的匹配精度和匹配耗時(shí)方面對(duì)匹配結(jié)果進(jìn)行分析。
(a) SIFT算法匹配結(jié)果 (b) SURF算法匹配結(jié)果
(1)匹配精度對(duì)比。如表3所示,在實(shí)驗(yàn)過程中,選定提取500個(gè)特征點(diǎn),分別計(jì)算上述各算法在3組圖像集中的匹配點(diǎn)和內(nèi)聯(lián)點(diǎn)個(gè)數(shù),從而校驗(yàn)匹配正確率。組1數(shù)據(jù)表明本文算法的匹配率相較ORB算法提升了16.7%,相較SIFT、SURF提升了7%左右,由此可知,在匹配精度方面,本文算法較優(yōu)于SIFT、SURF算法,與ORB算法相比精度提升較大。
表3 各算法匹配精度對(duì)比
(2)匹配耗時(shí)對(duì)比。本文在ORB算法的基礎(chǔ)上進(jìn)行改進(jìn),然后融合BEBLID構(gòu)建高效的二進(jìn)制描述子,使其運(yùn)行速度提升較大。如表4所示,通過匹配耗時(shí)對(duì)比可知,本文算法運(yùn)行效率比SIFT高幾個(gè)數(shù)量級(jí),與ORB算法速度相當(dāng),表明本文算法可充分保證V-SLAM所需要的實(shí)時(shí)效果。
表4 各算法匹配耗時(shí)對(duì)比
綜上所述,與常見的特征檢測(cè)與匹配算法相比,本文提出的改進(jìn)ORB與融合BEBLID算法的匹配精度更高,耗時(shí)更短,不僅可以應(yīng)對(duì)較為復(fù)雜的環(huán)境,而且其在常見環(huán)境中,運(yùn)行效果更優(yōu),算法的穩(wěn)定性更高。
經(jīng)本文算法對(duì)視頻幀進(jìn)行特征提取與匹配后,由上述的單目里程計(jì)運(yùn)動(dòng)測(cè)算流程便可解算出相機(jī)的位姿。在室內(nèi)常見有強(qiáng)、中、弱等紋理環(huán)境,使機(jī)器在運(yùn)行過程中采集的信息時(shí)常變化,本文選擇TUM數(shù)據(jù)集中標(biāo)準(zhǔn)的室內(nèi)環(huán)境fr1/desk、fr1/desk2、fr1/room這3個(gè)測(cè)試序列,經(jīng)ORBSLAM2算法與本文算法得出的匹配對(duì)數(shù)據(jù),分別對(duì)其進(jìn)行相機(jī)的運(yùn)行位姿計(jì)算,并與各測(cè)試序列圖像幀中真實(shí)的軌跡數(shù)據(jù)進(jìn)行比對(duì),利用evo工具畫出相機(jī)的部分運(yùn)行軌跡,其測(cè)試結(jié)果如圖10所示。
(a) fr1/desk測(cè)試軌跡 (b) fr1/desk2測(cè)試軌跡
由圖10可知,本文算法在不同場(chǎng)景下相較ORBSLAM2,其相機(jī)在x、y、z方向上的運(yùn)行軌跡與真實(shí)軌跡更為接近。如表5所示,分別列出了各測(cè)試序列的軌跡誤差中包括均方值、最大值、最小值等各項(xiàng)具體指標(biāo),通過分析均方根誤差RMSE可知本文算法相比于ORBSLAM2,在軌跡精度上均有較大幅度的增加,表明本文算法位姿測(cè)算精度較高,算法總體魯棒性較強(qiáng)。
表5 不同場(chǎng)景下算法的軌跡誤差對(duì)比 (m)
在V-SLAM的實(shí)際運(yùn)用過程中,能夠具備實(shí)時(shí)性和高精度的特征檢測(cè)與匹配算法對(duì)前端視覺里程計(jì)具有重要意義。首先,本文提出了改進(jìn)的FAST特征檢測(cè)算法,可以適用復(fù)雜的環(huán)境變化,顯著提升了特征檢測(cè)算法的環(huán)境魯棒性;其次,本文還融入了BEBLID二進(jìn)制特征描述子,顯著提升了圖像的正確匹配率,降低了算法的運(yùn)行耗時(shí),提高了相機(jī)位姿測(cè)算的精度。通過對(duì)比實(shí)驗(yàn)可得,本文算法在匹配精度方面較優(yōu)于SIFT、SURF算法,與ORB算法相比提升了16.7%;在匹配速度方面與最快的ORB算法不相上下。最后通過相機(jī)運(yùn)行軌跡的對(duì)比,可知本文算法更加接近真實(shí)軌跡,其精度更高,魯棒性更強(qiáng)。綜上所述,本文提出的算法在兼顧實(shí)時(shí)性的同時(shí)具有較高的匹配精度,從SLAM的框架上來說,為V-SLAM的后端提供了一個(gè)較好的初始數(shù)據(jù)。