譚 涌,潘樹國,高 旺,盛 超,章 輝,喻國榮
(1.東南大學(xué) 儀器科學(xué)與工程學(xué)院,江蘇 南京 210096;2.東南大學(xué) 交通學(xué)院,江蘇 南京 210096)
視覺里程計(Visual Odometry)能夠通過相鄰圖像幀的信息估計相機(jī)的運(yùn)動,并恢復(fù)場景的空間結(jié)構(gòu)[1-2]。按照是否需要提取特征點(diǎn),視覺里程計可以分為直接法和特征點(diǎn)法,與特征點(diǎn)法相比,直接法視覺里程計基于灰度不變假設(shè),根據(jù)像素的灰度信息來估算相機(jī)的運(yùn)動,具有不需計算特征點(diǎn)和描述子、能夠使用更多的像素信息、能夠適用于低紋理環(huán)境等優(yōu)點(diǎn)[2-3]。隨著一些先進(jìn)的直接法視覺里程計(視覺SLAM)算法的出現(xiàn),如DSO[4](Direct Sparse Odometry)、LSD-SLAM[5]等,直接法視覺里程計逐漸走上主流舞臺,成為視覺里程算法中的重要組成部分。由于灰度不變假設(shè)是一個很強(qiáng)的假設(shè)條件,在現(xiàn)實(shí)中可能不會得到滿足,因此直接法視覺里程計對光照變化敏感,當(dāng)場景中存在較大的光照變化時,直接法視覺里程計的定位精度以及魯棒性將會明顯降低。
為了解決直接法對光照變化敏感的問題,文獻(xiàn)[6]通過加入線特征來提高視覺里程計對光照變化的魯棒性,但是該方法對定位精度的改善效果較小。文獻(xiàn)[7]提出了對相機(jī)進(jìn)行光度標(biāo)定,即采用精細(xì)的相機(jī)成像模型,標(biāo)定相機(jī)成像過程中的光度參數(shù),利用此光度參數(shù)校正圖像灰度值。該方法需要對相機(jī)進(jìn)行特定的操作,無法從相機(jī)任意拍攝的一組視頻序列中估計出光度參數(shù)。文獻(xiàn)[8]提出了一種應(yīng)用于視覺里程計的任意視頻序列光度參數(shù)估計方法,該方法利用KLT光流跟蹤建立像素之間的關(guān)聯(lián),然后利用非線性優(yōu)化方法進(jìn)行光度參數(shù)估計。但是KLT光流跟蹤僅在相機(jī)運(yùn)動微小的情況下適用,當(dāng)相機(jī)運(yùn)動劇烈時,KLT光流跟蹤的精度較低,從而導(dǎo)致該方法估計的光度參數(shù)精度較低。
針對直接法視覺里程計對光照變化敏感及現(xiàn)有的改進(jìn)方法存在的問題,本文提出一種包含光度參數(shù)估計、圖像灰度值校正的單目直接法視覺里程計,并在EuRoC數(shù)據(jù)集上進(jìn)行測試,總體框圖如圖1所示。
圖1 本文算法總體框圖
對圖像灰度值進(jìn)行校正需要的光度參數(shù)先驗(yàn)信息為相機(jī)響應(yīng)函數(shù)參數(shù)和光學(xué)暈影函數(shù)參數(shù),本節(jié)通過對圖像幀進(jìn)行特征匹配實(shí)現(xiàn)特征跟蹤,建立圖像像素點(diǎn)之間的關(guān)聯(lián),利用非線性優(yōu)化方法對相機(jī)響應(yīng)函數(shù)參數(shù)、光學(xué)暈影函數(shù)參數(shù)進(jìn)行估計。
光度參數(shù)估計的首要前提是建立起一系列的空間中的點(diǎn)和圖像像素點(diǎn)之間的關(guān)聯(lián),此過程即為特征跟蹤。本文提出的算法利用特征點(diǎn)的描述子進(jìn)行匹配來實(shí)現(xiàn)特征跟蹤,基于特征點(diǎn)的描述子的匹配建立的特征跟蹤精度高,且對光照變化的魯棒性強(qiáng)。
1.1.1 特征跟蹤流程
設(shè)計的特征跟蹤流程如圖2所示。
圖2 特征跟蹤流程圖
首先判斷當(dāng)前圖像幀是否是第一幀,如果當(dāng)前幀是第一幀,則對其提取特征點(diǎn)并計算相應(yīng)的描述子,用于與下一幀進(jìn)行特征匹配。如果當(dāng)前幀不是第一幀,則先獲取上一幀存儲的特征點(diǎn)及描述子信息,再對當(dāng)前幀提取特征點(diǎn)并計算描述子,然后再對兩幀的特征點(diǎn)及其描述子信息進(jìn)行匹配并篩選,最后再進(jìn)行當(dāng)前幀特征點(diǎn)激活,激活的特征點(diǎn)用于與下一幀進(jìn)行特征匹配。
1.1.2 特征點(diǎn)管理
目前常用的特征點(diǎn)有SIFT[9]、ORB[10]、SURF[11],其中SURF特征點(diǎn)的綜合性能優(yōu)于其他兩種特征點(diǎn)。因此,本文選用SURF特征點(diǎn)進(jìn)行特征跟蹤。
由圖2可知,在特征跟蹤過程中,對每個圖像幀首先進(jìn)行特征點(diǎn)提取,作為該幀的特征點(diǎn)的候選點(diǎn),然后與上一幀進(jìn)行匹配,最后通過特征點(diǎn)激活策略選擇滿足條件的候選點(diǎn)使其成為當(dāng)前幀的特征點(diǎn),用于與下一幀圖像的特征點(diǎn)進(jìn)行匹配。因此,特征跟蹤部分的特征點(diǎn)管理主要為:特征點(diǎn)提取、特征匹配及篩選、特征點(diǎn)激活。
1.1.2.1 特征點(diǎn)提取
特征點(diǎn)提取是每個圖像幀處理的第一步,提取到的特征點(diǎn)作為該幀的特征點(diǎn)的候選點(diǎn)。為了使特征跟蹤過程能有足夠的候選點(diǎn),對圖像幀提取特征點(diǎn)的數(shù)量進(jìn)行判斷,如果提取到的特征點(diǎn)數(shù)量小于預(yù)設(shè)閾值,將減小特征點(diǎn)檢測閾值并對當(dāng)前圖像幀重新進(jìn)行特征點(diǎn)提取。
1.1.2.2 特征匹配及篩選
利用特征點(diǎn)的描述子進(jìn)行匹配來建立特征點(diǎn)的關(guān)聯(lián),從而進(jìn)行光度參數(shù)估計,所以特征匹配的精度直接決定光度參數(shù)估計的精度。特征點(diǎn)的匹配不可避免的存在誤匹配,如圖3(a)所示,因此合理的特征匹配篩選策略至關(guān)重要。
設(shè)計的特征匹配篩選策略如下:
1)首先對特征點(diǎn)匹配結(jié)果進(jìn)行交叉過濾;
2)然后利用隨機(jī)抽樣一致性算法(RANSAC)計算基礎(chǔ)矩陣,剔除誤匹配;
3)最后計算相匹配的特征點(diǎn)的像素坐標(biāo)的距離,剔除距離大于預(yù)設(shè)閾值的匹配。
應(yīng)用特征匹配篩選策略篩選之后的匹配如圖3(b)所示,從圖3(b)可以看到,篩選之后的匹配幾乎不存在誤匹配。
圖3 特征匹配結(jié)果
1.1.2.3 特征點(diǎn)激活
為了使特征跟蹤過程中建立數(shù)據(jù)關(guān)聯(lián)的像素點(diǎn)分布均勻,需要采用合理的特征點(diǎn)激活策略,設(shè)計的特征點(diǎn)激活策略如下:
1)將與上一幀匹配到的特征點(diǎn)作為當(dāng)前幀的特征點(diǎn);
2)將與匹配到的特征點(diǎn)距離超過預(yù)設(shè)閾值的候選點(diǎn)作為當(dāng)前幀的特征點(diǎn)。
特征點(diǎn)激活策略如圖4所示,圖中藍(lán)色的圓形代表上一幀的特征點(diǎn),三角形代表當(dāng)前幀的特征點(diǎn)的候選點(diǎn),其中藍(lán)色三角形代表當(dāng)前幀激活的候選點(diǎn),黑色三角形代表當(dāng)前幀不激活的候選點(diǎn)。從圖4可以看到,不激活的候選點(diǎn)與匹配到的特征點(diǎn)的距離小于預(yù)設(shè)閾值,即圖中的r,激活的候選點(diǎn)為與上一幀特征點(diǎn)建立特征匹配或者與建立了特征匹配的特征點(diǎn)的距離超過了預(yù)設(shè)閾值r。
圖4 特征點(diǎn)激活策略
在對圖像幀進(jìn)行特征跟蹤后,獲得圖像幀中特征點(diǎn)對應(yīng)的空間中點(diǎn)的集合,以及這些空間中的點(diǎn)投影到一系列圖像幀中的像素點(diǎn)的集合,基于此信息即可進(jìn)行后續(xù)的光度參數(shù)估計。
1.2.1 函數(shù)模型
對于相機(jī)成像模型,本文參考文獻(xiàn)[7]采用的經(jīng)驗(yàn)?zāi)P汀?/p>
O=f(eV(x)L).
(1)
式中:O是圖像像素點(diǎn)灰度值;L是空間中點(diǎn)的輻射度;V(x)是光學(xué)暈影函數(shù);f( )是相機(jī)響應(yīng)函數(shù)。
對于相機(jī)響應(yīng)函數(shù)模型,本文參考文獻(xiàn)[12]提出的經(jīng)驗(yàn)?zāi)P汀?/p>
(2)
式中:f0(x)是利用主成分分析法求出的平均響應(yīng)函數(shù);hk(x)是基函數(shù);ck為待估計的相機(jī)響應(yīng)函數(shù)參數(shù)。
對于光學(xué)暈影函數(shù)模型,本文參考文獻(xiàn)[13]提出的經(jīng)驗(yàn)?zāi)P汀?/p>
(3)
式中:R(x)為像素點(diǎn)位置距圖像中心的歸一化距離;vl為待估計的光學(xué)暈影函數(shù)參數(shù)。
1.2.2 光度參數(shù)估計及優(yōu)化
通過對相機(jī)成像模型以及光度參數(shù)估計目標(biāo)的研究,建立的光度參數(shù)估計的誤差函數(shù):
(4)
(5)
式中:▽為空間點(diǎn)p在圖像幀i中的投影點(diǎn)的梯度。
從誤差函數(shù)式(4)可以看到,殘差項(xiàng)與圖像幀的曝光時間、相機(jī)響應(yīng)函數(shù)參數(shù)、光學(xué)暈影函數(shù)參數(shù)、空間中點(diǎn)的輻射度有關(guān),其中相機(jī)響應(yīng)函數(shù)參數(shù)、光學(xué)暈影函數(shù)參數(shù)是待估計的參數(shù)。本文提出的光度參數(shù)估計及優(yōu)化的算法核心思想是:
第一步,將空間中點(diǎn)的輻射度的估計值與其它3個參數(shù)獨(dú)立分開,同時估計值確定為所有由該點(diǎn)投影得到的像素點(diǎn)的平均灰度值,計算殘差項(xiàng)對其他3個參數(shù)的雅克比矩陣為:
(6)
式中:c代表相機(jī)響應(yīng)函數(shù)參數(shù),即c=(c1,c2,c3,c4);v代表光學(xué)暈影函數(shù)參數(shù),即v=(v1,v2,v3);r為殘差項(xiàng)。
求得雅克比矩陣后,可利用高斯牛頓方程求解迭代變量的增量進(jìn)行迭代求解,即:
JTWJΔx=JTWr.
(7)
式中:W為權(quán)重矩陣;Δx為迭代變量的增量,即Δx=(Δc,Δv,Δei);J為雅克比矩陣,r為殘差項(xiàng)。
第二步,確定第一步中估計的3個參數(shù)值,計算殘差項(xiàng)對空間中點(diǎn)的輻射度Lp的雅克比矩陣,即
(8)
從而可得求解空間中點(diǎn)的輻射度的增量方程為:
(9)
第三步,為了保證估計的相機(jī)響應(yīng)函數(shù)參數(shù)和光學(xué)暈影函數(shù)參數(shù)是最小二乘意義下的最優(yōu)解,迭代過程中誤差發(fā)散的特征點(diǎn),然后重新進(jìn)行上述兩步操作,在誤差小于預(yù)設(shè)閾值時或者迭代變量的增量小于預(yù)設(shè)閾值時求解結(jié)束,并輸出估計的參數(shù)值。
通過光度參數(shù)估計部分提供的光度參數(shù)先驗(yàn)信息進(jìn)行圖像灰度值校正的方法,即:
(10)
式中:I′(x)為校正之后的圖像灰度值;x為像素點(diǎn)的位置;f-1( )為相機(jī)響應(yīng)函數(shù)的反函數(shù);O為原始圖像灰度值;V(x)為光學(xué)暈影函數(shù)。
DSO作為單目直接法視覺里程計的代表,在大多數(shù)實(shí)際情況下具有出色的性能。因此,在對圖像灰度值進(jìn)行校正后,本文算法采用DSO進(jìn)行位姿估計。
圖5為其總體流程框圖,其中包含兩個部分,分別是前端跟蹤和局部優(yōu)化,通過判斷是否能夠成為關(guān)鍵幀實(shí)現(xiàn)兩部分的連接。前端跟蹤部分對當(dāng)前幀利用直接法進(jìn)行位姿跟蹤,初步估計出當(dāng)前幀的位姿,作為后續(xù)優(yōu)化過程中的位姿初值。局部優(yōu)化部分為一個由關(guān)鍵幀組成的滑動窗口,通過判斷是否創(chuàng)建關(guān)鍵幀以及是否邊緣化關(guān)鍵幀實(shí)現(xiàn)窗口內(nèi)的數(shù)據(jù)更新,窗口內(nèi)的非線性優(yōu)化問題包括數(shù)據(jù)關(guān)聯(lián)和位姿估計,基于最小化光度誤差進(jìn)行求解。若當(dāng)前幀不能成為關(guān)鍵幀,則利用當(dāng)前非關(guān)鍵幀與滑動窗口內(nèi)的關(guān)鍵幀進(jìn)行點(diǎn)跟蹤,更新關(guān)鍵幀中的像素點(diǎn)的逆深度信息。
圖5 DSO總體流程框圖
為驗(yàn)證提出的算法能夠提升單目直接法視覺里程計對光照變化的魯棒性以及位姿估計精度,本文在實(shí)驗(yàn)數(shù)據(jù)上分別對直接法視覺里程計(后文記為Origin-DSO)和本文提出的算法(后文記為Improved-DSO)進(jìn)行測試,并比較實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)數(shù)據(jù)采用公開的EuRoC MAV數(shù)據(jù)集中的7個測試序列[14],該數(shù)據(jù)集包含了不同的房間和工業(yè)環(huán)境,數(shù)據(jù)采集過程中存在著明顯的光照變化,數(shù)據(jù)集提供真實(shí)軌跡。為表述簡便,將該數(shù)據(jù)集的數(shù)據(jù)序列簡記,如MH_01_easy簡記為MH01,其他序列類似。試驗(yàn)平臺采用Ubuntu16.04LTS系統(tǒng)的PC,處理器為Intel Core i7-8700,內(nèi)存為16.0 GB。
圖6和圖7分別為MH03序列和V103序列分別在Origin-DSO和Improved-DSO中的定位軌跡平面圖。由圖6可知,在MH03序列上,兩個估計結(jié)果與實(shí)際軌跡基本重合,但是Improved-DSO的軌跡比Origin-DSO的軌跡與真實(shí)軌跡的偏離更小,精度更優(yōu)。由圖7可知,在V103序列上,Origin-DSO的估計結(jié)果與真實(shí)軌跡相差較大,Improved-DSO的估計結(jié)果與真實(shí)軌跡更為接近。這是由于V103序列中的光照變化比MH03序列中的光照變化更為明顯,導(dǎo)致Origin-DSO在V103序列中的定位結(jié)果較差,而Improved-DSO由于利用光度參數(shù)先驗(yàn)信息進(jìn)行了圖像灰度值校正,增強(qiáng)了對光照變化的魯棒性,所以Improved-DSO的定位結(jié)果與真實(shí)軌跡更為接近。
圖6 MH03序列的實(shí)驗(yàn)結(jié)果
圖8和圖9分別為MH03序列和V103序列分別在Origin-DSO和Improved-DSO中的定位軌跡誤差分析圖。圖8(a)和圖9(a)對比了Origin-DSO和Improved-DSO在兩個序列上的絕對定位誤差,由圖可知,Improved-DSO在兩個序列上的定位結(jié)果誤差均更小、精度更優(yōu)。圖8(b)和圖9(b)對比了Origin-DSO和Improved-DSO在兩個序列上的絕對定位誤差箱形圖(用于統(tǒng)計分析數(shù)據(jù)的離散情況),由圖可知,Improved-DSO的定位誤差上下限值以及中位數(shù)和上下四分位數(shù)均小于Origin-DSO的定位結(jié)果。
圖7 V103序列的實(shí)驗(yàn)結(jié)果
圖8 MH03序列的軌跡誤差分析
圖9 V103序列的軌跡誤差分析
表1給出了7種EuRoC數(shù)據(jù)序列在Origin-DSO和Improved-DSO中的定位結(jié)果。由表1可知,本文提出的算法定位結(jié)果優(yōu)于Origin-DSO,定位精度平均提高約18%。
本文提出一種融合光度參數(shù)估計的單目直接法視覺里程計,通過對圖像幀進(jìn)行特征跟蹤,建立起圖像像素點(diǎn)之間的關(guān)聯(lián),采用非線性優(yōu)化方法對光度參數(shù)進(jìn)行估計,為圖像灰度校正提供光度參數(shù)先驗(yàn)信息,單目直接法視覺里程計通過校正后的圖像進(jìn)行相機(jī)運(yùn)動估計,提高了單目直接法視覺里程計在光照變化場景下的定位精度以及魯棒性。通過EuRoC數(shù)據(jù)集的實(shí)驗(yàn)驗(yàn)證,本文提出的算法的定位精度相比于傳統(tǒng)的單目直接法視覺里程計提升約18%。本文算法仍存在不足之處,在對圖像幀進(jìn)行特征跟蹤時采用的是基于特征點(diǎn)的描述子的匹配,在低紋理環(huán)境下將無法正常工作。未來工作將重點(diǎn)關(guān)注融合IMU數(shù)據(jù)的直接法視覺里程計,通過添加IMU約束,降低對光度誤差的依賴,從而提高直接法視覺里程計的定位精度及魯棒性。
表1 Origin-DSO和Improved-DSO的定位結(jié)果對比