一种基于Harris Corner的视频稳像方法及***
技术领域
本发明涉及图像处理技术,尤其涉及一种基于Harris Corner的视频稳像方法及***。
背景技术
在手机或DV拍摄视频的过程中,常常会因为拍摄者手的抖动或走动,导致拍摄的视频发生抖动,影响观看,为了消除拍摄后视频的抖动,现有技术中如专利文献1(《基于全局特征点迭代的全景稳像方法》:专利申请号:200810150384.X)、文献2(《Digital Image Stabilization by Adaptive BlockMotion Vectors Filtering》:作者Filippo Vella,Alfio Castorina,MassimoMancuso,Giuseppe Messina,IEEE Transactions on,2002-ieeexplore.ieee.org)和文献3(《SIFT Features Tracking for VideoStabilization》:作者S Battiato,G Gallo,G Puglisi,ICIAP 2007)均提出了关于视频稳像的算法。
其中,专利文献1采用Harris Corner提取特征点,使用基于SAD的特征窗口进行特征点匹配,再使用基于距离的特征点匹配正确性的筛查,通过仿射运动模型,计算图像的运动,最后采用基于滤波的图像运动补偿方法进行稳像。但其主要缺点是,基于SAD的匹配,常常会因为图像旋转,或图像模糊导致匹配错误的概率很高,最终导致全局运动矢量计算错误,达不到稳像效果。
文献2提出了一种基于宏块的运动矢量计算,对前帧的每一个宏块,通过搜索算法,如UMHexagonS算法,在后帧中寻找最佳匹配(SAD最小),再基于MAD计算全局运动矢量,最后对小于阈值的运动进行补偿。但是其采用宏块的方法,使得计算精度不高,最终的效果一般。
文献3提出了一种基于SIFT特征点的视频稳像算法。其优点是特征点很稳健,但是该算法复杂度高,耗时较长,不满足实际应用中对效率的要求。
发明内容
本发明要解决的技术问题在于针对现有技术中视频稳像技术效果不佳或者不满足实际应用中对效率的要求的缺陷,提供一种稳像效果好,且能满足实际应用中对效率的要求的基于Harris Corner的视频稳像方法及***。
本发明解决其技术问题所采用的技术方案是:
提供一种基于Harris Corner的视频稳像方法,包括以下步骤:
S1、获取当前视频的帧率F和当前帧A;
S2、对当前帧A采用Gaussian滤波,消除噪点;
S3、获取下一帧B,并对该帧采用Gaussian滤波,消除噪点;
S4、对经滤波后的帧A和帧B采用Harris Corner算法分别提取特征点,并进行特征点匹配;
S5、根据相匹配的特征点计算图像的旋转角θ;
S6、判断旋转角θ是否为0,在θ不为0时,对帧B反方向旋转θ,并将旋转后的帧B作为步骤S4中新的帧B,转入执行步骤S4;在θ为0时,根据匹配的特征点,计算平面运动矢量;
S7、判断是否处理完F帧,若否,则将旋转后的B帧作为当前帧,转入执行步骤S3;若是,则根据所述平面运动矢量对每一帧进行分析与补偿后,输出每一帧。
本发明所述的方法中,步骤S4中特征点的匹配具体为:设帧A中的每个特征点x的坐标为:(xAPos,yAPos),在B帧中,以(xAPos,yAPos)为窗口中心,取尺寸为81x81的特征窗,寻找该特征窗中的特征点y,对于其中的每一个特征点y,根据LACC算法,计算特征点x与特征点y之间的相关性系数,如果其相关性系数大于0.9,则计数器nSum加1;计算特征窗内所有的特征点y后,如果nSum等于1,则两个特征点是匹配的,形成一对匹配对,反之,该特征点没有找到匹配的特征点。
本发明所述的方法中,步骤S5中计算旋转角θ具体为:从匹配对中选取任意两对匹配对F1(A1x,B1y),F2(A2x,B2y),其中A1x,A2x为帧A中的特征点,特征点B1y,B2y是分别与A1x,A2x匹配的帧B中的特征点,特征点A1x与A2y连接成线L1,B1y,B2y连接成线L2,根据余弦定理,计算L1和L2之间的夹角;枚举所有的特征点对,计算夹角,取支持度计数最大的角度作为图像的旋转角θ。
本发明所述的方法中,步骤S7中对所有F帧进行分析与补偿具体包括步骤:
S71、从匹配对中选取任意一对匹配对F1(A1x,B1y),其中A1x为帧A中的特征点,特征点B1y是与A1x匹配的帧B中的特征点,设特征点A1x的坐标为(xAPos,yAPos),特征点B1x的坐标为(xBPos,yBPos),则该特征点在两帧中水平方向的运动矢量为:xMove=xBPos-xAPos,垂直方向的运动矢量为:yMove=yBPos-yAPos,对所有匹配对进行计算,最后取支持度计数最大的xMove和yMove分别作为图像的水平方向的位移和垂直方向的位移;
S72、根据步骤S71获取全部的F帧图像相对前一帧的运动矢量(xMove1,yMove1),(xMove2,yMove3)……(xMoveF,yMoveF),其中,xMoveF表示第F帧相对于前一帧在水平方向的运动矢量,yMoveF表示帧序列中第F帧相对于前一帧在竖直方向的运动矢量;
S73、对全部F帧的运动矢量进行累加,水平方向的运动矢量和:nTotalMVX=xMove1+xMove2+…+yMoveF,竖直方向的运动矢量和:nTotalMVY=yMove1+yMove2+…+yMoveF;
S74、按先后顺序取出一帧N,其中N为该帧在帧序列中的第N帧N∈[1,F],计算该帧的补偿量,水平方向的补偿量:xMV=nMoveSumX-(nTotalMVX/F)*N,其中nMoveSumX=xMove1+xMove2+…+xMoveN;垂直方向的补偿量:yMV=nMoveSumY-(nTotalMVY/F)*N,其中nMoveSumY=yMove1+yMove2+…+yMoveN;
S75、设置取景框,取景框位于帧N的中心,距离上边界0.1*Height个像素,其中Height为图像高,距离下边界为0.1*Height个像素,距离左边界0.1*Width个像素,距离右边界为0.1*Width个像素,根据步骤S73中计算的补偿量移动取景框,其中水平方向的移动量为xMV,垂直方向的移动量为yMV;
S76、对取景框中的图像进行截取,并放大到原帧N的宽高后输出。
本发明解决其技术问题所采用的另一技术方案是:
构造一种基于Harris Corner的视频稳像***,包括:
解码器,用于获取当前视频的帧率F,以及当前帧A和下一帧B;
滤波器,用于对解码器获取的当前帧A和当前帧B采用Gaussian滤波,消除噪点;
缓存器,用于将经过滤波后的帧A和帧B放入缓存器的帧序列中;
特征点提取和匹配器,用于对缓存器中的帧A和帧B两帧采用HarrisCorner算法分别提取特征点,并进行特征点匹配;
图象旋转器,用于根据相匹配的特征点计算图像的旋转角θ;在θ不为0时,对帧B反方向旋转θ,并将旋转后的帧B作为缓存器帧序列中新的帧B,以对新的帧B重新执行所述特征点提取和匹配器中的相应操作;
分析与补偿器,用于在θ为0时,且缓存器中F帧都处理完成后,根据匹配的特征点,计算平面运动矢量,并对缓存器帧序列中的每一帧根据所述平面运动矢量进行分析与补偿后,输出每一帧。
本发明所述的***中,所述特征点提取和匹配器包括:
特征点提取模块,用于对缓存器中的帧A和帧B采用Harris Corner算法分别提取特征点;
特征点匹配模块,用于对所述特征点提取模块提取的特征点进行匹配,得到匹配对;其中,所述特征点匹配模块具体包括:
寻找特征点模块,用于在执行匹配时具体用于设帧A中的每个特征点x的坐标为:(xAPos,yAPos),在B帧中,以(xAPos,yAPos)为窗口中心,取尺寸为81x81的特征窗,寻找该特征窗中的特征点y;
相关性系数计算模块,用于对于对所述特征窗中的每一个特征点y,根据LACC算法,计算特征点x与特征点y之间的相关性系数;
计数器,用于在所述相关性系数大于0.9时,计数器nSum加1;
匹配模块,用于在特征窗的特征点y的计数器nSum等于1时,使该特征点y与当帧A中的特征点x形成一对匹配对;反之,特征点x在所述特征窗中没有匹配的特征点。
本发明所述的***中,所述图象旋转器中计算图像的旋转角θ具体为:从匹配对中选取任意两对匹配对F1(A1x,B1y),F2(A2x,B2y),其中A1x,A2x为帧A中的特征点,特征点B1y,B2y是分别与A1x,A2x匹配的帧B中的特征点,特征点A1x与A2y连接成线L1,B1y,B2y连接成线L2,根据余弦定理,计算L1和L2之间的夹角;枚举所有的特征点对,计算夹角,取支持度计数最大的角度作为图像的旋转角θ。
本发明所述的***中,所述分析与补偿器具体包括:
匹配对运动矢量计算模块,用于从匹配对中选取任意一对匹配对F1(A1x,B1y),其中A1x为帧A中的特征点,特征点B1y是与A1x匹配的帧B中的特征点,设特征点A1x的坐标为(xAPos,yAPos),特征点B1x的坐标为(xBPos,yBPos),则该特征点在两帧中水平方向的运动矢量为:xMove=xBPos-xAPos,垂直方向的运动矢量为:yMove=yBPos-yAPos,对所有匹配对进行计算,最后取支持度计数最大的xMove和yMove分别作为图像的水平方向的位移和垂直方向的位移;
帧补偿量计算模块,用于获取全部的F帧图像相对前一帧的运动矢量(xMove1,yMove1),(xMove2,yMove3)……(xMoveF,yMoveF),其中,xMoveF表示第F帧相对于前一帧在水平方向的运动矢量,yMoveF表示缓存器中帧序列的第F帧相对于前一帧在竖直方向的运动矢量;对全部F帧的运动矢量进行累加,水平方向的运动矢量和:nTotalMVX=xMove1+xMove2+…+yMoveF,竖直方向的运动矢量和:nTotalMVY=yMove1+yMove2+…+yMoveF;按先后顺序取出一帧N,其中N为该帧在帧序列中的第N帧N∈[1,F],计算该帧的补偿量,水平方向的补偿量:xMV=nMoveSumX-(nTotalMVX/F)*N,其中nMoveSumX=xMove1+xMove2+…+xMoveN;垂直方向的补偿量:yMV=nMoveSumY-(nTotalMVY/F)*N,其中nMoveSumY=yMove1+yMove2+…+yMoveN;
取景器,用于设置取景框,取景框位于帧N的中心,距离上边界0.1*Height个像素,其中Height为图像高,距离下边界为0.1*Height个像素,距离左边界0.1*Width个像素,距离右边界为0.1*Width个像素,根据计算的补偿量移动取景框,其中水平方向的移动量为xMV,垂直方向的移动量为yMV;对取景框中的图像进行截取,并放大到原帧N的宽高后输出。
本发明产生的有益效果是:本发明对一个帧频率中的当前帧和下一帧进行Gaussian滤波后,采用Harris Corner算法分别提取两帧中的特征点,并进行匹配,找到匹配对,根据下一帧相对于当前帧的旋转角θ进行帧的逆变换,以消除图像由于旋转产生的抖动,并将逆变换后的帧作为当前帧,再获取下一帧进行上述逆变换操作直到该帧率中的所有帧都消除了抖动,再根据匹配的特征点,计算平面运动矢量,并对每一帧进行分析和补偿,以输出稳定的图像。本发明基于Harris Corner的算法对图像进行稳定处理,使得稳像效果更好,且能满足实际应用中对效率的要求。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例基于Harris Corner的视频稳像方法的流程图;
图2是本发明实施例基于Harris Corner的视频稳像***的结构示意图一;
图3是本发明实施例基于Harris Corner的视频稳像***的结构示意图二。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明实施例基于Harris Corner的视频稳像方法,主要包括以下步骤:
S101、通过解码器获取当前视频的帧率F和当前帧A,帧率F表示当前视频每秒钟可显示F帧的图像;
S102、对当前帧A采用Gaussian滤波,消除噪点;在视频拍摄过程中,可能出现噪点,而噪点很可能被错误地识别为特征点,为了消除噪点,可采用Gaussian滤波去除噪点。
S103、从解码器中获取下一帧B,并对该帧同样采用Gaussian滤波,消除噪点;
S104、对经滤波后的帧A和帧B采用Harris Corner算法分别提取特征点,可同时将帧A、B放入帧缓冲序列中,并进行特征点匹配;即对帧A中的每个特征点,在帧B中找寻与之相匹配的特征点。在本发明的一个实施例中,设帧A中的每个特征点x的坐标为(xAPos,yAPos),在B帧中,以(xAPos,yAPos)为窗口中心,取尺寸为81x81的特征窗,寻找该特征窗中的特征点y,对于其中的每一个特征点y,可根据文献5(即《图像特征点匹配的强壮算法》:作者周骥、石教英、赵友兵,计算机辅助设计与图形学学报,2002)中提到的LACC算法,计算特征点x与特征点y之间的相关性系数,如果其相关性系数大于0.9,则计数器nSum加1,每个特征点y都有一个计数器;计算特征窗内所有的特征点y后,如果nSum等于1,则相对应的两个特征点是匹配的,形成一对匹配对,反之,该特征点没有找到匹配的特征点。
S105、根据相匹配的特征点计算图像的旋转角θ;其中,在本发明的一个实施例中旋转角θ可通过如下过程求得:从步骤S104所得到的匹配对中选取任意两对匹配对F1(A1x,B1y),F2(A2x,B2y),其中A1x,A2x为帧A中的特征点,特征点B1y,B2y是分别与A1x,A2x匹配的帧B中的特征点,特征点A1x与A2y连接成线L1,B1y,B2y连接成线L2,根据余弦定理,计算L1和L2之间的夹角;枚举所有的特征点对,计算夹角,取支持度计数最大的角度作为图像的旋转角θ,其中支持度最大的角为枚举所有的特征点匹配对所计算的夹角中出现机率最高的角。
S106、判断旋转角θ是否为0,以此来决定是否要对帧进行旋转;
S107、在θ不为0时,说明图像存在旋转变换,那么需要进行逆变换,则对帧B反方向旋转θ,即消除图像由于旋转产生的抖动,并将旋转后的帧B作为步骤S104中新的帧B,即让其替换帧缓冲序列中的帧B,转入执行步骤S104。
S108、在θ为0时,根据匹配的特征点,计算平面运动矢量,即此事图像没有旋转,可以直接平移就可以得到原来的图像。
S109、判断是否处理完F帧。
S110、在没有处理完F帧时,则将旋转后的B帧作为当前帧,重新进行特征点的提取与匹配,并替换帧缓冲序列中的帧B,即转入执行步骤S103,可以理解的是,步骤S103中的下一帧则为此时新的当前帧的下一帧,即当前帧改变,则下一帧相应地也改变;直到所有的F帧都处理完,即帧缓冲序列中缓存了由1到F帧的消除了抖动的F个帧的图像。
S111、若已经处理完F帧,则根据平面运动矢量对帧缓冲序列中的所有F帧,即每一帧都进行分析与补偿后,并输出每一帧。
在本发明的一个实施例中,对所有F帧进行分析与补偿具体包括步骤:
从匹配对中选取任意一对匹配对F1(A1x,B1y),其中A1x为帧A中的特征点,特征点B1y是与A1x匹配的帧B中的特征点,设特征点A1x的坐标为(xAPos,yAPos),特征点B1x的坐标为(xBPos,yBPos),则该特征点在两帧中水平方向的运动矢量为:xMove=xBPos-xAPos,垂直方向的运动矢量为:yMove=yBPos-yAPos,对所有匹配对进行计算,最后取支持度计数最大的xMove和yMove分别作为图像的水平方向的位移和垂直方向的位移;
根据步骤S71获取全部的F帧图像相对前一帧的运动矢量(xMove1,yMove1),(xMove2,yMove3)……(xMoveF,yMoveF),其中,xMoveF表示第F帧相对于前一帧在水平方向的运动矢量,yMoveF表示帧缓冲序列中第F帧相对于前一帧在竖直方向的运动矢量;
对全部F帧的运动矢量进行累加,水平方向的运动矢量和:nTotalMVX=xMove1+xMove2+…+yMoveF,竖直方向的运动矢量和:nTotalMVY=yMove1+yMove2+…+yMoveF;
按先后顺序取出一帧N,其中N为该帧在帧缓冲序列中的第N帧N∈[1,F],计算该帧的补偿量,水平方向的补偿量:xMV=nMoveSumX-(nTotalMVX/F)*N,其中nMoveSumX=xMove1+xMove2+…+xMoveN;垂直方向的补偿量:yMV=nMoveSumY-(nTotalMVY/F)*N,其中nMoveSumY=yMove1+yMove2+…+yMoveN;
设置取景框,取景框位于帧N的中心,距离上边界0.1*Height个像素,其中Height为图像高,距离下边界为0.1*Height个像素,距离左边界0.1*Width个像素,Width为图像宽,距离右边界为0.1*Width个像素,根据步骤S73中计算的补偿量移动取景框,其中水平方向的移动量为xMV,垂直方向的移动量为yMV;
对取景框中的图像进行截取,并放大到原帧N的宽高后输出。
如图2所示,本发明实施例基于Harris Corner的视频稳像***,主要包括:解码器10、滤波器20、缓存器30、特征点提取和匹配器40、图象旋转器50和分析与补偿器60,其中,
解码器10,用于获取当前视频的帧率F,以及当前帧A和下一帧B;
滤波器20,与解码器10连接,用于对解码器10获取的当前帧A和当前帧B采用Gaussian滤波,消除噪点;
缓存器30,与滤波器20连接,用于将经过滤波后的帧A和帧B放入缓存器的帧序列中;
特征点提取和匹配器40,与缓存器30连接,用于对缓存器30中的帧A和帧B两帧采用Harris Corner算法分别提取特征点,并进行特征点匹配;
图象旋转器50,与特征点提取和匹配器40和缓存器30分别连接,用于根据相匹配的特征点计算图像的旋转角θ,在θ不为0时,对帧B反方向旋转θ,并将旋转后的帧B作为缓存器30帧序列中新的帧B,以对新的帧B重新执行特征点提取、匹配等相应操作,直到缓存器30中帧序列1-F帧的图像都处理好,即所有帧相对于上一帧的θ为0。
分析与补偿器60,与缓存器30连接,用于缓存器30中F帧都处理完成后,在所有帧相对于上一帧的θ为0时,即消除所有的帧的抖动后,根据匹配的特征点,计算平面运动矢量,并对缓存器30帧序列中的每一帧根据平面运动矢量进行分析与补偿后,输出每一帧。
进一步地,如图3所示,特征点提取和匹配器40包括:特征点提取模块41和特征点匹配模块42,特征点提取模块41用于对缓存器中的帧A和帧B采用Harris Corner算法分别提取特征点;特征点匹配模块42,用于对特征点提取模块41提取的特征点进行匹配,得到匹配对;其中,特征点匹配模块42具体包括寻找特征点模块421、相关性系数计算模块422、计数器423和匹配模块424,其中,
寻找特征点模块421,用于在执行匹配时具体用于设帧A中的每个特征点x的坐标为:(xAPos,yAPos),在B帧中,以(xAPos,yAPos)为窗口中心,取尺寸为81x81的特征窗,寻找该特征窗中的特征点y;
相关性系数计算模块422,用于对于对特征窗中的每一个特征点y,根据LACC算法,计算特征点x与特征点y之间的相关性系数;
计数器423,用于在相关性系数大于0.9时,计数器nSum加1,每个特征点y都对应一个计数器423;
匹配模块424,用于在特征窗的特征点y的计数器nSum等于1时,使该特征点y与当帧A中的特征点x形成一对匹配对;反之,即计数器nSum不等于1时,特征点x在特征窗中没有匹配的特征点y。
本发明一个实施例中,图象旋转器50中计算图像的旋转角θ具体为:从匹配对中选取任意两对匹配对F1(A1x,B1y),F2(A2x,B2y),其中A1x,A2x为帧A中的特征点,特征点B1y,B2y是分别与A1x,A2x匹配的帧B中的特征点,特征点A1x与A2y连接成线L1,B1y,B2y连接成线L2,根据余弦定理,计算L1和L2之间的夹角;枚举所有的特征点对,计算夹角,取支持度计数最大的角度作为图像的旋转角θ。
本发明一个实施例中,如图3所示,分析与补偿器60具体包括:匹配对运动矢量计算模块61、帧补偿量计算模块62和取景器63,其中,
匹配对运动矢量计算模块61,用于从匹配对中选取任意一对匹配对F1(A1x,B1y),其中A1x为帧A中的特征点,特征点B1y是与A1x匹配的帧B中的特征点,设特征点A1x的坐标为(xAPos,yAPos),特征点B1x的坐标为(xBPos,yBPos),则该特征点在两帧中水平方向的运动矢量为:xMove=xBPos-xAPos,垂直方向的运动矢量为:yMove=yBPos-yAPos,对所有匹配对进行计算,最后取支持度计数最大的xMove和yMove分别作为图像的水平方向的位移和垂直方向的位移;
帧补偿量计算模块62,与匹配对运动矢量计算模块61连接,用于获取缓存器30中全部的F帧图像相对前一帧的运动矢量(xMove1,yMove1),(xMove2,yMove3)……(xMoveF,yMoveF),其中,xMoveF表示缓存器30中帧序列的第F帧相对于前一帧在水平方向的运动矢量,yMoveF表示缓存器30中帧序列的第F帧相对于前一帧在竖直方向的运动矢量;对全部F帧的运动矢量进行累加,水平方向的运动矢量和:nTotalMVX=xMove1+xMove2+…+yMoveF,竖直方向的运动矢量和:nTotalMVY=yMove1+yMove2+…+yMoveF;按先后顺序取出一帧N,其中N为该帧在帧序列中的第N帧N∈[1,F],计算该帧的补偿量,水平方向的补偿量:xMV=nMoveSumX-(nTotalMVX/F)*N,其中nMoveSumX=xMove1+xMove2+…+xMoveN;垂直方向的补偿量:yMV=nMoveSumY-(nTotalMVY/F)*N,其中nMoveSumY=yMove1+yMove2+…+yMoveN;
取景器63,与帧补偿量计算模块62连接,用于设置取景框,取景框位于帧N的中心,距离上边界0.1*Height个像素,其中Height为图像高,距离下边界为0.1*Height个像素,距离左边界0.1*Width个像素,Width为图像宽,距离右边界为0.1*Width个像素,根据计算的补偿量移动取景框,其中水平方向的移动量为xMV,垂直方向的移动量为yMV;对取景框中的图像进行截取,并放大到原帧N的宽高后输出,实现了图像的稳像输出。同理,取景器63对帧序列中的其他帧进行稳像输出。
本发明基于Harris Corner的视频稳像方法及***相对于现有技术来说,稳像效果更好,且能满足实际应用中对效率的要求。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。