0
本文作者: 萨洛 | 2017-03-16 16:44 |
雷锋网按: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
雷峰网版权文章,未经授权禁止转载。详情见转载须知。