Facebook Surround 360是Facebook2016年7月发布的开源360°三维全景视频拍摄系统,主要功能是为VR拍摄3D全景视频素材。它长这个样子:

看起来酷炫的很,当然功能也很强大,后面会介绍。介绍surround360之前先看一下该领域中其他公司做的相关产品吧

领域动态

Google +GoPro

Google与运动相机制造商GoPro合作推出了Odyssey,一个由16个相机组成的价值15000美元的3D360°全景拍摄设备,如下

后来GoPro又推出了一个相对简易的由6个相机组成的2D360°全景Omni:

Nokia

Nokia也推出了一个像足球一样的具有8个相机的2D360°专业VR摄录机Ozo:

VideoStitch

VideoStitch推出了一个具有4个相机的2D360°全景相机ORAH 4i:

此外,还有不少公司推出了由两个背靠背式鱼眼相机组成的2D360°全景相机,比如:

Sumsung

三星2016年也推出了消费者版的2D360°全景gear 360相机:

Ricoh

日本理光公司也推出了像遥控器一样的2D360°全景相机thetaS:

除此之外,还有LG等公司也有相应的产品,在此就列举了。
注意以上的产品,只有Surround360和Odyssey可以实现3D360°全景视频,其他的产品都是2D360°全景的。价格相差很大,具体到参数细节也都有不少差别,可以从他们的产品官网上做个比较。

Surround360简介

Surround360外观和GoPro的Odyssey比较相似,它的侧面是由14个相机围成一个圆盘相机阵列,不同之处是,Surround360在顶部有一个鱼眼镜头,在底部也有两个鱼眼镜头。底部之所以配备两个鱼眼镜头,是因为通过两个鱼眼相机视角的交叉重叠可以通过算法去掉底部的支架,这样最终呈现的就是比较完美的360°无死角三维全景图。这解决了大部分360相机的一个痛点。

以下内容主要来源于https://code.facebook.com/posts/1755691291326688/introducing-facebook-surround-360-an-open-high-quality-3d-360-video-capture-system/

主要特点:

  1. GitHub上开源相机硬件设计方案及对应的图像拼接源代码,开发者和内容生产商都可以免费使用,加速3D 360°生态系统发展。
  2. 计算左右眼的立体视差是基于Optical flow的算法,算法可以自动拼接生成360°三维立体全景视频。拼接算法相对于传统的人工方法,极大减少了后处理时间,效率大大提高,运行时间从几个星期缩短到一天。
  3. 可输出每只眼睛高达4K,6K,或8K的分辨率。双倍8K的输出可以利用Facebook自己的动态流输出技术在Gear VR设备上播放。

VR拍摄系统的挑战

目前比较主流的是单视场360°全景,通常使用两个或者更多的相机来获得360°的全景,但是这些全景图看起来比较“扁平”,没有三维立体感。如果想要获得3D-360全景视频就没那么容易了,因为相对于单视角全景视频,3D-360视频需要深度信息。Surround360用两个相机(相当于左右眼)拍摄同一位置来获得深度,这就意味着,必须使用10~20个相机对周围360°内的每个方向都进行立体拍摄,并且所有相机必须严格地全局同步地进行每秒30~60帧的拍摄。最后,需要融合(拼接)所有的相机拍摄的图片成为一张无缝全景图,而且必须进行两次操作:第一次产生左眼的虚拟位置、第二次产生右眼的虚拟位置。

VR拍摄系统

Surround360的VR拍摄系统包含三个部分:

1. 硬件(相机和对相机进行控制的计算机)

1) 所有相机必须具有全局同步功能。每个相机的每一帧和其他相机的同一时间的对应视频的时间差别必须小于一毫秒。如果不能达到同步要求,很难把他们拼接成为一张清晰一致的图片。
2) 每个相机必须具有全局快门。同一时间所有像素必须对应同一场景。如果做不到全局快门,快速移动的物体会在对角线方向变的模糊。
3) 相机必须能够连续可靠地运行几个小时而不过热;相机和固定相机的机架必须稳固连接,保证在长时间的使用过程中不会产生错位;相机机架设计制作必须简单,方便复制、修理、替换元件。
4) 为了满足上述严苛的条件,Facebook采用工业级的Point Gray相机:具备全局快门,运行很长时间不会过热。每个相机用螺栓牢固地连结到铝制底盘,外壳是带有涂层的钢结构,可以很好地保护相机内部的部件。

