楊幸彬,呂京國(guó),2+,楊佳賓,王 琛,扈廷銳
(1.北京建筑大學(xué) 測(cè)繪與城市空間信息學(xué)院,北京 100044;2.北京建筑大學(xué) 城市空間信息工程北京市重點(diǎn)實(shí)驗(yàn)室,北京 100044;3.信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州 450001)
視覺(jué)SLAM前端的穩(wěn)定性直接決定了位姿估計(jì)結(jié)果的精度。目前,視覺(jué)SLAM前端處理的主流方式是通過(guò)序列圖像的特征點(diǎn)匹配結(jié)果實(shí)現(xiàn)影像同名點(diǎn)與環(huán)境地標(biāo)點(diǎn)的關(guān)聯(lián),達(dá)到影像的自主連續(xù)定位目的[1,2]。通常情況下序列影像的相鄰幀之間運(yùn)動(dòng)隨時(shí)間變化相對(duì)較緩慢,此時(shí)可以假設(shè)相鄰幀圖像并不存在尺度和旋轉(zhuǎn)等因素,因此已有研究將傳統(tǒng)光流點(diǎn)跟蹤算法應(yīng)用于序列影像獲取匹配點(diǎn)和估計(jì)位姿[3,4]。
Hsiao等[5]提出多尺度LK光流跟蹤算法,有效改善了圖像運(yùn)動(dòng)量大的限制。賈開(kāi)開(kāi)等將LK光流法進(jìn)行了擴(kuò)展,將其應(yīng)用于多幀影像間的特征點(diǎn)光流跟蹤,實(shí)現(xiàn)了多影像跟蹤算法[6]。劉彬等[7]對(duì)光流跟蹤初始位置進(jìn)行了研究,提出基于單應(yīng)變換的初始位置預(yù)測(cè)算法。
以上方法在解決圖像運(yùn)動(dòng)量較大時(shí)導(dǎo)致的光流跟蹤丟失問(wèn)題上有一定效果,但由于相機(jī)的不規(guī)則運(yùn)動(dòng),實(shí)際攝像機(jī)運(yùn)動(dòng)過(guò)程中會(huì)存在抖動(dòng)、旋轉(zhuǎn)或視角變化等情況,此時(shí)相鄰幀影像間會(huì)產(chǎn)生較大的圖像變形,從而破壞光流法的空間一致性假設(shè)[8]。厲丹等[8]在多尺度影像求取位移量,有效解決了大尺度運(yùn)動(dòng)跟蹤丟失問(wèn)題。李景衛(wèi)[9]結(jié)合了SIFT算法和光流場(chǎng)的優(yōu)點(diǎn),實(shí)現(xiàn)了穩(wěn)定精確的跟蹤算法。王澤民等[10]對(duì)光流跟蹤窗口像素進(jìn)行加權(quán)處理,有效控制了光流偏差,提升了跟蹤精度。鄭馳等[11]結(jié)合光流與特征點(diǎn)匹配,獲取到了穩(wěn)定的匹配點(diǎn),但計(jì)算效率不高。
針對(duì)傳統(tǒng)光流法存在的問(wèn)題,本文提出一種顧忌影像尺度與旋轉(zhuǎn)的改進(jìn)光流點(diǎn)跟蹤算法,解決相機(jī)不規(guī)則運(yùn)動(dòng)對(duì)光流跟蹤點(diǎn)的影響,提高光流跟蹤點(diǎn)分布均勻度和精度。
光流法基于影像亮度一致性假設(shè),通過(guò)對(duì)特征點(diǎn)局部窗口像素建立運(yùn)動(dòng)方程,從而求解特征點(diǎn)的光流運(yùn)動(dòng)變化量后得到跟蹤點(diǎn)坐標(biāo),由于該算法計(jì)算復(fù)雜度較低,比較容易滿(mǎn)足實(shí)時(shí)計(jì)算的要求,因此被廣泛地用于實(shí)時(shí)獲取序列圖像匹配點(diǎn)。光流法基于影像亮度一致性假設(shè)得到的約束方程如式(1)
I(x+Δx,y+Δy,t+Δt)=I(x,y,t)
(1)
式中:右側(cè)為像素點(diǎn)(x,y)在t時(shí)刻的灰度值,左側(cè)為初始位置跟蹤點(diǎn)在Δt時(shí)間變化范圍內(nèi)像點(diǎn)偏移量(Δx,Δy)時(shí)的坐標(biāo)位置亮度值。為了求解像素偏移量,可對(duì)式(1)左側(cè)進(jìn)行一階泰勒展開(kāi),取一次項(xiàng)得式(2)

