杨 涛,罗健欣,金凤林
(中国人民解放军陆军工程大学 指挥控制工程学院,江苏 南京 210007)
随着数码相机与摄像头的普及并应用于手机、无人机等各种移动平台,移动场景下拍摄的视频成为了网络中最活跃的媒体形式之一。然而移动平台下捕捉的视频通常会在人们所预期的运动之上存在一定程度的抖动甚至旋转变形,这就需要人为对相机的运动进行区分和过滤,数字视频稳像[1](Digital Video Stablization,DVS) 就是完成这样的工作。相机运动估计[2]是视频稳像中的一个基础环节,完成对相机运动路径的估计之后就可以通过滤波、曲线拟合等方式对其进行运动补偿,最后进行适当的图像修补和变形,从而达到视频稳像的效果。
相机运动估计在选定的相机模型下,根据视频帧序列重叠区域之间的变换来估计相机运动姿态。根据使用的变换模型不同,可以将相机运动估计的方法大致分为四种:传统2D相机运动估计方法、3D相机运动估计方法、传感器辅助运动估计方法、新兴2D相机运动估计方法[2]。传统的2D相机运动估计通常使用单个仿射矩阵或者单应性矩阵来建模相邻帧间的相机运动,计算简单,算法鲁棒性较好。典型的方法有基于像素点的块匹配法[3]、光流法[4-5]、相位相关法[6-8]和基于特征点的方法[9]。但是传统的2D方法一方面忽略了相机的空间运动信息,另一方面对于图像各局部景物深度不一样的情况,单一的矩阵难以处理视差问题。3D相机运动估计最常用的传统方法是运动恢复结构(Structure From Motion,SFM)[10],该算法从2D视频帧序列中恢复出相应的3D运动信息。应用该算法比较经典的例子是2009年LIU F等人提出的CPW方案[11],该方案首先使用SFM算法恢复相机的原始运动以及3D场景点云,而后使用3D点云和参考帧图像进行运动平滑和图像变形修复。在修复过程中,使用了内容保持的图像变形技术。然而,SFM技术依然面临着重建条件不足和计算效率低的问题[12]。传感器辅助运动估计则使用陀螺仪、加速度传感器等建立相机旋转运动模型,简化了运动估计,然而从实质上它们依然属于2D解决方案,无法避免视差问题。LIU等人[13]通过引入深度摄像头,将深度图像与原图像结合进行3D运动估计,但是深度摄像头成本较高;新兴的2D相机运动估计则试图利用2D的方法在一定程度上解决视差问题,在无需三维重建的情况下得到接近3D的运动估计效果。文献[2]将此类方法分为特征轨迹法和多路径算法。特征轨迹法的代表是LIU F等人提出的Subspace[14]方法,而多路径方案则是将“As Similar As Possible”[15]的思路引入到相机运动估计中,提出一种多重的、时空可变的网格变形模型,使图像的不同网格可以有独立的运动路径。本文正是在此基础上添加直线保持约束进行改进的新兴2D方法。
本文使用网格变形模型来表示连续图像帧之间的运动,不同于传统单个2D线性变换模型,网格化表示相机路径具有更强的建模能力[16]。算法在原内容保持变形CPW算法的基础上,提出了具有直线约束的相机运动估计方法。算法流程如图1所示。
图1 算法流程
图2 全局相机路径表示
(1)
图3 特征点保持约束
(2)
(3)
按照LIU S等人的方法,相似性保持项用来衡量变形后的每个网格与原网格的相似程度。具体而言,在帧Ft中,将每个网格分成两个三角形,三角形中的每一个顶点都可以由另外两个顶点所形成的向量和与该向量垂直的向量为基底形成的坐标系来表示。以v1为例,可以通过等式(4)表示。
v1-v2=u(v2-v3)+vR90(v2-v3)
(4)
由(4)可得:
v1=v2+u(v2-v3)+vR90(v2-v3)
(5)
图4 v1的坐标
(6)
(1)四个网格顶点,如图5(a)所示;
(2)网格边缘除顶点外的点,如图5(b)所示;
(3)内部网格线交点,如图5(c)所示。
图5 v1所处位置及三角形划分
在实验中,图5(a)、(b)、(c)中的v1将分别受到2、4、8个三角形的相似性约束。
特征点约束和相似性约束均是在单网格内对网格的变形加以约束,并且没有考虑图像中的具体纹理。通常认为,人眼对直线结构是较为敏感的。对于这样的直线结构,如果在网格变形的过程中发生较大程度的扭曲或挫切,会直接影响视觉效果。此外,图像中长度较长的直线结构会存在跨越多个网格的情况。因此考虑在特征点约束和相似性约束的基础上,增加直线保持约束。首先运用GIOI G R V等人[20]提出的LSD(Line Segment Detector)方法对前一帧图像进行直线提取,如图6所示。
图6 直线提取示例
考虑到时间连续性问题,对一些长度较短的直线进行剔除,只保留长度大于网格宽度和高度的直线。而后将提取的线段平均切分为N段,N+1个子线段端点为p0,p1,…,pj,…,pN,其中p0和pN分别代表原直线的两个端点。在实验中,选取N=5,端点pj可由两端点表示为:
(7)
同时pj也可由所在网格的四个顶点Vj双线插值表示。因此,式(7)可如下转换:
(8)
类似于前两项约束,直线保持约束可定义为:
(9)
其中l代表检测出的所有符合条件的直线。
对于α2,认为在1.4节中对直线的长度加以限制后,筛选出的直线条数应当影响直线保持约束的权值。直线条数越多,越需要增大α2加强直线保持约束以避免直线扭曲和挫切。
由于式(1)中三个约束均为二次项,因此可以通过稀疏线性系统求解最小化。具体地,将待求解的变形后的网格顶点的像素坐标按顺序编号表示成向量X:
X=[x1,y1,x2,y2,…,xi,yi,…,xn,yn]T
(10)
X=A
(11)
(12)
按照1.1节中所述,可以将相机的全局运动定义为随空间变化的各网格的运动路径的集合,如图7所示。假设Ci(t)表示在t时刻网格单元i处的相机位姿,单个网格所表示的局部相机路径可表示为:
Ci(t)=Ci(t-1)Hi(t-1)
=Hi(0)Hi(1)…Hi(t-1),
1≤t≤T,1≤i≤n×m
(13)
其中,T为总帧数,n×m为网格总数,且Ci(0)定义为单位矩阵。至此,增加直线约束的相机运动估计完成。后续可以在此基础上完成各网格相机路径的平滑,并通过原始路径向平滑后路径的重投影对视频进行稳像。
图7 全局相机路径
首先,为了更直观地验证直线保持约束的有效性,在估计出t时刻到t+1时刻的相机运动之后,将t时刻的帧Ft逐网格重投影到估计出的相机位姿上,即从Ft+1的拍摄视角重建Ft,从直观上比较两种网格变形模型的效果。实验视频帧选用LIU S等人提供的网格变形模型的demo中直线结构较为明显的两对相邻帧,如表1所示,分辨率为640×360。
表1 选用的相邻帧
经过原算法的变形之后的Ft如图8所示。
图8 原算法变形效果
可以观察到,在黑色粗方框的位置存在明显的直线扭曲,经放大后更加清晰,如图9所示。
图9 扭曲细节放大
在保持α=1等参数相同的情况下,增加了直线保持约束之后,直线扭曲得到了明显的改善,如图10所示。
图10 改进算法变形效果
将之前发生扭曲的部分细节放大,观察改善之后的效果,如图11所示。
图11 改进后细节放大
其次,分析相似性约束的权重α1是如何调节整体的变形的。对同一帧在其他参数不变的情况下,取不同的α1值进行图像变形,不同效果如图12所示。
图12 不同α1变形效果
通过观察可以发现,如1.1节中所述,α1可以用来整体调节变形的刚性。具体而言,α1值越大,变形越趋于刚性,受特征点约束越弱,网格顶点越趋向于保持原来的位置,运动越简单,越体现出相似性保持的作用。
表2 实验数据帧
表3 与原算法对比结果
通过实验可以发现,将帧重投影到估计的相机运动位姿上,增加了直线结构保持约束的网格变形方法得到的图像对于目标位置帧的PSNR值和SSIM值比增加直线约束之前都有小幅度的提升。更重要的是,在直观的视觉感受上,保持了人眼较为敏感的直线结构不变形,提升了主观视觉质量。
本文在原内容保持变形CPW算法的网格变形模型基础上添加了对图像中的直线结构进行保护的直线保持约束。通过稀疏线性系统求解,对相邻帧的各个网格的相机运动进行独立的估计。实验证明,在根据算法估计出的运动路径对图像变形时,较好地保护了图像中的直线结构,从直观上提升了图像变形的视觉效果。后续可以基于本文的网格变形模型估计的相机运动路径,进行路径平滑和图像重投影,从而提升视频稳像和视频拼接的效果。