在讨论全景视频的未来之前,我们先搞清楚全景视频是如何实现的

当然这并非真正意义上的沉浸式体验,就算我们把这幅长画给卷成一个圆筒,然后站在中心去观看,也依然会觉得缺失了一点什么,没错,一个明显的接缝,以及头顶和脚下两片区域的空白。

类似这样的世界地图也许在你家里的墙面上已经贴了有一些年头了,也许自从升上大学之后你从未正眼瞧过它,但是它却符合一张全景图片需要的全部条件,你把它放到各种VR眼镜里去观看的话,就宛若陷入了整个世界的环抱当中。
这种能够正确地展开全物理视域的真实场景到一张2D图片上,并且能够还原到VR眼镜中实现沉浸式观看的数学过程,就叫做投影(projection)。
而那张看起来平凡无奇的世界地图,使用的就是一种名为Equirectangular的常见投影方式,它的特点是水平视角的图像尺寸可以得到很好的保持,而垂直视角上,尤其是接近两极的时候会发生无限的尺寸拉伸。

然而全景图像的投影方式远不止这一种,比如最近刚刚发布的理光Theta S以及Insta360全景相机,就采用了另外一种更为简单而有效的投影策略:

当然,这种名为Fisheye的投影方式,生成的2D画面事实上扭曲变形是更加严重的。而通过图像重投影处理的方式将它变换到VR眼镜中显示的时候,受到图像采样频率的限制(或者通俗点说,像素点大小的限制),这样的扭曲被还原时会多少产生一定程度的图像质量损失,因而也可能会造成全景内容本身的质量下降。
由此看来,作为全景内容的一种重要承载基体,投影图像(或者视频)不仅应当完整包含拍摄的全部内容,还要避免过多的扭曲变形以免重投影到VR眼镜时产生质量损失。
那么,除了上述两种投影方式之外,还有更多方案可以选择吗是,当然了,而且有的是!
比如墨卡托投影(Mercator),它沿着轴线的拉伸变形比Equirectangular更小,对应实际场景的比例更为真实,但是垂直方向只能表达大约140度左右的内容;
又比如Equisolid投影,也有人称之为“小行星”或者“720度”全景,它甚至可以把垂直方向的360度视域都展现出来,但是前提是使用者并不在乎巨大的扭曲变形可能带来的品质损失:

如果你正好是一位图形开发或者虚拟现实软件开发的从业者的话,这张图对你来说应该是非常熟悉的,这就是Cubemap(立方体图像)。
它相当于一个由六幅图像拼合组成的立方体盒子,如果假设观察者位于立方体的中心的话,那么每幅图像都会对应立方体的一个表面,并且在物理空间中相当于水平和垂直都是90度的视域范围。而观察者被这样的六幅画面包围在中心,最终的视域范围同样可以达到水平360度,垂直360度,并且画面是绝对不存在任何扭曲变形的。
如下:

在全景视频拼接和输出软件中读取六台摄像机的输入流或者视频文件,并且设置它们在支架上的实际方位信息(或者直接获取数码相机本身记录的姿态信息)。这样我们就得到了足够覆盖全视域范围的视频内容。

这样的工作耗时耗力,并且有一个重要的前提,就是作为输入源的画面必须能够覆盖360度全视域并且存在冗余。
正如我们之前所计算的,如果采用六个相机拼装的方式,那么每个相机的FOV角度不应小于90度,对于GoPro Hero3系列相机来说,此时必须采用4×3的宽视域模式,如果是16×9的宽高比设置,那么垂直方向的FOV角度很可能无法达到要求的数值,进而产生“无论如何都拼接不上”的问题——当然我们可以通过在支架上调整各个相机的朝向角度,或者增加相机的数量,来避免这一问题的产生,不过无论从何种角度来看,采用接近1×1的宽高比的宽视域相机都是一个更为理想的选择。
如果只是为了输出一张全景图片的话,那么上面的步骤通常来说已经绰绰有余,不需要再考虑更多的事情。但是,不会动的图片是很难让戴上VR头盔的人哇哇大叫的,能看到身边战火纷飞,或者野鬼出没的动态景象才更加刺激。如果你正在考虑如何制作如是的VR电影,那么有一个问题不得不提出来,那就是——
同步性——简单来说,就是你手中所有的摄像机如何精确保证同时开始,以及在录制的过程中保持帧率的一致性。