(2)
將式(2)帶入式(1)得
(3)
式中:?I/?x、?I/?y分別為像素點(diǎn)在x、y方向的灰度梯度,分別用Ix、Iy表示。u=Δx/Δt、v=Δy/Δt分別表示窗口內(nèi)像素在x和y方向上的光流變化速率。為了求解像素的光流變化速率u、v,光流法首先假設(shè)在一個(gè)局部窗口W內(nèi)所有的像素點(diǎn)具有相同大小的光流變化速率u、v,然后在窗口W內(nèi)構(gòu)建局部能量函數(shù)如式(4)
(4)
假設(shè)窗口W內(nèi)像素?cái)?shù)量為n=m×m(n>1),則對(duì)所有n個(gè)像素列出誤差方程如下,通過(guò)最小二乘原理可以求解得到像素點(diǎn)的光流變化量u、v
(5)
從式(4)構(gòu)建的能量函數(shù)看,光流法求解的窗口W內(nèi)的像素運(yùn)動(dòng)速率相同,即局部窗口的像素需要滿(mǎn)足空間一致性假設(shè),同時(shí)像素的運(yùn)動(dòng)速率不能過(guò)大。然而,由于實(shí)際相機(jī)運(yùn)動(dòng)過(guò)程中除了平移運(yùn)動(dòng),相機(jī)在空間中的旋轉(zhuǎn)以及運(yùn)動(dòng)尺度方向上也會(huì)存在一定的變化,由此會(huì)影響窗口像素的空間一致性假設(shè),此外,影像的弱紋理信息也是造成跟蹤點(diǎn)精度下降的一個(gè)重要影響因素。圖1為相鄰兩幀圖像利用LK光流法[5]跟蹤后的匹配點(diǎn)結(jié)果,可以看出,由于深度和視角的變化,造成圖像右半部分幾乎沒(méi)有跟蹤到匹配點(diǎn),而路面由于紋理信息量較少,也僅跟蹤到了極少數(shù)的點(diǎn)。綜合來(lái)看,圖像局部窗口的幾何變形和紋理信息量少是光流法跟蹤點(diǎn)少和精度受限的一個(gè)主要原因。

圖1 LK光流法獲取的相鄰兩幀影像跟蹤點(diǎn)
相機(jī)的不規(guī)則運(yùn)動(dòng)導(dǎo)致視角變化劇烈,直接影響了相鄰圖像的變形,因此難以獲得穩(wěn)健的追蹤結(jié)果,甚至導(dǎo)致追蹤失敗。針對(duì)這一問(wèn)題,提出一種改進(jìn)的光流點(diǎn)跟蹤算法,其主要思路是利用初始的跟蹤點(diǎn)構(gòu)建匹配三角形,利用三角形之間的尺度、旋轉(zhuǎn)關(guān)系獲取尺度旋轉(zhuǎn)不變窗口,然后進(jìn)行光流跟蹤,由于對(duì)跟蹤窗口做了幾何糾正,使得窗口能夠更好地?cái)M合圖像變形,從而提高了跟蹤精度,另外改進(jìn)光流跟蹤算法采用DOG算子[12]檢測(cè)特征點(diǎn),重現(xiàn)率較高,能夠有效增加跟蹤點(diǎn)的數(shù)量。圖2為尺度旋轉(zhuǎn)不變窗口的跟蹤過(guò)程,具體算法流程如下。

