導航:首頁 > 源碼編譯 > 三維定位演算法研究

三維定位演算法研究

發布時間:2024-10-22 20:02:05

1. 震驚世界的Magic Leap與微軟的Hololens有哪些異同

先說一下我關於Magic Leap的信息來源:
1、2014年11月10日,Magic Leap在2014年9月融了5個億以後,來Stanford招人,開了一個Info Session,標題是「The World is Your New Desktop」(世界就是你的新桌面)多麼霸氣!當時是Magic Leap感知研究的高級副總裁(VP of Perception)Gary Bradski和計算視覺的技術負責人(Lead of Computer Vision)Jean-Yves Bouguet來作演講。Gary是計算機視覺領域的領軍人物,在柳樹車庫(Willow Garage)創造了OpenCV(計算視覺工具庫),同時也是Stanford顧問教授。Jean-Yves原來在Google負責谷歌街景車(Street View Car)的製造,是計算視覺技術的大牛。他們加入Magic Leap是非常令人震驚的。我參加了這次Info Session,當時Gary來介紹Magic Leap在感知部分的技術和簡單介紹傳說中的數字光場Cinematic Reality的原理,並且在允許錄影的部分都有拍照記錄。本文大部分的干貨來自這次演講。

2、我今年年初上了Stanford計算攝影和數字光場顯示的大牛教授Gordon Wetzstein的一門課:EE367 Computational Imaging and Display(計算影像和顯示器):其中第四周的Computational illumination,Wearable displays和Displays Blocks(light field displays)這三節都講到Magic Leap的原理。現在大家也可以去這個課程網站上看到這些資料,EE367 / CS448I: Computational Imaging and Display
順便介紹一下Gordon所在的Stanford計算圖形組,Marc Levoy(後來跑去造Google Glass的大牛教授)一直致力於光場的研究,從Marc Levoy提出光場相機,到他的學生Ren Ng開創Lytro公司製造光場相機,到現在Gordon教授製造光場顯示器(裸眼光場3D顯示器),這個組在光場方面的研究一直是世界的領頭羊。而Magic Leap可能正在成為光場顯示器的最大應用。(相關內容可參考:Computational Imaging Research Overview)

3、今年參加了光場影像技術的研討會Workshop on Light Field Imaging ,現場有很多光場技術方面的展示,我和很多光場顯示技術的大牛交流了對Magic Leap的看法。特別的是,現場體驗了接近Magic Leap的光場技術Demo,來自Nvidia的Douglas Lanman的Near-Eye Light Field Displays 。(相關內容可參考:Near-Eye Light Field Displays)

