Google新技术“等角立方投影”: 让VR视频更真实

青亭网( ID:qingtinwang )--链接科技前沿,服务商业创新

从古代起,无数绘图师都尽力去精确地还原世界。而这一技术最核心的困难就是如何在平面屏幕上绘制出曲面的地球。

在过去几个世纪里,人们一直苦苦探寻,提出各种方案。但是目前还没有一个通用的方式——各种方法只能顾及一面,不能全部包纳。即便是新的像谷歌地图或者VR视频也只是在2D屏幕上展现出3D世界,因此这个问题仍然悬而未决。

传统的绘制技术要克服的困难是如何用2D手段表现世界,而视频的传输也有问题,就是它一直没有能够充分利用带宽。而视频清晰度越来越高,要求的带宽也越来越大,尤其是移动网络。

而且考虑到VR视频的时候,要传输的是整个空间的变化,而不是仅仅一小块图像的变化。而声音场的传输简直要让数据流量翻倍。因而如何尽量有效利用现有带宽成为最优先的问题。

现在在YouTube和Daydream的共同努力下,它们找到了一种方法让同样带宽下,360度全景图像和VR视频都能更加真实。这一成果归功于等角立方体投影技术(Equi-Angular Cubemaps,简称EACs)。EACs其实在相当多的地方都有用武之地,我们也期望着出现更多的应用方法。

google

球面投影(Equirectangular Projection

最常见的显示方法之一就是按经纬度,把球状坐标变换到矩形坐标上去。这就是球面投影(Equirectangular Projection)。下图就是长方形世界地图和地球仪之间的投影关系。

青3

球面投影的优点就是虽然对应了球面,但还能直观看到。因此用现有的视频编辑技术也更加容易。然而在数据传输的时候,还是有很严重的问题。首先球面在两个极点(比如地球的南极北极)处,对应了矩形的大量像素(上下两底边),而中线(比如地球的赤道)处,对应的矩形像素相对较少。这是个相当严重的问题,因为像360度全景视频这样的球状图像,中间的内容最为重要,也就是观众的水平线视野。假设你在看球赛,肯定不想绿草地和蓝天空清晰无比,而中间赛场人影闪动,模模糊糊。而且算法还会导致严重的图像畸变,让现有的视频压缩技术更难执行。

总之,这些缺憾表明了球面投影仍然面临着诸多固有的问题,连完成球面到球面的投影都有问题。

传统的立方投影技术(Traditional Cube Maps

游戏行业经常使用的改进型球面投影技术是立方投影。这个原理看似简单:把球面变形成立方体,然后把立方体展开变成平面。

q4

最直接的方法就是用辐射状投影,不过这样还是会在边角造成像素密度不均匀。因为立方体六面中心都离几何体中心进,而越靠近顶点就会越远。

却

等角立方投影(The Equi-Angular CubemapEAC

但是以上问题能够通过改变那种粗糙的取样方式得以解决。

rr

从中心发散出来的线条代表了观察者的视线,以角度均分。左侧是传统立方投影,可以看到是球面位置和像素之间是线性对应,这就很僵硬了。而右边是效果更好的EAC投影。

传统的立方投影中,距离依据取样点在球面上的位置而定,故而会不同。EAC算法则是专门设计成保持距离不变,从而做出均匀分布的像素点。不过这还是跟以前的绘制技术有同样的问题,不可能完美地把2D图像投影到3D上去。如果你要保持一个性质良好,就总要放弃另几项性质。除了以上投影还有更多投影方法,比如等面积投影,能保证面积对应值一样,但是在别的地方就会有缺陷。EAC算法在2D上数学精确,但是只能在3D像素分别上近似精确,也就是说在能接受的图像畸变程度上做到了不错的近似。

统一程度比较

常用于比较不同投影效果的方式是浸透式投影(Saturation Map)。浸透式投影用色彩来表现像素的密集程度,就能像看热成像仪一样直观看出来了。色彩从红色到橙色,黄色,绿色,最后变蓝色。绿色代表了基础的像素密度,接近于1:1.而红色,橙色和黄色代表像素密度不足(相对于可以有的像素密度来说)。而蓝色代表有资源被浪费了(相对于应有的像素密度太多了)。如果改变视频分辨率,那么浸透式投影会整体改变颜色。但对于密度分布很不均匀的投影来说,如果你调整到最疏的地方呈现绿色,那么代表像素资源被浪费的区域也会变大。因此,理想的浸透式投射图的颜色会比较统一——因为可以调整到大部分区域都是绿色。

浸透程度与图像大小和输出设备分辨率有关。不同的分辨率会导致总体颜色呈现绿色或橙色。下面的浸透投影是各种投影方案的,能更轻松地看出投影的不均匀程度。

ttt

 

球面投影的上下无疑是蓝色(太多像素了,浪费)。而中线是橙色(质量太差,像素太少)。

比较起来,标准立方投影的绿色区域在中间,而蓝色部分在各个顶点上。因此比起球面投影,它的中线部分更清晰。

而EAC投影的均匀程度最大。而且中线附近的图像质量也被提升了。这样能更大程度地利用带宽,在现有情况下尽量多地传递出像素密度。

实践出真知

可以看到实例中视频质量显著提高了。下图是360度全景图像的左眼720p清晰度图片,在图片细节上可以看到右边EAC的算法生成的图片更清晰。

uu

细节决定成败

EAC投影算法理论上可行,但是应该算算立方体表面的矩形边界。最简单的就是任取立方体上一点,换算成视频像素。然后为每个面进行模拟换算。

ii

有了6套从0到1的表面坐标,需要压缩成单一视频数据。如果视频的大小尺寸受硬件和带宽所限,那么这些边界就不容小觑,必须用新方法专门计算。否则可能导致6个面的图像不连续,以及渲染是出岔子。游戏引擎中遇到类似问题的时候,通常是在不连续点上打补丁。这些细节就是EAC算法所必须在保证均匀性的情况下妥协的。

如果你对OpenGl三维图形引擎有所了解,那么你应该注意到这些能够通过立方投影贴图和片段着色器解决。此处不谈。

考虑以上投影方式,等角立方投影技术的结果更好,也更有效果。我们相信EAC投影会有大用途,因为YouTube也已经用这种技术来渲染高质量视频了。

 

更多精彩内容,关注青亭网微信号(ID:qingtinwang),或者来微博@青亭网与我们互动!转载请注明版权和原文链接!
青亭网

微信扫码关注青亭网

青亭网

青亭 | 前沿科技交流群01

责任编辑:freeAll
分享到QQ 分享到微信
后参与评论
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册