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