4、今年年中去了微軟研究院Redmond訪問,研究院的首席研究員Richard Szeliski(計算機視覺大神,計算機視覺課本的作者,Computer Vision: Algorithms and Applications)讓我們試用了Hololens。感受了Hololens牛逼無比的定位感知技術。有保密協議,本文不提供細節,但提供與Magic Leap原理性的比較。
下面是干貨:
首先呢,科普一下Magic Leap和Hololens這類AR眼鏡設備,都是為了讓你看到現實中不存在的物體和現實世界融合在一起的圖像並與其交互。從技術上講,可以簡單的看成兩個部分:
對現實世界的感知(Perception);
一個頭戴式顯示器以呈現虛擬的影像 (Display) 。
我會分感知部分和顯示部分來分別闡釋Magic Leap的相關技術。
一、顯示部分
先簡單回答這個問題:
Q1. Hololens和Magic Leap有什麼區別?Magic Leap的本質原理是什麼?
在感知部分,其實Hololens和Magic Leap從技術方向上沒有太大的差異,都是空間感知定位技術。本文之後會著重介紹。Magic Leap與Hololens最大的不同應該來自顯示部分,Magic Leap是用光纖向視網膜直接投射整個數字光場(Digital Lightfield)產生所謂的Cinematic Reality(電影級的現實)。Hololens採用一個半透玻璃,從側面DLP投影顯示,虛擬物體是總是實的,與市場上Espon的眼鏡顯示器或Google Glass方案類似,是個2維顯示器,視角還不大,40度左右,沉浸感會打折扣。
本質的物理原理是:光線在自由空間中的傳播,是可以由4維光場唯一表示的。成像平面的每個像素中包含到這個像素所有方向的光的信息,對於成像平面來講,方向是二維的,所以光場是4維的。平時成像過程只是對四維光場進行了一個二維積分(每個像素上所有方向的光的信息都疊加到一個像素點上),傳統顯示器顯示這個2維的圖像,是有另2維方向信息損失的。而Magic Leap是向你的視網膜直接投射整個4維光場, 所以人們通過Magic Leap看到的物體和看真實的物體從數學上是沒有什麼區別的,是沒有信息損失的。理論上,使用Magic Leap的設備,你是無法區分虛擬物體和現實的物體的。
使用Magic Leap的設備,最明顯的區別於其他技術的效果是人眼可以直接選擇聚焦(主動選擇性聚焦)。比如我要看近的物體,近的物體就實,遠的就虛。注意:這不需要任何的人眼跟蹤技術,因為投射的光場還原了所有信息,所以使用者直接可以做到人眼看哪實哪,和真實物體一樣。舉個例子:在虛擬太陽系視頻的27秒左右(如下面這個gif圖),攝影機失焦了,然後又對上了,這個過程只發生在攝影機里,和Magic Leap的設備無關。換句話說,虛擬物體就在那,怎麼看是觀察者自己的事。這就是Magic Leap牛逼的地方,所以Magic Leap管自己的效果叫Cinematic Reality。

Q2. 主動選擇性聚焦有什麼好處?傳統的虛擬顯示技術中,為什麼你會頭暈?Magic Leap是怎麼解決這個問題的?
眾所周知,人類的眼睛感知深度主要是靠兩隻眼睛和被觀察物體做三角定位(雙目定位,triangulation cue)來感知被觀察物體的與觀察者的距離的。但三角定位並不是唯一的人類感知深度的線索,人腦還集成了另一個重要的深度感知線索:人眼對焦引起的物體銳度(虛實)變化(sharpness or focus cue) 。但傳統的雙目虛擬顯示技術(如Oculus Rift或Hololens)中的物體是沒有虛實的。舉個例子,如下圖,當你看到遠處的城堡的時候,近處的虛擬的貓就應該虛了,但傳統顯示技術中,貓還是實的,所以你的大腦就會引起錯亂,以為貓是很遠的很大的一個物體。但是這和你的雙目定位的結果又不一致,經過幾百萬年進化的大腦程序一會兒以為貓在近處,一會兒以為貓在遠處,來來回回你大腦就要燒了,於是你要吐了。而Magic Leap投影了整個光場,所以你可以主動選擇性聚焦,這個虛擬的貓就放在了近處,你看它的時候就是實的,你看城堡的時候,它就是虛的,和真實情況一樣,所以你不會暈。演講中Gary調侃對於Jean-Yves這種帶10分鍾Oculus就吐的傢伙來說,現在他一天帶16個小時Magic Leap都不會暈。