2. 相机控制软件(用于同步)

1) Facebook使用了基于Linux的具有足够系统带宽的PC从相机里传输实时的视频流到硬盘。相机同步要求实时的线程来保证能够获取所有的帧且不会丢帧。假设视频为30Hz(每秒30帧),则需要17 Gb / s的稳定的传输速率。Surround360使用了8路5级SSD RAID磁盘系统进行存储,可以支持几个小时的连续拍摄。
2) 为了保证相机在拍摄360°的视频内容时不受操作人员的影响,Surround360采用了一个简单web接口来远程控制相机的拍摄,这使得任何支持HTML浏览器的设备均可控制相机。
3) 以每个相机为基础的定制的图像获取软件可以对每个摄像头的曝光,快门速度,模拟传感器增益、帧率进行控制。相机由同一软件进行控制实现全局同步。为保证图像渲染阶段的图像质量,实际处理的数据为Bayer格式的RAW数据。

3. 图像拼接及渲染软件

图像拼接算法是整个系统的中枢,也是系统中最具有挑战的部分。由于拼接处理产生最终的视频图像,因此这部分的图像处理和成像计算极为重要。必须在计算的每个步骤确保像素质量。任何一步图像质量受损之后,就不可能挽回了。这样的情况重复几次之后,图像质量就会完全不可接受。
图像数据处理分以下几个步骤:
1). 转换RAW Bayer数据到伽马校正后的RGB。主要包括:摄像头之间的颜色校准、暗角消除、Gamma和色调曲线、锐化(逆向卷积)、去马赛克图像复原。
2). 相机内参校正,用于去除镜头畸变并将图像重投影到极坐标系。
3). 通过光束平差之后相机之间的外部参数校正来补偿摄像头之间的方向偏差。
4). 对每对相邻的摄像头进行光流计算,用于计算左右眼之间的立体视差。
5). 基于光流的左眼和右眼视图,分别合成虚拟相机每个视角方位的新视图。
6). 最终合成左眼和右眼像素。
Surround360拼接算法关键的一个概念就是光流,和其他拼接算法相比,使用光流在数学上麻烦一些,但是可以产生更好的效果。利用光流可以计算相机左右眼的立体视差,从而分别为左右眼合成新视图。然后,把顶上和底下的相机融入侧面相机, 类似地用两张图之间的光流来匹配对应同一个像素点在两张图中的位置。光流法实际是一个不适定逆问题,其不适定性源于由遮挡引起的歧义:一个相机不可能看到相邻相机看到的。尽管通过构建多个相机和时变捕获可以减轻这个问题,但这仍然是一个很困难的问题。Surround360用光流法来产生左右眼视差,从而自动生成无缝的360°全景图,这节省了大量的后处理时间。

4.播放

Surround360可输出每只眼睛高达4K,6K,8K的分辨率。由于高带宽和数据量的要求,6k,8k的输出需要利用Facebook Gear VR的动态流编码技术,该技术是工业标准的2倍。输出文件可以在像Oculus Rift 和 Gear VR这样的VR设备上播放。

存在的问题

1) 光流场视角、光学传感器分辨率、相机排列方式、相机数目等这些因素的不同组合在工业设计上是一个非常复杂的问题。更多的相机数目可以降低拼接难度,但同时也增加了需要处理和传输的大量数据。同样的,增加图像的分辨率提供了最终渲染的图片质量但是也带来了了大量的数据和占用带宽的代价。
2) 光学方面,增加相机的视场角可以减少相机的数目,降低拼接的图像数目,不过是以降低空间分辨率为代价。广角镜头也对后焦距和角度错位更加敏感。

参考资料

https://code.facebook.com/posts/1755691291326688/introducing-facebook-surround-360-an-open-high-quality-3d-360-video-capture-system/

