雷鋒網按:
Google 博客近期刊發的系列文章中
,從技術角度更深入探討和剖析了在改善虛擬實境(下文簡稱 VR)體驗方面的諸多方法。該系列第一篇中,Google 介紹了 Equi-Angular Cubemaps,這項技術能夠傳輸更高品質的 VR 視頻資源。
自古以來測繪師的奮鬥目標就是,繪製出能夠精准映射現實世界的地圖。而這門偉大藝術所面臨的核心挑戰在於,如何在平面的紙張和螢幕上精准的展現弧形完全的地球。在過去的幾個世紀中,人類智慧的花火碰撞出了諸多卓有成效的方法,但至今仍沒有出現被大部分人類公認的一個最佳答案,因為每種方法都是權衡預期用途的產物,只能解決某種情境需求而已。
以 Google Maps 為代表的各種新型地圖服務以及 VR 視頻的豐富應用,依然在尋找如何在 2D 螢幕上提供精准且富有意義的弧形 3D 世界的的方法,即使在現在也是不小的挑戰。
傳統繪圖技術必須要解決如何在 2D 平面上映射現實世界的根本挑戰同時,視頻流媒體也面臨前期製圖者不會存在的煩惱————
如何更高效的利用頻寬。高品質視頻流的顯示效果極大程度上受到網路頻寬的限制,尤其對於移動網路來說。
傳統頻流讓我們通過小視窗去觀察世界,而 VR 視頻流必須要從球狀世界中渲染弧形圖像,必然對頻寬提出了更嚴苛的要求。立體視頻的資料流程會以幾何倍數不斷放大對資料的要求,因此讓 VR 視頻進入商用的最核心關鍵就是提升頻寬。
在現有頻寬受限的背景下,YouTube 和 Daydream 團隊的共同努力成功找到了諸多全新方法,讓 360 度和 VR 視頻看上去更加逼真更有沉浸感。而在這篇博文中詳細介紹了依託於 Equi-Angular Cubemaps (EACs) 的各種技術工作原理。
鑒於這些技術帶來的各種優勢,Google 團隊已經考慮應用到 YouTube 的內容上。而且 EACs 還能延伸擴展至其他領域,因此在這裡我們非常期盼這項技術的更多應用。
等距柱狀投影圖(Equirectangular Projection)
對於普通用戶來說地球最熟悉的呈現方式,就是用經度和緯度劃分而成的矩形空間,而這也被稱之為等距柱狀投影圖(Equirectangular Projection)。
Tissot Indicatrix
的等距柱狀投影圖
等距柱狀投影圖的優點在於將地球劃分成多個矩形,普通用戶也能非常直觀的進行觀察。然而,如果不加調整就將其運用到視頻傳輸過程中,就會產生非常嚴重的問題。首先,根據經緯度的劃分方式會導致南北極區域的圖元點非常密集,而赤道附近的圖元則比較稀疏。在 VR 體驗中佩戴者的視線範圍通常集中在眼前中心位置,就著意味著在視頻傳輸過程中需要將重要的內容分佈在赤道範圍內。
其次,這種視頻傳輸必然存在非常高的失真,現有的視訊壓縮技術很難完全駕馭。綜合以上兩點問題表明球面視頻投影的根本挑戰在於,在球狀螢幕上均勻分佈視頻圖元。
傳統的立方體貼圖(Cube Maps):
在遊戲行業中還廣泛應用一種升級版等距柱狀投影圖,那就是立方體貼圖。這個概念非常的簡單:將球形變形成為立方體,然後展開立方體的六個面然後平鋪。
遊戲行業目前最直觀最簡單的做法就是放射型投影(Radial Projection),在一個立方體中嵌入球體,然後將球體表面的圖像向外投影到立方體表面。
立方體貼圖的效果要明顯優於等距柱狀投影圖,但是在圖元密度上依然會導致根本性變動。這個問題是由於立方體的中心位置距離球體最近,但是立方體的邊角離球體則比較遠。
正如上方圖片中所展示的橫截面,這些射線都以相同的角度從圓中心向外射出,但是投影到立方體上間隔距離則出現了偏差。這樣所導致的結果是,相比較中心位置邊緣部分會獲得更多的視頻圖元,因為在立方體邊緣上藍色射線要比紅色射線具備更多的圖元。而且在完整的三維情況下,這個問題會更加明顯。
Equi-Angular Cubemap(EAC):
通過更改提取視頻圖元樣本的位置,糾正這種變形。
從球體中心發射的射線代表 VR 頭顯佩戴者的視線,同樣以相同的角度向外投射。左側是傳統的立方體貼圖,從人臉位置到圖元位置的投影是直線。而右側是更為高效的 EAC 投影。傳統的立方體貼圖視頻採樣的長度取決於樣本在立方體表面的位置。而 EAC 則通過特殊的構造能夠確保這些採樣長度保持一致,創造均勻分佈的圖元。
不管怎麼說繪製都是非常困難的,這種 2D 圖片很難完美的擴展形成 3D:因為你如果想要保留這種繪製的某些重要功能,那麼必然需要放棄其他東西。
共形映射
(Conformal Mapping )和
等面積投影
(Equal Area Projections)都是在某些方面作出犧牲而保留強化某些元素。
EAC 解決方案在 2D 空間中不失為精密演算法,但是擴展到 3D 空間依然會存在偏差,只能形成接近於等角度圖元分佈的空間,但少量的失真已經非常接近于完美狀態。
均勻性比較
不同投影類型的最實用視覺比較方式就是使用飽和度圖譜。飽和度圖譜展示了視頻圖元到顯示圖元密度的色彩編碼比例。色彩編碼從紅色到桔色,黃色,綠色,最終為藍色。其中綠色代表最佳的圖元密度比例,接近於 1:1,而紅色,桔色,黃色則表明圖元密度不足(當前螢幕上投影的視頻圖元太少)的,而藍色則代表被浪費的圖元(當前螢幕上投影的視頻圖元太多)。
在飽和度圖譜上通過增加視頻的解析度能夠調整整體顏色表現。但是對於那些飽和度圖譜存在巨大差異的投影,提升解析度固然增加了中心區域的綠色範圍,但是同時也增加了被浪費的圖元資源。因此,最理想的投影是色彩均勻的飽和度圖譜,這樣就能通過提升解析度使其變成均勻的綠色。
飽和度極大程度上取決於圖像的尺寸和輸出設備的解析度。選擇不同解析度會導致飽和度圖譜偏綠或者偏黃。下面的飽和度圖譜來自一個具體的案例研究,能夠最大限度的提高飽和度變化。
等距柱狀投影圖(左);標準立方體貼圖(中);Equi-Angular Cubemap (右)
毫不奇怪的是,等距柱狀投影圖在南北極是藍色的(浪費圖元,太多的視頻圖元)的,而其他部分則都是桔色的(糟糕的視頻品質,太少的視頻圖元)。
作為比較,標準的立方體貼圖將最佳綠色區域從南北極移動到中間位置。南北極的浪費的藍色區域也已經消失了。另一方面,立方體貼圖的邊緣部分要比中心區域要更優秀。更為重要的是,色彩的變化主要集中在赤道附近,而且這些圓形表面具備比等距柱狀投影圖更糟糕的品質。
最後 EAC 投影的保護度明顯要比其他兩個更加均勻,而且赤道區域明顯可以進一步提高。這種均勻性能夠最大化的利用頻寬,從而能夠根據當前設備所使用的網路,來選擇傳輸最佳的圖元密度。
實踐才是最佳的檢驗
EACs 的最終結果是在 VR 體驗中視頻品質的明顯改觀。下面這張圖片是在一個 1080P 的 Google Cardboard 取景器中播放 720P 的 360 度視頻時候左眼拍攝到的畫面。在左側的大圖中用青色和黃色框選了照片中的某個場景,而在右側部分則對比了框選區域在等距柱狀投影圖和 Equi-Angular Cubemap 兩種投影模式下的差別。可以明顯看到採用 EAC 投影的照片更加清晰。
最可怕的是細節:
在前文的描述中基本上介紹了 EAC 投影的工作原理,但是還需要解決立方體的六個面在視頻矩形邊界和實際演算法中的難題。立方體表面的一個點方程投影到視頻圖元採樣是非常明確的。
類似的操作需要在立方體的每個面上進行。
現在,所有六套【0,1】紋理座標都需要包裹在一個單獨的視頻紋理中。如果視頻解析度和尺寸受到硬體或者流媒體傳輸的限制,那麼這些佈局是可以不是固定的,而且它們有權利自己進行分析。
目前有很多方法將立方體的六個面整合成為一段視頻矩形。此外,在組合過程中可能會導致不相連的面碰在一起,這可能在渲染過程中進行視頻編碼和圖元插值(Pixel Interpolation)操作的時候出現問題。
在遊戲領域中所使用的紋理地圖集也存在相似的問題,目前常見的解決手段是在不連續面處增加填充物。一旦選擇部署 EAC 概念,那麼必然意味著需要在這些細節上做出取捨。
對於那些熟悉 OpenGL 的用戶來說,完全可以通過立方體映射紋理和片段著色器來計算出最終的紋理外觀。如果你對此感興趣,那麼就當作是給讀者的一次練習吧。
對於 VR 來說圖像品質代表著很多含義,而 EAS 也是當前頻寬束縛下平衡精准投影的重要突破。鑒於目前等距柱狀投影圖和傳統立方體貼圖方案所面臨的挑戰,很明顯 Equi-Angular Cubemaps 提供了更優秀的結果和更高效的資源利用。
我們堅信通過深入瞭解 EAC 投影,那麼用戶在較窄的頻寬網路環境中也能訪問 YouTube 上的高品質視頻直播。未來,我們非常期待能夠看到這項投影技術運用到其他方面。
via
Google Blog