補充:有人問為什麼網上說虛擬現實頭暈是因為幀率不夠原因?
幀率和延時雖然是目前的主要問題,但都不是太大的問題,也不是導致暈得決定性因素。這些問題用更快的顯卡,好的IMU和好的屏幕,還有頭部動作預測演算法都能很好解決。我們要關心一些本質的暈眩問題。
這里要說到虛擬現實和增強現實的不同。
虛擬現實中,使用者是看不到現實世界的,頭暈往往是因為人類感知重力和加速度的內耳半規管感受到的運動和視覺看到的運動不匹配導致的。所以虛擬現實的游戲,往往會有暈車想吐的感覺。這個問題的解決不是靠單一設備可以搞定的,如果使用者的確坐在原定不動,如果圖像在高速移動,什麼裝置能騙過你的內耳半規管呢?一些市場上的方案,比如Omni VR,或者HTC Vive這樣的帶Tracking的VR系統讓你實際行走才解決這個不匹配的問題,但這類系統是受場地限制的。不過THE VOID的應用就很好的利用了VR的局限,不一定要跑跳,可以用很小的空間做很大的場景,讓你以為你在一個大場景里就好了。現在大部分虛擬現實的體驗或全景電影都會以比較慢得速度移動視角,否則你就吐了。
但是Magic Leap是AR增強現實,因為本來就看的到現實世界,所以不存在這個內耳半規管感知不匹配的問題。對於AR來講,主要挑戰是在解決眼前投影的物體和現實物體的銳度變化的問題。所以Magic Leap給出的解決方案是很好地解決這個問題的。但都是理論上的,至於實際工程能力怎麼樣就靠時間來證明了。
Q3. 為什麼要有頭戴式顯示器?為什麼不能裸眼全息?Magic Leap是怎麼實現的?
人類希望能憑空看到一個虛擬物體,已經想了幾百年了。各種科幻電影里也出現了很多在空氣中的全息影像。
但其實想想本質就知道,這事從物理上很難實現:純空氣中沒有可以反射或折射光的介質。顯示東西最重要的是介質。很多微信上的瘋傳,以為Magic Leap不需要眼鏡,我估計是翻譯錯誤導致的,視頻中寫了Shot directly through Magic Leap tech.,很多文章錯誤的翻譯成「直接看到」或「裸眼全息",其實視頻是相機透過Magic Leap的技術拍的。
目前全息基本還停留在全息膠片的時代(如下圖,我在光場研討會上看到的這個全息膠片的小佛像),或者初音未來演唱會那種用投影陣列向特殊玻璃(只顯示某一特定角度的圖像,而忽略其他角度的光線)做的偽全息。

Magic Leap想實現的是把整個世界變成你的桌面這樣的願景。所以與其在世界各個地方造初音未來那樣的3D全息透明屏做介質或弄個全息膠片,還不如直接從人眼入手,直接在眼前投入整個光場更容易。其實Nvidia也在做這種光場眼鏡。

Nvidia採用的方法是在一個二維顯示器前加上一個微鏡頭陣列Microlens array來生成4維光場。相當於把2維的像素映射成4維,自然解析度不會高,所以這類光場顯示器或相機(Lytro)的解析度都不會高。本人親測,效果基本就是在看馬賽克畫風的圖案。
而Magic Leap採用完全不同的一個方法實現光場顯示,它採用光纖投影。不過,Magic Leap用的光纖投影的方式也不是什麼新東西。在Magic Leap做光纖投影顯示(Fiber optic projector)的人是Brian Schowengerdt,他的導師是來自華盛頓大學的教授Eric Seibel,致力於做超高解析度光纖內窺鏡8年了。簡單原理就是光纖束在一個1mm直徑管道內高速旋轉,改變旋轉的方向,然後就可以掃描一個較大的范圍。Magic Leap的創始人比較聰明的地方,是找到這些做高解析度光纖掃描儀的,由於光的可逆性,倒過來就能做一個高解析度投影儀。如圖,他們6年前的論文,1mm寬9mm長的光纖就能投射幾寸大的高清蝴蝶圖像。現在的技術估計早就超過那個時候了。
而這樣的光纖高解析度投影儀還不能還原光場,需要在光纖的另一端放上一個微鏡頭陣列microlens array,來生成4維光場。你會疑問這不就和Nvidia的方法一樣了么?不,因為光纖束是掃描性的旋轉,這個microlens array不用做得很密很大,只要顯示掃描到的區域就好了。相當與把大量數據在時間軸上分布開了,和通訊中的分時一樣,因為人眼很難分辨100幀上的變化,只要掃描幀率夠高,人眼就分辨不出顯示器是否旋轉顯示的。所以Magic Leap的設備可以很小,解析度可以很高。

