一种基于多平面的视频稳定方法
技术领域
本发明涉及一种视频稳定方法,特别涉及一种基于多平面的视频稳定方法,属于视频处理领域。
背景技术
近年来,廉价摄像机的数量持续快速增长。尤其是手持摄像机,以其便携性使得人们可以在任何时间,任何地点拍摄视频。但是,手持摄像机的摄像质量不能得到保证。其中,视频抖动是一个重要的问题。由于没有使用专业工具稳定摄像机的路径,使用手持摄像机拍摄的视频无法避免的会有不需要的帧间抖动。视频稳定指的是一系列去除这种抖动的视频增强技术的总称。
传统的视频稳定方法分为2D(二维)方法和3D(三维)方法。2D方法的基本假设是场景中的所有物体都在一个平面上,因此所有相邻帧之间的运动都可以用一个变换矩阵表示。视频稳定的目标因此简化为平滑这些帧间变换矩阵。例如(LITVIN A.,KONRAD J.,KARLW.C.Probabilistic video stabilization usingKalman filtering and mosaicing.In Symposium on Electronic Imaging,Image andVideo Communications(2003),pp.663–674.)构造一个矩阵链并平滑该矩阵链,但是这个方法会产生累计误差。(MATSUSHITAY.,OFE KE.,TANGX.,SHUMH.-Y.Full-frame video stabilization.In Proc.CVPR(2005),pp.50–57.)提出了一个局部方法来避免累计误差。对于每一帧t,该方法计算该帧与它的邻域
中的每一帧i的变换矩阵
然后根据帧t与帧i之间的距离对这些矩阵进行高斯平滑,从而得到从帧t的稳定矩阵S
t
对于运动片段,(GLEICHER M.L.,LIU F.:Re-cinematography:Improvingthe camera dynamics of casual video.ACM Transactions on Multimedia Computing,Communications,and Applications5,1(Oct.2008),2:1–2:28.)首先确定片段两端的帧的稳定矩阵,之后使用插值的方法计算中间帧的稳定矩阵。该方法对于短片段有很好的结果,但是对于长片段会产生累计误差,导致帧图像的扭曲变形。
3D方法首先使用SfM(structure from motion)恢复出场景的三维结构和相机参数,然后通过稳定相机参数来稳定视频。此类方法通常能产生较好的效果,但是SfM非常不稳定,对于许多场景无法恢复出三维结构,导致此方法失败。另外SfM是非常费时的。
(LIU F.,GLEICHERM.,JIN H.,AGARWALA A.Content-preserving warpsfor3D video stabilization.ACM TOG28,3(Aug.2009),44:1–44:9.)提出了一种基于图像的变换方法:CPW(内容保持扭曲)方法。此方法不像传统方法一样对每一帧使用单一变换矩阵进行变换,而是将图像分块,为每个块使用一个单独变换矩阵。通过最小化能量函数:
E=Ed+αEs,
来求得所有变换矩阵。其中:
ES(V1)=ws||V1-(V2+u(V3-V2)+vR90(V3-V2))||2
平面划分是图像视频领域的一个常用的技术,有很多平面划分的算法可以产生较好的结果,如(BAKER S.,SZELISKIR.,ANANDANP.A layered approach tostereo reconstruction.In Proc.CVPR(1998),pp.434–441.),(SINHAS.N.,STEEDLYD.,SZELISKIR.Piecewise planar stereo for image-based rendering.In Proc.ICCV(2009),pp.1881–1888.)等。但是它们需要恢复场景的三维结构,那是非常耗时的。一个新的平面划分方法(ZHOU Z.,JIN H.,MA Y.Robustplane-based structure from motion.In Proc.CVPR(2012),pp.1482–1489.),根据平面与点之间的重投影误差:
判断一个点是否在一个平面上。其中
表示一个平面r在帧i,j之间的变换矩阵,
与
表示同一个点,X
k在帧i与帧j中的位置,如果
小于某个阈值,则认为点X
k在平面r上。
发明内容
为了解决2D视频稳定方法无法很好处理多个平面的场景的问题,同时避免3D方法的大量耗时以及对于许多场景失败的问题,本发明提出一种基于多平面的视频稳定方法,能够更加快速,鲁棒地进行视频稳定。本方法通过分析视频中的平面特征,从视频中提取出平面,并使用一种改进的单平面稳定方法稳定每个平面,最后使用CPW方法得到稳定后的视频。
本发明具体的实现过程如下:
一种基于多平面的视频稳定方法,该方法包括如下步骤:
步骤一、轨迹提取;
使用KLT算法提取视频中的轨迹;
步骤二、锚帧提取与片段划分;
从视频的所有帧中提取出锚帧,其他帧为非锚帧;每两个锚帧与他们之间的所有帧定义为一个片段;
步骤三、平面划分;
对于每个锚帧,使用通过这一帧的所有轨迹将这一帧三角化;对于每两个相邻三角形,根据点与平面的重投影误差计算这两个三角形之间的权值;将所有权值小于某一阈值的相邻三角形合并,得到该锚帧的平面划分;每个片段中的非锚帧进行与该片段的第一个锚帧相同的平面划分;
步骤四、计算锚帧每个平面的稳定矩阵;
对于每一个锚帧中的每一个平面,使用该平面中的所有轨迹计算本锚帧与前后相邻锚帧之间的所有帧的变换矩阵;对这些变换矩阵的对数进行高斯平滑,得到该锚帧该平面的稳定矩阵;
步骤五、计算非锚帧每个平面的稳定矩阵;
对于每个非锚帧中的每个平面,在该片段前后两个锚帧中都有一个平面与之对应,且他们的稳定矩阵已经求得,使用这两个稳定矩阵进行插值,即可得到每个非锚帧中对应平面的稳定矩阵;
步骤六、稳定帧图像计算;
对于每一帧中的每个平面,已经求得一个稳定矩阵;对于每一帧上的每一个轨迹,使用该轨迹对应平面的稳定矩阵计算该轨迹稳定后的位置;在得到每一帧上所有轨迹稳定后的位置后,使用CPW方法即可得到稳定后的帧图像,从而得到稳定后的视频。
有益效果:
(1)传统的2D视频稳定方法将整个场景当作一个平面,这样可以极大地简化问题并减少计算量。但是,这个假设不符合大部分真实场景,尤其是对于人工场景,比如楼房或者室内场景。这些场景通常会出现明显的多平面结构,并且平面之间的夹角很大(通常是90度),这使得单平面方法会产生明显的变形。通过使用多平面的视频稳定方法,可以有效地弥补单平面方法的不足。
(2)传统的3D方法需要恢复出场景的三维结构,这是一个非常耗时的工作,并且非常不稳定,对于很多场景无法正常工作。通过使用多平面的方法,可以得到与3D方法相近的结果,同时避免了使用SfM计算场景的三维结构,极大地提高了效率与鲁棒性。
附图说明
图1是本发明视频稳定方法的流程图;
图2是平面划分示意图;
具体实施方式
下面结合附图对本发明方法的实施方式做详细说明。
一种基于多平面的视频稳定方法,该方法首先从视频的所有帧中提取轨迹;根据提取到的轨迹,提取少量关键帧作为锚帧,并将视频分成若干片段;将每个锚帧三角化,通过合并重投影误差小的相邻三角形,将锚帧及对应片段划分平面;对于锚帧的每个平面,使用该平面包含的所有轨迹,计算该平面对应的帧间变换矩阵,平滑锚帧与附近若干帧的帧间变换矩阵,得到该平面在该锚帧的稳定矩阵;对于非锚帧的每个平面,使用该帧前后两个锚帧的对应平面的稳定矩阵,通过插值计算稳定矩阵;对每帧上的每个轨迹,使用该轨迹在该帧的稳定矩阵计算稳定之后该轨迹的位置;使用CPW计算稳定后的每一帧图像,具体流程图如图1所示。
一种基于多平面的视频稳定方法,其具体实现过程如下:
步骤一、轨迹提取;
使用KLT(SHI J.B.,TOMASI C.Good features to track.In Proc.CVPR(1994),pp.593–600.)算法提取视频中的所有轨迹,表示为
其中α<β,表示第k条轨迹的起始帧和终止帧,每一条轨迹都是由一组2D点
组成的,其中α≤i≤β,,
表示第i帧I
i中的点,这一组点对应同一个3D点X
k;
步骤二、锚帧提取与片段划分;
将第一帧I
1标记为第一个锚帧
所有从第一帧开始的轨迹的集合记为
接着按顺序找到第一个帧,使得在该帧及之前,T
1中的轨迹都没有中断,而该帧之后,有轨迹中断,将该帧定位第二个锚帧f
2。重复此操作直到遇到视频的最后一帧,将其定为最后一个锚帧、f
M+1。所有锚帧的集合为
它们将视频的所有帧分为M个片段:
其中每一个片段的轨迹都是连续的,没有中断;
步骤三、平面划分;
对于每个锚帧,使用DT(Delaunay triangulation)方法,根据该帧上的所有轨迹对该帧进行三角化,得到了一组三角形
对于每个公共边
我们使用重投影误差定义一个可靠性权值表示两个相邻三角形在一个平面上的可能性。结合附图2,对于一对相邻三角形
和
它们有公共边
在i,j两帧之间的权值为:
其中
表示同一平面在两帧之间的变换矩阵,它通过三角形在这两帧中的对应点和这两帧的基础矩阵计算:
A=[e′]×fij,
V=(Nd)d=1,2,3
边
的最终权值为当前锚帧和当前片段之间所有帧之间的权值的平均值
其中#Sh是就片段Sh中帧的个数;
计算出所有相邻边的权值之后,将小于某一阈值ε.的所有边对应的三角形合并到同一个平面,即可得到当前锚帧的平面划分Π={πr},其中每个平面πr代表某一平面r上的所有三角形的所有轨迹;
步骤四、计算锚帧每个平面的稳定矩阵;
对于每个锚帧上的每个平面,通过使用所有位于该平面的轨迹,可以计算它与两侧片段中所有帧的变换矩阵Hij,使用高斯核平滑该矩阵的对数:
即可得到该平面的稳定矩阵,其中;G(σ)是方差为σ.的高斯核,log(·)和e(·)分别表示矩阵的自然对数和自然指数;
步骤五、计算非锚帧每个平面的稳定矩阵;
每个片段中的所有帧都具有相同的轨迹,因此具有相同的平面划分。每个片段的第一帧是一个锚帧,步骤四已经得到了它的平面划分,此片段中的其他非锚帧均采用与它相同的平面划分。对于每个非锚帧的每一平面,在前后两个锚帧h,h+1中都已经计算出对应平面的稳定矩阵,使用插值的方法既可得到当前帧j的稳定矩阵:
其中所有帧间变换矩阵都必须转换为相对于同一帧q的变换矩阵才能统一计算,通常将帧q设为当前片段的中间一帧以最小化误差;
步骤六、稳定帧图像计算;
对于每一帧上的每一轨迹,都已经求得对应平面的稳定矩阵,使用该矩阵可以得到该轨迹稳定后的位置。因此,可以得到每一帧上所有轨迹稳定前和稳定后的对应位置,以此作为输入,使用CPW方法可以得到稳定后的每一帧图像,从而得到稳定视频。
尽管已经参考附图对本发明进行了解释和描述,专业技术人员应该理解,在不脱离本发明精神和范围的情况下,可以在其中或对其进行各种其他改变,增删。