三维重建:SLAM的粒度和工程化问题
??????? 百度百科的定義。此文引用了其他博客的一些圖像,如有侵權,郵件聯系刪除。
??????? SLAM不是一個單一算法,是個工程。在計算機視覺中, 三維重建是指根據單視圖或者多視圖的圖像重建三維信息的過程. 由于單視頻的信息不完全,因此三維重建需要利用經驗知識.。而多視圖的三維重建(類似人的雙目定位)相對比較容易, 其方法是先對攝像機進行標定, 即計算出攝像機的圖象坐標系與世界坐標系的關系.然后利用多個二維圖象中的信息重建出三維信息。
??????? 三維重建根據時間和場景的粒度不同需要引入不同的定義和工程化方法:
?
一、單幅圖像的三維重建(單幀三維圖像獲取-硬件級別工程化)
0.硬件設備
??????? 單幅圖像的三維重建主要講解基于整圖視覺的傳感器,線裝掃描思想和整圖思想分別使用了局部和整體的思路來完成2.5D圖像獲取。
??????? 游戲玩家是推進感知硬件發展的一個重要角色,參考:AR和VR的演進哲學 。消費級深度圖像獲取設備更多的賣給了游戲玩家,其中最典型的為PrimeSense 和微軟合作開發的KinectV2.V1,索尼的PsEye,都有千萬級別的銷量,很多科研院所直接使用Kinect作為實驗設備,兩種設備都使用基于紅外線的結構光思路,此外IntelRealSense設備價格較高且性能較差,但更適用于近距離使用,也能廣泛被使用。在工業三維傳感器廠商中,意法半導體、NI、德州儀器、英飛凌等一眾公司亦有典型的3d傳感器。
????? 趕上VR、AR風潮,以色列的inuitive在2015年即推出一款基于TOF的3d傳感器,尺寸不到4cm~3,分辨率可達QVGA,有效感知距離為10-60cm,感知粒度在有效范圍最遠處,可識別粒度達到1cm。以色列Inuitive公司開發基于雙CEVA-MM3101引擎的3D視覺處理器,實現3D景深圖??芍苯忧度階R眼鏡,用于手勢識別。但是介于驅動移植復雜度問題,我們未能取得合作把X86平臺的驅動程序移植到安卓平臺,因此更換了其他方案。
?
1.單幀三維圖像獲取(硬件級別光線分析)
??????? 從傳感器級別考慮光線對環境進行重建,可以直接引入測距方法得出感知點的距離——深度信息。(百科描述:測距儀是一種測量長度或者距離的工具,同時可以和測角設備或模塊結合測量出角度,面積等參數。測距儀的形式很多,通常是一個長形圓筒,由物鏡、目鏡、顯示裝置(可內置)、電池等部分組成。)
??????? 激光測距儀是利用調制激光的某個參數實現對目標的距離測量的儀器。按照測距方法分為 相位法 測距儀和脈沖法 測距儀,脈沖式激光測距儀是在工作時向目標射出一束或一序列短暫的脈沖激光束,由光電元件接收目標反射的激光束,計時器測定激光束從發射到接收的時間,計算出從觀測者到目標的距離。相位法激光測距儀是利用檢測發射光和反射光在空間中傳播時發生的相位差來檢測距離的。
??????? 從單點延伸到整幅圖像,延伸出飛行時間圖像傳感器和相位圖傳感器,并根據光線是否主動發射劃分出單目相機(相位圖)和多目相機(視差方法)。激光可以使用其他特定光線替代,比如紅外光。在廣泛被使用的直接深度圖像獲取設備之中,微軟kinect、asus Xtion Pro、索尼psEye等使用相位法得到深度圖像。
??????? 此外,google project tango 作為此類新的代表,遵循根本原理:談了這么久的Project Tango?我們終于把它講清楚。
?????? (Kinect?紅外發射器(Infrared?Projector)發射出雷射光,通過紅外發射器鏡頭前的光柵(diffuser),均勻地投射到測量空間,測量空間的粗糙物體反射,形成隨機的散斑,再通過紅外攝影機(Infrared?Camera)記錄空間的每個散斑,通過晶片的計算便得到3D深度圖像。參考:Kinect 深度圖獲取原理_winsolider_新浪博客)
??????? 深度圖像獲取設備的探索廠商Primesense的相位光獲取深度圖像的專利描述。
???????
?????? TOF飛行時間法3D成像,是通過給目標連續發送光脈沖,然后利用傳感器接收從物體返回的光,通過探測光脈沖的飛行時間來得到目標物的距離。TOF的深度精度不隨距離改變而變化,基本能穩定在cm級.
?????? 關于TOF的總結:TOF相機總結 ,此文對時間節點之前的主要TOF相機進行了總結。 目前主流的有TOF相機廠商有PMD、MESA、Optrima、微軟等幾家,其中MESA在科研領域使用較大,相機緊湊性好,而PMD是唯一一款能夠在戶內、戶外均能使用的TOF相機,并且能夠具有多種探測距離,可用于科研、工業等各種場合。而Optrima、微軟(還不是真正的TOF技術)的相機主要面向家庭、娛樂應用,價位較低。
?????? 工業領域,TOF占據主流,參考:意法半導體:看好飛行時間測距傳感器(ToF)市場發展前景 。意法半導體是全球第一大全功能集成飛行時間(ToF)傳感器模塊廠商,同時意法半導體的FlightSense也是全球市場排名第一的ToF解決方案
?
2.單幀三維圖像獲取(二維圖像的經驗性恢復)
??????? 使用單幅圖像進行深度圖像恢復是一個經驗性的問題,各個論文的改進只在于引入更加復雜的先驗模型,此處不能再多加論述。
??????? 經驗性模型的意義是,在一個寬幅圖片中,恢復出所謂的先驗真實場景。 一堆趣圖,人眼的三維重建錯覺:你可知道,人眼的后面,跟著一整個大腦!
??????
??????? 參考資料:錯覺大師埃舍爾
??????? 宗教是弱者的避難所,忠實信徒也是被教義擺布的真實羔羊:世界上最不尋常的九個教堂
??????? 其實,鐵軌的兩端是不等寬的,這個鐵軌根本就是一個裝飾品。
總結:
?????? 在工程領域,單幅圖像進行三維重建可視為單一固定場景的恢復,即平時所說的2.5D場景。一般使用光線分析的方法,基于模型的經驗性恢復是不可行的,所有基于經驗的方法都會有經驗性障礙,最終重建的準確性和這個先驗模型的負責度和覆蓋域的大小直接相關。
?????? 單幅三維圖像獲取,即2.5d三維圖像的可信度,更多的依賴所使用的硬件水平,基礎理論和光線多能達到的精度。
?
二、多幅圖像的三維重建
?????? 算法界主要集中于處理場景重建,即從多幅圖像中,重建出基于世界坐標系的真實的三維場景映射。并且在大型場景重建中劃分出基于時序的SLAM和可以非時序的SFM,SLAM為即時相機位姿確定和地圖重建,SFM為運動中結構重建。
?????? 以重建理論為指導,若排除噪音問題,多幅圖像的三維重建是完備的,從多幅圖像中一定能重建出與真實場景一致的一個3d場景。
?
1.攝像機-場景一方相對固定的環境重建
?
???????? 相機相對固定的方法為相機相對于世界坐標系是固定的,或者相機位姿變化為平滑可追蹤,需要長期誤差對整個重建過程影響不大。
?
1.1. 像素級別重建,也稱為稠密重建
經典工程案例kinect fusion分析
??????? 參考:kinect fusion 3D重建基本算法 ,此文分析的比較詳細,并且給出?TSDF的偽代碼。
??? ? ? 預處理:kinectFusion實際還對原始的深度信息進行了一定的降噪平滑,采用雙邊濾波(Bilateral filtering),在保留邊緣的基礎上進行平滑,是個可以接受的選擇。
??? ? ? Depth Map Conversion:主要是求出有原先的圖像點u=(x,y),以及深度值D(u),求得每個點的法向量n(u)。根據相機的內部矩陣,將圖像2D坐標轉化為相機原點坐標系的3D點。
?????????
???????? Camera Tracking:此步驟用ICP(iterative closest point)算法,求解出相機每次的相對位移與轉動。相機位置可以用來將相機原點坐標系的結果轉化到世界坐標系。
???????? Volumetric Integration:上一環節已經形成了每個相機圖像個子的T和R,可以將每一幀采集的數據轉化成世界坐標系當中。通過本環節的操作,我們可以形成水密的物體重建,采用TSDF(Truncated Signed Distance Function)的方法。
????????? 后處理Raycasting:之前的操作只是形成了tsdfavg表示的物體的重建結果,要形成我們能見到的圖片,還需要相應的渲染和投影。? ? ? ?
總結:
????????? 稠密重建對圖像中每個點進行世界坐標系轉化,使用類似于拼接的方法,直接使用多幀圖像拼接出最終的三維場景。其中稠密匹配的方法主要是ICP,(iterative closest point)算法。ICP方法在PCL庫中用作點云匹配最主要的方法。參考PCL:ICP算法實現????
?
??? ? ? ? ? ?? 圖:ICP算法用于點云registration??????????????????????? 圖:ICP用于kinect場景重建
?
2.攝像機不固定的環境重建(SLAM、大規模靜態場景重建)
??????? 三維重建的大致過程可形式化為固定世界坐標系后逐漸增加場景元素,是一個逐漸拼接增加地圖的過程。相機平滑可追蹤相當于轉變位姿后的單幅圖像相對于世界坐標系靜止,場景數據是單幅圖像的幾倍到十幾倍,累計誤差較小。若場景較大,并且向一個維度或者幾個維度延伸較長,場景匹配的累計誤差變得不可忽略,消誤差的方法變得占據重要比重。
?
2.1.像素級別重建
???????? 使用kinect適用小型目標或者小范圍內的室內場景,需要相機追蹤的長期累計誤差對整個重建過程影響不大。對于大型地圖,相機位姿轉換漂移誤差較大,且對三維圖像進行配準拼接需要更高的計算量,在相對苛刻的環境中達不到實時性的要求。在特定的應用場景中,不對所有像素進行配準和拼接,只對特定的點和圖像區塊重建,引入稀疏重建的方法。
??????? 此外,大規模靜態場景的像素級別重建一般引入精確測距儀作為輔助,是一個大型工程問題,不是一個算法和框架可以描述的,需要更多設備和人的配合。再次不再對其進行多加描述。
??????
??????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? 圖一: 點陣場景?????????????????????????????????????????????? 圖二:稀疏點場景
?
2.2.特征點級別重建,也稱為稀疏重建
??????? 場景從幾平方米到幾十平方米的室內以至于更寬廣的室內環境,并且擴展到室外。由少量的設備完成滿足特定需求的場景重建,相關行業都有各自的要求。其中對于機器人行業來說,機器人的重要功能為路徑規劃和位移,且特定機器人的運動場景較大,實時性較高,在多數情況下不需要進行像素級別的重建,進行特征點級別的稀疏重建是一種必要的方法。
??????? 對于機器人學通常認為的SLAM問題,是基于相機不固定的三維場景重建問題,大多數情況下需要處理的是基于稀疏點的稀疏重建問題。
??????? 即時相機不固定的未知場景環境重建,SLAM,simultaneous localization and mapping (SLAM),即時位置確定和地圖構建。在一個設定世界坐標系中,同時確定相機的位姿和構建增量地圖。
??????? SLAM作為一個雞和蛋問題,隨著機器人學的發展已經有較長的歷史,并發展處不同的方法。限制于硬件本身的計算能力,機器人廣泛使用的SLAM方法一般為特征點級別的稀疏重建,重建的地圖為拓撲地圖。并由此發展出一些列的SLAM方法。
????? ? 單目SLAM方法和雙目SLAM方法的區別在于雙目給出了相機固定的基線,給出相對精確的絕對尺度,類似于一個深度相機。參考鏈接:單目SLAM解決方案。SLAM發展歷程,對專注于SLAM的方法進行了梳理,比較詳細的介紹了SLAM的基本線路—SLAM的發展歷程。
??????? 小型室內場景稀疏重建同樣是可以一個工程師完全搞定的工程問題,slam開始從一個算法問題演變到一個由多個算法復合推進的工程問題。
???????? ???
????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? 圖:拓撲地圖表示?????????????????????????????????????????????????????????????????????? 圖:白色標記點為特征點
?
2.3.目標級別重建/語義SLAM/目標環境重建
??????? 更大范圍的三維場景重建,比如無人機繪制地圖以及地圖公司實現三維導航和目標定位,三維重建/SLAM問題演化為長時序問題,面對更大的時序誤差累計和數據增量累計問題。
??????? 更大范圍的三維場景重建需要更重要的消除誤差的方法,大的拓撲地圖消耗大量的特征點標記,而構建拓撲地圖的特征點塊描述能力有限,需要更高層次的描述來進行場景拼接。
??????? 因此消除誤差的方法引入了SLAM中經典的回環檢測和目標識別,即SLAM過程引入了目標物體標記,演變為語義SLAM。
??????? 回環檢測經典算法為使用詞袋模型,對成組的特征點進行模式識別,識別已掃描場景,找到“回環”,用來校正閉環內的誤差。
??????? 同時目標識別可以看做為建立一個描述能力更強的地圖標記,并且這個標記相對于單幅圖像幾十個數百個特征點數量更少,在描述大范圍場景時需要更少的拓撲標記。
??????? 目標識別和目標級別地圖構建一般作為特征點場景稀疏重建的并行過程,在此過程中可以引入一些列目標識別的方法。更大的場景和更多的目標需要對整個重建過程進行分層和適當顆?;?#xff0c;因此適時引入場景識別,用以限制數據庫中識別目標物體數目的數量,只對特定的場景進行特定的目標識別。
??????? 工程化困難:基于目標級別的重建,即語義SLAM,場景標記和場景識別占據了更多的地位。語義SLAM的工程化重點開始偏向于場景識別,并在整個語義SLAM工程中占據更多的工作量。
???????
圖1:稀疏地圖中檢測到回環???????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????? 圖2:目標地圖,目標作為地圖地標
? ? ? ? ???? 圖片援引于:SLAM系統SLAM-warehttp://m.51xw.net/tech/2015/07/4358.html
????????? 場景識別:參考:場景/圖像的稀疏表示——ScSPM和LLC的總結
?
總結:
??????? 受制于計算和存儲問題,隨著場景的擴大,三維重建受到的限制增加,重建的粒度需要改變。
??????? 對于小型目標或者場景可以使用固定相機,或者可以不必重視相機位姿變換累計誤差,進行像素級別的稠密重建。實時性要求較高或者環境數據增加,圖像數據和地圖數據暴增,或者相機位姿轉換空間變大時間變長,基于特征點塊的稀疏重建作為一種合適的方法普遍被使用。對于更大的場景或者更長時間的相機位姿變換,出現更多的數據累計更多的誤差,環境描述方法因此也發生變化,基于目標的環境表示作為大范圍拓撲地圖作為輔助重建的方法是合適的。此外隨著目標標記物的增加,引入場景識別可以縮小目標識別的范圍。
??????? 三維重建問題,是個工程問題,根據不同的場景需要評估相應的復雜度。根據不同的復雜度進行工程模塊分解,根據工程需要對每一層使用不同的方法。
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的三维重建:SLAM的粒度和工程化问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些试题:C++面试题.万能Key
- 下一篇: 三维重建:SLAM的尺度和方法论问题