首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Facebook VR方案总结(三)

Facebook VR方案总结(三)

作者头像
用户1324186
发布2018-03-05 17:16:56
1.7K0
发布2018-03-05 17:16:56
举报
文章被收录于专栏:媒矿工厂媒矿工厂媒矿工厂

全景视频,也称360°视频,是一种新一代的视频显示技术,用户置于球形区域中央,可以任意在拍摄角度周围360度地观看动态视频,而不受时间、空间和地域的限制,有一种身临其境的感受。全景视频具有景深、动态图像、声音等因子,具备声画对位、声画同步的特性,有着良好的沉浸感,极有可能成为未来的视频新型载体。

图1 全景视频中的一帧画面

针对全景视频的拍摄装置,大致可以分为专业级和体验级两种。专业级设备的目标主要是提高全景视频的分辨率,高分辨率意味着更优质的画面细节和“纱窗效应”的减弱,可以大大提高用户的体验。在之前的文章中,我们曾详细介绍过Facebook 推出的一款全景视频拍摄设备 Surround 360。再简要描述下,硬件方面,Surround 360 采用了17个摄像头,侧面环绕14个广角摄像头,上面覆盖了1个鱼眼摄像头,下面有2个鱼眼摄像头,确保水平和垂直方向360度都有画面;软件方面,Surround 360采用了全局快门,确保每个摄像头曝光一致。输出视频分辨率最高可达8K。

图2 Surround 360基本构造

然而,据Facebook 透露,打造一台Surround 360所需材料的成本是3万美金,这绝非一般人可以负担起的。为了可以让大众体验到VR技术对生活的改变,现如今市面上也有不少体验级的全景视频拍摄设备,价格在几千元左右,硬件主要是通过至少两个鱼眼镜头来覆盖近乎水平垂直360度的内容。人们可以通过这类相机记录生活的点点滴滴,与朋友们分享快乐,享受VR技术给现实生活增添的一抹色彩。

至于全景视频的拍摄方式,对于专业级的设备,毫无疑问都是采用固定拍摄的方式,因为在图像拼接的过程中,每个镜头获取的光场信息,图像的亮度、色调等等一定要保持一致,否则在之后的特征点匹配、视差处理、图像融合的过程中,误差逐渐放大,在生成的图片及视频中会出现明显的接缝甚至畸变。对于体验级的设备,很难去要求用户采用固定拍摄的方式,而且大多数用户也不满足于固定拍摄的效果,往往会采用手持式移动拍摄的方法。摄影者的移动以及手的抖动会引起相机的摆动,或多或少会产生上述的一些问题,除此之外,画面的抖动会非常影响视觉舒适度和眩晕感。而且,全景相机很少会像普通的相机一样加入防抖技术,再加上在全景视频中用户可以全方位地观看视频内容,对抖动的敏感度要远高于普通的视频,所以,针对与运动条件下拍摄的全景视频,进行视频稳像的处理来降低拍摄画面的抖动是很有必要的。

视频稳像:

视频稳像,顾名思义,就是对拍摄的视频进行稳像处理,使得原始视频中抖动的画面变得平稳,而尽量不损失画面的清晰度。稳像技术基本分为三类:机械稳像、光学稳像、电子稳像。机械稳像的主要原理是通过一些传感器如陀螺仪来获取相机的运动,相机的处理器控制图像传感器按相反的方向移动,对相机的运动做补偿;光学稳像依靠特殊的元件根据镜头的抖动方向和位移量加以补偿,以得到稳定的图像。这两种稳像方法的缺点在于代价较大、设备携带不便,且稳像效果不够好,难以满足如今视频稳像的需求。而电子稳像通过估计相机的运动路线,在计算机或者其他设备上将视频中的每一帧画面进行移动,使得输出的视频中的运动是平滑的。电子稳像具有更容易实现,更精确,更灵活,成本更低等优点,是目前视频稳像领域的主流研究方向。

目前大部分的电子稳像都属于基于运动的算法,适用于抖动较为平缓的场景,比如平移运动、小角度的旋转运动等;亦或是视频中运动物体目标较小,容易跟踪。算法主要分为三个步骤:全局运动估计、运动补偿和图像生成,如下图所示。全局运动指的是处于主导地位的像素运动,也可以表示为相机的运动,根据如何估计全局运动可以将算法分为2D稳像和3D稳像两类。运动补偿是算法的核心,指的是从较为抖动的全局运动中分离出抖动和主观运动,并从中分离出主导运动。图像生成指的是将原始视频做处理,输出稳定后视频的过程。