Facebook Surround360 学习笔记--(1)系统简介相关推荐

  1. Facebook Surround360 学习笔记--(4)色彩/视差不一致问题

    surround360的开源资料地址: https://github.com/facebook/Surround360 下载好代码和测试数据集,配置好环境,关于环境配置可以参考这篇博客,写的挺详细: ...

  2. Facebook Surround360 学习笔记--(2)算法原理

    本篇从宏观上介绍surround360的算法流程和每个步骤的原理,主要参考surround360官方网页(见参考)上的介绍. Surround360开源项目包含了从相机阵列的硬件设计到图像拼接的软件算 ...

  3. Facebook Surround360 学习笔记--(3)硬件设计要点

    如果自己想模仿surround360设计一款3D360°的设备,硬件选择有什么要注意的吗? 圆盘设计有要求吗? 回答:有要求,圆盘半径r,侧面相机数目n,侧面相机视场角之间要满足如下的约束关系才能产生 ...

  4. linux学习笔记_1.系统简介

    Linux 嵌入式Linux的四个要素: •Toolchain: 为目标设备创建代码所需的编译器和其他工具. •Bootloader: 初始化主板并加载Linux内核的程序 •Kernel: 这是系统 ...

  5. 查理的Linux学习笔记01-Linux系统简介

    文章目录 Unix与Linux发展史 Unix Linux 开源软件简介 Linux应用领域 Linux学习方法 Unix与Linux发展史 Unix Unix与Linux的关系:附属关系 Unix: ...

  6. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  7. 【小猫爪】AUTOSAR学习笔记02-Communication Stack简介

    [小猫爪]AUTOSAR学习笔记02-Communication Stack简介 前言 1 简介 2 CAN消息的传播路径 2.1 Com服务 2.2 Dcm服务 2.3 SM服务和NM服务 3 补充 ...

  8. 【小猫爪】AUTOSAR学习笔记01-AUTOSAR架构简介

    [小猫爪]AUTOSAR学习笔记01-AUTOSAR架构简介 前言 1 背景介绍 2 基本概念 3 方法论 4 分层软件架构 4.1 Application Layer(APP) 4.2 Basic ...

  9. StatQuest学习笔记23——RNA-seq简介

    StatQuest学习笔记23--RNA-seq简介 前言--主要内容 这篇笔记是StatQuest系列笔记的第58节,主要内容是讲RNA-seq的原理.StatQuest系列教程的58到62节是协录 ...

最新文章

  1. 站在巨人的肩膀上,Adrian与dlib中face_recongnition模块的贡献者Adam的采访部分翻译
  2. 机器学习揭示了人类大脑的新见解
  3. 超声波测距测速升压可调中周倒车雷达变频器传感器1:10
  4. Postman接口测试之POST、GET请求方法
  5. java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC
  6. ActiveMQ中Queue消费者
  7. 《位运算技巧以及Leetcode的一些位运算题目》
  8. java linux so_linux平台java调用so动态库
  9. xlwings复制sheet_Python操作Excel的Xlwings教程(六)
  10. mysql叶子结点存储的什么_B+树叶子结点到底存储了什么?
  11. 最近和一个创业中的朋友喝茶聊天
  12. sql2012下载,安装,激活
  13. matlab读取scv文件,matlab如何读取csv文件
  14. mysql ix is_关于MySQL中的共享锁(S)、排它锁(X)、意向共享锁(IS)、意向排它锁(IX)...
  15. 通过SetWindowsHookEx实现跨进程子类化
  16. TensorFlow2.0选择GPU或CPU训练
  17. 基于深度学习的遥感测绘行业解决方案
  18. 【周志华机器学习】十二、计算学习
  19. 事件触发过程(事件流)
  20. 信用卡分销系统源码、分销系统定制贴牌、信用卡三级分销系统源码、信用卡返佣系统OEM...

热门文章

  1. 压缩包密码忘记了打不开?教你用pyhton轻松解决,附视频讲解
  2. 贝尔维尤的无人驾驶汽车网络要来啦!
  3. 用水流的概念来玩硬件(二)----三极管
  4. 在arm开发板上画日本国旗
  5. 福州大学计算机网络技术实验室,实验室提升福州大学网络实践教学能力
  6. ubuntu 16.04挂载2T机械硬盘
  7. 诺基亚(Nokia 5110)5110屏驱动(STM32)
  8. 财务分析中的比率分析——安全性比率
  9. 自己整理的财务知识(财务比率)(英文不标准是为了自己建立自定义字段而已)
  10. 数字金融崛起,科技撬动增长