譚 涌,潘樹國,高 旺,盛 超,章 輝,喻國榮
(1.東南大學 儀器科學與工程學院,江蘇 南京 210096;2.東南大學 交通學院,江蘇 南京 210096)
視覺里程計(Visual Odometry)能夠通過相鄰圖像幀的信息估計相機的運動,并恢復場景的空間結構[1-2]。按照是否需要提取特征點,視覺里程計可以分為直接法和特征點法,與特征點法相比,直接法視覺里程計基于灰度不變假設,根據像素的灰度信息來估算相機的運動,具有不需計算特征點和描述子、能夠使用更多的像素信息、能夠適用于低紋理環境等優點[2-3]。隨著一些先進的直接法視覺里程計(視覺SLAM)算法的出現,如DSO[4](Direct Sparse Odometry)、LSD-SLAM[5]等,直接法視覺里程計逐漸走上主流舞臺,成為視覺里程算法中的重要組成部分。由于灰度不變假設是一個很強的假設條件,在現實中可能不會得到滿足,因此直接法視覺里程計對光照變化敏感,當場景中存在較大的光照變化時,直接法視覺里程計的定位精度以及魯棒性將會明顯降低。
為了解決直接法對光照變化敏感的問題,文獻[6]通過加入線特征來提高視覺里程計對光照變化的魯棒性,但是該方法對定位精度的改善效果較小。文獻[7]提出了對相機進行光度標定,即采用精細的相機成像模型,標定相機成像過程中的光度參數,利用此光度參數校正圖像灰度值。該方法需要對相機進行特定的操作,無法從相機任意拍攝的一組視頻序列中估計出光度參數。文獻[8]提出了一種應用于視覺里程計的任意視頻序列光度參數估計方法,該方法利用KLT光流跟蹤建立像素之間的關聯,然后利用非線性優化方法進行光度參數估計。但是KLT光流跟蹤僅在相機運動微小的情況下適用,當相機運動劇烈時,KLT光流跟蹤的精度較低,從而導致該方法估計的光度參數精度較低。
針對直接法視覺里程計對光照變化敏感及現有的改進方法存在的問題,本文提出一種包含光度參數估計、圖像灰度值校正的單目直接法視覺里程計,并在EuRoC數據集上進行測試,總體框圖如圖1所示。

圖1 本文算法總體框圖
對圖像灰度值進行校正需要的光度參數先驗信息為相機響應函數參數和光學暈影函數參數,本節通過對圖像幀進行特征匹配實現特征跟蹤,建立圖像像素點之間的關聯,利用非線性優化方法對相機響應函數參數、光學暈影函數參數進行估計。
光度參數估計的首要前提是建立起一系列的空間中的點和圖像像素點之間的關聯,此過程即為特征跟蹤。本文提出的算法利用特征點的描述子進行匹配來實現特征跟蹤,基于特征點的描述子的匹配建立的特征跟蹤精度高,且對光照變化的魯棒性強。
1.1.1 特征跟蹤流程
設計的特征跟蹤流程如圖2所示。

圖2 特征跟蹤流程圖
首先判斷當前圖像幀是否是第一幀,如果當前幀是第一幀,則對其提取特征點并計算相應的描述子,用于與下一幀進行特征匹配。如果當前幀不是第一幀,則先獲取上一幀存儲的特征點及描述子信息,再對當前幀提取特征點并計算描述子,然后再對兩幀的特征點及其描述子信息進行匹配并篩選,最后再進行當前幀特征點激活,激活的特征點用于與下一幀進行特征匹配。
1.1.2 特征點管理
目前常用的特征點有SIFT[9]、ORB[10]、SURF[11],其中SURF特征點的綜合性能優于其他兩種特征點。因此,本文選用SURF特征點進行特征跟蹤。
由圖2可知,在特征跟蹤過程中,對每個圖像幀首先進行特征點提取,作為該幀的特征點的候選點,然后與上一幀進行匹配,最后通過特征點激活策略選擇滿足條件的候選點使其成為當前幀的特征點,用于與下一幀圖像的特征點進行匹配。因此,特征跟蹤部分的特征點管理主要為:特征點提取、特征匹配及篩選、特征點激活。
1.1.2.1 特征點提取
特征點提取是每個圖像幀處理的第一步,提取到的特征點作為該幀的特征點的候選點。為了使特征跟蹤過程能有足夠的候選點,對圖像幀提取特征點的數量進行判斷,如果提取到的特征點數量小于預設閾值,將減小特征點檢測閾值并對當前圖像幀重新進行特征點提取。
1.1.2.2 特征匹配及篩選
利用特征點的描述子進行匹配來建立特征點的關聯,從而進行光度參數估計,所以特征匹配的精度直接決定光度參數估計的精度。特征點的匹配不可避免的存在誤匹配,如圖3(a)所示,因此合理的特征匹配篩選策略至關重要。
設計的特征匹配篩選策略如下:
1)首先對特征點匹配結果進行交叉過濾;
2)然后利用隨機抽樣一致性算法(RANSAC)計算基礎矩陣,剔除誤匹配;
3)最后計算相匹配的特征點的像素坐標的距離,剔除距離大于預設閾值的匹配。
應用特征匹配篩選策略篩選之后的匹配如圖3(b)所示,從圖3(b)可以看到,篩選之后的匹配幾乎不存在誤匹配。