圖2 尺度旋轉(zhuǎn)不變跟蹤過(guò)程
(1)LK光流法跟蹤稀疏特征點(diǎn)。首先對(duì)圖像分塊提取Harris角點(diǎn)[13],利用LK光流法跟蹤特征點(diǎn),獲取初始的匹配結(jié)果。
(2)構(gòu)建匹配三角形。相機(jī)的運(yùn)動(dòng)使得光流跟蹤窗口之間存在幾何變形,因此可以根據(jù)稀疏的初始跟蹤點(diǎn)構(gòu)建匹配三角形,如圖3所示ΔABC為t1幀圖像上初始光流點(diǎn)構(gòu)建的基準(zhǔn)三角形,ΔA′B′C′為t2幀圖像上跟蹤點(diǎn)構(gòu)建的匹配三角形,假定影像局部范圍內(nèi)的變形可以用仿射變換近似表達(dá),則基準(zhǔn)三角形與匹配三角形窗口之間的仿射變換關(guān)系可以表示為式(6)
x′=a0+a1x+a2y
y′=b0+b1x+b2y
(6)
式中:像點(diǎn)(x,y)為t1幀圖像上基準(zhǔn)三角形頂點(diǎn)坐標(biāo);(x′,y′)為t2幀圖像上匹配三角形頂點(diǎn)坐標(biāo);6參數(shù)仿射變換可以用a0,a1,…,b2表示。
(3)獲取匹配三角形窗口的尺度與旋轉(zhuǎn)變換參數(shù)。將6參數(shù)仿射變換模型簡(jiǎn)化表達(dá)為局部相似變形,相似變換關(guān)系如式(7)
x′=a0+(scosθ)x+(-ssinθ)y
y′=b0+(ssinθ)x+(scosθ)y
(7)
式中:s表示t2幀圖像上匹配三角形對(duì)應(yīng)t1幀圖像基準(zhǔn)三角形間的等比例縮放系數(shù);匹配三角形間的旋轉(zhuǎn)角表示為θ。聯(lián)立上式(6)、式(7),可以得到如下關(guān)系
(8)
式中:縮放系數(shù)s和三角形旋角θ可以利用匹配三角形3對(duì)頂點(diǎn)坐標(biāo)列線(xiàn)性方程組后直接線(xiàn)性求解得到,由于s和θ參數(shù)近似定量表達(dá)了基準(zhǔn)三角形和匹配三角形窗口間的尺度與旋轉(zhuǎn)變化值,可用于描述尺度旋轉(zhuǎn)不變?nèi)蔷W(wǎng)窗口,圖3為p點(diǎn)與p′點(diǎn)的局部尺度旋轉(zhuǎn)不變窗口計(jì)算示意圖,圖3中ΔABC、ΔA′B′C′頂點(diǎn)為初始光流跟蹤點(diǎn)利用狄羅妮三角網(wǎng)構(gòu)建的匹配三角形,p、p′為t1幀與t2幀圖像上待加密的匹配點(diǎn)。

圖3 尺度旋轉(zhuǎn)不變窗口計(jì)算過(guò)程
(4)獲取DOG特征點(diǎn)。由于本文算法在步驟(1)獲取的光流點(diǎn)為明顯的角點(diǎn),為了匹配三角形內(nèi)得到異于Harris的特征點(diǎn),本文獲取加密點(diǎn)時(shí)采用DOG算子得到t1幀圖像基準(zhǔn)三角形內(nèi)的高斯差分極值點(diǎn),考慮算法耗時(shí)問(wèn)題,本文方法僅構(gòu)建當(dāng)前尺度空間圖像,然后在此空間上檢測(cè)DOG特征點(diǎn)。
(5)顧忌尺度與旋轉(zhuǎn)的光流點(diǎn)跟蹤。考慮到光流跟蹤需要較為穩(wěn)定的特征點(diǎn),本文在DOG特征點(diǎn)的基礎(chǔ)上跟蹤其光流點(diǎn)。首先根據(jù)初始的光流跟蹤點(diǎn)基于角度交會(huì)法獲取下一幀圖像DOG特征跟蹤點(diǎn)的初始位置,角度交會(huì)法原理如式(9)

