发明内容
未解决现有技术存在的上述技术问题,本发明提供一种基于近似稠密光流法和基准帧更新的视频消旋方法及装置,旨在针对画面持续旋转的视频实现精确且稳定平滑的消旋效果。
本发明是这样实现的:
一方面,本发明提供一种基于近似稠密光流法和基准帧更新的视频消旋方法,包括以下步骤:
读取视频或图像序列的第一帧图像设为初始帧,并将其作为运动估计的第一个基准帧;
依次读取后面的图像帧,求解其到初始帧的运动矢量,用仿射变换矩阵来表示;
利用求解出的仿射变换矩阵对初始帧之后的每一帧图像做仿射变换得到消旋后的图像序列作为视频消旋的输出。
进一步地,所述依次读取后面的图像帧,求解其到初始帧的运动矢量,用仿射变换矩阵来表示具体包括:
读取到新的一帧图像时,首先根据其帧序号判断是否需要更新基准帧,若当前帧序号为基准帧更新率的整数倍则把当前帧作为新的基准帧,记录每个基准帧到初始帧的仿射变换矩阵;
对于第二个基准帧之前的非基准帧,直接计算该帧到初始帧的仿射变换矩阵;
对于第二个基准帧之后的非基准帧,首先计算该帧到当前基准帧的仿射变换矩阵,然后将该矩阵与当前基准帧到初始帧的仿射变换矩阵相乘得到当前帧到初始帧的仿射变换矩阵。
进一步地,求解当前帧到基准帧的仿射变换矩阵的具体方法如下:
在基准帧上进行均匀采点,通过LK光流法估计出这些点在当前帧上的位置,得到匹配点集;
对匹配点集进行筛选,去除误匹配点;
利用筛选后的匹配点集求解仿射变换矩阵。
进一步地,所述对匹配点集进行筛选,去除误匹配点具体包括:
第一步,从匹配点集中剔除掉光流估计中跟踪丢失的点和误差大于所设阈值的点;
第二步,通过RANSAC算法对匹配点集进行迭代计算,去除误匹配点,将匹配点集中光流跟踪的误匹配点及全局运动估计所不需要的非背景点作为RANSAC算法的“局外点”,RANSAC算法通过反复选择数据中的一组随机子集来达成目标,去除局外点,保留正确匹配点。
进一步地,所述利用筛选后的匹配点集求解仿射变换矩阵是通过最小二乘法的矩阵形式完成的,具体包括:
设RANSAC筛选后得到的点集匹配对数为m,用m*3大小的矩阵A表示由光流法跟踪得到的当前帧中所有点的齐次坐标,用m*2大小的矩阵B表示基准帧中的点,则根据最小二乘法求解当前帧到基准帧仿射变换矩阵的公式为:
M=(ATA-1)ATB
其中,M为当前帧到基准帧的仿射变换矩阵。
另一方面,本发明还提供一种基于近似稠密光流法和基准帧更新的视频消旋装置,包括:
初始化模块,用于读取视频或图像序列的第一帧图像设为初始帧,并将其作为运动估计的第一个基准帧;
仿射变换矩阵计算模块,用于依次读取后面的图像帧,求解其到初始帧的运动矢量,用仿射变换矩阵来表示;
图像仿射变换模块,用于利用求解出的仿射变换矩阵对初始帧之后的每一帧图像做仿射变换得到消旋后的图像序列作为视频消旋的输出。
进一步地,所述仿射变换矩阵计算模块具体用于:
读取到新的一帧图像时,首先根据其帧序号判断是否需要更新基准帧,若当前帧序号为基准帧更新率的整数倍则把当前帧作为新的基准帧,记录每个基准帧到初始帧的仿射变换矩阵;
对于第二个基准帧之前的非基准帧,直接计算该帧到初始帧的仿射变换矩阵;
对于第二个基准帧之后的非基准帧,首先计算该帧到当前基准帧的仿射变换矩阵,然后将该矩阵与当前基准帧到初始帧的仿射变换矩阵相乘得到当前帧到初始帧的仿射变换矩阵。
进一步地,所述仿射变换矩阵计算模块求解当前帧到基准帧的仿射变换矩阵的具体方法如下:
在基准帧上进行均匀采点,通过LK光流法估计出这些点在当前帧上的位置,得到匹配点集;
对匹配点集进行筛选,去除误匹配点;
利用筛选后的匹配点集求解仿射变换矩阵。
进一步地,所述仿射变换矩阵计算模块对匹配点集进行筛选,去除误匹配点包括:
第一步,从匹配点集中剔除掉光流估计中跟踪丢失的点和误差大于所设阈值的点;
第二步,通过RANSAC算法对匹配点集进行迭代计算,去除误匹配点,将匹配点集中光流跟踪的误匹配点及全局运动估计所不需要的非背景点作为RANSAC算法的“局外点”,RANSAC算法通过反复选择数据中的一组随机子集来达成目标,去除局外点,保留正确匹配点。
进一步地,所述仿射变换矩阵计算模块利用筛选后的匹配点集求解仿射变换矩阵是通过最小二乘法的矩阵形式完成的,具体包括:
设RANSAC筛选后得到的点集匹配对数为m,用m*3大小的矩阵A表示由光流法跟踪得到的当前帧中所有点的齐次坐标,用m*2大小的矩阵B表示基准帧中的点,则根据最小二乘法求解当前帧到基准帧仿射变换矩阵的公式为:
M=(ATA-1)ATB
其中,M为当前帧到基准帧的仿射变换矩阵。
与现有技术相比,本发明具有以下有益效果:
本发明提供的这种基于近似稠密光流法和基准帧更新的视频消旋方法及装置,对图像使用了仿射变换,能够应对视频画面景深的变化,使视频消旋的结果更加稳定,客观性更强,在关键的运动估计和运动补偿阶段进行了迭代算法的优化。在稳定性方面采用了基准帧均匀采点的策略,保证了匹配点集中正确匹配的数量,避免了特征点消失等偶然性误差;在消旋结果的平滑度方面采用了更新基准帧的策略,使得光流法的亮度恒定假设和小运动假设都得到了满足,使相邻帧求得的运动矢量更加接近,消旋后的画面过渡较为稳定、平滑;在准确度方面进行了RANSAC、最小二乘估计等多次筛选甄别,使求得的仿射变换矩阵更加贴近真实情况。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供一种基于近似稠密光流法和基准帧更新的视频消旋方法,包括以下步骤:
S1、读取视频或图像序列的第一帧图像设为初始帧,并将其作为运动估计的第一个基准帧;并在图像上以横纵各16像素的步长进行均匀采点,将这些点存储为基准点集用来供后续图像做光流估计使用。
S2、依次读取后面的图像帧,对后续每帧图像都求解出其到初始帧的运动矢量,用仿射变换矩阵来表示;
S3、利用求解出的仿射变换矩阵对初始帧之后的每一帧图像做仿射变换,将该图像变换到初始帧的背景姿态以实现消旋的效果,得到消旋后的图像序列作为视频消旋的输出。
本发明对图像使用了仿射变换,仿射变换(Affine Transformation或AffineMap)是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”,相较于投影变换,仿射变换能够应对视频画面景深的变化,使视频消旋的结果更加稳定,客观性更强。
优选地,所述步骤S2依次读取后面的图像帧,求解其到初始帧的运动矢量,用仿射变换矩阵来表示具体包括:
读取到新的一帧图像时,首先根据其帧序号判断是否需要更新基准帧,若当前帧序号为基准帧更新率的整数倍则把当前帧作为新的基准帧,记录每个基准帧到初始帧的仿射变换矩阵;参照图2所示;
对于第二个基准帧之前的非基准帧,直接计算该帧到初始帧的仿射变换矩阵;
对于第二个基准帧之后的非基准帧,首先计算该帧到当前基准帧的仿射变换矩阵,然后将该矩阵与当前基准帧到初始帧的仿射变换矩阵相乘得到当前帧到初始帧的仿射变换矩阵。
通过采用更新基准帧的策略,使得光流法的亮度恒定假设和小运动假设都得到了满足,使相邻帧求得的运动矢量更加接近,消旋后的画面过渡较为稳定、平滑。
优选地,求解当前帧到基准帧的仿射变换矩阵的具体方法如下:
(1)在基准帧上进行均匀采点,通过LK光流法估计出这些点在当前帧上的位置,得到匹配点集。
本实施例中,以基准帧和当前帧这两张图像作为输入,首先在基准帧中以16*16的密度均匀采点,然后利用LK光流法跟踪得到这些点在当前帧的坐标,LK光流法的思想是:假设前一帧时间为t,后一帧时间为t+δt。则前一帧I的像素点I(x,y,z,t)在后一帧中的位置为I(x+δx,y+δy,z+δz,t+δt),根据光流的亮度恒定假设有I(x,y,z,t)=I(x+δx,y+δy,z+δz,t+δt),通过展开求解即可得到一个坐标的光流矢量。两张图像之间的光流场就是估计出的运动矢量。
光流,简单说也就是画面移动过程中,图像上每个像素的x,y位移量,比如第t帧的时候A点的位置是(x1,y1),那么在第t+1帧的时候再找到A点,假如它的位置是(x2,y2),那么我们就可以确定A点的运动了:(u,v)=(x2,y2)-(x1,y1),LK光流法有三个假设条件:
1.亮度恒定:一个像素点随着时间的变化,其亮度值(像素灰度值)是恒定不变的。这是光流法的基本设定,所有光流法都必须满足。
2.小运动:时间的变化不会引起位置的剧烈变化。这样才能利用相邻帧之间的位置变化引起的灰度值变化,去求取灰度对位置的偏导数,所有光流法必须满足。
3.空间一致:即前一帧中相邻像素点在后一帧中也是相邻的。这是LK光流法独有的假定,因为为了求取x,y方向的速度,需要建立多个方程联立求解,而空间一致假设就可以利用邻域n个像素点来建立n个方程。
为满足亮度恒定假设,需要对灰度化后的图像进行直方图均衡化处理以减弱光照条件变化的影响,而更新基准帧这一步骤的目的之一就是为满足LK光流的小运动和空间一致假设。
(2)对匹配点集进行筛选,去除误匹配点。由于采点的数量分布均匀且数量较多,LK光流法估计得到的匹配点对存在一些跟踪点的丢失或跟踪错误,此外图像中的非背景点如动目标是全局运动估计所不需要的点,因此在光流法得到匹配点集后还需要做进一步筛选,具体包括:
第一步,从匹配点集中剔除掉光流估计中跟踪丢失的点和误差大于所设阈值的点;
第二步,通过RANSAC算法对匹配点集进行迭代计算,去除误匹配点,将匹配点集中光流跟踪的误匹配点及全局运动估计所不需要的非背景点作为RANSAC算法的“局外点”,RANSAC算法通过反复选择数据中的一组随机子集来达成目标,去除局外点,保留正确匹配点。
RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法,它有一定的概率得出一个合理的结果,为了提高概率必须提高迭代次数。
RANSAC的基本假设是:
1.数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释;
2.“局外点”是不能适应该模型的数据;
3.除此之外的数据属于噪声。
局外点产生的原因有:噪声的极值;错误的测量方法;对数据的错误假设,RANSAC也做了以下假设:给定一组(通常很小的)局内点,存在一个可以估计模型参数的过程;而该模型能够解释或者适用于局内点。
RANSAC应用在视频消旋算法中时,“局外点”就是指匹配点集中光流跟踪的误匹配点及全局运动估计所不需要动目标等非背景点,RANSAC算法通过反复选择数据中的一组随机子集来达成目标,去除局外点,保留正确匹配点以进行精确的运动估计。
RANSAC算法的输入是一组观测数据,一个可以解释或者适应于观测数据的参数化模型,一些可信的参数,通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:
1.首先我们先随机假设一小组局内点为初始值。然后用此局内点拟合一个模型,此模型适应于假设的局内点,所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点,将局内点扩充。
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
4.然后,用所有假设的局内点去重新估计模型,因为此模型仅仅是在初始的假设的局内点估计的,后续有扩充后,需要更新。
5.最后,通过估计局内点与模型的错误率来评估模型。
整个这个过程为迭代一次,此过程被重复执行固定的次数,每次产生的模型有两个结局:要么因为局内点太少,还不如上一次的模型,而被舍弃,要么因为比现有的模型更好而被选用。
在本实施例中,需要估计的模型就是一个单应性变换矩阵,将点对重投影误差作为RANSAC内外点的判别标准,如果点对的重投影误差大于最大允许误差阈值则认为该点是局外点,即错误匹配点对。
RANSAC估计出的单应性变换矩阵本质上是投影变换,在旋转场景中有景深的变化时容易造成持续的形变使消旋结果稳定性变差,因此最后需要利用筛选后的匹配点集来估计一个仿射矩阵作为变换的标准。一个点对的仿射变换公式如下:
(3)利用筛选后的匹配点集求解仿射变换矩阵。本实施例中得到的是许多个匹配点对,因此需要利用最小二乘法估计出最符合全局变换的仿射矩阵,具体包括:
设RANSAC筛选后得到的点集匹配对数为m,用m*3大小的矩阵A表示由光流法跟踪得到的当前帧中所有点的齐次坐标,用m*2大小的矩阵B表示基准帧中的点,则根据最小二乘法求解当前帧到基准帧仿射变换矩阵的公式为:
M=(ATA-1)ATB
其中,M为当前帧到基准帧的仿射变换矩阵。
对于第二个基准帧之后的非基准帧,将上述当前帧到基准帧的仿射变换矩阵与记录的基准帧到初始帧的仿射变换矩阵相乘即为该帧到初始帧的全局变换矩阵:
M当前帧→初始帧=M当前帧→基准帧·M基准帧→初始帧
基于同一发明构思,本发明实施例还提供一种基于近似稠密光流法和基准帧更新的视频消旋装置,由于该装置解决技术问题的原理与上述方法实施例相似,故该装置的实施可以参照上述方法的实施,重复之处不再赘述。
如图3所示,为本发明实施例提供的一种基于近似稠密光流法和基准帧更新的视频消旋装置,该装置包括:
初始化模块,用于读取视频或图像序列的第一帧图像设为初始帧,并将其作为运动估计的第一个基准帧;
仿射变换矩阵计算模块,用于依次读取后面的图像帧,求解其到初始帧的运动矢量,用仿射变换矩阵来表示;
图像仿射变换模块,用于利用求解出的仿射变换矩阵对初始帧之后的每一帧图像做仿射变换得到消旋后的图像序列作为视频消旋的输出。
在一个实施例中,所述仿射变换矩阵计算模块具体用于:
读取到新的一帧图像时,首先根据其帧序号判断是否需要更新基准帧,若当前帧序号为基准帧更新率的整数倍则把当前帧作为新的基准帧,记录每个基准帧到初始帧的仿射变换矩阵;
对于第二个基准帧之前的非基准帧,直接计算该帧到初始帧的仿射变换矩阵;
对于第二个基准帧之后的非基准帧,首先计算该帧到当前基准帧的仿射变换矩阵,然后将该矩阵与当前基准帧到初始帧的仿射变换矩阵相乘得到当前帧到初始帧的仿射变换矩阵。
在一个实施例中,所述仿射变换矩阵计算模块求解当前帧到基准帧的仿射变换矩阵的具体方法如下:
在基准帧上进行均匀采点,通过LK光流法估计出这些点在当前帧上的位置,得到匹配点集;
对匹配点集进行筛选,去除误匹配点;
利用筛选后的匹配点集求解仿射变换矩阵。
在一个实施例中,所述仿射变换矩阵计算模块对匹配点集进行筛选,去除误匹配点包括:
第一步,从匹配点集中剔除掉光流估计中跟踪丢失的点和误差大于所设阈值的点;
第二步,通过RANSAC算法对匹配点集进行迭代计算,去除误匹配点,将匹配点集中光流跟踪的误匹配点及全局运动估计所不需要的非背景点作为RANSAC算法的“局外点”,RANSAC算法通过反复选择数据中的一组随机子集来达成目标,去除局外点,保留正确匹配点。
在一个实施例中,所述仿射变换矩阵计算模块利用筛选后的匹配点集求解仿射变换矩阵是通过最小二乘法的矩阵形式完成的,具体包括:
设RANSAC筛选后得到的点集匹配对数为m,用m*3大小的矩阵A表示由光流法跟踪得到的当前帧中所有点的齐次坐标,用m*2大小的矩阵B表示基准帧中的点,则根据最小二乘法求解当前帧到基准帧仿射变换矩阵的公式为:
M=(ATA-1)ATB
其中,M为当前帧到基准帧的仿射变换矩阵。
综上所述,本发明实施例提供的这种基于近似稠密光流法和基准帧更新的视频消旋方法及装置,对图像使用了仿射变换,能够应对视频画面景深的变化,使视频消旋的结果更加稳定,客观性更强,在关键的运动估计和运动补偿阶段进行了迭代算法的优化。在稳定性方面采用了基准帧均匀采点的策略,保证了匹配点集中正确匹配的数量,避免了特征点消失等偶然性误差;在消旋结果的平滑度方面采用了更新基准帧的策略,使得光流法的亮度恒定假设和小运动假设都得到了满足,使相邻帧求得的运动矢量更加接近,消旋后的画面过渡较为稳定、平滑;在准确度方面进行了RANSAC、最小二乘估计等多次筛选甄别,使求得的仿射变换矩阵更加贴近真实情况。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。