圖3 特征匹配結果
1.1.2.3 特征點激活
為了使特征跟蹤過程中建立數據關聯的像素點分布均勻,需要采用合理的特征點激活策略,設計的特征點激活策略如下:
1)將與上一幀匹配到的特征點作為當前幀的特征點;
2)將與匹配到的特征點距離超過預設閾值的候選點作為當前幀的特征點。
特征點激活策略如圖4所示,圖中藍色的圓形代表上一幀的特征點,三角形代表當前幀的特征點的候選點,其中藍色三角形代表當前幀激活的候選點,黑色三角形代表當前幀不激活的候選點。從圖4可以看到,不激活的候選點與匹配到的特征點的距離小于預設閾值,即圖中的r,激活的候選點為與上一幀特征點建立特征匹配或者與建立了特征匹配的特征點的距離超過了預設閾值r。

圖4 特征點激活策略
在對圖像幀進行特征跟蹤后,獲得圖像幀中特征點對應的空間中點的集合,以及這些空間中的點投影到一系列圖像幀中的像素點的集合,基于此信息即可進行后續的光度參數估計。
1.2.1 函數模型
對于相機成像模型,本文參考文獻[7]采用的經驗模型。
O=f(eV(x)L).
(1)
式中:O是圖像像素點灰度值;L是空間中點的輻射度;V(x)是光學暈影函數;f( )是相機響應函數。
對于相機響應函數模型,本文參考文獻[12]提出的經驗模型。
(2)
式中:f0(x)是利用主成分分析法求出的平均響應函數;hk(x)是基函數;ck為待估計的相機響應函數參數。
對于光學暈影函數模型,本文參考文獻[13]提出的經驗模型。
(3)
式中:R(x)為像素點位置距圖像中心的歸一化距離;vl為待估計的光學暈影函數參數。
1.2.2 光度參數估計及優化
通過對相機成像模型以及光度參數估計目標的研究,建立的光度參數估計的誤差函數:
(4)

(5)
式中:▽為空間點p在圖像幀i中的投影點的梯度。
從誤差函數式(4)可以看到,殘差項與圖像幀的曝光時間、相機響應函數參數、光學暈影函數參數、空間中點的輻射度有關,其中相機響應函數參數、光學暈影函數參數是待估計的參數。本文提出的光度參數估計及優化的算法核心思想是:
第一步,將空間中點的輻射度的估計值與其它3個參數獨立分開,同時估計值確定為所有由該點投影得到的像素點的平均灰度值,計算殘差項對其他3個參數的雅克比矩陣為:
(6)
式中:c代表相機響應函數參數,即c=(c1,c2,c3,c4);v代表光學暈影函數參數,即v=(v1,v2,v3);r為殘差項。
求得雅克比矩陣后,可利用高斯牛頓方程求解迭代變量的增量進行迭代求解,即:
JTWJΔx=JTWr.
(7)
式中:W為權重矩陣;Δx為迭代變量的增量,即Δx=(Δc,Δv,Δei);J為雅克比矩陣,r為殘差項。
第二步,確定第一步中估計的3個參數值,計算殘差項對空間中點的輻射度Lp的雅克比矩陣,即
(8)
從而可得求解空間中點的輻射度的增量方程為:
(9)
第三步,為了保證估計的相機響應函數參數和光學暈影函數參數是最小二乘意義下的最優解,迭代過程中誤差發散的特征點,然后重新進行上述兩步操作,在誤差小于預設閾值時或者迭代變量的增量小于預設閾值時求解結束,并輸出估計的參數值。
通過光度參數估計部分提供的光度參數先驗信息進行圖像灰度值校正的方法,即:
(10)
式中:I′(x)為校正之后的圖像灰度值;x為像素點的位置;f-1( )為相機響應函數的反函數;O為原始圖像灰度值;V(x)為光學暈影函數。
DSO作為單目直接法視覺里程計的代表,在大多數實際情況下具有出色的性能。因此,在對圖像灰度值進行校正后,本文算法采用DSO進行位姿估計。
圖5為其總體流程框圖,其中包含兩個部分,分別是前端跟蹤和局部優化,通過判斷是否能夠成為關鍵幀實現兩部分的連接。前端跟蹤部分對當前幀利用直接法進行位姿跟蹤,初步估計出當前幀的位姿,作為后續優化過程中的位姿初值。局部優化部分為一個由關鍵幀組成的滑動窗口,通過判斷是否創建關鍵幀以及是否邊緣化關鍵幀實現窗口內的數據更新,窗口內的非線性優化問題包括數據關聯和位姿估計,基于最小化光度誤差進行求解。若當前幀不能成為關鍵幀,則利用當前非關鍵幀與滑動窗口內的關鍵幀進行點跟蹤,更新關鍵幀中的像素點的逆深度信息。