(9)
式中:α為AB與BP夾角,β為AB與AP的夾角;(xA′,yA′)、(xB′,yB′)、(xp′,yp′)代表點(diǎn)A′、B′、p′在影像上的像素點(diǎn)坐標(biāo)。獲取到預(yù)測(cè)跟蹤點(diǎn)的初始像素位置后,利用步驟(3)計(jì)算的匹配三角形尺度旋轉(zhuǎn)變換參數(shù)獲取跟蹤點(diǎn)窗口,由于顧及到窗口的尺度旋轉(zhuǎn)變化量,此時(shí)能量函數(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)為跟蹤點(diǎn)窗口中心像素坐標(biāo),wx、wy分別為跟蹤點(diǎn)原始窗口像素相對(duì)窗口中心點(diǎn)坐標(biāo)的偏移量。在完成窗口內(nèi)像素灰度差的計(jì)算后,按照式(5)的基本原理即可求解光流變化量u、v。
(6)誤跟蹤點(diǎn)剔除。在獲取到跟蹤后的DOG匹配點(diǎn)后,將其和Harris跟蹤點(diǎn)一同進(jìn)行RANSAC[14]粗差點(diǎn)剔除,即可得到最終加密跟蹤點(diǎn)坐標(biāo),由于顧及了跟蹤窗口的尺度與旋轉(zhuǎn)變化量,跟蹤點(diǎn)的精度也會(huì)得到一定提升。
在Win10 64位系統(tǒng)下基于VC++開(kāi)發(fā)了改進(jìn)的光流點(diǎn)跟蹤算法,為了驗(yàn)證算法在相機(jī)不規(guī)則運(yùn)動(dòng)和影像弱紋理場(chǎng)景下算法的有效性,實(shí)驗(yàn)選取兩組典型道路場(chǎng)景序列影像進(jìn)行驗(yàn)證。使用的兩組實(shí)驗(yàn)數(shù)據(jù)均為Middlebury網(wǎng)站發(fā)布的KITTY自動(dòng)駕駛數(shù)據(jù)集[15]序列圖像,其中第一組序列圖像分辨率為1344×372,為車(chē)輛在彎道處行駛拍攝的序列影像,該組序列圖像用于仿真相機(jī)在非規(guī)則運(yùn)動(dòng)模式下拍攝的大視角和弱紋理影像變化情形;第二組實(shí)驗(yàn)序列圖像分辨率大小為1242×375像素,該組序列圖像拍攝條件為弱紋理道路場(chǎng)景下相機(jī)快速直線(xiàn)運(yùn)動(dòng)時(shí)的場(chǎng)景,可用于仿真相機(jī)快速運(yùn)動(dòng)時(shí)序列影像存在的大尺度變化情形,兩組序列影像的首末兩幀圖像示例如圖4、圖5所示。

圖4 72-82幀序列圖像

圖5 13-16幀序列圖像
為了驗(yàn)證本文算法獲取的跟蹤點(diǎn)效果和質(zhì)量,實(shí)驗(yàn)分別以定性和定量?jī)蓚€(gè)評(píng)價(jià)指標(biāo)分析本文方法的獲取的跟蹤點(diǎn)有效性,對(duì)于跟蹤點(diǎn)效果,實(shí)驗(yàn)通過(guò)獲取的跟蹤結(jié)果中匹配點(diǎn)數(shù)量與匹配點(diǎn)分布均勻度來(lái)評(píng)定,而跟蹤結(jié)果的匹配點(diǎn)質(zhì)量使用兩組序列影像最終的位姿優(yōu)化結(jié)果的平均像點(diǎn)重投影誤差來(lái)評(píng)定。
首先選取第一組數(shù)據(jù)中序列圖像間存在較大尺度和旋轉(zhuǎn)變化的臨近幀進(jìn)行匹配點(diǎn)跟蹤實(shí)驗(yàn),驗(yàn)證本文方法的特征匹配點(diǎn)跟蹤效果。如圖6、圖7為尺度和旋轉(zhuǎn)存在較大變化的相鄰兩幀圖像(74幀-75幀)利用LK光流法和本文方法跟蹤到的匹配點(diǎn)結(jié)果。其次,圖8、圖9為相機(jī)快速運(yùn)動(dòng)情況下獲取到的第二組數(shù)據(jù)13幀-14幀圖像得到的LK光流點(diǎn)和本文方法的跟蹤點(diǎn)結(jié)果。

圖6 相鄰兩幀圖像Harris初始LK光流跟蹤點(diǎn)

圖7 相鄰兩幀圖像加密后跟蹤點(diǎn)

圖8 相鄰兩幀圖像Harris初始LK光流跟蹤點(diǎn)

