深度解读谷歌VR视频传输技术:等角立方体贴图
本文相关引用及参考:映维网
谷歌和YouTube正在进行合作,研发出一种名为等角立方体贴图技术的新方案,在带宽有限的今天可以使360度和VR视频看上去更加逼真。
(映维网 2017年3月16日)自2014年以来,映维网在陆续深入探讨优化虚拟现实体验的方法。今天映维网要介绍的是昨天我们报道的谷歌等角立方体贴图技术,一种用于传输高质量VR视频的新方法。
自古以来,制图员一直在寻找能准确反映世界的地图制作方法。这门技术的核心挑战是,把弧形的地球映射至平面纸张和屏幕中。千百年来,坊间出现了无数的解决方案,但至今仍未找到最终统一的答案:每种解决方案都是基于预期用途的权衡取舍。随着谷歌地图和VR视频等服务和应用的出现,其需要在2D屏幕上呈现出关于我们弧形3D世界的准确而有用的信息,所以这个挑战在今天依然存在。
传统的制图技术必须解决如何在2D中呈现世界这一基本挑战,而视频传输同样面临新的困难:如何有效利用带宽。传输高质量的视频需要推动网络带宽的限制,尤其是移动网络。当涉及VR视频时,带宽需求更是大为增加,因为图像是在一个完整的球体界面中呈现,而不是传统的小型2D窗口。立体视频会使数据再翻大约1倍。因此,我们需要重点考虑如何充分利用可用带宽。
现在,谷歌和YouTube正在进行合作,研发出一种名为等角立方体贴图技术的新方案,在带宽有限的今天可以使360度和VR视频看上去更加逼真。
1. 等量矩形投影
我们最为熟悉的地图是由经纬线组成的四方网格。这也被称为“等量矩形投影”。
底索指示线的等量矩形投影
等量矩形投影的优势在于直观的呈现,使用现有的视频编辑工具进行操作也相对简单。然而,在用于视频传输时,这种方法会产生严重的问题。首先,极点区域会得到大量的像素,而赤道部分则几乎没有。这是一个重大挑战,因为在球形视频中,最重要的内容通常在赤道区域(中央)显示,也就是观众的视平线。另外,这种方法还会导致高度失真,给现有的视频压缩技术带来更大的压力。
总之,这些缺点突出了球形视频投影的基本挑战:如何在球形显示表面均匀地分配视频像素。
2. 传统立方体贴图
游戏行业用于优化等量矩形投影的方法之一就是立方体贴图:将球体变形为立方体,然后展开六个面并平整铺开。如下图所示:
最直接的方法是使用简单的径向投影:把球体嵌入立方体中,然后将球体上的图像向外投影到立方体的表面上。
这改进了等量矩形投影,但仍不能解决像素密度的不均匀分布。问题是立方体各个面的中心接近球体,而角落则离得更远。
在上图中,光线全部在圆周上等距分布,但光线与四方形相交的点不会等距分布。这样的结果是,角落获得的视频像素要比中心更多。因为与红光相比,较长的蓝光在四方形边缘会横跨更多的像素,这又会使得赤道区域获得的像素更少。在完整的三维场景中,该问题会更加明显。
3. 等角立方体贴图(EAC)
你可以通过改变视频像素呈现的位置来解决这一问题。
在上图中,我们把从中心射出的光线看作是观众的视线,其根据角度均匀分布。左边是传统的立方体贴图,从面部位置到像素位置呈线性映射;右边则是更有效的EAC映射。
根据样品在立方体表面的位置,传统立方体贴图会呈现出不同长度的样品。EAC则通过特别设计,可确保长度保持一致,从而均匀分配像素。由于各种不同的原因,制图并不容易,2D图像难以完美地延伸至3D:你总是需要权衡取舍,保留一样东西意味着你需要放弃其他东西。具体可以查阅关于保角映射和等面积投影的信息,你将会发现,要保留一些特性总是需要牺牲其他东西。EAC方程式在2D中的数学计算很精确,但在3D中只是等角像素分布的近似值,虽然是相当接近的近似值。
4. 均匀性对比
要通过肉眼对比不同的投影种类,一项有效的方法是使用饱和度图。饱和度图可以显示视频像素与显示像素密度的颜色编码比率。颜色编码从红色到橙色、黄色、绿色、最后是蓝色。绿色表示最佳像素密度比,接近1:1。红色、橙色和黄色表示密度不足(可用显示像素比视频像素多,视频像素不足以填满);蓝色表示存在浪费的资源(可用显示像素比视频像素少,有多余的视频像素)。你可以通过增加视频的分辨率来改变饱和度图的整体颜色。但对于极不均匀的饱和度图,当你把饱和度最低的区域变为绿色时,这还会增加视频资源被浪费的面积。因此,理想的投影具有颜色均匀的饱和度图,因为它可以通过足够的分辨率形成均匀的绿色。
饱和度高度取决于图像的大小,以及输出设备的分辨率。不同的分辨率的选择将改变整体的绿色度或橙色度。下面的饱和度图是从特定的案例研究中提取,用于对比不同投影方法的效果。
等量矩形投影(左);标准的立方体贴图(中央);等角立方体贴图(右)
很明显,等量矩形投影在极点区域呈现出蓝色(视频像素过多),赤道区域则为橙色(质量糟糕,视频像素过少).
与之对比,标准的立方体贴图把最佳的绿色区域从极点附近移动至赤道。原本极点存在浪费的蓝色区域,但现在已经消失。另外,立方体贴图在边缘处的颜色编码比率更好。赤道区域呈现出最显著的饱和度变化。与等量矩形投影最糟糕的区域相比,立方体各个面中心的质量实际上要更低。
最后,EAC投影的饱和度图更为均匀,赤道区域的质量更高。这种均匀性允许最大限度地利用可用带宽,从而在给定情况下可选择任何分辨率提供的最佳像素密度。
5. 事实胜于雄辩
使用EAC投影的最终结果是,视频观影质量得到了提升。下图是在1080P的谷歌Cardboard头显中,以720P显示的左眼影像截图,分别采用了等量矩形投影和EAC投影 。较大的图像是为了让我们了解具体场景,较小的标注放大区域用以进行对比。正如你所见,在使用EAC投影后图像变得更加清晰。
左图:VR头显中看到的图像帧。右图:左边是等量矩形投影;右边是EAC。
6. 细节决定成败…
以上介绍了EAC投影的大致工作原理。它可以解决立方体各表面在视频的矩形边界和实际数学的布局。将立方体表面上的点映射到视频像素样本的方程很简单。
对每个面进行类似的操作。
现在,所有六组[0,1]纹理坐标需要被打包成单个视频纹理。如果视频形状和大小受硬件或流传输的局限而受限,这些布局可能需要特别关注,它们或许需要自行分析。把立方体的六个面布局成一个视频矩形有很多方法。另外,当各个面彼此相遇时可能会出现间断处,这在渲染时可能会导致视频编码和像素插值产生问题。在游戏中使用的纹理地图集存在类似的问题,它们通常需要在间断处添加填充来解决。这些细节为抽象EAC概念的部署方式提供了选择和权衡的机会。
如果你熟悉OpenGL,你或许已经注意到,这其实可以通过立方体贴图纹理和片段着色器来解决。没错,你是正确的。但实际的数学运算还是留给读者作为练习吧。
图像质量对VR十分重要,平衡带宽限制和准确投影之间的关系也很关键。在回顾了等量矩形投影和传统立方体贴图的部分挑战后,我们可以发现等角立方体贴图可提供更好的结果,同时能更有效利用资源。