VR中的六自由度(6 DOF)探索----从深度信息的角度

国外一开源,国内就自主----基于光流法的全景图像的拼接

2016年年中facebook开源了surround360的全景相机软硬件方案。从facebook网站上的项目介绍资料,到github上托管的源代码,我们可以知道Facebook使用了光流法来解决相机图像的拼接问题。并且,比起传统的opencv实现的lukas kanade的光流法(KLT),fb开源的光流法具有更好的效果。

传统的稀疏的光流法采用了角点检测+最小二乘法+金字塔的方法,去跟踪相邻时刻的图像的部分像素的微小运动。这方面的资料网上很多,关键词:opencv+光流法。

fb的光流法首先是稠密的,其次也采用了金字塔的方法,from coarse to fine(由粗到精)的搜索,再次,它提出了自己设计的能量函数。一般的能量函数由差异的惩罚项+平滑项组成,fb在此基础上又加了一个正则项,使光流不会太飘。另外,该算法还加上了上一帧的光流信息作为约束。fb用帧间约束的工具使光流随帧数的增加而愈加精确。(其实还可以用上一帧的信息来加速,跑了三四个demo试了一下,速度快了若干毫秒,并且精度基本没变化。不知道fb不沿用上一帧信息来加速的原因,可能是因为本来就是离线运算,为了保持较稳定的精度吧。)

得到光流信息之后,相当于得到了画面的深度。拼接算法可基于光流信息,进行较好的拼接。本质上是左右眼的重叠区域根据光流的信息,生成novel view。

当前市场上的VR头盔,大部分是只允许用户旋转头部,进行360度的观看。Occulus Rift、HTC vive这类设备,能够进行头盔的定位,因此支持头盔的移动动作。六自由度(6 degree of freedom)的VR漫游,就是支持头盔进行xyz三个方向的旋转(三个自由度)和平移(三个自由度)。

光流这么好。所以从下半年开始,国内技术比较讲究的厂商基本纷纷用光流了,比如insta360。当然也做的挺好,insta pro 8K已经跟Google合作了。

基于Structure from Motion的全景图像的深度信息提取

如果我们现在手上已经有了全景相机,不论它是用什么方法进行的拼接,它只能给我们提供全景的图像信息。

但是,只有图像信息只能进行头部的旋转来看360度,移动头部并没有什么反应。所以,要想获得6DOF的VR体验,就需要额外提供与全景图像相匹配的深度信息。问题就成了:如何从全景图像当中获取深度信息?

从全景图像当中获取深度信息的问题,基本等同于从普通的图像中获取深度信息。从图像中获取深度,一般可以采用Structure from Motion(SfM)的方法。

相机在运动的过程中,拍摄了连续的多幅图像,这些图像当中有一些共同的特征点。SfM以这些特征点的深度信息,以及相机的旋转和平移变量作为未知量,以这些图像的共同的特征点在图像中的像素坐标和颜色强度为已知量,建立目标函数,通过数学方法来最小化该目标函数,使得该目标函数最小的解,就是相机的运动参数,以及我们所需要的图像上的点的深度信息。(这是一种稀疏的方法的描述,同样可以使用稠密的方法,比如lsd-slam。)

在上一段,我们知道了SfM是从运动中得到图像的深度信息。所以要想得到全景图像的信息,我们基本就要依靠录制运动视频来作为输入。

在这里,有两篇比较好的论文值得一看。

一篇是KAIST在ECCV会议上发表的All-around Depth from Small Motion with A Spherical Panoramic Camera,利用微小的运动来得到全景图像的深度。所谓微小的运动,可以视作我们在拍摄的时候,手指的抖动,造成了相机的运动。如果相机速度足够,就可以获得足够多帧来重构这个运动的轨迹和图像的深度信息。题外话,KAIST同样也在拼接上做了一些值得关注的工作。

另外一篇,就是abode的6-DOF VR Videos with a Single 360-Camera,就是正常拍视频,然后利用SfM来进行图像深度信息的恢复。这里我的收获,是abode在获得稠密深度的情况下,给定一个VR头盔的位置,要根据深度信息生成对应的全景图的时候,采用的是多个三角形的纹理贴图的映射方式,值得借鉴。

基于相机立体匹配与激光雷达----聊聊HypeVR

值得一提的是,HypeVR的全景3D相机阵列采用了14台red dragon 6K相机和1台velodyne的3D激光雷达。这一套挺贵的,杭州一套房了。14台红龙就值400万左右……intel的VR合作伙伴就是壕。(刚才查了一下,velodyne的激光雷达也超贵,从7万到70万不等……想做这个方案的可能要买个国产的先做做实验了。)

从这个方案也可以看出,多台红龙6K的高分辨率同步方案也是可以做的。

我们可以从搜索到hypevr相关的专利。从专利文件中可知,hypevr采用14台相机来做全景图像的拼接,并且从相机提取初步的深度,并且利用激光雷达给出高精确度的深度信息,来对图像立体匹配得到深度信息进行辅助,以得到高精确度的3D信息以及高分辨率的图像。据悉,hypevr的demo每帧信息有3GB这么大。嗯……

另外,hypevr在深度提取的过程中,先对天空的区域进行了检测,并将该区域的深度设为无穷远。这一步骤减轻了深度计算的工作量,值得学习。

先写到这里,图和链接先不配了。

你可能感兴趣的:(VR中的六自由度(6 DOF)探索----从深度信息的角度)