图3 基于运动的电子稳像算法的基本处理流程图

2D稳像算法通过相邻帧之间的运动模型来表示相机在二维平面内的全局运动,常用的方法是特征点法。这些方法仅考虑二维平面内的相机运动轨迹,与实际相机的运动可能会有些许偏差;3D稳像算法主要依靠Structure-from-Motion(SfM)进行,通过2D图像序列来计算图像中物体的3D结构的技术,这种算法复杂度非常大,且适用场景较少,比如视频中缺少视差信息,拍摄中镜头有缩放等等情况,很难计算出有效的三位结构。

以前述基本原理为基础,研究人员不断提出性能更优的视频稳像算法。代表性的算法之一是Grundmann等人2011年提出的基于L1范数的视频稳像算法【1】,该算法性能突出,复杂度不高,后来被集成应用于Youtube 上载视频的在线编辑软件中,成为当前视频稳像算法研究的benchmark。性能继续的提升方向有多种途径:一个思路是设计更合理的重建路径和优化目标,如用L1+L2范数代替L1,可以保留更多的场景内容,减少黑边【2】;另外一个思路是利用与视频同步的位置/姿态传感器数据,直接估计出运动参数,进而降低SfM的难度,该类技术特别适用于智能手机上的视频稳像【3】。下面的视频展示了【2】中算法的稳像结果,可以看出,算法有着很好的稳像效果,使抖动的画面变得平稳。

然而,一般的视频稳像算法并不适用于全景视频,因为全景视频覆盖水平垂直360°的内容,然后用Equirectangular投影方式(ERP)将三维球形画面映射到二维平面上。所以说ERP投影得到的视频中的抖动并不能表示相机的运动,无法得到准确的全局估计。因此,针对全景视频的稳像技术研究是一项重要且具备挑战性的研究。

针对全景视频的稳像,Facebook Research的Johannes Koef提出了一种混合的3D-2D算法【4】【5】:利用3D分析估计出适当间隔的关键帧的相对旋转;然后恢复关键帧之间相对旋转,用内插计算对内部帧进行调整;最后对内部帧的旋转进行2D优化,最大化特征点轨迹的平滑度。这种算法针对全景视频,结合了2D稳像算法和3D稳像算法的优点,有着不错的效果。并且,相较于其他的稳像算法,这种算法有着如下的优点:

(1)准确性:用3D分析的方法估计关键帧之间的相对旋转,不会混淆旋转/平移运动和非静态异常特征等。

(2)鲁棒性:关键帧被间隔开,使得帧与帧之间有着足够的运动,可以让3D估计有着更可靠的结果。

(3)正则化:关键帧之间的真实相对旋转为内部帧的2D优化提供正则化基础。这限制了的变形旋转运动模型,防止产生新的摆动伪影,并且对收敛具有强的积极效果。

(4)速度:虽然算法对内部帧使用非线性优化方法,但问题具有良性误差函数,良好初始化,并快速收敛。

图4 混合3D-2D算法示意图

算法描述:

与其他稳像算法类似,第一步都是从跟踪特征点的运动开始。因为全景视频的输入多为Equirectangular投影方式(ERP),这种投影方式在南北两极的地方会产生无限的尺寸拉伸,所以需要将视频帧转换为较少失真的CubeMap投影方式(立方图投影),进行特征点的提取和跟踪。整个过程使用256x256像素的立方体面,独立于输入分辨率,并且只使用亮度平面进行跟踪。算法使用Kanade–Lucas–Tomasi feature tracker(KLT tracker)作为特征点的提取程序,并使用金字塔形Lukas-Kanade跟踪算法进行特征点的跟踪。

图5 ERP投影和CubeMap投影的对应位置关系

算法当中有一个“关键帧”的概念,它们发挥非常重要的作用,因为整个算法的基础就是估计它们之间的相对旋转,然后形成用于后续2D优化的正则化基础。至于如何选取关键帧,算法使用Shi-Tomasi算法生成特征点列表,通过递减特征强度排序,排查列表,当一个特征远离任何先前选择或主动跟踪的特征超过2°时,将其设为关键帧,并产生一个新的轨道,用于后续的跟踪。

