1. 引言
电子稳像技术[1]是以计算机原理和图像处理技术为基础的稳像方法,先计算两帧间的全局运动矢量,再采用运动滤波和补偿等方法去除原始视频中的高频抖动,进而得到稳定的视频序列。电子稳像技术不仅能用于实时稳像处理,还能用于后期的视频处理,该技术已广泛应用于图像处理、目标检测和视频稳像等领域。电子稳像技术主要包括三个基本步骤:全局运动估计、运动平滑和运动补偿[2]。其中,全局运动估计作为电子稳像的第一步,是非常关键的环节,该过程估计运动参数的优劣直接决定最终的稳像效果,同时该过程所耗费的时间很大程度上影响了稳像算法的实时性能。典型的全局运动估计算法有光流法[3]、灰度投影法[4] [5]、特征匹配法[6],本文采用的是特征匹配法,与其它算法相比,特征匹配法在计算精度等方面更具优越性。运动平滑和运动补偿主要是对全局运动估计得到的运动参数进行优化处理,并通过补偿矩阵对抖动序列进行变换,以此得到稳定的视频序列。
Carlos等人[7]提出了基于二维特征信息的运动估计方法,通过跟踪特征点对的运动变化来对相机的运动状态进行估算,实验表明该方法能够有效处理大幅度抖动的视频序列,但对于小幅抖动视频的稳像效果并不明显。Liu等人[8]提出了基于捆绑策略优化相机运动路径的稳像算法,将视频序列均分为一定大小的网格块,通过每个网格块内的运动轨迹进行估计和自适应优化相机路径,进而平滑整个视频序列的相机运动路径。Grundmann等人[9]提出了基于L1范数优化相机路径的视频稳像算法,通过求解根据多阶导数构建目标函数的最小值,来对相机的原始路径进行平滑和优化,以达到稳像目的,但是该算法可能无法稳定所有视频。本文提出了基于平滑相机运动路径的电子稳像算法,该算法对多种场景下的视频均起到较好的稳像效果。
2. 特征点检测和描述
2.1. 基于改进SURF算法的特征点检测
为了更好地估算视频序列间的全局运动参数,本文采用改进加速稳健特征算子(Speeded Up Robust Features, SURF)进行特征点检测[10],该算法能够进一步提升特征匹配的精度,从而有利于提升估计全局运动参数的准确性。
在提取特征点的过程中,考虑到视频序列中的不同区域间可能存在较显著的结构差异,在此情况下得到的特征点往往会集中于纹理信息较丰富的区域,在其它区域检测到的特征点数量相对较少。而前景运动物体有时会存在于纹理丰富的区域,导致前景物体中存在较多特征点,进而估计出的全局运动估计模型可能会存在较大误差,见图1。
Figure 1. Rich texture information leads to over- concentration of feature points
图1. 纹理信息丰富导致特征点过于集中
另一方面,参与特征匹配的背景特征点数量越多,往往得到的特征矩阵就越精确,越能表示相机的实际运动轨迹,但也会导致算法实时性能的下降。由于特征点较丰富区域所包含的信息往往具有重复性,采集到大量的特征点会导致后续特征点匹配等过程耗时过多,进而影响算法的实时性能。一般来说,除了少数噪声特征点外,大部分特征匹配对的运动状态都是相同的,因此适当减少纹理较丰富区域的特征点数量,可提升算法的实时性能[11]。
为减少纹理特征丰富区域的特征点数量,使得处理后的特征点分布更加均匀,同时提升算法的实时性能,本节提出基于分区域的SURF特征点检测算法。该算法首先将每个视频序列划分为四个相同尺寸的基础块,并分别对每个基础块的图像信息使用SURF算法进行特征点采集。对于特征点的选取,设置一个阈值T,选择每个基础块中特征信息最高的T个特征点,如果基础块中提取到的特征数量少于阈值T,则选择实际提取到的特征点数量,由式(1)所示:
(1)
其中,x表示在基础块中实际提取到的特征点数量,T表示设定的参数阈值。本文在10组测试视频中发现,通常采集到视频序列帧的特征点数量大于150,求解得到的放射矩阵的计算误差小于1个像素,这里单个基础块的阈值T设定为100。根据式(1)采用分区域思想对视频序列处理后的效果,见图2。
最后,将四个基础块提取到的特征点整合到原始视频序列中,进而获得了原始视频序列的特征点分布,见图3。
图3是基于分区域的SURF算法处理后的特征点分布情况,可以看出该算法在纹理丰富的区域(第1、2基础块)提取到的特征点数量有明显减少,改进前后SURF算法在1、2基础块内提取到的特征点数量分别减少了25个和30个,减少了采集信息的重复性,从而证明改进算法的有效性。
Figure 2. The effect of feature points based on subregional thought detection. (a) 1st foundation block; (b) 2nd foundation block; (c) 3rd foundation block; (d) 4th foundation block
图2. 基于分区域思想检测的特征点效果。(a) 第1个基础块;(b) 第2个基础块;(c) 第3个基础块;(d) 第4个基础块
Figure 3. Distribution of feature points after sub-area processing
图3. 分区域处理后的特征点分布情况
2.2. 基于FREAK算法的特征点描述
快速视网膜关键点(Fast Retina Keypoint, FREAK)算法[12]不仅计算速度快,而且具有较好的旋转不变性,但尺度不变性能较差。而SURF算法的尺度不变性较好,因此首先采用分区域的SURF算法检测特征点,然后采用FREAK算法对检测到的特征点进行描述,使得特征点的尺度不变性得以保留,进而可以在提高算法实时性的基础上,保证算法的尺度不变性。
FREAK算子的采样模型参照了人类视网膜特征进行设计,以特征圆的形式进行采样,采样密度与该位置到中心的直线距离呈指数规律衰减。与常用二进制描述子相似,FREAK算子也是使用平滑的方法降低噪声对算法的影响,以提升算法的鲁棒性能,但该算子采用尺寸呈指数变化的核函数进行平滑,且允许核函数平滑的区域相互重叠。
FREAK算子根据邻近像素点的灰度值以及对应的汉明距离对当前特征点进行描述,生成的二进制算子用F表示:
(2)
(3)
其中,
表示特征点对,N表示特征点对的数目,
和
分别表示经过高斯滤波后
的前一个点和后一个点的灰度值。
通常来说,FREAK描述子仅有几十个采样特征点,考虑到不同特征点对的组合形式千差万别,为更有效地描述视频序列的特征信息,还需要对初选特征点进一步筛选,以获得性能较好的特征点,FREAK算法特征点描述的基本原理,见图4。
Figure 4. The basic principle of feature point description of FREAK algorithm
图4. FREAK算法特征点描述的基本原理
为计算特征点的主方向信息,FREAK算法选择对称采样点根据局部梯度求和的方式求取特征点的主方向,提升算法的精确度和实时性能。算法描述子的梯度方向可表示为:
(4)
其中,G表示特征点对按运动矢量划分的集合,M表示特征点对集合G内点的排列数,
表示采样点对应的空间坐标。
3. 特征点匹配
3.1. 基于KNN算法的特征匹配
获得参考帧和当前帧的特征点及其描述信息后,再进行特征点的匹配,以获得两帧间相同的特征点。本文首先采用K近邻匹配(K-Nearest Neighbor, KNN)算法[13]对特征点进行筛选。
KNN算法主要根据汉明距离计算特征点对的匹配度,其主要过程为:依次计算距离候选特征点P最近的特征点P1和次邻近特征点P2,计算两个距离的比值,如果满足一定条件(小于0.8),则认为P1为特征点P的匹配点。
然而,当视频序列的纹理信息较丰富时,该方法得到的特征点对仍存在欧氏距离较近的误匹配问题。另一方面,当检测到的特征点数量达到一定值时,经KNN算法匹配的特征点对仍然存在许多的误匹配现象,导致计算出的全局运动矢量有很大偏差,影响稳像效果。因此,还需要进一步筛选特征匹配对。
3.2. 基于RANSAC算法的特征匹配
为了有效提升正确匹配特征点对在所有匹配特征点对的占比,需要在原有特征匹配点对的基础上进行筛选以去除误匹配特征,从而有效地估算全局运动矢量信息。基于以上目的,本文将在KNN算法的基础上采用随机样本一致性(Random Sample Consensus, RANSAC)算法,从待测数据中通过不断地迭代、选优和验证,对错误特征点对进行筛选,提升正确匹配特征点对的占比,以使估计的运动参数更接近于真实情况。RANSAC算法[14] [15]是由Fishler等人在上世纪九十年代提出的,主要用于估算图像间的运动参数,该算法能够有效提升全局运动参数的估算精度,且鲁棒性能较好。
在RANSAC算法中,假设所有的特征点样本中既包含内点,即能够较好地对运动参数模型进行估计的样本集合,也包含外点,即由于特征点对的异常匹配而无法计算或满足运动参数模型的样本集合。首先,随机选择特征点集合中的部分特征点对,根据这些特征点对计算帧间运动参数模型,再选择特征集合中的其它特征点对进行模型验证,观察模型的拟合效果,通过不断地筛选和验证,选择拟合效果最好的参数模型作为帧间的运动参数模型,运动参数模型可表示为:
(5)
其中,
表示相邻序列间的运动参数,S表示相邻序列间的运动参数模型。将运动参数模型S代入到相邻序列间的特征点对集合中,可表示为:
(6)
其中,
和
分别表示参考序列帧和当前序列帧的特征点对的集合。为估算模型S中全部的8个运动参数,在算法初始时应至少选择4个特征点对估算序列间的运动模型,具体过程可表述为:
首先,需要计算随机采样的抽取次数k:
(7)
其中,p为置信概率,常为0.995,m为特征点对的最少选择数量,w为内点数量占总集合的比重。
从样本集合中任意抽取m对样本数据,并估计摄像机运动的初始参数模型S,然后从剩余的样本集合中依次选择特征点对运动模型S进行条件验证,如满足特定条件,即说明两个特征点之间的欧氏距离与选定阈值相比较小,则将该匹配对视为内点,并进行保存;否则,将该特征点对视为外点。最后,当抽样次数达到k时,选择包含内点数量最多的参数模型作为最终估算的全局运动参数模型S。
3.3. 基于前向–后向匹配算法的特征匹配
前向–后向匹配,又可称为双向匹配,前向–后向匹配可以在RANSAC算法的基础上进一步提高匹配的正确性,前向–后向误差基于这样一个事实:前向后向匹配一致性,即正确特征点的匹配与时间流无关。其基本思想为:首先,假设参考序列中的特征点是有效的,通过双向匹配可得到参考序列的某一特征点与当前序列中相对应的特征点;然后,判断参考序列和当前序列中特征点的位置信息是否具有双向一致性,若位置信息不一致,且相差较大,则可判定为错误匹配[16]。
在特征点匹配后交换特征点的匹配次序,正向反向都进行匹配,得到特征匹配对的集合
和
,集合中的元素为(X, Y),表示两幅图像的一对特征匹配点,只取两个集合的交集作为最终的匹配的结果
,只有在交集中的特征点,被认为是正确匹配的特征点,保证筛选的特征匹配对具有较强的唯一性,双向匹配算法原理,见图5。
Figure 5. Schematic diagram of forward-backward matching
图5. 前向–后向匹配原理图
图6(a)和图6(b)分别是只采用KNN粗匹配和在粗匹配基础上再进行RANSAC精匹配与前向后向匹配后最终的匹配效果,可看出RANSAC精匹配与前向后向匹配结合后的匹配算法能够在粗匹配的基础上有效地将粗匹配结果中的误匹配特征点对进行筛除,进而提升算法的匹配精确性。
Figure 6. Matching effect after rough matching and fine matching. (a) The feature matching effect of KNN algorithm; (b) The effect of fine matching between RANSAC algorithm and forward backward matching algorithm
图6. 粗匹配和精匹配处理后的匹配效果。(a) KNN算法的特征匹配效果;(b) RANSAC算法与前向后向匹配算法精匹配后的效果
4. 优化路径与运动补偿
4.1. 基于卡尔曼滤波算法平滑路径
卡尔曼滤波器在工作时先对系统任一时间t的相关状态参数进行估算,然后通过更新信号获得反馈。通常来说,卡尔曼滤波器由时间更新和状态更新两个部分构成[17]。时间更新指在当前状态量的基础上向前预测当前时刻的状态参数和相应的误差协方差;状态更新方程在下一时刻输入值的基础上更新状态向量,并将其反馈到时间更新方程中,为下次预测系统状态做准备。因此,状态更新方程可被看成校正方程。
卡尔曼滤波使用递推的思想对运动参数进行估算,可通过前一时刻视频序列的状态对当前视频序列的运动状态进行估计[18],以此达到平滑相机运动路径的效果,相关的预测模型为:
(8)
其中,
为当前视频序列预测系统的状态量,
代表当前序列状态量的最佳预测值,
为当前序列最佳预测值对应的系统协方差。F为转移矩阵,Q为噪声方差。卡尔曼滤波的更新模型表示为:
(9)
其中,
为系统第t时刻的卡尔曼增益,
为估计得到的状态值,I是系统当前时刻的单位矩阵,H为系统t时刻的观测矩阵,R为系统t时刻测量的噪声协方差,
为系统t时刻的滤波后协方差。
4.2. 基于双线性插值方法的运动补偿
经过卡尔曼滤波对原始相机路径C平滑后,再对原始视频序列进行运动补偿,可获得最终稳定的图像序列。设补偿矩阵为B,则平滑后的相机路径P满足:
(10)
由式(10)可计算两个视频序列的运动补偿矩阵B,再通过运动补偿矩阵B对所有的原始视频序列进行参数变换,从而获得稳定的视频图像,但很可能视频序列转换后的像素点坐标为非整数,后续还需要对这些坐标点进行插值处理以获得对应的像素值。最近邻插值、双线性插值和三次插值是比较常见的三种插值算法[19],对这三种插值算法进行比较。见表1,双线性插值方法实时性能较好,同时马赛克和锯齿不明显,因此本文选择双线性插值来对非整数坐标点的像素值进行处理。
Table 1. Comparison of three interpolation algorithms
表1. 三种插值算法比较
插值算法 |
马赛克 |
边缘出现锯齿 |
速度 |
最近邻插值 |
明显 |
明显 |
很快 |
双线性插值 |
不明显 |
不明显 |
比较快 |
三次插值 |
不明显 |
不明显 |
很慢 |
4.3. 自适应去除黑边
经过运动补偿后的视频序列,其坐标位置及姿态均产生一定变化,可能导致视频序列的边缘丢失部分信息,影响视觉效果和稳定视频的质量。针对运动补偿后视频序列存在黑边现象,本节提出了一种自适应去除黑边算法,对补偿后的视频序列进行剪裁,以提升观感体验和视频质量。该方法根据每帧中运动补偿量的不同,自适应地根据最大补偿量
和
在水平和竖直方向对视频序列的边缘信息进行剪裁,进而获得图像质感较好的稳定视频序列,见图7。
Figure 7. Basic principle of adaptive black edge removal
图7. 自适应去黑边的基本原理
见图8,分别是去除黑边前后的视频序列,可以看出运动补偿后得到的视频序列存在黑边现象。经过自适应去除黑边处理后,能够较好的去除补偿视频序列中的黑边,从而达到提升视频质量效果。
Figure 8. Comparison of video sequences before and after adaptive black border removal. (a) Video sequence before removing black edges; (b) Video sequence after removing black edges
图8. 自适应去黑边前后视频序列对比。(a) 去黑边前视频序列;(b) 去黑边后视频序列
5. 实验结果与分析
为验证稳像算法在不同抖动视频下的准确性和鲁棒性,本文设计了两组仿真实验:1) 固定场景下行人步行拍摄视频的稳像实验。2) 车载拍摄视频的稳像实验。并与基于特征匹配的稳像算法[20]进行比较,验证本文算法在视频稳像上的优越性。
5.1. 固定场景下步行拍摄视频的稳像实验
本实验选择固定场景下行人步行拍摄的抖动视频,图像分辨率为640 × 360,共495帧,该场景中行人在斑马线上行走,前景存在小车在运动,视频存在平移抖动、旋转和尺度变换。算法稳像后的实验结果如图9所示,包括原始视频的第150帧和240帧,以及采用对比算法和本文算法稳像后对应的视频序列:
Figure 9. Comparison of before and after stabilizing image effects of video shooting while walking in a fixed scene. (a) 150th frame before stabilizing image; (b) 240th frame before stabilizing image; (c) 150th frame after stabilizing image by comparison algorithm; (d) 240th frame after stabilizing image by comparison algorithm; (e) 150th frame after stabilizing image by this algorithm; (f) 240th frame after stabilizing image by this algorithm
图9. 固定场景下步行拍摄视频稳像前后效果对比。(a) 稳像前第150帧;(b) 稳像前第240帧;(c) 对比算法稳像后第150帧;(d) 对比算法稳像后第240帧;(e) 本文算法稳像后第150帧;(f) 本文算法稳像后第240帧
为了直观地表现稳像算法的最终效果,本文绘制了稳像前后峰值信噪比(Peak Signal to Noise Ratio,PSNR)值的对比曲线,见图10:
Figure 10. Comparison of PSNR before and after image stabilization of video sequences in a fixed scene
图10. 固定场景下视频序列稳像前后PSNR对比
图10为固定场景下,视频序列稳像前后PSNR对比结果。从图中可看出,经本文算法处理后的视频相对原始视频的PSNR值有一定程度提升,原始视频序列的平均PSNR为18.85 dB,两种算法处理后的具体PSNR值和提升值见表2:
Table 2. PSNR after stabilizing the video sequence captured in a fixed scene
表2. 固定场景拍摄视频序列稳像后的PSNR
处理算法 |
特征匹配稳像算法处理 |
本文算法处理 |
平均PSNR |
20.06 dB |
23.26 dB |
PSNR提升 |
1.21 dB |
4.41 dB |
5.2. 车载拍摄视频的稳像实验
车载拍摄视频的分辨率为320 × 240,共132帧,该场景镜头在不断移动的车中,拍摄过程中抖动剧烈,视频分辨率较低,观看时比较模糊,该类场景下视频稳像前后的效果,如图11所示。
本实验选择车载拍摄的抖动视频,同样为了直观地表现稳像算法的最终效果,绘制了稳像前后PSNR值的对比曲线,见图12。
图12为车载拍摄视频稳像前后部分序列的PSNR对比,可以看到稳定后视频的PSNR值有一定提高。原始视频序列的平均PSNR为24.52 dB,两种算法处理后的具体PSNR值和提升值见表3。
6. 结语
针对不同拍摄场景下的视频抖动问题,本文在现有算法的基础上进行研究和改进,以提升稳像算法的准确性和鲁棒性。使用改进SURF算法对视频序列的全局运动参数进行估计,在用KNN算法对特征点对进行匹配的基础上,首先采用RANSAC算法进行粗匹配,然后采用前向–后向匹配方法提高匹配的
Figure 11. Comparison of the before and after stabilizing image effects of video stabilization in vehicle shooting. (a) 50th frame before stabilizing image; (b) 120th frame before stabilizing image; (c) 50th frame after stabilizing image by comparison algorithm; (d) 120th frame after stabilizing image by comparison algorithm; (e) 50th frame after stabilizing image By this algorithm; (f) 120th frame after stabilizing image by this algorithm
图11. 车载拍摄视频稳像前后效果对比。(a) 稳像前第50帧;(b) 稳像前第120帧;(c) 对比算法稳像后第50帧;(d) 对比算法稳像后第120帧;(e) 本文算法稳像后第50帧;(f) 本文算法稳像后第120帧
Figure 12. Comparison of PSNR before and after image stabilization of the vehicle-mounted video sequence
图12. 车载拍摄视频序列稳像前后PSNR对比
Table 3. PSNR after stabilizing the video sequence captured in the vehicle
表3. 车载拍摄视频序列稳像后的PSNR
处理算法 |
特征匹配稳像算法处理 |
本文算法处理 |
平均PSNR |
26.40 dB |
29.48 dB |
PSNR提升 |
1.88 dB |
4.96 dB |
正确性,进而提升了全局运动参数估计的准确性;再采用卡尔曼滤波算法优化相机的运动路径,得到相对平滑的运动路径;最后,采用双线性插值方法对视频序列进行补偿,并自适应去除补偿后的黑边,以获得相对稳定的视频序列。将改进算法在固定场景下步行拍摄和车载拍摄两类视频序列中进行实验和分析,结果表明本文算法对抖动视频的稳定性和质量均有一定提升,但是当视频中有不断运动的前景物体时,该算法在稳像精度和鲁棒性方面有待提高。