楊幸彬,呂京國,2+,楊佳賓,王 琛,扈廷銳
(1.北京建筑大學(xué) 測繪與城市空間信息學(xué)院,北京 100044;2.北京建筑大學(xué) 城市空間信息工程北京市重點實驗室,北京 100044;3.信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州 450001)
視覺SLAM前端的穩(wěn)定性直接決定了位姿估計結(jié)果的精度。目前,視覺SLAM前端處理的主流方式是通過序列圖像的特征點匹配結(jié)果實現(xiàn)影像同名點與環(huán)境地標(biāo)點的關(guān)聯(lián),達到影像的自主連續(xù)定位目的[1,2]。通常情況下序列影像的相鄰幀之間運動隨時間變化相對較緩慢,此時可以假設(shè)相鄰幀圖像并不存在尺度和旋轉(zhuǎn)等因素,因此已有研究將傳統(tǒng)光流點跟蹤算法應(yīng)用于序列影像獲取匹配點和估計位姿[3,4]。
Hsiao等[5]提出多尺度LK光流跟蹤算法,有效改善了圖像運動量大的限制。賈開開等將LK光流法進行了擴展,將其應(yīng)用于多幀影像間的特征點光流跟蹤,實現(xiàn)了多影像跟蹤算法[6]。劉彬等[7]對光流跟蹤初始位置進行了研究,提出基于單應(yīng)變換的初始位置預(yù)測算法。
以上方法在解決圖像運動量較大時導(dǎo)致的光流跟蹤丟失問題上有一定效果,但由于相機的不規(guī)則運動,實際攝像機運動過程中會存在抖動、旋轉(zhuǎn)或視角變化等情況,此時相鄰幀影像間會產(chǎn)生較大的圖像變形,從而破壞光流法的空間一致性假設(shè)[8]。厲丹等[8]在多尺度影像求取位移量,有效解決了大尺度運動跟蹤丟失問題。李景衛(wèi)[9]結(jié)合了SIFT算法和光流場的優(yōu)點,實現(xiàn)了穩(wěn)定精確的跟蹤算法。王澤民等[10]對光流跟蹤窗口像素進行加權(quán)處理,有效控制了光流偏差,提升了跟蹤精度。鄭馳等[11]結(jié)合光流與特征點匹配,獲取到了穩(wěn)定的匹配點,但計算效率不高。
針對傳統(tǒng)光流法存在的問題,本文提出一種顧忌影像尺度與旋轉(zhuǎn)的改進光流點跟蹤算法,解決相機不規(guī)則運動對光流跟蹤點的影響,提高光流跟蹤點分布均勻度和精度。
光流法基于影像亮度一致性假設(shè),通過對特征點局部窗口像素建立運動方程,從而求解特征點的光流運動變化量后得到跟蹤點坐標(biāo),由于該算法計算復(fù)雜度較低,比較容易滿足實時計算的要求,因此被廣泛地用于實時獲取序列圖像匹配點。光流法基于影像亮度一致性假設(shè)得到的約束方程如式(1)
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)
(1)
式中:右側(cè)為像素點(x,y)在t時刻的灰度值,左側(cè)為初始位置跟蹤點在Δt時間變化范圍內(nèi)像點偏移量(Δx,Δy)時的坐標(biāo)位置亮度值。為了求解像素偏移量,可對式(1)左側(cè)進行一階泰勒展開,取一次項得式(2)
(2)
將式(2)帶入式(1)得
(3)
式中:?I/?x、?I/?y分別為像素點在x、y方向的灰度梯度,分別用Ix、Iy表示。u=Δx/Δt、v=Δy/Δt分別表示窗口內(nèi)像素在x和y方向上的光流變化速率。為了求解像素的光流變化速率u、v,光流法首先假設(shè)在一個局部窗口W內(nèi)所有的像素點具有相同大小的光流變化速率u、v,然后在窗口W內(nèi)構(gòu)建局部能量函數(shù)如式(4)
(4)
假設(shè)窗口W內(nèi)像素數(shù)量為n=m×m(n>1),則對所有n個像素列出誤差方程如下,通過最小二乘原理可以求解得到像素點的光流變化量u、v
(5)
從式(4)構(gòu)建的能量函數(shù)看,光流法求解的窗口W內(nèi)的像素運動速率相同,即局部窗口的像素需要滿足空間一致性假設(shè),同時像素的運動速率不能過大。然而,由于實際相機運動過程中除了平移運動,相機在空間中的旋轉(zhuǎn)以及運動尺度方向上也會存在一定的變化,由此會影響窗口像素的空間一致性假設(shè),此外,影像的弱紋理信息也是造成跟蹤點精度下降的一個重要影響因素。圖1為相鄰兩幀圖像利用LK光流法[5]跟蹤后的匹配點結(jié)果,可以看出,由于深度和視角的變化,造成圖像右半部分幾乎沒有跟蹤到匹配點,而路面由于紋理信息量較少,也僅跟蹤到了極少數(shù)的點。綜合來看,圖像局部窗口的幾何變形和紋理信息量少是光流法跟蹤點少和精度受限的一個主要原因。
圖1 LK光流法獲取的相鄰兩幀影像跟蹤點
相機的不規(guī)則運動導(dǎo)致視角變化劇烈,直接影響了相鄰圖像的變形,因此難以獲得穩(wěn)健的追蹤結(jié)果,甚至導(dǎo)致追蹤失敗。針對這一問題,提出一種改進的光流點跟蹤算法,其主要思路是利用初始的跟蹤點構(gòu)建匹配三角形,利用三角形之間的尺度、旋轉(zhuǎn)關(guān)系獲取尺度旋轉(zhuǎn)不變窗口,然后進行光流跟蹤,由于對跟蹤窗口做了幾何糾正,使得窗口能夠更好地擬合圖像變形,從而提高了跟蹤精度,另外改進光流跟蹤算法采用DOG算子[12]檢測特征點,重現(xiàn)率較高,能夠有效增加跟蹤點的數(shù)量。圖2為尺度旋轉(zhuǎn)不變窗口的跟蹤過程,具體算法流程如下。
圖2 尺度旋轉(zhuǎn)不變跟蹤過程
(1)LK光流法跟蹤稀疏特征點。首先對圖像分塊提取Harris角點[13],利用LK光流法跟蹤特征點,獲取初始的匹配結(jié)果。
(2)構(gòu)建匹配三角形。相機的運動使得光流跟蹤窗口之間存在幾何變形,因此可以根據(jù)稀疏的初始跟蹤點構(gòu)建匹配三角形,如圖3所示ΔABC為t1幀圖像上初始光流點構(gòu)建的基準(zhǔn)三角形,ΔA′B′C′為t2幀圖像上跟蹤點構(gòu)建的匹配三角形,假定影像局部范圍內(nèi)的變形可以用仿射變換近似表達,則基準(zhǔn)三角形與匹配三角形窗口之間的仿射變換關(guān)系可以表示為式(6)
x′=a0+a1x+a2y
y′=b0+b1x+b2y
(6)
式中:像點(x,y)為t1幀圖像上基準(zhǔn)三角形頂點坐標(biāo);(x′,y′)為t2幀圖像上匹配三角形頂點坐標(biāo);6參數(shù)仿射變換可以用a0,a1,…,b2表示。
(3)獲取匹配三角形窗口的尺度與旋轉(zhuǎn)變換參數(shù)。將6參數(shù)仿射變換模型簡化表達為局部相似變形,相似變換關(guān)系如式(7)
x′=a0+(scosθ)x+(-ssinθ)y
y′=b0+(ssinθ)x+(scosθ)y
(7)
式中:s表示t2幀圖像上匹配三角形對應(yīng)t1幀圖像基準(zhǔn)三角形間的等比例縮放系數(shù);匹配三角形間的旋轉(zhuǎn)角表示為θ。聯(lián)立上式(6)、式(7),可以得到如下關(guān)系
(8)
式中:縮放系數(shù)s和三角形旋角θ可以利用匹配三角形3對頂點坐標(biāo)列線性方程組后直接線性求解得到,由于s和θ參數(shù)近似定量表達了基準(zhǔn)三角形和匹配三角形窗口間的尺度與旋轉(zhuǎn)變化值,可用于描述尺度旋轉(zhuǎn)不變?nèi)蔷W(wǎng)窗口,圖3為p點與p′點的局部尺度旋轉(zhuǎn)不變窗口計算示意圖,圖3中ΔABC、ΔA′B′C′頂點為初始光流跟蹤點利用狄羅妮三角網(wǎng)構(gòu)建的匹配三角形,p、p′為t1幀與t2幀圖像上待加密的匹配點。
圖3 尺度旋轉(zhuǎn)不變窗口計算過程
(4)獲取DOG特征點。由于本文算法在步驟(1)獲取的光流點為明顯的角點,為了匹配三角形內(nèi)得到異于Harris的特征點,本文獲取加密點時采用DOG算子得到t1幀圖像基準(zhǔn)三角形內(nèi)的高斯差分極值點,考慮算法耗時問題,本文方法僅構(gòu)建當(dāng)前尺度空間圖像,然后在此空間上檢測DOG特征點。
(5)顧忌尺度與旋轉(zhuǎn)的光流點跟蹤。考慮到光流跟蹤需要較為穩(wěn)定的特征點,本文在DOG特征點的基礎(chǔ)上跟蹤其光流點。首先根據(jù)初始的光流跟蹤點基于角度交會法獲取下一幀圖像DOG特征跟蹤點的初始位置,角度交會法原理如式(9)
(9)
式中:α為AB與BP夾角,β為AB與AP的夾角;(xA′,yA′)、(xB′,yB′)、(xp′,yp′)代表點A′、B′、p′在影像上的像素點坐標(biāo)。獲取到預(yù)測跟蹤點的初始像素位置后,利用步驟(3)計算的匹配三角形尺度旋轉(zhuǎn)變換參數(shù)獲取跟蹤點窗口,由于顧及到窗口的尺度旋轉(zhuǎn)變化量,此時能量函數(shù)中的It應(yīng)表示顧及尺度旋轉(zhuǎn)量后的像素灰度差,如式(10)
It=I(x,y,t)-I[xc+wx·s·cosθ-wy·s·sinθ,
yc+wx·s·sinθ+wy·s·cosθ,t+1]
(10)
式中:(xc,yc)為跟蹤點窗口中心像素坐標(biāo),wx、wy分別為跟蹤點原始窗口像素相對窗口中心點坐標(biāo)的偏移量。在完成窗口內(nèi)像素灰度差的計算后,按照式(5)的基本原理即可求解光流變化量u、v。
(6)誤跟蹤點剔除。在獲取到跟蹤后的DOG匹配點后,將其和Harris跟蹤點一同進行RANSAC[14]粗差點剔除,即可得到最終加密跟蹤點坐標(biāo),由于顧及了跟蹤窗口的尺度與旋轉(zhuǎn)變化量,跟蹤點的精度也會得到一定提升。
在Win10 64位系統(tǒng)下基于VC++開發(fā)了改進的光流點跟蹤算法,為了驗證算法在相機不規(guī)則運動和影像弱紋理場景下算法的有效性,實驗選取兩組典型道路場景序列影像進行驗證。使用的兩組實驗數(shù)據(jù)均為Middlebury網(wǎng)站發(fā)布的KITTY自動駕駛數(shù)據(jù)集[15]序列圖像,其中第一組序列圖像分辨率為1344×372,為車輛在彎道處行駛拍攝的序列影像,該組序列圖像用于仿真相機在非規(guī)則運動模式下拍攝的大視角和弱紋理影像變化情形;第二組實驗序列圖像分辨率大小為1242×375像素,該組序列圖像拍攝條件為弱紋理道路場景下相機快速直線運動時的場景,可用于仿真相機快速運動時序列影像存在的大尺度變化情形,兩組序列影像的首末兩幀圖像示例如圖4、圖5所示。
圖4 72-82幀序列圖像
圖5 13-16幀序列圖像
為了驗證本文算法獲取的跟蹤點效果和質(zhì)量,實驗分別以定性和定量兩個評價指標(biāo)分析本文方法的獲取的跟蹤點有效性,對于跟蹤點效果,實驗通過獲取的跟蹤結(jié)果中匹配點數(shù)量與匹配點分布均勻度來評定,而跟蹤結(jié)果的匹配點質(zhì)量使用兩組序列影像最終的位姿優(yōu)化結(jié)果的平均像點重投影誤差來評定。
首先選取第一組數(shù)據(jù)中序列圖像間存在較大尺度和旋轉(zhuǎn)變化的臨近幀進行匹配點跟蹤實驗,驗證本文方法的特征匹配點跟蹤效果。如圖6、圖7為尺度和旋轉(zhuǎn)存在較大變化的相鄰兩幀圖像(74幀-75幀)利用LK光流法和本文方法跟蹤到的匹配點結(jié)果。其次,圖8、圖9為相機快速運動情況下獲取到的第二組數(shù)據(jù)13幀-14幀圖像得到的LK光流點和本文方法的跟蹤點結(jié)果。
圖6 相鄰兩幀圖像Harris初始LK光流跟蹤點
圖7 相鄰兩幀圖像加密后跟蹤點
圖8 相鄰兩幀圖像Harris初始LK光流跟蹤點
圖9 相鄰兩幀圖像加密后跟蹤點
從第一組相機非規(guī)則運動模式下臨近幀的跟蹤點結(jié)果可以明顯看出,傳統(tǒng)的LK光流法對于相機存在旋轉(zhuǎn)和尺度變化的場景影像上(影像下部分區(qū)域)僅獲取到了少量跟蹤點,跟蹤點基本分布在影像顯著紋理區(qū)域,而本文方法在處理該運動模式時表現(xiàn)出了較為穩(wěn)健的結(jié)果,不僅匹配點數(shù)量有所增多,同時在路面等弱紋理區(qū)域也獲得了有效的匹配點,分析其原因主要是本文方法在光流點基礎(chǔ)上用復(fù)現(xiàn)率較高的DOG算子進行跟蹤,特征點更加穩(wěn)定,同時構(gòu)建了影像局部尺度旋轉(zhuǎn)不變窗口使跟蹤點顧及了影像旋轉(zhuǎn)和尺度變化量,因此相比于LK光流跟蹤點丟失的概率有所減少,此外,從路面的跟蹤結(jié)果看,即使在紋理匱乏的場景下本文方法也得到了一定數(shù)量均勻分布的匹配點。從第二組相機快速直線運動場景的實驗數(shù)據(jù)對比結(jié)果來看,本文方法能夠一定程度上改善相鄰幀尺度變化較大的序列影像匹配點,從匹配點分布上看,除了視角變化較大所造成的影像右上角物體遮擋,匹配點基本分布在了整張影像上。本文算法和LK光流法跟蹤到的匹配點數(shù)量對比結(jié)果見表1,可以看出,本文算法在光流法的基礎(chǔ)上獲取到了更多的跟蹤點。
表1 跟蹤點數(shù)量對比結(jié)果
為驗證尺度旋轉(zhuǎn)不變跟蹤方法的跟蹤點結(jié)果質(zhì)量,實驗選取兩組序列影像的部分連續(xù)幀進行跟蹤和位姿估計,其中第一組序列影像共11幀,第二組序列影像一共4幀,實驗分別利用經(jīng)典的LK光流法和本文跟蹤方法對兩組數(shù)據(jù)進行光流點跟蹤,然后將跟蹤點結(jié)果納入捆綁集整體優(yōu)化調(diào)整后獲取影像的位姿結(jié)果,為了定量評價跟蹤點精度,本文使用開源的COLMAP軟件[16]同時獲取每幀影像位姿結(jié)果,3種方法的跟蹤點精度利用優(yōu)化后的三維點在影像上的重投影誤差平均值來評定,3種方法跟蹤點優(yōu)化后的三維點數(shù)量和精度結(jié)果見表2。
表2 像點平均反投影誤差結(jié)果
傳統(tǒng)的光流跟蹤算法在處理影像尺度旋轉(zhuǎn)變化時適用性不高,本文提出了一種改進的光流點跟蹤算法,該方法在初始光流跟蹤點的基礎(chǔ)上構(gòu)建匹配三角形,利用三角形的尺度旋轉(zhuǎn)變化量對光流跟蹤算法進行改進后得到跟蹤點。通過對兩組旋轉(zhuǎn)和尺度變化較大的序列影像進行實驗,結(jié)果表明:本文方法獲取到的跟蹤點數(shù)量更多,基本分布在整張影像上,利用本文跟蹤方法獲取的匹配點優(yōu)化后平均像點重投影誤差要優(yōu)于0.8個像素。考慮到本文跟蹤算法目前主要用于解決大尺度和旋轉(zhuǎn)影像的匹配點分布和精度問題,其實時性有待提升,因此下一步的主要目標(biāo)是在保證匹配點均勻度的基礎(chǔ)上僅加密部分匹配點,提高算法的實時性。