江 荔
(福州職業技術學院 福建 福州 350108)
隨著新一代信息技術(特別是5G、人工智能、大數據、虛擬現實技術)的發展,以及智能手機和可穿戴設備的普及,增強現實(Augmented Reality,AR)技術也逐漸進入大眾的視野。如今,AR技術已被廣泛應用到醫療、教育、影視、娛樂等領域中,趣味性非常豐富,廣受歡迎,各種各樣的移動AR應用程序也帶給人們超乎想象的應用體驗。基于AR的理論和技術研究也越來越多,即時定位與地圖構建技術(Simultaneous Localization and Mapping,SLAM),是其中應用最多的技術之一,SLAM為AR的場景提供準確豐富的三維信息的同時,能重新快速定位相機的實時位置,從而實現3D場景的實時重建,這對構建一個穩定的AR展示系統具有非常重要的研究意義。
最早出現增強現實AR這個詞是在1992年,文獻中定義AR技術是將計算機生成的虛擬信息融合至真實環境世界的一種科學技術,是一種實時地計算攝影機影像的位置及角度并加上相應圖像的技術,是一種全新的人機交互技術[1]。進入2021年,AR技術在城市規劃、醫學教育、教育培訓、房地產宣傳、娛樂游戲、工業設計、工程訓練、虛擬培訓、軍事航天等領域都得到了廣泛的應用,因此被認為是未來能影響人們生活的重要新興技術之一。近年來,蘋果、谷歌、阿里巴巴、騰訊等多家互聯網巨頭都相繼推出了增強現實開放平臺,并投入了大量的資金進行AR理論和應用研究。特別是2020年新冠狀肺炎爆發以來,虛擬現實、增強現實以及混合現實這些新興技術帶給人們不一樣的展示體驗,AR技術的商業前景也越來越廣闊,AR展示系統的研究和實現也進入一個全新的階段。
AR增強現實的三大技術包括標定技術、跟蹤技術以及交互技術。其中SLAM主要解決跟蹤技術,是AR系統中最關鍵的技術,也是本文研究的重要內容之一。
SLAM是近年新興的即時定位追蹤技術,它是指運動物體根據傳感器的信息,在計算自身位置的同時構建地圖的過程,是移動物體在解決未知環境中的探索、偵查、導航等問題的基礎和關鍵[1]。
這里所說的SLAM,可以分為激光SLAM與視覺SLAM兩大類,這是根據傳感器種類不同來劃分的。激光SLAM主要用于室內機器人和無人駕駛領域,生活中常見的家庭掃地機器人及商用場景中的服務型機器人大多采用激光SLAM,激光SLAM主要被應用在室內,擺脫了對環境光照的限制,避免了對光的依賴,可以在昏暗環境工作。視覺SLAM主要應用于增強現實(AR)、虛擬現實(VR)、機器人、自動駕駛等領域,視覺SLAM的在應用場景上范圍更廣,雖然室內室外均可部署,但是如果室內光照比較暗的情況下,視覺SLAM則工作效率較低,出錯率高,對光的依賴度較高。
一般來說視覺SLAM的傳感器主要是攝像機或者智能手機,現行研究的視覺SLAM可以分為基于單個攝像頭、兩個或多個攝像頭、RGB-D攝像頭以及它們的組合方案[2]。近年來,由于5G智能手機的普及以及計算能力的提升,單目SLAM應用越來越廣泛,且成本比較低廉,可以在小范圍內實現較高的定位精度,基本滿足AR的應用要求。但是因為環境往往是動態變化的,容易造成視覺特征匹配困難,優化計算也不穩定,這樣視覺SLAM的精度和穩定性難以保障。另外,在大規模場景下,SLAM計算復雜度高,實時計算量大,一般的計算機計算能力有限,視覺SLAM在實時性方面也面臨一定的挑戰。SLAM的研究就是針對這些問題進行優化,算法也在不斷改進。
傳統的SLAM系統主要包括傳感器數據、前端視覺里程計、后端非線性優化、建圖以及回環檢測5個模塊[3],如圖1所示。其中最重要的是前端視覺里程計、后端非線性優化、回環檢測3個模塊,本文也主要介紹這3個模塊。傳感器數據模塊通常采用慣性測量單元(Inertial Measurement Unit,IMU)傳感器,主要用來檢測和測量加速度與旋轉運動的傳感器,這也是目前常用的傳感器模塊。