下一步是估计连续关键帧之间的相对旋转。这里利用OpenGV库实现了Nister和Kneip的五点算法:给点两台摄像机拍摄画面对应匹配的五个点对,可以估计出摄像机之间的相对旋转和平移。使用这种3D分析的方法,可以从平移运动中区分出真实的旋转,使得估计的结果更加接近实际的运动。

现在关键帧之间的旋转得到了补偿,接下来固定它们之间的旋转,研究内部帧之间的旋转。之前有提到过,这里不再采用3D分析的方法,而是使用2D优化的方法来稳定内部帧之间的旋转。优化的目标是对于非关键帧,找到最理想的旋转,最大化特征点轨迹的平滑度。在优化过程中,保持关键帧的旋转固定,它们为正则化提供了基础并增加了收敛性。算法将整个优化过程抽象化为非线性最小二乘问题,然后使用Ceres库解决它。

完成上述的优化过程,可以消除大部分的相机抖动,但是由于一些小的平移运动、视差、镜头校准、拼接伪影、卷帘快门摆动等,处理后的结果往往还会有一部分残余的抖动。此时需要为运动模型添加一些灵活性来解决这个问题,使得它可以适应并消除轻微的图像变形。同时,模型也不能变得过于灵活,所以需要适当地被约束。该算法设计了一个“变形-旋转”模型来处理上面提到的一些问题。在这个模型中,在单位球体上均匀分布6个顶点,分别相差90°并将整个球体分割成8个全等的球面三角形,每个八分圆一个。对于每个顶点,记录下它的旋转值,然后利用球面重心坐标插值计算这些顶点的旋转,并将其集成到原始的旋转中。最后,将新的运动模型置于稳定优化问题当中,得到最终的稳像结果。

图6“变形-旋转”运动模型

成果展示:

这里用一段视频来展示最终的稳像效果,视频中一共选取了三个场景,分别是行走、骑行、划船的场景,都有着不同程度的抖动。从视频中可以看出,稳像的效果非常明显,画面的抖动减少了很多,整个场景变得十分平稳。

稳像算法除了处理效果,运行时间也是研究的关键。该算法不像大多数稳像算法一样采用GPU加速来减少处理时间,而是仅通过CPU来进行处理。虽然CPU在计算变换坐标时比较慢,但是整个变换过程是平稳的,为了得到更好的效果,代码实现的过程中作者并未采用GPU加速,而是通过计算每个8x8像素的变换坐标,然后对其进行双线性插值的方法优化了计算变换坐标的过程。实验采用的CPU为Intel Core i7-5930K CPU,主频3.5GHz,整个稳像过程的耗时如下图所示,可以看出,对于每一帧,稳像过程仅需要20多毫秒即可完成。在一般的播放器中,每一帧大约需要30毫秒来播放,可以预测,再经过一些算法上的改进,整个稳像过程甚至可以做到低延迟实时稳像。

图7 混合3D-2D算法的运行时间(每一帧)

除了运行时间,该算法在降低比特率方面也有着很好的效果,下图分析了以H.264/MPEG-4 AVC格式编码的视频,设置相同的质量参数时比特率的降低。可以看出经过稳像算法处理后,比特率的降低基本是稳定的,大约在10%到20%中间。图中还可以看出较为平缓的视频(右图)得到的结果更加稳定,可能是由于经过稳像过程,场景变得近乎静止,存在冗余的信息。

图8 稳像算法带来的比特率的降低

该算法有着很好的稳像效果,但是仍然存在着一些缺陷。比如当面对比较强的滚动快门变形的时候,尤其是频率大于帧速率的高频变形时,该算法的“变形-旋转”模型不能很好地表示这种变形,这样的话,这些变形不会被完全消除掉,使得最终的结果有些许瑕疵。此外,“变形-旋转”模型在实际的运行中偶尔会引入一些轻微的摆动,这种摆动相对平滑,在成果视频中也能够观察到。最后,对于一些包含标志或是静态文字的视频,该稳像算法在稳定抖动的背景时,会使这些静态的标志或文字产生摇摆。

总结:

全景视频是现阶段VR的核心、本质,但仍存在着一些问题和难关。除了分辨率不足的大方向,还有就是现如今大多数的全景视频都是固定拍摄的,给人们的体验有些乏味。针对提升分辨率的方向,很多研究者都在着手于对高分辨率全景视频流的编码、传输等方面的研究;而对于运动条件拍摄的全景视频,会引起强烈的抖动是限制其广泛传播的一大原因。我们认为,Facebook在全景视频稳像方面的研究,为这个领域的进一步探索提供了新的benchmark。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档