七種增強現實光學方案及其優缺點
1,直射或離軸反射
這項技術類似於投影儀,可以將圖像直接投射到眼鏡上,比如Glass Up,即在右鏡腿上安裝壹個迷妳投影儀,以鏡片作為反射鏡,會在鏡片上投射出320×240大小的區域,反射後形成平行光進入人眼成像。這種方案雖然不能像手機、平板電腦那樣多任務處理,但處理壹些短信、簡單圖表也足夠了。Meta glasses也采用了類似的技術——離軸反射鏡,與標準拋物面反射鏡不同的是,它可以將入射的平行光直接導向並聚焦在特定的角度,支持無限聚焦。極其小巧的投影儀隱藏在框架中,壹左壹右,半透明LCD上的圖像被LED光源投射到分束鏡上成像,從而提供立體視覺。
2.棱鏡光學
最簡單的是45度棱鏡,將顯示器產生的光從眼鏡框反射到人眼,同時讓現實世界的光透過。這個簡單又便宜,眾所周知的谷歌眼鏡就采用了這個方案。但由於技術限制,即使是谷歌眼鏡的缺點也很明顯。視場角只有20°左右(棱鏡法只能做得更厚以放大FOV),光線需要兩次穿過半反半透膜,導致光能利用率低(20%左右),畫面較暗。受制造工藝限制,鏡片較厚,大面積鏡片價格昂貴,成品率低。
3、自由曲面棱鏡型
自由曲面是指表面形狀不能連續加工的曲面,具有傳統加工成型的任意性特征,其設計難度遠高於前兩類。壹般來說,它的形狀是楔形玻璃,是旋轉對稱的XY多項式自由曲面。在這種結構中,光線經過棱鏡變換形成虛擬放大像,自由曲面的出射面和自由曲面的反射面可以消除色差和畸變,成像質量更清晰,視角可以達到54度,使用雙自由曲面棱鏡可以進壹步提高。缺點是體積較大,約7-10mm厚。
4.光波導+全息技術
波導可以在玻璃上實現3 mm以內30-40°的視場角,會比普通近視眼鏡薄,而且很薄,可以和普通眼鏡結合使用。然而,它的設計也是最困難的。這項技術的基本原理是光的全反射和衍射。如圖所示,全息波導頭盔顯示系統主要由微顯示器、全息光柵和平板波導組成。圖像經過微準直透鏡後成為平行光,進入光波導到達第壹全息光柵。由於全息光柵的衍射效應,平行光改變其傳輸方向以滿足全反射條件,並沿著波導方向無損耗地向前傳播。當平行光傳播到第二全息光柵時,全反射條件被破壞,使得平行光從全息波導出射,進入人眼成像。由於全息波導的存在,光學圖像可以垂直偏轉和傳播。這不僅減少了傳播距離,而且將光學系統的重心保持在頭部內。同時減少了折疊鏡的使用,有利於光學系統的簡化和輕量化設計。不過這項技術智能實現了單色顯示。為了達到色彩效果,必須用三層鏡片分別投射出紅、綠、藍三原色,不同的光線組合起來形成色彩。目前HoloLens采用的就是這種方案。
5、光波導+反射技術
由於衍射效應,全息光柵方案將導致色散和圖像模糊。因此,以色列公司Lumus采用了光導光學元件(LOE)器件,它采用了更簡單的多重反射層結構,而不是全息光柵,如圖所示。LOE裝置的原理類似於潛望鏡,但使用了多個反射鏡來擴大出瞳。每壹面鏡子都反射平行光,這些鏡子在同壹個圖像上。Lumus的代表產品PD-18,分辨率800×600,可視角度26× 20,出瞳10mm,出瞳距離23 mm..器件厚度2.3mm,重量不到70g,亮度1200fL,顯示區域透過率70%,其他區域透過率92%。
6.光場技術
光場技術作為近眼3D的另壹大技術路線,以Magic Leap為代表。這種技術最大的優點是可以讓用戶自由對焦,看遠看近不會產生傳統照片或視頻那樣的模糊感。該方法的技術核心是光纖投影儀。Magic Leap基於激光在光纖中傳播後從光纖端口射出時輸出方向與光纖相切的原理,通過改變光纖在三維空間中的形狀,尤其是光纖端口處的切線方向,控制激光發射方向,直接投射到視網膜上。
7.視頻疊加技術
以上方案難度相對較大,視頻疊加技術可以更簡單的實現AR效果。視頻疊加技術直接用攝像機代替鏡頭觀察現實世界,將虛擬的東西疊加在攝像機拍攝的場景上。這種方法避免了光學設計中的困難,可以增強人的視覺感受。例如,通過使用紅外攝像機,我們可以看到紅外光譜的場景。但也帶來了另壹個問題,就是數據運算量極大,亟待解決。
四種“底層”AR實現方法
如果以上是專業的技術解決方案,那麽下面我們要介紹的是專門為AR技術愛好者準備的“業余”解決方案。
1,Opencv和C++
總的原理是OpenCV實現標記的識別和定位,然後通過OpenGL將虛擬物體疊加在攝像機圖像下,實現增強現實。具體思路是:利用SIFT算法進行識別(提取特征點並用特征向量進行描述,然後將當前視圖的特征向量與目標物體的特征向量進行匹配),根據識別出的原始目標與幀圖像的匹配關系得到變化矩陣,從而顯示三維物體(由OpenGL繪制)並實現跟蹤。
2、Python
Python是世界上最優雅的語言。目前大部分計算機視覺項目都是用Python實現的。當然,使用Python CV庫也可以輕松實現AR效果。用Python實現AR效果,需要先應用PyGame和PyOpenGL兩個開源工具包。PyGame是壹個非常流行的遊戲開發工具包,可以非常簡單地處理顯示窗口、輸入設備、事件等內容。在實現過程中,需要獲取相機矩陣並轉換為OpenGL格式,用平面和標記估計姿態,然後在圖像中放置虛擬物體,實現增強現實。
3、AR+SLAM
SLAM主要用於地圖重建。在AR中,SLAM算法通常用於獲取相機姿態。網上有壹些SLAM開發資源和AR-SLAM項目案例,有興趣的可以下載參考。
4、ARToolkit
ARToolKit是壹個用C/C++語言編寫的庫。對於開發AR程序來說,最困難的部分是將虛擬圖像實時覆蓋到用戶的視口,並將其與現實世界中的對象精確對齊。ARToolKit使用圖像技術來計算相機和標記卡之間的相對位置,以便程序員可以在標記卡上覆蓋他們的虛擬對象。ARToolKit提供的快速準確的標簽追蹤,使人們能夠快速開發許多更新更有趣的AR程序。實現步驟是:程序初始化-抓取壹幀視頻輸入-然後檢測標簽卡-計算攝像機的傳遞矩陣-繪制壹個虛擬物體-關閉視頻捕捉。