圖5 DSO總體流程框圖
為驗證提出的算法能夠提升單目直接法視覺里程計對光照變化的魯棒性以及位姿估計精度,本文在實驗數據上分別對直接法視覺里程計(后文記為Origin-DSO)和本文提出的算法(后文記為Improved-DSO)進行測試,并比較實驗結果。實驗數據采用公開的EuRoC MAV數據集中的7個測試序列[14],該數據集包含了不同的房間和工業環境,數據采集過程中存在著明顯的光照變化,數據集提供真實軌跡。為表述簡便,將該數據集的數據序列簡記,如MH_01_easy簡記為MH01,其他序列類似。試驗平臺采用Ubuntu16.04LTS系統的PC,處理器為Intel Core i7-8700,內存為16.0 GB。
圖6和圖7分別為MH03序列和V103序列分別在Origin-DSO和Improved-DSO中的定位軌跡平面圖。由圖6可知,在MH03序列上,兩個估計結果與實際軌跡基本重合,但是Improved-DSO的軌跡比Origin-DSO的軌跡與真實軌跡的偏離更小,精度更優。由圖7可知,在V103序列上,Origin-DSO的估計結果與真實軌跡相差較大,Improved-DSO的估計結果與真實軌跡更為接近。這是由于V103序列中的光照變化比MH03序列中的光照變化更為明顯,導致Origin-DSO在V103序列中的定位結果較差,而Improved-DSO由于利用光度參數先驗信息進行了圖像灰度值校正,增強了對光照變化的魯棒性,所以Improved-DSO的定位結果與真實軌跡更為接近。

圖6 MH03序列的實驗結果
圖8和圖9分別為MH03序列和V103序列分別在Origin-DSO和Improved-DSO中的定位軌跡誤差分析圖。圖8(a)和圖9(a)對比了Origin-DSO和Improved-DSO在兩個序列上的絕對定位誤差,由圖可知,Improved-DSO在兩個序列上的定位結果誤差均更小、精度更優。圖8(b)和圖9(b)對比了Origin-DSO和Improved-DSO在兩個序列上的絕對定位誤差箱形圖(用于統計分析數據的離散情況),由圖可知,Improved-DSO的定位誤差上下限值以及中位數和上下四分位數均小于Origin-DSO的定位結果。

圖7 V103序列的實驗結果

圖8 MH03序列的軌跡誤差分析

圖9 V103序列的軌跡誤差分析
表1給出了7種EuRoC數據序列在Origin-DSO和Improved-DSO中的定位結果。由表1可知,本文提出的算法定位結果優于Origin-DSO,定位精度平均提高約18%。
本文提出一種融合光度參數估計的單目直接法視覺里程計,通過對圖像幀進行特征跟蹤,建立起圖像像素點之間的關聯,采用非線性優化方法對光度參數進行估計,為圖像灰度校正提供光度參數先驗信息,單目直接法視覺里程計通過校正后的圖像進行相機運動估計,提高了單目直接法視覺里程計在光照變化場景下的定位精度以及魯棒性。通過EuRoC數據集的實驗驗證,本文提出的算法的定位精度相比于傳統的單目直接法視覺里程計提升約18%。本文算法仍存在不足之處,在對圖像幀進行特征跟蹤時采用的是基于特征點的描述子的匹配,在低紋理環境下將無法正常工作。未來工作將重點關注融合IMU數據的直接法視覺里程計,通過添加IMU約束,降低對光度誤差的依賴,從而提高直接法視覺里程計的定位精度及魯棒性。

表1 Origin-DSO和Improved-DSO的定位結果對比