圖9 相鄰兩幀圖像加密后跟蹤點(diǎn)
從第一組相機(jī)非規(guī)則運(yùn)動(dòng)模式下臨近幀的跟蹤點(diǎn)結(jié)果可以明顯看出,傳統(tǒng)的LK光流法對(duì)于相機(jī)存在旋轉(zhuǎn)和尺度變化的場(chǎng)景影像上(影像下部分區(qū)域)僅獲取到了少量跟蹤點(diǎn),跟蹤點(diǎn)基本分布在影像顯著紋理區(qū)域,而本文方法在處理該運(yùn)動(dòng)模式時(shí)表現(xiàn)出了較為穩(wěn)健的結(jié)果,不僅匹配點(diǎn)數(shù)量有所增多,同時(shí)在路面等弱紋理區(qū)域也獲得了有效的匹配點(diǎn),分析其原因主要是本文方法在光流點(diǎn)基礎(chǔ)上用復(fù)現(xiàn)率較高的DOG算子進(jìn)行跟蹤,特征點(diǎn)更加穩(wěn)定,同時(shí)構(gòu)建了影像局部尺度旋轉(zhuǎn)不變窗口使跟蹤點(diǎn)顧及了影像旋轉(zhuǎn)和尺度變化量,因此相比于LK光流跟蹤點(diǎn)丟失的概率有所減少,此外,從路面的跟蹤結(jié)果看,即使在紋理匱乏的場(chǎng)景下本文方法也得到了一定數(shù)量均勻分布的匹配點(diǎn)。從第二組相機(jī)快速直線(xiàn)運(yùn)動(dòng)場(chǎng)景的實(shí)驗(yàn)數(shù)據(jù)對(duì)比結(jié)果來(lái)看,本文方法能夠一定程度上改善相鄰幀尺度變化較大的序列影像匹配點(diǎn),從匹配點(diǎn)分布上看,除了視角變化較大所造成的影像右上角物體遮擋,匹配點(diǎn)基本分布在了整張影像上。本文算法和LK光流法跟蹤到的匹配點(diǎn)數(shù)量對(duì)比結(jié)果見(jiàn)表1,可以看出,本文算法在光流法的基礎(chǔ)上獲取到了更多的跟蹤點(diǎn)。

表1 跟蹤點(diǎn)數(shù)量對(duì)比結(jié)果
為驗(yàn)證尺度旋轉(zhuǎn)不變跟蹤方法的跟蹤點(diǎn)結(jié)果質(zhì)量,實(shí)驗(yàn)選取兩組序列影像的部分連續(xù)幀進(jìn)行跟蹤和位姿估計(jì),其中第一組序列影像共11幀,第二組序列影像一共4幀,實(shí)驗(yàn)分別利用經(jīng)典的LK光流法和本文跟蹤方法對(duì)兩組數(shù)據(jù)進(jìn)行光流點(diǎn)跟蹤,然后將跟蹤點(diǎn)結(jié)果納入捆綁集整體優(yōu)化調(diào)整后獲取影像的位姿結(jié)果,為了定量評(píng)價(jià)跟蹤點(diǎn)精度,本文使用開(kāi)源的COLMAP軟件[16]同時(shí)獲取每幀影像位姿結(jié)果,3種方法的跟蹤點(diǎn)精度利用優(yōu)化后的三維點(diǎn)在影像上的重投影誤差平均值來(lái)評(píng)定,3種方法跟蹤點(diǎn)優(yōu)化后的三維點(diǎn)數(shù)量和精度結(jié)果見(jiàn)表2。

表2 像點(diǎn)平均反投影誤差結(jié)果
傳統(tǒng)的光流跟蹤算法在處理影像尺度旋轉(zhuǎn)變化時(shí)適用性不高,本文提出了一種改進(jìn)的光流點(diǎn)跟蹤算法,該方法在初始光流跟蹤點(diǎn)的基礎(chǔ)上構(gòu)建匹配三角形,利用三角形的尺度旋轉(zhuǎn)變化量對(duì)光流跟蹤算法進(jìn)行改進(jìn)后得到跟蹤點(diǎn)。通過(guò)對(duì)兩組旋轉(zhuǎn)和尺度變化較大的序列影像進(jìn)行實(shí)驗(yàn),結(jié)果表明:本文方法獲取到的跟蹤點(diǎn)數(shù)量更多,基本分布在整張影像上,利用本文跟蹤方法獲取的匹配點(diǎn)優(yōu)化后平均像點(diǎn)重投影誤差要優(yōu)于0.8個(gè)像素。考慮到本文跟蹤算法目前主要用于解決大尺度和旋轉(zhuǎn)影像的匹配點(diǎn)分布和精度問(wèn)題,其實(shí)時(shí)性有待提升,因此下一步的主要目標(biāo)是在保證匹配點(diǎn)均勻度的基礎(chǔ)上僅加密部分匹配點(diǎn),提高算法的實(shí)時(shí)性。