如何用AI实现视频防抖?还是无需裁剪画面的那种 | 谷歌&台湾大学

核心思想:融合视频中多个相邻帧的信息

鱼羊 发自 凹非寺
量子位 报道 | 公众号 QbitAI

右边的画面,是不是比左边的画面看上去稳定许多?

如何用AI实现视频防抖?还是无需裁剪画面的那种

这样的效果,大家可能并不陌生。现在,不少手机厂商都为自家手机配备了类似的防抖算法,为你拍摄生活Vlog提供便利。

不过,目前的智能手机在面对复杂的抖动时,主要是通过电子防抖(EIS)的方式来实现画面的稳定。

也就是说,需要对画面的边界进行裁剪,通过“后期处理”,实现画面的稳定:

如何用AI实现视频防抖?还是无需裁剪画面的那种

△图片来自TDK

而现在,一项来自台湾大学、谷歌、弗吉尼亚理工大学和加州大学默塞德分校等研究机构的论文,提出了一种无需裁剪的全帧视频稳定算法

即使是奔跑中拍摄的画面,也能稳定不少。

如何用AI实现视频防抖?还是无需裁剪画面的那种

那么,这只AI具体是如何做到防抖的?

方法原理

该方法的核心思想,是融合视频中多个相邻帧的信息,来呈现无需裁剪的完整稳定视频。

具体而言,对于输入视频,首先对每一帧图像特征进行编码,并在目标时间戳处将相邻帧翘曲至虚拟相机空间。

这里面主要用到了目标帧到关键帧的翘曲场,以及从关键帧到相邻帧的估计光流两个信息,这样,就可以通过链接流向量,计算目标帧到相邻帧的翘曲场。

然后,融合这些特征。

如何用AI实现视频防抖?还是无需裁剪画面的那种

传统的全景图像拼接算法通常是在图像级别进行融合。这样做的缺点在于,如果估计光流不可靠,就会产生伪影。

而将图像编码为CNN特征,再在特征空间中进行融合的方法更具鲁棒性,但又往往会产生过于模糊的图像(如下图b)。

于是,研究人员提出结合两种策略的优点:首先将图像编码为CNN特征,然后从多个帧中融合翘曲特征。

对于每个源帧,研究人员将融合特征图和各个翘曲特征一起,解码成输出帧和相关的置信度图。

最后,通过使用生成图像的加权平均,来产生最终的输出帧。

如何用AI实现视频防抖?还是无需裁剪画面的那种

实验结果

研究人员在NUS数据集和自拍视频数据集上验证了该方法。

如何用AI实现视频防抖?还是无需裁剪画面的那种

△标红的为最佳结果

在上表中,DIFRINT方法同样是无需裁剪的方法。虽然该方法在失真值(distortion value)上略优于本文方法,但如下图所示,DIFRINT的结果中有明显的局部失真。

如何用AI实现视频防抖?还是无需裁剪画面的那种

总体而言,本文提出的方法优于此前的SOTA方法。

不过,论文也谈到了该方法的局限性,比如对卷帘式快门无效;如果视频帧间亮度变化很大,会导致明显的接缝;预处理阶段的平滑方法可能会导致失真等。

如何用AI实现视频防抖?还是无需裁剪画面的那种

传送门

根据作者介绍,该项目即将开源,如果感兴趣,不妨先mark一下~

论文地址:
https://arxiv.org/abs/2102.06205

项目地址:
https://alex04072000.github.io/NeRViS/

— 完 —

版权所有,未经授权不得以任何形式转载及使用,违者必究。