當前位置:係統粉 >   IT資訊 >   微軟資訊 >  史上最穩?微軟HoloLens中的SLAM技術大揭秘

史上最穩?微軟HoloLens中的SLAM技術大揭秘

時間:2017-07-06 來源:互聯網 瀏覽量:

IMU包含有陀螺儀(就不多說了)、環境感知攝像頭和深度攝像頭,(說人話!明明不就是攝像頭嘛!手機也有攝像頭啊?)區別就是,HoloLens有深度攝像頭,這種攝像頭和普通攝像頭的不同就是能夠獲得拍攝對象的深度信息,也就讓HoloLens獲得了環境三維立體數據。如下圖所示。

從HoloLens中SLAM技術揭秘(上)的小測試裏,我們知道,“我在哪兒(定位)”“我周圍有什麼(三維場景重建)”離不開環境感知攝像頭。HoloLens的定位不依賴深度攝像頭,而對周圍三維環境構建也不僅僅依賴深度攝像頭。

史上最穩?微軟HoloLens中的SLAM技術大揭秘(1)

那麼問題來了,環境感知攝像頭是怎麼知道HoloLens在空間中的位置呢?深度攝像頭又是如何重建三維場景呢?這就涉及到SLAM了。

SLAM作為一個三維感知的基礎技術並不新鮮,SLAM從提出到現在已經三十多年,用於解決實現機器人的自主定位和導航。微軟的SLAM項目早在2001年11月5日就創立了。目前SLAM體係發展已經相當龐大。

史上最穩?微軟HoloLens中的SLAM技術大揭秘(2)

今天我們隻談HoloLens使用的技術,就是攝像機裏的單目視覺和RGBD類。

單目視覺,就是依靠一個攝像頭去完成SLAM。HoloLens有4個環境感知攝像頭,仔細看下,你會發現,靠內的兩個攝像頭朝向前方,靠外的兩個攝像頭分別朝向左右兩邊。主要起作用的是靠內的攝像頭,隻要靠內的攝像頭有一個不被遮擋,即使其他三個攝像頭被遮擋,也不會影響HoloLens對空間位置的感知。

HoloLens正是用單目SLAM。首先提取圖像中的特征,然後根據相鄰幀圖像的特征去匹配,識別出場景某些特征點位置,並通過圖像的變化反向計算出相機的運動。

史上最穩?微軟HoloLens中的SLAM技術大揭秘(3)

相機位置追蹤 來自 極客頭條-張哲《SLAM剛剛開始的未來》

由於有深度攝像頭,HoloLens並不需要靠環境感知攝像頭去獲得場景每個像素的深度值,隻需要根據一些匹配上的關鍵特征點計算出攝像頭相對場景位置即可。否則僅僅依靠環境感知攝像頭計算場景所有深度信息,代價相當大。

RGBD類。最大的特點是可以通過紅外結構光或Time-of-Flight原理,直接測出圖像中各像素離相機的距離。因此,它比傳統相機能夠提供更豐富的信息,也不必像單目或雙目那樣費時費力地計算深度。HoloLens的深度攝像頭用的便是Time-of-Flight原理,即通過從投射的紅外線脈衝反射回來的時間來獲得Depth的信息。由於使用紅外線,也正是為什麼HoloLens對黑色表麵識別不好的原因。

HoloLens的三維場景重建利用的是Richard Newcombe發明的Kinect Fusion。為了更好理解Kinect Fusion,可以想象下,我們在玩雕塑。先是有一個巨大的方塊,我們一個角度去挖,挖到想要成型樣子的表麵就不挖了。挖多深,用的就是深度圖的信息。然後不斷換角度,繼續重複上麵的,這樣多個角度後,雕塑的樣子慢慢浮現出來。

具體重建三維場景流程如下圖:

史上最穩?微軟HoloLens中的SLAM技術大揭秘(4)

來自 Microsoft Developer Network

a)讀入的深度圖像轉換為三維點雲並且計算每一點的法向量。

b)相機的追蹤。Kinect Fusion是計算得到的帶有法向量的點雲,和通過光線投影算法根據上一幀位置從模型投影出來的點雲,利用 ICP 算法配準計算位置,但深度攝像頭的精細度並不高,如果HoloLens采用深度圖數據來計算HoloLens位置,誤差會挺大,全息場景也不會穩定固定在空間裏。相機的位置用的是環境感知攝像頭計算出來的。

c)根據相機的位置,將當前幀的點雲融合到網格模型中去。

d)根據當前幀相機位置利用光線投影算法從模型投影得到當前幀視角下的點雲,並且計算其法向量,用來對下一幀的輸入圖像配準。

如此是個循環的過程,通過移動相機獲取場景不同視角下的點雲,重建完整的場景表麵。

現在,你應該對HoloLens中SLAM技術的使用有個清晰的認識了吧!

目前對SLAM的研究依然還在繼續,由於產品和硬件高度差異化,而SLAM相關技術的整合和優化又很複雜,導致算法和軟件高度碎片化,市場上真正能在實際應用中運用SLAM的產品不多。

from:青亭網

新浪聲明:新浪網登載此文出於傳遞更多信息之目的,並不意味著讚同其觀點或證實其描述。

我要分享:

最新熱門遊戲

版權信息

Copyright @ 2011 係統粉 版權聲明 最新發布內容 網站導航