- AR開發權威指南:基于AR Foundation
- 汪祥春編著
- 3785字
- 2021-01-15 16:18:34
1.2 AR技術原理
AR帶給用戶奇妙體驗是因為有數學、物理、幾何、人工智能、傳感器、工程、計算機科學等高新技術的支持,對開發人員而言,了解其技術原理有助于理解AR的整個運行生命周期;理解其優勢與不足,可更好地服務于應用開發工作。
1.2.1 位置追蹤
環境注冊與跟蹤是AR的基本功能,即時定位與地圖映射(Simultaneous Localization And Mapping,SLAM)是在未知環境中確定周邊環境的一種通行技術手段,其最早由科學家Smith、Self、Cheeseman于1988年提出。SLAM技術解決的問題可以描述為:將一個機器人放入未知環境中的未知位置,想辦法讓機器人逐步繪制出該環境的完全地圖,所謂完全地圖(Consistent Map)是指可使人不受障礙地進入每個角落的地圖。SLAM作為一種基礎技術,最早用于軍事(核潛艇海底定位就有了SLAM的雛形),如今,它逐步走入大眾的。當前,在室外我們可以利用GPS、北斗等導航系統實現高精度的定位,這基本上解決了室外的定位和定姿問題,而室內定位的發展則緩慢得多。為解決室內的定位定姿問題,SLAM技術逐漸脫穎而出。SLAM一般處理流程包括Track和Map兩部分。所謂的Track是用來估測相機的位姿的,也叫前端,而Map部分(后端)則是進行深度的構建,通過前端的跟蹤模塊估測得到相機的位姿,采用三角法(Triangulation)計算相應特征點的深度,然后進行當前環境Map的重建,重建出的Map同時為前端提供更好的位姿估測,并可以用于閉環檢測。SLAM是機器人技術、AR技術中自主導航的基礎技術,近年來發展得非常快,圖1-2是Kumar教授進行SLAM實驗的圖示。
▲圖1-2 Kumar教授進行SLAM實驗
定位與跟蹤系統是AR的基礎,目前在技術上,解決室內定位與位姿問題主要采用視覺慣性測距系統(Visual Inertial Odometry,VIO)和慣性導航系統。綜合使用VIO與慣性導航系統可以通過軟件實時追蹤用戶的空間位置(用戶在空間上的六自由度姿態)。VIO在幀刷新之間計算用戶的位置,為保持應用流暢,VIO速度必須達到每秒30次及以上。這些計算要并行完成兩次,通過視覺(攝像)系統將現實世界中的一個點與攝像機傳感器上的一幀像素匹配,從而追蹤用戶的姿態。慣性導航系統(設備加速度計和陀螺儀統稱為慣性測量單元,即Inertial Measurement Unit,簡稱IMU)也可以追蹤用戶的姿勢,VIO與慣性導航系統并行計算,在計算完之后,卡爾曼濾波器(Kalman Filter)結合兩個系統的輸出結果,評估哪一個系統提供的估測更接近用戶的“真實”位置,從而作出選擇。定位與跟蹤系統追蹤用戶在三維空間中的運動,作用類似于汽車里程表與加速計等。
提示
自由度(Degrees of Freedom,DOF)是指物理學當中描述一個物理狀態,可獨立對物理狀態的結果產生影響的變量的數量。運動自由度是確定一個系統在空間中的位置所需要的最小坐標數。在三維坐標系中描述一個物體在空間中的位置和朝向信息需要6個自由度數據,即6DOF,指x軸、y軸、z軸方向上的三維運動(移動)加上俯仰/偏轉/滾動(旋轉)。
慣性導航系統的最大優勢是IMU的讀取速度大約為1000次每秒,并且這是基于加速度的(設備移動),可以提供更高的精度,通過航跡推算(Dead Reckoning)即可快速測量設備移動。航跡推算是一種估算方法,類似于向前走一步,然后估測行走距離。估測出的結果會有誤差,并且這類誤差會隨時間累積,所以IMU幀率越高,慣性導航系統從視覺系統中復位所需的時間越長,追蹤位置與真實位置偏差就越多。
VIO使用攝像頭采集視覺信息,設備幀率通常為30幀/秒并且依賴場景復雜度(不同的場景幀率也有所不同)。通常隨著距離的增大,光學系統測量誤差也不斷地增大(時間也會有輕度影響),所以用戶移動得越遠,誤差就越大。
慣性導航系統與視覺測量系統各有各的優勢和不足,但慣性導航和視覺測量是基于完全不同的測量方法,它們之間并沒有相互依賴的關系。這意味著在遮蔽攝像頭或者只看到一個具有很少光學特征的場景(例如白墻)時慣性導航系統照樣可以正常工作,或者設備在完全靜止的條件下,視覺測量系統可以呈現出一個比慣性導航系統更加穩定的狀態。卡爾曼濾波器會不斷地選擇最佳姿態,從而實現穩定跟蹤。
在具體實現上,為了獲得精確定位,VIO需要獲取兩張有差異的場景圖像,然后對當前位置進行立體計算。人眼通過類似原理觀察3D世界,一些跟蹤器也因此依賴立體相機。采用兩臺相機比較好計算,測量兩個相機之間的距離,同時捕獲幀進行視差計算;而在只有一個相機時,可以先捕捉一次畫面,然后移動到下一個位置進行第二次捕捉,再進行視差計算。使用IMU航跡推算可以計算兩次數據讀取位置之間的距離然后正常進行立體計算(也可以多捕獲幾次使計算更加準確)。為了獲得較高的精度,系統依賴IMU精確航跡推算,從IMU讀取的加速度和時間測量中,可以計算出速度和在獲取兩次畫面之間設備移動的實際距離(公式S=0.5×a×t2)。使用IMU的困難是從IMU中除去誤差以獲得精確的加速度測量結果,在設備移動的幾秒鐘之內,若每秒運行1000次,一個微小的錯誤會造成很大程度的誤差積累。
深度相機可以幫助設備增強對環境的理解。在低特征場景中,深度相機對提高設備地面檢測、度量標度以及邊界追蹤的精度有很大的幫助。但是深度相機能耗較大,因此只有以非常低的幀率使用深度相機才能降低設備耗能。移動設備上的深度相機的拍攝范圍也比較有限,這意味著它們只適合在手機上的短距離范圍內使用(幾米的范圍),另外深度相機在成本方面也比較昂貴,因此原始設備制造商(Original Equipment Manufacturer,OEM)目前都避免在手機上大量采用。
立體RGB或魚眼鏡頭也有助于人們看到更大范圍的場景(因為立體RGB和魚眼鏡頭具有潛在的光學特性。例如通過普通鏡頭可能只會看到白色的墻壁,但是通過一個魚眼鏡頭可以在畫面中看到有圖案的天花板和地毯,Tango和Hololens就使用這種方法)。并且相對VIO而言,它們可以用更低的計算成本來獲取深度信息。由于手機立體攝像頭之間的距離非常近,因此手機上深度計算的精度范圍也受到限制(相隔數厘米距離的手機相機在深度計算的誤差上可以達到數米)。除此之外,TOF(Time Of Flight)、結構光方式也在快速的發展當中。
但綜合設備存量、成本、精度各方面因素,VIO結合IMU進行位置定位跟蹤仍將是以后一段時間內的主流做法。
1.2.2 視覺校準
為了使軟件能夠精確地匹配攝像機傳感器上的像素與現實世界中的“點”,攝像機系統需要進行精密的校準。
幾何校準:使用相機的針孔模型來校正鏡頭的視野和鏡筒效果。由于鏡頭的形狀,所有采集到的圖像都會產生變形,軟件開發人員可以在沒有OEM幫助的情況下使用棋盤格和基本公開的相機規格進行幾何校正,如圖1-3所示。
▲圖1-3 對圖像信息進行幾何校準示意圖
光度校準:光度校準涉及底層技術,通常要求OEM參與。因為光度校準涉及圖像傳感器本身的細節特征以及內部透鏡所用的涂層材料特性等,光度校準一般用于處理色彩和強度的映射。例如,正在拍攝遙遠星星的望遠鏡連接的攝像機需要知道,傳感器上一個像素光強度的輕微變化是否確實源于星星的光強變化,或者僅源于傳感器或透鏡中的像素差。光度校準對于AR跟蹤器的好處是提高了像素和真實世界中的點的匹配度,因此可使視覺跟蹤具有更強的魯棒性以及出現更少的錯誤。
1.2.3 慣性校準
當我們在考慮IMU時,一定要記住IMU是用來測量加速度而不是距離或速度的,這點很重要。IMU數據讀取錯誤造成的計算結果誤差會隨著時間的推移快速累積,校準和建模的目標就是確保距離測量具有足夠的精度。理想情況下,在使用IMU時可以使攝像機具有足夠長的時間來彌補由于用戶遮蓋鏡頭,或者場景中發生其他意外所造成視頻幀跟蹤的丟失。使用IMU測量距離的航跡推算是一種估測,但是通過對IMU行為進行建模,找出產生錯誤的所有來源,然后通過編寫過濾器來減少這些錯誤,可以使這個估測更加精確。想象一下用戶向前走一步,然后猜測用戶走了幾米這樣的場景,僅憑一步去估測結果會有很大的誤差,但是如果重復上千步,那么對用戶每步的估測與實際行走距離的估測最終會變得非常準確。這就是IMU校準和建模的原理。
在IMU中會有很多錯誤來源,它們都需要分析捕獲并過濾。假設一個機器臂通常用于以完全相同的方式重復地移動,對其IMU的輸出不斷進行采集和過濾,直到IMU的輸出能夠和機器臂的實際移動十分精確地匹配,這就是IMU校準與建模的過程。從IMU中獲得非常高的精度很困難,對于設備廠商而言,必須消除所有引起這些誤差的因素。Google和微軟甚至將他們的設備發送到太空微重力環境中,以便消除額外的誤差。
1.2.4 3D重建
3D重建(3D Reconstruction)系統能夠計算出場景中真實物體的形狀和結構,并對真實環境進行3D重建,因此可以實現虛擬對象與真實物體發生碰撞或遮擋,如圖1-4所示。要將虛擬對象隱藏在真實物體之后,就必須要對真實物體進行識別與重建。目前來看3D重建還有很多難點需要克服,當前移動端AR基本都不支持3D重建,因此AR中的虛擬對象會一直浮在真實物體的前面。3D重建通過從場景中捕獲密集的點云(使用深度相機或者RGB相機),將其轉換為網格,并將網格傳遞給3D重建系統(連同真實世界的坐標),然后將真實世界網格精準地放置在相機所捕獲的場景上。在對真實環境進行3D重建后虛擬對象就可以與真實物體互動,實現碰撞或遮擋。
▲圖1-4 Magic Leap演示的遮擋效果
提示
3D重建在Hololens術語中叫空間映射,在Tango術語中叫深度感知。
通過圖像獲取、攝像機標定、特征提取、立體匹配獲取比較精確的匹配結果,結合攝像機標定的內外參數,就可以恢復三維場景信息。由于3D重建精度受匹配精度、攝像機的內外參數誤差等因素的影響,只有重建前各個環節的精度高、誤差小,才能較好地恢復真實場景的三維空間結構。我們只了解一下3D重建的概念,本書中我們不會用到3D重建相關的知識。但3D重建在構建AR系統深度信息方面非常重要,3D重建是實現真實物體與虛擬物體碰撞或遮擋的基礎。
- Core Data iOS Essentials
- Moldflow模流分析與工程應用
- 鍵盤錄入技術(第2版)
- 詳解AutoCAD 2022建筑設計(第6版)
- MLOps實戰:機器學習模型的開發、部署與應用
- RESTful PHP Web Services
- UG NX 完全實例解析
- Photoshop CC 服裝設計經典實例教程
- 3ds Max 2015中文版從入門到精通
- Premiere CC視頻編輯入門與應用
- Photoshop CC移動UI設計實用教程
- 有趣的Flutter:從0到1構建跨平臺App
- 玩轉電子設計:基于Altium Designer的PCB設計實例(移動視頻版)
- Photoshop后期強:多重曝光專業技法寶典
- 攝影師的后期必修課(RAW格式篇)