吳廣運周治平
(江南大學(xué)物聯(lián)網(wǎng)學(xué)院,江蘇 無錫 214122)
增強現(xiàn)實(Augmented Reality,AR)是一種將虛擬世界和現(xiàn)實世界聯(lián)系在一起的技術(shù),它通過對用戶觀察到的真實場景進行分析處理,將虛擬對象嵌入到真實場景中,實現(xiàn)虛擬信息與真實場景無縫融合效果[1]?,F(xiàn)今,關(guān)于視覺SLAM的研究十分火熱,附帶相關(guān)傳感器的硬件設(shè)備誕生既帶動了SLAM的進展,又給增強現(xiàn)實應(yīng)用帶來了發(fā)展新機遇[2]。一些AR應(yīng)用讓用戶通過設(shè)備觀看虛擬信息疊加在真實場景中,輔助用戶對現(xiàn)實世界的認知,給用戶帶來了諸多便捷,在自動駕駛、虛擬裝配、虛擬裝飾和三維重建等熱門領(lǐng)域興起一股研究浪潮。
目前,注冊方法分為兩類,一類基于人工標(biāo)記,另一類基于自然特征(無標(biāo)記)[3]。在早期,帶有標(biāo)記的AR系統(tǒng)[4]非常流行,它們快速且穩(wěn)定,比如ARtoolkit和ARtag,但它們需要真實場景中存在明顯標(biāo)記并且在復(fù)雜環(huán)境下會出現(xiàn)跟蹤丟失現(xiàn)象,具有一定局限性。近些年,基于自然特征的注冊方法在AR領(lǐng)域得到了廣泛的應(yīng)用,無標(biāo)記注冊算法通過對真實場景中的自然特征信息進行檢測、匹配和跟蹤,確定相機的位姿變化狀態(tài),實現(xiàn)虛擬注冊,在復(fù)雜環(huán)境中也有很好的效果。Polvi[5]等利用3D射線投射和極線幾何進行虛擬對象定位實現(xiàn)了無標(biāo)記注冊,但計算量大還需要人為調(diào)整參數(shù),缺乏魯棒性。ORB-SLAM[6]算法可以通過恢復(fù)未知場景時的運動軌跡估計相機位姿變化,并具有較高的穩(wěn)定性,因此,一些研究者們開始結(jié)合SLAM算法實現(xiàn)AR跟蹤注冊。Liu等人[7]使用ORB-SLAM產(chǎn)生的三維地圖信息來確定相機位姿,最終完成跟蹤注冊,但該方法需要進行離線操作處理完成初始化,所需時間較長,實時性不好。Gao等人[8]成功將視覺SLAM算法融合到增強現(xiàn)實注冊系統(tǒng)中,完成虛擬對象注冊,獲得不錯的效果。但該系統(tǒng)在跟蹤注冊過程中一旦相機移動過快會出現(xiàn)虛擬對象錯位和目標(biāo)丟失等問題,缺乏魯棒性。
綜上所述,基于標(biāo)記的AR注冊方法應(yīng)用場景局限較大,結(jié)合SLAM的注冊方法實時性較差,在特征點較少時缺乏魯棒性。雙目立體視覺技術(shù)的計算復(fù)雜度更小,適用于信息采集,具有巨大的發(fā)展空間[9]。因此,本文提出一種在視覺SLAM的基礎(chǔ)上加入IMU模塊改進的雙目相機增強現(xiàn)實注冊方法,并采用EuRoC數(shù)據(jù)集[10]進行驗證。首先,采用雙目相機采集信息跟蹤目標(biāo),結(jié)合IMU預(yù)積分模塊進行特征匹配以提高匹配效率。接著,引入IMU誤差項聯(lián)合求解相機位姿,增加優(yōu)化參數(shù)以提高精度。最后,根據(jù)相機位姿變換信息得到虛擬對象坐標(biāo)、相機坐標(biāo)以及真實世界坐標(biāo)變換關(guān)系,將虛擬對象準(zhǔn)確地注冊到真實世界。
Gao等人[8]在視覺SLAM的基礎(chǔ)上使用ORB特征匹配信息求解相機位姿,完成虛擬對象注冊,成功地將視覺SLAM算法融合到增強現(xiàn)實注冊系統(tǒng)中,取得不錯的效果。該方法使用ORB特征匹配關(guān)系求解相鄰圖像幀重投影誤差來確定相機位姿,利用誤差值構(gòu)造代價函數(shù),通過最小化代價函數(shù)得到位姿參數(shù)。假設(shè)特征點X i在下一幀圖像上的真實坐標(biāo)為X j,由和計算得到的重投影坐標(biāo)為,則該特征點的重投影誤差為:
最后,將所有特征點重投影誤差的和最小化,得到優(yōu)化方程為:
式中:m在有對應(yīng)匹配特征點時為1,沒有則為0。接著,由位姿參數(shù)構(gòu)成變換矩陣T4×4來完成世界坐標(biāo)系到相機坐標(biāo)系再到屏幕坐標(biāo)系的轉(zhuǎn)換,實現(xiàn)虛擬對象的注冊。虛擬對象坐標(biāo)為(X,Y,Z),虛擬對象屏幕坐標(biāo)為(u,v),且平移量分別為px和py,對應(yīng)方向焦距為fx和fy,則虛擬對象注冊滿足公式:
然而,該方法在進行ORB特征點匹配時采用特征點全局匹配,搜索范圍大,耗時較長;并且在出現(xiàn)相機移動過快、視角大幅變換等現(xiàn)象時,相鄰兩幀圖像匹配的特征點驟減,相機位姿估計精度大幅下降,注冊精度隨之降低,出現(xiàn)漂移現(xiàn)象。
本文所提的增強現(xiàn)實的注冊系統(tǒng)框架如圖1所示,主要由跟蹤和注冊兩個模塊構(gòu)成。其中跟蹤模塊是利用IMU數(shù)據(jù)加速ORB特征點匹配,計算相機位姿時加入IMU誤差項聯(lián)合求解實現(xiàn)跟蹤。注冊模塊主要工作是在相機位姿信息確定后,根據(jù)相機位姿信息計算出旋轉(zhuǎn)矩陣與平移矩陣,通過OpenGL把虛擬對象渲染并注冊到相應(yīng)位置。
圖1 系統(tǒng)框架
對于增強現(xiàn)實注冊算法,時效性一定要得到保證,IMU預(yù)積分模在短時間內(nèi)能提供比較精確的位姿估計[11],因此本文提出結(jié)合IMU數(shù)據(jù)改進的ORB特征點匹配方法。在本文中相機的參考坐標(biāo)被設(shè)置為C,世界坐標(biāo)系則為W,IMU的參考坐標(biāo)設(shè)置為B和分別是相機采集第i幀時IMU相對世界坐標(biāo)系的旋轉(zhuǎn)關(guān)系、速度關(guān)系和平移關(guān)系。w B為角速度,a B為加速度,b a為加速度偏差參數(shù),b g為角速度偏差參數(shù),g w為重力參數(shù)。本文參考了文獻[12]提出了預(yù)積分模型:
式中:Exp(?)是李代數(shù)[13]到李群的指數(shù)映射,Δt是相鄰兩幀圖像時間間隔。式(4)描述了兩組IMU數(shù)據(jù)之間的關(guān)系,可以計算出第j幀的相機位姿情況。
通過IMU預(yù)積分,可以得到相鄰兩幀相機位姿變化關(guān)系。假設(shè)特征點X在前一幀的坐標(biāo)為X1(x1,y1,z1),根據(jù)R和T可以計算該特征點在下一幀的坐標(biāo)X2(x2,y2,z2)為:
因此,在進行ORB特征點匹配時,通過IMU預(yù)積分模塊計算出相機在兩幀圖像之間的位姿變化,得出前一幀圖像中的特征點X1在后一幀圖像中大概位置X2,將ORB特征點全局搜索匹配轉(zhuǎn)化為以X2為中心的局部區(qū)域搜索匹配,縮小搜索范圍,提高了匹配速率。特征匹配完成后,所得到的初始匹配對中會存在錯誤匹配對,本文使用隨機采樣一致性算法[14](random sample consensus,RANSAC)剔除錯誤匹配的特征點,直至匹配精度達到設(shè)定閾值(本文設(shè)閾值為0.96)。
相機在移動時會存在運動過快、視角大幅變換現(xiàn)象,相鄰兩幀圖像匹配的特征點驟減,此時僅使用ORB特征匹配求解相機位姿,位姿精度會大幅下降,注冊精度也隨之降低。然而IMU數(shù)據(jù)在短時間內(nèi)能提供精確的相機位姿估計,可以解決傳統(tǒng)視覺SLAM存在匹配特征點過少問題。因此,本文采用IMU數(shù)據(jù)和圖像信息聯(lián)合求解相機位姿。IMU誤差計算公式為:
式中:ΔR ij、ΔV ij和ΔT ij分別為IMU模塊的旋轉(zhuǎn)信息、速度信息和平移信息,和可由式(4)計算得到。雅可比J g(?)和J a(?)分別為陀螺儀偏差和加速度偏差的一階近似。則相機位姿優(yōu)化方程為:
在相機位姿更新計算中,視覺誤差和IMU誤差均存在,為了盡可能減小兩種誤差對位姿結(jié)果的影響,本文將誤差作為權(quán)重因子加入優(yōu)化方程,給予較小誤差項以較大的權(quán)重來提高計算效率和精度。則新的相機位姿優(yōu)化方程為:
θ=是本文優(yōu)化的參數(shù),在傳統(tǒng)視覺SLAM優(yōu)化的基礎(chǔ)上增加了陀螺儀偏差參數(shù),IMU的速度參數(shù)和加速度偏差參數(shù)等新的優(yōu)化參數(shù),可以進一步提高求解的相機位姿精度。Eslam(i,j)是當(dāng)前圖像幀所有特征點的重投影誤差和,Eimu(i,j)是相鄰兩幀圖像的IMU誤差項。最后,根據(jù)和式(3)求得轉(zhuǎn)換矩陣T4×4,完成虛擬對象的注冊。
實驗驗證是基于Windows系統(tǒng)和Python實現(xiàn)的。硬件配置為Intel(R)Core(TM)i5-9300H CPU@2.4 GHz,內(nèi)存為8G。本文對相鄰兩幀圖像進行特征點匹配,得到了兩種算法的最終匹配結(jié)果和RANSAC后結(jié)果,見圖2。
圖2 各算法的匹配結(jié)果
表1展示了不同RANSAC迭代次數(shù)下特征點匹配結(jié)果,從中可以看到,隨著RANSAC的迭代次數(shù)增加,錯誤匹配數(shù)目逐步減少,檢測精度會隨之提高??梢?,本文所提的結(jié)合IMU的ORB匹配算法,檢測時間和滿足精度要求時所需RANSAC迭代次數(shù)均比ORB算法小,即保證了準(zhǔn)確率又大幅提高了匹配速率,具有一定改進意義。
表1 算法匹配效率和時間對比
本文通過EuRoC數(shù)據(jù)集,對比了視覺SLAM和本文改進后算法的精度。圖3展示了文獻[8]和本文所提算法估計的軌跡圖以及真實軌跡圖。對比兩個算法結(jié)果可知,本文所提算法在精度方面和文獻[8]相比有了一定提高。圖4為各算法局部真實軌跡比較情況。圖5為本文算法在前20幀圖像的相鄰幀間誤差統(tǒng)計結(jié)果,分別為IMU誤差統(tǒng)計結(jié)果和視覺誤差統(tǒng)計結(jié)果。其中,絕對軌跡誤差的均方根誤差(RMSE)、均值(mean)、中值(median)、標(biāo)準(zhǔn)差(std)、最小值(min)、最大值(max)等具體參數(shù)如表2所示。
圖3 算法的運行軌跡及真實軌跡
表2 算法的絕對軌跡誤差對比 單位:m
所提的改進注冊算法是基于視覺SLAM實現(xiàn)的,由表2可知,所提算法在精度相關(guān)參數(shù)上有著明顯的優(yōu)勢,其中RMSE只有傳統(tǒng)視覺SLAM的1/3。由圖4結(jié)果可知,在相機視角變化過大時,僅圖像特征信息匹配確定相機位姿偏移較嚴重,在加入IMU數(shù)據(jù)后,相機位姿的精度得到大幅度改善。由圖5可知,視覺誤差受相鄰幀圖像匹配情況影響,在圖像模糊、運動過快和特征缺失等情況下會明顯增加;而IMU數(shù)據(jù)能在短時間內(nèi)提供精確的位姿估計,但其缺乏反饋機制,存在誤差累積現(xiàn)象,誤差會越來越大。因此,本文采用圖像視覺信息和IMU數(shù)據(jù)信息聯(lián)合確定相機位姿,在增強現(xiàn)實注冊算法前端進行特征點匹配時,通過IMU預(yù)積分模塊減小匹配特征點的搜索空間,加速匹配過程,提高了算法時間效率;接著采用RANSAC對匹配結(jié)果進行迭代,提高匹配精度。在算法后端確定相機位姿時,加入IMU數(shù)據(jù)聯(lián)合求解相機位姿,并將誤差項作為權(quán)重因子加入求解方程,提高了算法精度。
圖4 算法的局部軌跡比較
圖5 測量誤差統(tǒng)計
此外,結(jié)合SLAM的注冊系統(tǒng)大多采用文獻[7-8]中的算法。通過EuRoC數(shù)據(jù)集評估各個文獻算法的精度。評估標(biāo)準(zhǔn)為RMSE值,實驗結(jié)果如表3所示,“×”表示跟蹤失敗。
表3 系統(tǒng)精度對比 單位:m
實驗結(jié)果表明文獻[4]采用的有標(biāo)記的注冊算法容易出現(xiàn)跟蹤丟失現(xiàn)象,應(yīng)用場景受限;文獻[5]的方法在精度方面表現(xiàn)一般。文獻[7-8]都是基于自然特征的注冊算法,在大多數(shù)數(shù)據(jù)集中都可以取得較好的效果。本文在基于自然特征的基礎(chǔ)上加入IMU確定相機位姿,適應(yīng)性和精度方面都有更好的表現(xiàn)。
最后,為了體現(xiàn)本文所提的增強現(xiàn)實注冊算法的魯棒性,在視角變化過大時不產(chǎn)生漂移現(xiàn)象。如圖6所示,本文記錄了在同一場景下各個視角的虛擬對象注冊效果。實驗結(jié)果圖表明,結(jié)合IMU改進的注冊算法,在視角變換過大時也能精確跟蹤,虛擬對象的注冊也不會出現(xiàn)丟失和漂移現(xiàn)象。
圖6 算法的注冊效果
針對增強現(xiàn)實領(lǐng)域中的三維注冊的低效率、低精度等問題,提出了結(jié)合IMU改進的注冊方法。通過IMU預(yù)積分模塊,預(yù)測當(dāng)前幀的初始位姿,減小匹配范圍,加速特征點的匹配,提高匹配速率;在后端確定相機位姿時加入IMU誤差項聯(lián)合優(yōu)化位姿參數(shù),提高注冊精度。實驗結(jié)果表明,所提方法具有更高的注冊效率和精度。但是,所提方法沒有采用圖像深度信息進行匹配,只利用了圖像的灰度信息。近年來,深度相機的普及給獲取圖像深度信息帶來了便利,結(jié)合深度相機對所提方法進行改進是未來需要研究的問題。