详述Facebook Surround 360视频捕捉系统的挑战和技术方案
文章相关引用及参考:映维网
注:本文的最初发布日期是2016年4月
注:本文的最初发布日期是2016年4月
(映维网 2018年07月05日)为了加速3D-360生态系统的发展,Facebook正在开发相机和软件,在2016年4月12日发布了Surround 360,一款高质量的3D-360硬件和软件视频捕捉系统。该系统包括一个摄像头硬件设计和附带的拼接代码(目前已经托管至GitHub)。开发者可以利用设计和代码,而内容创作者可以在他们的作品中使用相机。
建立在光流算法之上是一种数学上严格的方法,可以产生出色的结果。Facebook的代码使用光流计算左右眼睛立体视差。Facebook利用这一点来生成无缝的立体360度全景图,几乎没有任何手动干预。
拼接代码大大缩短了后期制作时间。现在可以通过算法完成以往用手工完成的工作,将拼接时间从几周缩短到一夜。
系统为每只眼睛输出4K、6K和8K视频。8K视频是行业标准输出的一倍,可以使用Facebook的自定义动态流传输(Dynamic Streaming)技术在Gear VR上播放。
Facebook希望这款高质量的捕捉、编辑和渲染3D-360视频端到端系统可以帮助更多的VR内容制作人和艺术家开始制作3D-360视频,为3D-360相机领域做出有意义的贡献。
1. VR捕捉的挑战
当Facebook开始这个项目时,Facebook看到现有的3D-360视频相机都要么属于专有设计,要么是不可靠的端到端系统。在大多数情况下,这些系统中的相机会出现过热情况,装置的安装不够稳固,拼接需要花费很长时间,因为这必须通过手工完成。所以Facebook着手设计和制造一款可以满足你日常捕捉需求的3D-360视频相机:每次都能可靠地进行捕捉,编辑和渲染。这听起来很容易,但对于3D-360视频来说是一个巨大的技术性挑战。
3D视频面临的许多技术行挑战源于在立体360度拍摄画面。使用两个或以上相机拍摄整个360度场景的单视场360是非常主流的格式。由此产生的图像允许你环视整个场景,但画面相当平坦,非常类似于静态图片。
然而,如果你想要拍摄3D-360视频,情况将变得更加复杂。与平面视频不同,3D视频需要深度。通过使用两个相机来捕捉场景中的每个位置,我们可以获得深度,而这两个相机相当于你的左眼和右眼。这意味着你必须拍摄立体360,用10至20台相机从各个位置指向这里。另外,所有相机都必须准确且同时捕捉每秒30帧或60帧。换句话说,它们必须实现全局同步。最后,你需要把每个相机的所有图像融合或拼接成一个无缝视频,而且你必须执行两次:左右眼各一次。
最后一步可能是最难实现的一点,它需要相当复杂的计算摄影和计算机视觉技术。好消息是,研究人员在过去20多年一直在进行积极地研究过。以往的算法研究,图像传感器的快速进步和普及,以及固态硬盘等存储器组件成本的降低使得该项目成为可能。而这在五年前几乎是不可能的事情。
2. VR捕捉系统
考虑到这些挑战,Facebook开始尝试各种原型,并且确定了构建可靠高质量端到端捕捉系统所需的三大组件:
- 硬件(相机和控制计算机)
- 相机控制软件(用于同步捕捉)
- 拼接和渲染软件
所有这三方面都是相互关联的元素,并且需要仔细的设计和控制才能实现理想的可靠性和质量。一个方面的缺陷会影响另一个方面的质量或可靠性。
此外,Facebook希望硬件能成为现成的设备。Facebook希望其他人能够根据Facebook的设计规格和软件进行复刻或修改。希望让Facebook以外的技术团队和创意团队能够充分利用这一技术。
3. 相机硬件
与任何系统一样,首先列出基本的硬件要求。放松其中任何一个都会影响质量或可靠性,有时甚至会同时影响两者。
相机要求:
- 相机必须是全局同步。所有帧必须在1毫秒内同时捕捉场景。如果帧不同步,将它们拼接成单个连贯图像将变得相当困难。
- 每台相机必须支持全局快门。所有像素必须能同时看到场景。例如,手机摄像头无法做到这一点;它们有一个滚动快门。如果没有全局快门,快速移动的对象会留下拖尾残影。
- 相机本身不会出现过热情况,并且需要支持数小时的可靠运行。
- 装置和相机必须坚固耐用。如果相机保持在一个位置,后期处理将变得更容易,并且可以带来更高的质量。
- 要能相对简单地利用现成组件来构建装置,方便其他人复制,修理和更换组件。
我们在设计中解决了这些需求。Point Grey的工业级相机支持全局快门,长时间运行时不会过热。相机可以用螺栓固定在铝质底盘上。外壳由粉末喷涂钢制成,可以保护内部组件免受损坏。
4. 相机控制和捕捉软件与存储
硬件设计完成后,相机控制和数据移动成为了下一个需要解决的重大问题。由于希望可以修改系统,所以Facebook选择了基于Linux的PC来控相机。这台PC包含足够的系统带宽,可以支持从所有相机向磁盘传输实时视频流。
此外,相机的同步特性意味着需要一个实时线程来捕获帧,然后是其他较低优先级的缓冲磁盘写入线程,从而确保捕获所有帧并且不会出现丢失。在30Hz时,这需要17Gb/s的持续传输速率。同样,Facebook使用8通道RAID SSD磁盘系统来跟上同步相机捕获速率。搭配稳固的相机,持续拍摄可以从数分钟到数小时不等。
复杂的事情:相机控制必须远程执行,因为相机本身需要捕捉完整的360场景。Facebook的解决方案是通过一个简单的网络界面来控制相机,这样你就可以利用任何支持HTML浏览器的设备来控制相机。
在Facebook的系统中,曝光,快门速度,模拟传感器增益和帧速率都是以相机为单位进行控制。全局范围内的相机都是通过同一软件进行同步。Facebook捕捉“原始”bayer数据以确保整个图像渲染管道的质量。
5. 拼接软件
将所有图像拼接在一起的计算成像算法可以说是系统的核心,代表着系统中最困难的部分。幸运的是,过去20年的计算摄影和计算机视觉研究,以及60年的航空立体摄影测量为我们提供了强有力的起点。
由于拼接过程会生成最终的视频图像,因此图像处理和计算成像管道中的视觉图像质量至关重要。数字图像捕捉的一个微妙方面是,你必须小心计算每一步,从而维持一致的像素质量。在任何一步都很容易错误地降低图像质量,而之后这个分辨率将永远丢失。如果重复数次,质量将完全受损。
Facebook分几步处理数据:
-
将原始bayer输入图像转换为伽玛校正后的RGB。
- 相机相互颜色校正
- 反渐
- 伽马和色调曲线
- 锐化(去卷积)
- 像素去马赛克
- 执行固有图像校正,从而消除镜头失真,并且将图像重投影到极坐标系统中。
- 捆绑调整后的外部相机相互校正,以补偿照相机定向中的轻微偏差。
- 在相机之间执行光流以计算左右眼的立体视差。
- 根据光流分别对左眼和右眼视图合成每个视角方向的虚拟相机新视图。
- 合成左右光流中的最终像素。
关键的算法元素是光流概念。Facebook的代码建立在光流算法的基础之上,而该算法在数学上比其他拼接解决方案更加复杂,但能够提供更好的结果。光流允许Facebook计算相机之间的左右眼立体视差,并分别为左眼和右眼合成新视图。事实上,光流仍然是一个开放的研究领域,因为它是一个不适定逆算问题。它的不适定性源于遮挡导致的模糊:一台相机无法看到相邻相机可以看到的画面。虽然这可以通过多台相机和时变捕捉进行缓解,但它仍然是一个巨大的挑战。我们的代码使用光流计算左右眼立体视差,利用这一点自动生成无缝的立体360度全景图。结果可以在一夜之间生成,这大大缩短了后期制作的时间。
6. 播放
Facebook为每只眼睛输出4K、6K和8K。由于高带宽和数据需求,6K和8K输出需要为在Gear VR使用动态流传输(Dynamic Streaming)编解码器。系统的输出文件可以在Oculus Rift和Gear VR等VR头显中浏览。这同时可以在Facebook News Feed等地方输出和共享。在这种情况下只会显示其中一个单视场视图,但你可以下载完整的立体视频。
7. 未来
Facebook认为他们成功地创造了一种可靠的,制作就绪型相机,这是一种最先进的捕捉和拼接解决方案。然而,我们知道还有更多工作要做。
技术挑战依然存在。光学视场,传感器分辨率,相机布局,以及相机数量的不同组合提出了相当复杂的工程设计挑战。更多的相机有助于简化后续拼接工作,但也会增加处理数据所需的捕获数据量和带宽。 同样,增加传感器分辨率可以提高最终渲染质量,但代价是带宽和数据量的增加。
在光学方面,增加每个相机的视场有助于减少相机数量,或以空间分辨率为代价减少所需的拼接量。广角光学元件也对传感器后焦距和角度误差更敏感。
这里没有一个正确的答案,我们知道这里有很多尚未探索的概念。事实上,这是Facebook提供免费设计的原因之一。Facebook希望其他人可以加入其中,与Facebook一起完善这项技术。从经验中得知,一个更广泛的社区可以比自己更快地推动事物的发展。