很早大家就发现,360 度视频和真正的 VR 相比差一些,于是就有很文章站出来说这些都是“伪 VR”。
他们给出的理由是,绝大部分的 360 度视频都不是 3D 拍摄的,更不用说 6 自由度移动。
也正是看出了这一点,包括 Facebook、索尼、英特尔在内在 VR 领先公司都在尝试 6 自由度 VR 视频。但他们通常需要用到好几个高端相机组合拍摄,产生巨大的数据量,并由于运算量太大还得在云端剪辑。
不过 Adobe 或许可以改变这一点,他们刚刚展示了一项新技术,可以将平面的 360 度视频变成 6 自由度视频。如此,“伪 VR”也可以变“真 VR”了。
Adobe 的这项研究由该公司的首席研究员在本周的 National Association of Broadcasters Show(国家广播协会展)上发布。最初由国外媒体 Variety 独家报道。
所谓的 360 度视频变 6 自由度视频,从用户体验上来看,是指之前用户只能在 360 度视频里转动头部看四周,6 自由度则可以让用户不仅能转动头,还能在视频里上下前后左右地移动头部,就像是在真实世界里看东西一样。
据该公司的研究员介绍,他们使用了一种新的扭曲算法(warping algorithm),这种算法可以在固定视点的视频里模拟出新的视点,同时保持 120 fps的帧率。
简单来说就是,普通的 360 度视频只有一个视点,就是相机的位置,而要想变 6 自由度,就得在这个位置周围创造新的视点,这样你才能前后左右移动,而周围的画面不动。
实际上,这一新算法不仅可以用在创造 6 自由度体验上,还能用于视频防抖,让一些手持拍摄时抖动造成的动态模糊画面更平滑。
不过,实现这些功能有一个条件,那就是相机必须得动,毕竟只在一个点拍摄是算不出精确深度的。
在 Adobe 发布的研究论文 [1] 里,研究员介绍了这项功能实现的基本流程:
首先他们采用了一个运动恢复结构(structure-from-motion,SfM)算法来计算相机的运动并创造一个基本的三维重建架构。(雷锋网注:运动恢复结构是基于计算机视觉的三维重建方法之一)
用这个方法推测出三维几何值后,他们把视频的每一帧都映射(map)到一个六面的球体上,然后针对每个面运行标准的计算机视觉追踪算法。
对于将画面映射到六面体时不可避免会产生的失真情况,他们使用大于 45 度的视场角(FOV)产生画面重叠区域来解决。下面这个视频展示了算法实际运行的情况。
虽然很厉害,但这技术也不是万能的。除了要求相机要动外,三维重建的质量也取决于合成视点的位置与初始视点位置的距离。就是说,虽然能产生 6 自由度的体验,但如果你移动得太快太远,效果就会打比较大的折扣。
此外,有些自然现象也会带来问题,比如画面中遇到一大片没什么纹理的区域,遮挡情况以及光照的改变,它们可能会在重建点的画面中造成严重的噪点,以及在 3D 效果里带来“黑洞”(holes)效果。
在固定点的画面中,也会看到一些非静态物体的扭曲,这是由于算法试图将合成的帧和初始帧融合在一起。
俗话说,后期再厉害,不如把素材拍得好一点。所以很多公司直接用光场相机来拍摄 6 自由度视频,比如 HypeVR 带激光雷达(LiDAR)的 6K/60 FPS 相机,还有雷锋网之前报道过的 Lytro 那巨型的 Immerge 相机。使用这些相机显然可以拍出更高质量的 3D 效果。
不过,话又说回来,这些相机全都是又大又贵的定制化产品,普通人一般用不起。所以,雷锋网认为,Adobe 的这套技术就算不完美,也给了普通用户做出 6 自由度视频的希望。
引用来源:
[1] Huang J, Chen Z, Ceylan D, et al. 6-DOF VR videos with a single 360-camera[C]//Virtual Reality (VR), 2017 IEEE. IEEE, 2017: 37-44.