Microsoft HoloLens 全息眼鏡 揭 秘
揭秘微軟黑科技 HoloLens -
● ● ● 微軟 HoloLens 技術(shù)解謎(上) :如何還原三維場景 HoloLens 是什么?HoloLens 是微軟發(fā)布的可穿戴式擴(kuò)增實境計算設(shè)備,它擁有這么幾個關(guān)鍵要素:
HoloLens 不是什么?![]() 看完微軟栩栩如生的宣傳影片后,如果你的反應(yīng)是:
那么你要好好看這一段,因為 Matrix 是 Virtual Reality / VR / 虛擬實境,VR 的特點是讓參與者置身于電腦生成的 3D 圖像世界中,淡化真實的世界。VR 近期的代表產(chǎn)品是 Oculus Rift,戴上 Rift 后你是看不到真實世界的。在我看來 VR 最大的問題是:這個虛擬世界很真實很精彩,但是有什么用呢?也就是說 VR 只能做到更逼真的 3D 世界,它無法幫助人們更好地理解真實的世界。 ![]() HoloLens 也不是 Google Glass,它比 Google Glass 多了:
HoloLens 也不是市場上常見的的 AR,常見的基于內(nèi)置鏡頭的 AR 應(yīng)用基于內(nèi)置鏡頭有:
![]() 以及基于任意圖片的 AR。 ![]() 很炫是嗎,但是它們只能檢測到圖片所在的那個平面。HoloLens 比它們都“?!保軝z測到各個角度的 3D 場景! HoloLens 的 AR 是如何得到 3D 場景深度資訊的?我們回到 AR 的定義,想要實現(xiàn)擴(kuò)增實境,必須先理解實境,那么對于 HoloLens 而言,實境是什么呢?是傳感器的數(shù)據(jù)。 傳感器是啥?是攝影鏡頭。 同樣是攝影鏡頭,為什么 HoloLens 就可以感知深度呢?微軟的 Kinect 在這方面很成功,那么是不是 HoloLens 上放了一臺嵌入式的 Kinect 呢? 答案在下面的原型圖片中: ![]() HoloLens 擁有四臺攝影鏡頭,左右兩邊各兩臺。通過對這四臺攝影鏡頭的即時畫面進(jìn)行分析,HoloLens 可覆蓋的水平視角和垂直視角都達(dá)到 120 度。 也就是說它采用的是立體視覺 / Stereo Vision 技術(shù)來獲取類似下圖的深度圖 (depth map)。 ![]() 立體視覺是電腦視覺學(xué)科的一個子學(xué)科,專注于從兩個攝影鏡頭的圖像數(shù)據(jù)中得到真實場景中的物體離攝影鏡頭的距離。示意圖如下: ![]() 下面是基本的步驟,查閱 OpenCV 文檔可以了解具體到函數(shù)用法 :
![]()
只有一張深度圖是不夠的,它只是某一時刻真實的場景在攝影鏡頭中的映射。要想得到完整的 3D 場景,我們需要分析一系列的深度圖。 HoloLens 如何從多張深度圖重建 3D 場景?答案是 SLAM(Simultaneous Localization And Mapping),即同步定位與建圖系統(tǒng)。這個技術(shù)被用于機(jī)器人、無人汽車、無人飛行器的定位與尋路系統(tǒng)。解決的是非常哲學(xué)的問題:
SLAM 有很多實現(xiàn)的方式,有一個開源的方式,實現(xiàn)了很多深度圖的處理和匹配算法,可以認(rèn)為是 3D 版本的 OpenCV。 而微軟圍繞著 Kinect 的深度圖數(shù)據(jù)發(fā)明了 Kinect Fushion 算法,并發(fā)布了兩篇論文:
為什么我認(rèn)為 HoloLens 與 Kinect Fushion 有關(guān)?答案在這個頁面中 。 Shahram Izadi 是微軟劍橋研究院的 principal researcher 及 research manager。他所領(lǐng)導(dǎo)的互動 3D 技術(shù)組(interactive 3D technologies)為微軟的多項產(chǎn)品提供了研究力量,包括 Kinect for Windows, Kinect Fusion 以及 HoloLens。順便說一句,他們組在招人。 Kinect Fushion,透過在室內(nèi)移動 Kinect 設(shè)備,獲取不同角度的深度圖,即時更新,對不同對深度圖進(jìn)行累積,計算出精確的房間以及房間內(nèi)物體的 3D 模型。 ![]() 它分四個階段:
在 HoloLens 的應(yīng)用中我們運行到第三步,即獲取 3D 樂高模型就可以了,第四步并不是必須的。因為 HoloLens 的屏幕是透明的,不需要再把房屋的模型渲染一遍,我們自帶的眼睛已經(jīng)渲染了一遍了:) HoloLens 炫酷的 demo 都是怎么制作的?還剩下三個難點,下面文章敘說:
● ● ● 微軟 HoloLens 技術(shù)解謎(下) :SDK 會是這樣? 在上面文章《微軟 HoloLens 技術(shù)解謎(上):如何還原三維場景》 中我介紹了自己對于 HoloLens 背后的建模技術(shù)的看法,雖然之前在微軟的 Xbox 部門工作過,但是和大家一樣也是上周才知道 HoloLens 這個好玩的設(shè)備。當(dāng)前微軟官方對于 HoloLens 透露出來的訊息非常有限,最核心的兩個組件深度傳感器以及全息屏幕的原理依然充滿著謎題。文章發(fā)布后,在微軟 HoloLens 技術(shù)解謎(上):如何還原三維場景的留言中讀者提出了一些問題。 讀者提問之“HoloLens 的深度感應(yīng)器有沒有可能是基于 TOF?”先介紹一下背景知識,市面上常見的有三種類型的深度感應(yīng)器:
我認(rèn)為 HoloLens 沒有使用 TOF 技術(shù)的原因是因為如果這四個鏡頭的位置放的是 TOF 感應(yīng)器,那么還缺少一個朝前的 RGB 鏡頭用于視訊聊天類 App。讀者提到的中間部分我認(rèn)為是微型的投影機(jī),HoloLens 使用微投在“擋風(fēng)玻璃”上顯示全像的畫面。 至于這個問題的標(biāo)準(zhǔn)答案,還得等微軟發(fā)布新的訊息。 讀者提問之“HoloLens 能不能當(dāng) VR 用?這個問題很好,的確可以這么玩,NASA 與微軟的的火星合作計劃基本上是一個虛擬實境的應(yīng)用,它無視了真實的環(huán)境。如果 HoloLens 可以提供調(diào)節(jié)“擋風(fēng)玻璃”透光度的 API,那么調(diào)成完全不透光時就好比戴著 Oculus Rift 的頭盔,是另一種體驗 VR 的途徑??墒桥笥褌儯@是在浪費 HoloLens 的機(jī)能??! 那么,作為未來的應(yīng)用開發(fā)者,應(yīng)該怎樣充分榨干它的機(jī)能呢?這是本篇文章的重點。 正文部分首先讓我腦洞開一會,為大家“介紹”下 Holo SDK。按照微軟的偏好,SDK 標(biāo)配的語言肯定有 C++ 和 C#,因此要進(jìn)行開發(fā),這兩種語言你至少得會一個。 然后,這個 SDK 里有哪些功能呢?根據(jù)官方 demo 中的場景,我覺得基本功能至少有:
![]() 2.針對 HoloLens 特別最佳化過的應(yīng)用 3.沉浸式的真全像游戲 ![]() 這一篇只講“偽全像的傳統(tǒng)應(yīng)用”這種類型的應(yīng)用對于傳統(tǒng)開發(fā)者而言最容易上手,幾乎不需要修改程序碼,自然也不需要擁有 3D 圖形學(xué)的知識。大部分人會從這種應(yīng)用入手開始 Holo 開發(fā)。 如果不需要 3D 知識就能實現(xiàn) 3D 的界面,那么 3D 的效果是哪來的呢?那就是 Windows 10 引入的全像窗口管理器 —— explorer3d.exe。我們平時啟動 Windows 看到的“桌面”是窗口管理器(explorer.exe)的一部分,把“桌面”想像成三維的就行了,很簡單是吧?
以影片播放器為例,播放器并不會直接將影片畫面顯示到桌面上,而是畫到一個暫存區(qū)域,經(jīng)過一系列我不知道的步驟后,explorer.exe 再將畫面以“2D 的方式拷貝”到能被我們看到的地方。而 explorer3d.exe 用的是“3D 的方式”。 所謂“3D 的方式”就是使用 Direct3D 做一些“會的人嫌我講得啰嗦,不會的人看了還是不會”的事…… ![]() 也就是在初始化應(yīng)用的時候:
在應(yīng)用軟件執(zhí)行時:
在應(yīng)用軟件退出時:
不用擔(dān)心,這些都是 explorer3d.exe 會負(fù)責(zé)的。 細(xì)心的讀者會發(fā)現(xiàn)我們沒有用到一個很重要的功能:
要解釋它我必須講解 world、view、projection 三個矩陣,還要講解矩陣的乘法以及 dot product 的公式等等,這些完全是圖形學(xué)的知識了,一時半刻講不完,我會再專門為它們寫一個系列。我打算用一句話解釋一下,explorer3d.exe 會維護(hù)一個全局的 global_matrix,它等于 world * view * projection,view 的值由功能(d)中的訊息可以得到。global_matrix 的作用就好比第一人稱射擊游戲中的鼠標(biāo),寫到這里我發(fā)現(xiàn)把 explorer3d.exe 視為一個 3D 游戲會簡單很多,3D 游戲場景里的電視機(jī)也能播放影像,其實是一樣的道理。 ![]() 總結(jié)一下,這個類型的應(yīng)用軟件工程師幾乎不需要修改程序碼,由 explorer3d.exe 負(fù)責(zé)調(diào)用 Direct3D 將傳統(tǒng)應(yīng)用的內(nèi)容轉(zhuǎn)換成 3D 的貼圖。 ● ● ● 解構(gòu)微軟HoloLens技術(shù) 引用宣傳視頻里面的一句話:
HoloLens 所實現(xiàn)的效果并不是微軟一家的創(chuàng)新,他早已流傳在種種科幻電影中。HoloLens 是一個 Oculus+Kinect+Jetson TK1 集成起來的夾在鼻梁上的嵌入式怪物。腦補(bǔ)一下把 Kinect 帶到頭上的情景吧。微軟做到了! 根據(jù)我目前看到的信息,HoloLens 需要的技術(shù)支持包括三個部分:
這是游戲?qū)猛鏍€的東西,可以說在阿凡達(dá)之后拉開了一個時代的幕布,經(jīng)過 NVIDIA、Intel 等公司的苦心經(jīng)營,實時的雙攝像頭渲染已經(jīng)很成熟。微軟終于把這種技術(shù)推向了更廣的領(lǐng)域。下圖這種效果在也就是現(xiàn)在是游戲級別的水平。
根據(jù)網(wǎng)上流傳的信息,可以肯定微軟采用了基于深度識別的 SLAM(實時定位與地圖構(gòu)建)技術(shù)。這里解釋一下什么是 SLAM,就是通過傳感器獲取環(huán)境的有限信息,比如視覺信息、深度信息、自身的加速度和角速度等來確定自己的相對或者絕對位置,并完成對于地圖的構(gòu)建。 SLAM 的準(zhǔn)確度對于最后的顯示效果非常重要,姿態(tài)確定就不是事兒。幾十塊的電容式陀螺儀或者幾百塊的 MEMS 抄幾段代碼就好,但怎么確定位置就是微軟的功力了。當(dāng)然深度攝像頭這種事情微軟常年吊打整個行業(yè),Kinect 快成行業(yè)標(biāo)準(zhǔn)了。想想我們用的激光雷達(dá)的價格。真是要哭了。 電影中,使用小型探測器掃描出來了隧道全景并且全息呈現(xiàn)了出來。對應(yīng)到現(xiàn)實《普羅米修斯》里面用的是這種玩意,相當(dāng)于一輛低配的奧迪 A8 的價格,可以發(fā)射幾十束激光同時掃描。Google 無人車也用這種激光雷達(dá)來進(jìn)行實時的路況分析。 微軟做到的可是實現(xiàn)了三年前科幻電影的效果??! 注意這張圖,微軟暗示進(jìn)入一個房間之前要先進(jìn)行掃描,這里明顯是在用 Deep Camera 生成 Point Cloud 然后三角面片進(jìn)行 SLAM。如果確定是和 Kinect 類似的紅外攝像頭,那么可以認(rèn)為 kinect 有的毛病他都會有,比如對黑色物體、光滑表面的探測。 可以說,HoloLens 的核心難度是深度探測和相關(guān)的手勢識別。這可是微軟的專長了。所以 HoloLens 就是一個戴到了鼻梁上的 Kinect。 為什么說 SLAM 對于 HoloLens 非常重要呢?因為只有實現(xiàn)了靠譜的 SLAM,才能知道眼鏡的空間坐標(biāo)和相對于室內(nèi)各種障礙物的位置,同時識別出各種室內(nèi)擺件的形狀,這是宣傳片中人機(jī)交互的基礎(chǔ)。 在視頻中,主人公一直在走動,畫面的穩(wěn)定性很好。 注意上圖這里,可以看到對于各個表面的貼合度已經(jīng)達(dá)到了 SLAM 的程度。
這里注意到一個細(xì)節(jié),展示在三維空間中的 UI 很像是 Autodesk Fusion 的 UI,難道自動桌已經(jīng)先行一步?來自官網(wǎng)的一張圖片,可以看到使用的正是 Autodesk。 作為半個工程師,我當(dāng)時買 Leap Motion 就是為了玩 Solidworks Fusion?,F(xiàn)在有了 HoloLens,比 Fusion 體驗不知道酸爽多少倍。腦補(bǔ)一下去參觀 EAST 的時候眼睛里顯示出 EAST 剖面的情景。不能再震撼了。 這三個技術(shù)在近些年成熟,促成了 HoloLens 產(chǎn)品化。之前 Google Glass 的設(shè)想與此類似,Hololens 把它推向了現(xiàn)實。 其實 Hololens 所實現(xiàn)的效果也不是新鮮貨。早在冷戰(zhàn)末期,武裝直升機(jī)飛行員就通過頭盔里面的信息來操作機(jī)槍所瞄準(zhǔn)的方向。這兩年我軍也有裝備。當(dāng)年 Su35 的“回馬槍”向后發(fā)射的導(dǎo)彈就是用尾椎雷達(dá)和頭盔瞄準(zhǔn)具實現(xiàn)的。 更進(jìn)一步,上圖用到的也是類似的技術(shù)。 不過,根據(jù)技術(shù)分析,Hololens 可能會遇到如下一系列困難: 第一,耗電量。計算視覺、SLAM,以及反過向進(jìn)行三維虛擬現(xiàn)實,都是常耗費計算量的任務(wù)。 Hololens 是時勢造英雄的產(chǎn)品,這種計算量在二十年前可是阿拉莫斯實驗室用于核聚變模擬的計算量?,F(xiàn)在只要耗電量跟的上,NVIDIA 的 Tegra K1 還有 Intel 家的協(xié)處理器在嵌入式上飆計算量沒問題。 第二,是在開放環(huán)境、欠光線環(huán)境的識別度問題。我對此持保守態(tài)度,得拿到產(chǎn)品再說。 第三,是定位精準(zhǔn)度問題。這是老大難問題了。 事實上,上圖中這種配合將成為很長一段時間內(nèi)的主流。 如果修的不是自來水管而是血管,看到的是通過 B 超技術(shù)實時掃描出來的人體內(nèi)部,那么未來的醫(yī)院會是怎么樣的。 如果顯示的不是自來水管的 manual,而是實時匹配無人機(jī)的爆炸視圖,那么以后的工廠和 DIY 是怎么樣的。 讓人難以想象的是,這一切居然要成真了! 微軟研究院養(yǎng)了那么多人真的不是白養(yǎng)的。目前來看,微軟在這些技術(shù)上解決的都非常好。 另外十分看好 HoloLens+ 無人機(jī)的交互。拿到貨以后我要做的第一件事情就是把我們的無人機(jī)系統(tǒng)移植上去。這畫面太美。我簡直不敢想。 還有多系統(tǒng)配合,這是像 iPhone 可以推動 21 世紀(jì)歷史進(jìn)程的玩意。 Hololens將物理世界與虛擬現(xiàn)實融為一體 技術(shù)實現(xiàn) 1、攝像頭: HoloLens的深度攝像頭視角廣度為120*120,遠(yuǎn)遠(yuǎn)超過只能看到一角的Kinect。 2、處理器: HoloLens配備多達(dá)18個傳感器,每秒傳輸百萬兆字節(jié)的數(shù)據(jù)進(jìn)入處理器,這些數(shù)據(jù)全都由內(nèi)置的CPU、GPU和首創(chuàng)的HPU(全息處理單元)進(jìn)行處理。 3、光學(xué)鏡片: HoloLens為了精確模擬畫面的視覺感官,讓每個畫面都有真實的空間和距離感受,光線會在所謂的“光引擎”中反射數(shù)百萬次,然后光線進(jìn)入兩塊鏡片,在經(jīng)過多層紅綠藍(lán)色的鏡片最終進(jìn)入你的眼睛。 4、散熱: HoloLens的性能比普通的筆電更強(qiáng)大但不會過熱——因為熱流會從設(shè)備四周散發(fā)出去。 交互 1、手勢: HoloLens通過手勢進(jìn)行操作,可以直接對眼前看到的物體,進(jìn)行抓取、旋轉(zhuǎn)、移動等調(diào)整。打開你的手掌就回到主屏了。 2、語音: 設(shè)備中的麥克捕捉語音指令。 3、眼控: 傳感器追蹤佩戴者的目光并調(diào)整顯示。 應(yīng)用 1、全息影像: HoloLens全息影像投射在屋內(nèi)的物體上并且鎖定住——這是一個被微軟工程師們稱為“定格”。你可以繞著目標(biāo)四處移動并在任何角度觀察它,而不是跟著你的眼鏡(頭部)移動。用HoloLens觀察到怪獸的全息影像時,你可以輕松保持“安全距離”。 2、虛擬環(huán)境: HoloLens可以模擬一個物理空間——比如跟“好奇號”一起探測火星表面。火星的影像能讓用戶身臨其境,科學(xué)家可以跟實驗對象交互,甚至在火星上插一枚虛擬國旗。比如:理論上你可以在畫面里指定一個地點,然后火星車就真的能前往采集土壤樣品了。 3、增強(qiáng)現(xiàn)實: HoloLens掃描你的環(huán)境和建立實時的數(shù)據(jù)模型。比如你正在玩一個游戲,游戲中的角色可以作為一個虛擬的全息影像在你的起居室嬉鬧。這個游戲角色不僅知道沙發(fā)在哪里,還能看見它是皮質(zhì)的——甚至直到它比木質(zhì)地板更松軟。 虛擬現(xiàn)實,真金白銀 投資機(jī)構(gòu)已經(jīng)投下十億美金的重注在虛擬和增強(qiáng)現(xiàn)實的產(chǎn)品上,下一代的計算平臺也將在這里出現(xiàn)。 ● ● ● 微軟開設(shè)HoloLens全息眼鏡體驗店 2015年12月18日,微軟在紐約的HoloLens全息眼鏡體驗展示臺正式投入使用,同時微軟表示將在明年年初發(fā)布HoloLens全息眼鏡開發(fā)工具,并準(zhǔn)備將HoloLens帶入計算機(jī)平臺。 該店位于紐約第五大道店的旗艦店,其中一個特意開辟的樓層,在內(nèi)部設(shè)置大型展位,包括三個房間,參觀者和開發(fā)者可以在三間房當(dāng)中體驗三種不同的演示。 參觀者需要先測量瞳距(IPD),然后觀看一個詳細(xì)的視頻教學(xué),才能被允許帶上HoloLens全息眼鏡進(jìn)行體驗。微軟在其中演示的Demo已經(jīng)經(jīng)過數(shù)月測試和調(diào)整,包括HoloStudio,它是微軟Windows畫筆的全息版本,采用空中抓取顏色的手勢與語音命令相結(jié)合,來移動對象和重新著色。 同時為了避免牽扯到其他品牌,消費者不會在演示房間內(nèi)看到在HoloLens全息眼鏡發(fā)布會上的Trimble架構(gòu)建模軟件演示,或美國航空航天局的火星可視化工具。 HoloStudio是微軟Windows畫筆的全息版本,采用空中抓取顏色的手勢與語音命令相結(jié)合,來移動對象和重新著色。X射線是一個快節(jié)奏的,基于手柄的游戲,HoloLens僅作為房間掃描選項,在這種情況下,你通過HoloLens全息眼鏡,可以看到外星機(jī)器人從墻壁當(dāng)中爬出。第三個演示demo則是“全息講故事”,可以在某處使用3D動畫軟件和Microsoft PowerPoint創(chuàng)建故事,使用HoloLens全息眼鏡觀看故事播放的全息版本。 |
|