这看起来似乎并不算什么问题,然而如果两台摄像机的开始时间不一致的话,会直接影响到它们的对齐和拼接结果——甚至如果场景中存在大量的动态元素或者相机位置在这个过程中发生了改变的话,结果可能根本是无法对齐的。因此,对于需要大量摄像机同时参与的全景拍摄工作而言,同步开始以及同步录制的需求就变得分外重要了。
要从硬件上根本解决这个问题,可以用到“同步锁相”(genlock)的技术,即通过外部设备传递时间码来控制各台相机的同步运行(典型的例如Red One专业电影摄像机)。当然并不是所有的摄像机都具备专门的Genlock接口,这种情况下,也可以考虑一些传统或者是看起来略微“山寨”的同步方法,例如:路见不平一声吼……
在拍摄开始的时候,演员大吼一声,或者用力拍一下巴掌。然后在进行拼接的过程中,找到每个视频当中吼声对应的时间节点,作为同步开始的位置,然后再进行全景视频的拼接。这种方法虽然并没有什么精确性可言,但是同样没有开销什么额外的成本;但是确保了基本的同步起始位置之后,再进行视频的细微调节和拼缝工作,却无疑从相当程度上简化了后期制作的难度。
类似的方法还有给所有的摄像机蒙上黑布,然后开始拍摄的时候快速抽走,等等。总之在硬件条件无法完全具备的前提下,就是八仙过海各显神通的时候了。

3、立体与伪立体

细心的你可能已经发现,之前讨论的所有全景视频的拍摄过程都忽略了一个要点:无论采用何种投影方式,生成的都只是一幅360度的全景内容,放在PC或者 页端去观看当然没有任何问题,但是如果要将这样的内容输入到VR头盔显示器上,结果恐怕是不正确的。为了将画面赋予立体感并呈现到人的眼中,我们提供的内容必须采用左右眼水平分隔显示的模式:

而任何一种现有的VR眼镜,都需要通过结构的设计确保佩带者的左右眼都只能看到实际屏幕的一半,也就是分别看到分隔后的左右眼画面内容,从而模拟了人眼的真实运作机制。

对于拼接和融合软件来说,倒是并没有什么特别需要做的,只是要先后两次读取六个视频流,处理后输出两个不同的全景视频,分别对应左右眼的画面内容。之后再通过后期工具或者应用程序将它们合并到一幅画面中即可。
当然了,另辟蹊径的路子也有很多,比如从2011年就震动了Kickstarter的众筹者,却直到如今VR全景应用大火却依然没有按期发出的Panono,它的设计原理是通过均匀分布在球体上的36个摄像头来拍摄,拼接并得到左右眼的全景图像。
这个设计虽然看起来拽得飞起,实际上却是万变不离其宗:朝向不同方向的36台摄像机拍摄的画面,叠加在一起足以覆盖水平360度和垂直360度的视域范围,并且一定可以覆盖两遍!再加上自身精准的结构设计和安装姿态,这样就能够从内部准确计算出拼接后的全景图像,并且直接按照左右眼两幅图像的标准输出视频流或者文件,其能够输出的实际分辨率也是相当可观的。

在讨论全景视频的未来之前,我们先搞清楚全景视频是如何实现的

与之相仿的还有Bublcam(四个遍布球身的超大广角镜头),Nokia的OZO(8个遍布球身的广角镜头),以及Jaunt研发中的产品等等。它们都具备直接输出立体形式的全景内容的能力。
当然了,最不济的情形下,我们还有一种选择,就是自己假造一种立体模式……
将原始的全景画面复制成两份,其中一份向左偏移一点,另一份向右偏移一点,然后各自做一个轻度的透视变换(为了模拟视线角度的偏转)。这样构成的“立体”画面在多数情形下也具有一定的立体欺骗效果,但是对于近处的景物,或者左右眼画面中的景物存在遮挡关系的时候(比如模拟脸贴在门上,一只眼被门闩挡住的情景),则会有明显的瑕疵。当然了,对于依然对VR全景内容处于懵懂阶段的爱好者来说,这也许暂时不是什么严重的问题了。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年11月15日
下一篇 2015年11月15日

相关推荐