圖1 傳統SLAM系統流程
前端視覺里程計通過處理圖像序列并進行一定的運算得到視覺傳感器的位置[4],是視覺SLAM系統中最重要的模塊。解決前端視覺里程計最常用的方法是特征點提取。相機在運動過程中圖像信息變化很快,這就需要提取少量特征點來計算圖像位置,這樣可以忽略除特征點外的其他大量像素信息,從而減少圖像匹配運算過程的時間消耗,也減少CPU占用率。2011年,由Rublee提出一種高效并且魯棒的算法——ORB算法,研究表明,ORB算法的提取速度遠比SIFT算法和SURF算法快,且ORB算法的穩健性也足夠強[3]。特征點是計算機中圖像信息的重要表達方式,是SLAM系統的輸入信息,特征點獲取的速度對SLAM整體性能影響巨大,圖像信息表達不清晰會使SLAM系統產生很大的誤差,基于以上考慮,本文選擇ORB算法作為SLAM算法中的特征提取和匹配,這是一種單目視覺里程計算法,算法的優點是傳感器的硬件結構簡單,也比較容易標定單目相機的過程,但缺點在于初始化較為困難[5]。
前端視覺里程計模塊在獲取圖像的過程中,位置的計算和圖像的累計,會產生位置漂移的累積誤差,同時相機的非勻速運動和環境特征噪聲的影響也會帶來測量誤差。為了提高SLAM系統建立的三維地圖的質量,減小各種測量誤差導致的位置估計誤差或三維點的坐標計算誤差,消除視覺里程計模塊產生的漂移累積誤差,后端主要采用的算法是濾波法與非線性優化[3]。研究表明,濾波法的速度快且占用內存很小,但是隨著攝像時間的增加,緩沖隊列也會有很大負擔,系統累計的誤差也會越來越大,偏離值越來越高。非線性優化算法能最大可能地減少重投影誤差,最大限度地降低系統偏離值,鑒于此,本系統采用的是非線性優化算法,分析表明此算法誤差值相對較小。
系統在拍攝過程中不可避免會出現重復場景,回環檢測的目的就是檢驗出現的重復場景,減小運動軌跡漂移累積誤差,當前端視覺里程計位置跟蹤失敗時,回環檢測則使用重定位識別重復場景。目前回環檢測主要的方法有3種:通過對任意兩個關鍵幀進行特征匹配進行回環檢測的方法、基于前端視覺里程計進行回環檢測的方法以及基于圖像外觀特征進行回環檢測的方法[3]。本系統使采用第3種方法消除產生的漂移累積誤差,分析表明誤差相對較小。
本文設計了基于視覺SLAM算法的AR展示系統框架,首先將從前端模塊獲取的視頻流圖像幀通過傳感器輸入SLAM系統,使用ORB-SLAM算法在SLAM系統中將得到圖像幀以及當前圖像幀的位置信息進行打包,打包后的數據會存入指定的結構體,結構體數據根據時間序列進入緩沖隊列,最后AR模塊從中取用數據。以上就是AR展示系統框架的工作流程,如下圖2所示。

圖2 基于單目視覺SLAM算法的AR系統框架
本文以高清攝像頭采集實時圖像為測試,PC采用主流的VR開發工作站,CPUi7-10700,顯卡RTX3070,內存16G RECC,操作系統使用Windows10,建模軟件使用3DMAX,軟件對虛擬場景建模并導入三維引擎,在Unity2018三維引擎設計與實現了AR模塊。正常情況下,此SLAM系統很大程度上提升了處理一張圖像幀和獲取該圖形幀位置信息的平均時間。由于在室內測試,需要對室內光照非常充足,系統穩定性稍顯不足。本文構建了一個基于單目視覺SLAM的AR展示系統框架,前端視覺里程計采用ORB算法采集圖像,后端采用非線性優化算法消除誤差,回環檢測方法采用基于外觀的檢測方法,對SLAM系統的顯示效果進行提升,可以達到實時處理高清圖像的效果,使SLAM系統在一般情況下都可以對高清圖像達到實時處理,研究分析了此系統可行性。
SLAM技術的應用不僅只局限于增強現實,同時也為計算機提供“眼睛”,使得AR能夠通過視覺輸入來展示周圍的一切。SLAM技術是AR展示系統領域最核心的技術之一,本文在比較分析了不同模塊的SLAM算法,選取了單目視覺SLAM系統中最優算法,設計了一個AR框架系統,同時由于SLAM可移植性強,場景適應性強,可達到實時處理高清圖像的效果,提高AR整體跟蹤效果的同時,也使得容錯率等大大降低。隨著5G+AR技術的發展,未來突破VR、AR、MR技術的瓶頸除了SLAM算法的不斷改進,設計框架也需要重構,在突破技術的同時,不斷開發新的創意,帶給用戶不同的體驗感受,AR展示系統的研究具有重要意義。