他本人也來Stanford給過一個Talk,Near-to-Eye Volumetric 3D Displays using Scanned Light。這個Talk講的應該就是Magic Leap早期的原型。(相關內容可參考: Fiber Scanned Displays)
二、感知部分
Q4. 首先為什麼增強現實要有感知部分?
是因為設備需要知道自己在現實世界的位置(定位),和現實世界的三維結構(地圖構建),才能夠在顯示器中的正確位置擺放上虛擬物體。舉個最近的Magic Leap Demo視頻的例子,比如桌子上有一個虛擬的太陽系,設備佩戴者的頭移動得時候,太陽系還呆在原地,這就需要設備實時的知道觀看者視角的精確位置和方向,才能反算出應該在什麼位置顯示圖像。同時,可以看到桌面上還有太陽的反光,這就要做到設備知道桌子的三維結構和表面信息,才能正確的投射一個疊加影像在桌子的影像層上。難點是如何做到整個感知部分的實時計算,才能讓設備穿戴者感覺不到延時。如果定位有延時,佩戴者會產生暈眩,並且虛擬物體在屏幕上漂移會顯得非常的虛假,所謂Magic Leap宣稱的電影級的真實(Cinematic Reality)就沒有意義了。

三維感知部分並不是什麼新東西,計算機視覺或機器人學中的SLAM(Simultaneous Localization And Mapping,即時定位與地圖構建)就是做這個的,已經有30年的歷史了。設備通過各種感測器(激光雷達,光學攝像頭,深度攝像頭,慣性感測器)的融合將得出設備自己在三位空間中的精確位置,同時又能將周圍的三位空間實時重建。

最近SLAM技術尤其火爆,去年到今年兩年時間內巨頭們和風投收購和布局了超級多做空間定位技術的公司。因為目前最牛逼的3大科技技術趨勢:無人車,虛擬現實,無人機,他們都離不開空間定位。SLAM是完成這些偉大項目基礎中的基礎。我也研究SLAM技術,所以接觸的比較多,為了方便大家了解這個領域,這里簡單提幾個SLAM界最近的大事件和人物:
1、(無人車)Stanford的機器人教授Sebastian Thrun是現代SLAM技術的開創者,自從贏了DARPA Grand Challenge的無人車大賽後,去了Google造無人車了。SLAM學術圈的大部分研究派系都是Sebastian徒子徒孫。
2、(無人車)Uber在今年拿下了卡耐基梅隆CMU的NREC(國家機器人工程研發中心),合作成立高等技術研發中心ATC。這些原來做火星車的定位技術的研究人員都去Uber ATC做無人車了。
3、(虛擬現實)最近Surreal Vision被Oculus Rift收購,其中創始人Richard Newcombe是大名鼎鼎的DTAM,KinectFusion(HoloLens的核心技術)的發明人。Oculus Rift還在去年收購了13th Labs(在手機上做SLAM的公司)。
4、(虛擬現實)Google Project Tango 今年發布世界上第一台到手就用的商業化SLAM功能的平板。Apple五月收購Metaio AR,Metaio AR 的 SLAM 很早就用在了AR的app上了。Intel 發布Real Sense,一個可以做SLAM的深度攝像頭,在CES上Demo了無人機自動壁障功能和自動巡線功能。
5、(無人機)由原來做Google X Project Wing 無人機的創始人MIT機器人大牛Nicholas Roy 的學生Adam Bry創辦的Skydio,得到A16z的兩千萬估值的投資,挖來了Georgia Tech的SLAM大牛教授Frank Dellaert 做他們的首席科學家。(相關內容:http://www.cc.gatech.e/~dellaert/FrankDellaert/Frank_Dellaert/Frank_Dellaert.html)
SLAM作為一種基礎技術,其實全世界做SLAM或感測器融合做得好的大牛可能不會多於100人,並且大都互相認識。這么多大公司搶這么點人,競爭激烈程度可想而知,所以Magic Leap作為一個創業公司一定要融個大資,才能和大公司搶人才資源。
Q5. Magic Leap的感知部分的技術是怎麼樣的?
這張照片是Gary教授在Magic Leap Stanford 招聘會中展示了Magic Leap在感知部分的技術架構和技術路線。可以看到以Calibration為中心,展開成了4支不同的計算機視覺技術棧。

1、從圖上看,整個Magic Leap感知部分的核心步驟是Calibration(圖像或感測器校準),因為像Magic Leap或Hololens這類主動定位的設備,在設備上有各種用於定位的攝像頭和感測器, 攝像頭的參數和攝像頭之間關系參數的校準是開始一切工作的第一步。這步如果攝像頭和感測器參數都不準,後面的定位都是無稽之談。從事過計算機視覺技術的都知道,傳統的校驗部分相當花時間,需要用攝像頭拍攝Chess Board,一遍一遍的收集校驗用的數據。但Magic Leap的Gary,他們發明了一種新的Calibration方法,直接用一個形狀奇特的結構體做校正器,攝像頭看一遍就完成了校正,極為迅速。這個部分現場不讓拍照。
2、有了Calibration部分後,開始最重要的三維感知與定位部分(左下角的技術棧),分為4步。
2.1 首先是Planar Surface Tracking(平面表面跟蹤)。大家可以在虛擬太陽系的Demo中看到虛擬太陽在桌子上有反光,且這個反光會隨著設備佩戴者的移動而改變位置,就像是太陽真的懸在空中發出光源,在桌子表面反射產生的。這就要求設備實時地知道桌子的表面在哪裡,並且算出虛擬太陽與平面的關系,才能將太陽的反光的位置算出來,疊在設備佩戴者眼鏡相應的位子上,並且深度信息也是正確的。難點在平面檢測的實時性和給出平面位置的平滑性(否則反光會有跳變)從Demo中可以看出Magic Leap在這步上完成得很好。

2.2 然後是Sparse SLAM(稀疏SLAM);Gary在Info Session上展示了他們實時的三維重構與定位演算法。為了演算法的實時性,他們先實現了高速的稀疏或半稀疏的三維定位演算法。從效果上看,和目前開源的LSD演算法差不了太多。

2.3 接著是Sensors; Vision and IMU(視覺和慣性感測器融合)。
導彈一般是用純慣性感測器做主動定位,但同樣的方法不能用於民用級的低精度慣性感測器,二次積分後一定會漂移。而光靠視覺做主動定位,視覺部分的處理速度不高,且容易被遮檔,定位魯棒性不高。將視覺和慣性感測器融合是最近幾年非常流行的做法。
舉例:
Google Tango在這方面就是做IMU和深度攝像頭的融合,做的很好;大疆的無人機Phantom 3或Inspire 1將光流單目相機和無人機內的慣性感測器融合,在無GPS的情況下,就能達到非常驚人的穩定懸停;Hololens可以說在SLAM方面是做得相當好,專門定製了一個晶元做SLAM,演算法據說一脈相承了KinectFusion的核心,親自測試感覺定位效果很贊(我可以面對白色無特徵的牆壁站和跳,但回到場中心後定位還是很准確的,一點都不飄。)
2.4 最後是3D Mapping and Dense SLAM(3D地圖重建)。下圖展示了Magic Leap山景城辦公室的3D地圖重建:僅僅是帶著設備走了一圈,就還原了整個辦公室的3D地圖,並且有很精緻的貼圖。書架上的書都能重建的不變形。

因為AR的交互是全新的領域,為了讓人能夠順利地和虛擬世界交互,基於機器視覺的識別和跟蹤演算法成了重中之重。全新人機交互體驗部分需要大量的技術儲備做支持。
接下來的三個分支,Gary沒有細講,但是可以看出他們的布局。我就隨便加點註解,幫助大家理解。
3.1 Crowdsourcing眾包。用於收集數據,用於之後的機器學習工作,要構建一個合理的反饋學習機制,動態的增量式的收集數據。
3.2 Machine Learning & Deep Learning機器學習與深度學習。需要搭建機器學習演算法架構,用於之後的識別演算法的生產。
3.3 Scenic Object Recognition場景物體識別。識別場景中的物體,分辨物體的種類,和特徵,用於做出更好的交互。比如你看到一個小狗的時候,會識別出來,然後系統可以把狗狗p成個狗型怪獸,你就可以直接打怪了。
3.4 Behavior Recognition行為識別 。識別場景中的人或物的行為,比如跑還是跳,走還是坐,可能用於更加動態的游戲交互。順便提一下,國內有家Stanford校友辦的叫格林深瞳的公司也在做這個方面的研究。
跟蹤方面
4.1 Gesture Recognition手勢識別。用於交互,其實每個AR/VR公司都在做這方面的技術儲備。
4.2 Object Tracking物體追蹤。這個技術非常重要,比如Magic Leap的手捧大象的Demo,至少你要知道你的手的三維位置信息,實時Tracking,才能把大象放到正確的位子。
4.3 3D Scanning三維掃描。能夠將現實物體,虛擬化。比如你拿起一個藝術品,通過三維掃描,遠處的用戶就能夠在虛擬世界分享把玩同樣的物體。
4.4 Human Tracking人體追蹤。比如:可以將現實中的每個人物,頭上可以加個血條,能力點之類。
5.1 Eye Tracking眼動跟蹤。Gary解釋說,雖然Magic Leap的呈像不需要眼動跟蹤,但因為要計算4維光場,Magic Leap的渲染計算量巨大。如果做了眼動跟蹤後,就可以減少3D引擎的物體渲染和場景渲染的壓力,是一個優化的絕佳策略。
5.2 Emotion Recognition情感識別。如果Magic Leap要做一個Her電影中描繪的人工智慧操作系統,識別主人得情感,可以做出貼心的情感陪護效果。
5.3 Biometrics生物識別。比如要識別現實場景中的人,在每個人頭上顯示個名字啥的。人臉識別是其中一種,國內有家清華姚班師兄弟們開得公司Face++就是干這個乾的最好的。
總結:簡單來講感知這個部分Magic Leap其實和很多其他的公司大同小異,雖然有了Gary的加盟,野心非常的寬廣,但這部分競爭非常激烈。
Q6: 就算Magic Leap已經搞定了感知和顯示,那麼接下來的困難是什麼?
1、計算設備與計算量
Magic Leap要計算4維光場,計算量驚人。不知道Magic Leap現在是怎麼解決的。如果Nvidia不給造牛逼的移動顯卡怎麼辦?難道自己造專用電路?背著4塊泰坦X上路可不是鬧著玩的。
下圖是,今年我參加SIGGraph 2015里,其中一個VR演示,每個人背著個大電腦包玩VR。10年後的人類看今天的人類追求VR會不會覺得很好笑,哈哈。

2、電池!電池!電池!所有電子設備的痛
3、一個操作系統
說實話,如果說「世界就是你的新桌面」是他們的願景,現在的確沒有什麼操作系統可以支持Magic Leap願景下的交互。他們必須自己發明輪子。
4、為虛擬物體交互體驗增加物理感受
為了能有觸感,現在交互手套,交互手柄都是 VR 界大熱的話題。從目前的專利上看,並沒有看出Magic Leap會有更高的見地。說不定某個Kickstarter最後能夠獨領風騷,Magic Leap再把他收了。

閱讀全文

與三維定位演算法研究相關的資料

熱點內容
column命令 瀏覽:104
java運行的快捷鍵 瀏覽:246
安卓studiokey是什麼 瀏覽:286
app開發先學什麼 瀏覽:578
ox圖pdf 瀏覽:624
scratch編程選擇題如何製作 瀏覽:785
伺服器的陣列卡有什麼作用 瀏覽:888
linux登錄超時 瀏覽:481
播放音樂dll命令 瀏覽:903
javajdk和jre 瀏覽:492
程序員都是怎麼關機的 瀏覽:771
如何更換文件夾的格式 瀏覽:529
openssl不是內部或外部命令 瀏覽:759
西方經濟學宏觀pdf 瀏覽:21
comp命令分析 瀏覽:521
什麼app可以看隧道 瀏覽:155
文件夾兩份相同 瀏覽:100
python123手機怎麼弄 瀏覽:466
如何判斷柯力d2008儀表有沒有加密 瀏覽:930
miui加密狀態 瀏覽:326