基于2bit深度像素的视频弹性运动估计方法与流程

文档序号:14575019发布日期:2018-06-02 01:37阅读:396来源:国知局

本发明涉及视频编码压缩领域,尤其是一种运算速度快、运动补偿质量好,实用性高的基于2 bit深度像素的弹性运动估计方法。



背景技术:

自第一代视频编码标准发展至今,虽然压缩效率不断提高,可是视频编码技术的基本框架至今未发生本质改变,始终是以分块为单位的差分预测+变换的闭环混合结构。在这个框架下,运动估计是一种有效的时间维差分预测技术,被广泛应用于H.261/2/3、MPEG-1/2/4、H.264/AVC和AVS等视频编码标准中,而且多年来视频编码效率的大部分提升均是由于其采用了更为优秀的运动估计算法。然而,运动估计环节所消耗的计算资源往往占编码器全部资源的50%以上,甚至可达80%。因此,运动估计算法的效率是影响视频编码性能的关键技术之一。

运动估计问题实际上一种匹配问题,其目标是根据当前帧中的像素点或者宏块,在参考帧中找到与之相对应的最佳匹配点或者匹配块。虽然平移运动模型在视频编码标准中获得了广泛应用,但是平移模型无法有效预测由物体的旋转、缩放、变形和摄像机运动产生的非刚性复合运动。于是,H.264/AVC和H.265/HEVC等编码标准不得不采用可变尺寸块结构来逼近复杂运动场,最小可以支持4×4像素的块运动估计。而随着块尺寸的减小,用于编码运动矢量的码流开销和各种软硬件计算开销也逐渐增加。有研究结论指出,当块尺寸减小至4×4像素时,软硬件开销的增加幅度已经超过其率失真性能的提升幅度,这说明仅仅依靠传统块平移模型来实现时间维预测的视频编码方法愈来愈无法很好地满足视频快速发展的需求。同时,基于块平移模型的运动估计通常不能获得平滑、连续的运动场,往往出现块效应,尤其是在低码率下,影响解码视频的主观质量。在这种情况下,2010年以来有研究人员提出了一种弹性运动估计模型(Elastic Motion Estimation Model),它可有效克服块平移模型的不足,最初主要广泛用于医学图像、物体追踪、图像稳定和运动分析等应用当中。

一方面,现有实验结果表明,传统基于8 bit深度像素的弹性运动估计在硬件设计、能耗方面要求较高,不能很好地满足某些视频编码应用提出的能耗低、速度快的要求。于是,有研究人员采用平滑卷积核将视频帧进行1 bit变换,将8 bit深度的像素降采样为1 bit深度,再采用高斯—牛顿法求解基于1 bit深度像素的弹性运动估计,但是其运动补偿质量明显下降。另外,也有研究人员采用像素的均值和方差提出了2 bit变换,但是该方法对于视频帧的主要边缘轮廓保持得不够完整,运动估计效率仍然不高,并且没有将其应有于弹性运动估计中。

另一方面,弹性运动模型的高斯—牛顿算法每次迭代均需计算偏导数、黑塞矩阵、逆矩阵、矩阵乘法、双线性插值和运动补偿误差,其计算复杂度甚至高于块平移模型的全搜索,这在很大程度上限制了其实用性。



技术实现要素:

本发明是为了解决现有技术所存在的上述技术问题,提供一种运算速度快、运动补偿质量好、能耗低的基于2 bit深度像素的视频弹性运动估计方法。

本发明的技术解决方案是:一种基于2 bit深度像素的视频弹性运动估计方法,其特征在于按照如下步骤进行:

步骤1. 若当前图像组(Group of Picture, GOP)的所有帧都已处理完毕,则算法结束;否则,选取当前GOP中未处理过的一帧作为当前帧,并为其确定一个参考帧(一般将当前帧的前一帧作为参考帧);

步骤2. 将参考帧进行2 bit变换;

步骤2.1 利用Prewitt算子计算参考帧中所有像素沿着水平方向和竖直方向的梯度;

步骤2.2 计算所有像素的梯度模长的均值和标准差;

步骤2.3 利用均值和标准差将参考帧中的每个8 bit深度的像素变换为2 bit深度的像素,变换过程由公式给出:

其中,所述表示像素坐标,表示参考帧的某个像素经过变换后得到的2 bit深度的像素值,表示参考帧在像素的梯度模长;

步骤3. 将当前帧进行2 bit变换;

步骤3.1利用Prewitt算子计算当前帧中所有像素沿着水平方向和竖直方向的梯度;

步骤3.2 计算所有像素的梯度模长的均值和标准差;

步骤3.3 利用均值和标准差将当前帧中的每个8 bit深度的像素变换为2 bit深度的像素,变换过程由公式给出:

其中,所述表示像素坐标,表示当前帧的某个像素经过变换后得到的2 bit深度的像素值,表示当前帧在像素处的梯度模长;

步骤4. 若当前帧的所有宏块都已处理完毕,则转入步骤1;否则,选取当前帧的一个未处理宏块作为当前宏块,设其大小为像素,表示当前宏块中某个像素的横、纵坐标,所述;

步骤4.1 为当前宏块建立弹性运动模型,该模型由公式给出:

其中,所述表示像素的弹性运动向量,为运动向量的分量个数,表示的第个分量,为基函数,定义由公式给出:

其中,所述;

步骤4.2 将弹性运动向量初始化为零向量;

步骤4.3 利用基于8 bit深度像素的菱形搜索(Diamond Search)计算当前宏块的平移运动分量和,搜索窗口尺寸为像素;

步骤4.4 计算雅克比矩阵,其中;

步骤4.5 将迭代计数器初始化为1;

步骤5. 根据弹性运动向量和公式、,为当前宏块中的每个像素计算其在参考帧中的匹配像素,并利用双线性插值计算该匹配像素的值,表示参考帧中位于坐标“”处的2 bit深度像素值;

步骤6. 计算运动补偿误差并将其二值化,转换方法由公式和公式给出:

步骤7. 计算,并将其二值化:;

步骤8. 利用二值化后的运动补偿误差计算向量b,其第k个分量的定义由公式给出:

所述表示异或运算;

步骤9. 如果,则转入步骤9.1计算迭代步长;否则,转入步骤9.2;

步骤9.1 令,所述;

步骤9.2 计算弹性运动向量的增量,其定义由公式给出:

所述为符号函数;

步骤10. 更新弹性运动参数;

步骤11. 如果或在相邻的3次迭代中连续变化3次,则令;

步骤12. 令迭代次数,判断迭代次数是否达到迭代次数阈值,如果,转入步骤5;否则,表明当前宏块处理完毕,转入步骤4。

与现有的技术相比,本发明从三个方面降低弹性运动估计的计算复杂度,并改善传统基于2 bit深度像素的运动估计精度:首先,采用2 bit深度像素进行运动估计,用异或运算替代传统弹性运动估计的高斯—牛顿法中的乘法运算,同时基于2 bit深度像素的高斯—牛顿法避免了黑塞矩阵及其逆矩阵的重复计算,从而降低弹性运动估计的计算复杂度;其次,根据Prewitt算子计算图像帧的梯度,再利用梯度和方差对视频帧进行2 bit变换,有利于保留视频帧的主要边缘轮廓,进而提高块匹配的精度;最后,传统基于2 bit深度像素的高斯—牛顿法在每次迭代中均采用了固定步长,而本发明则在迭代过程中根据匹配误差曲面的特点自适应地更新迭代步长,实现更有效地逼近全局最优点。因此,本发明具有运算速度快、运动补偿质量好、能耗低等优点。

具体实施方式

一种供基于2 bit深度像素的视频弹性运动估计方法,其特征在于按照如下步骤进行:

步骤1. 若当前图像组(Group of Picture, GOP)的所有帧都已处理完毕,则算法结束;否则,选取当前GOP中未处理过的一帧作为当前帧,并为其确定一个参考帧(一般将当前帧的前一帧作为参考帧);

步骤2. 将参考帧进行2 bit变换;

步骤2.1 利用Prewitt算子计算参考帧中所有像素沿着水平方向和竖直方向的梯度;

步骤2.2 计算所有像素的梯度模长的均值和标准差;

步骤2.3 利用均值和标准差将参考帧中的每个8 bit深度的像素变换为2 bit深度的像素,变换过程由公式给出:

其中,所述表示像素坐标,表示参考帧的某个像素经过变换后得到的2 bit深度的像素值,表示参考帧在像素的梯度模长;

步骤3. 将当前帧进行2 bit变换;

步骤3.1 利用Prewitt算子计算当前帧中所有像素沿着水平方向和竖直方向的梯度;

步骤3.2 计算所有像素的梯度模长的均值和标准差;

步骤3.3 利用均值和标准差将当前帧中的每个8 bit深度的像素变换为2 bit深度的像素,变换过程由公式给出:

其中,所述表示像素坐标,表示当前帧的某个像素经过变换后得到的2 bit深度的像素值,表示当前帧在像素处的梯度模长;

步骤4. 若当前帧的所有宏块都已处理完毕,则转入步骤1;否则,选取当前帧的一个未处理宏块作为当前宏块,设其大小为像素,表示当前宏块中某个像素的横、纵坐标,所述;

步骤4.1 为当前宏块建立弹性运动模型,该模型由公式给出:

其中,所述表示像素的弹性运动向量,为运动向量的分量个数,表示的第个分量,为基函数,定义由公式给出:

其中,所述,所述;

步骤4.2 将弹性运动向量初始化为零向量;

步骤4.3 利用基于8 bit深度像素的菱形搜索(Diamond Search)计算当前宏块的平移运动分量和,搜索窗口尺寸为像素,所述W=33;

步骤4.4 计算雅克比矩阵,其中;

步骤4.5 将迭代计数器初始化为1;

步骤5. 根据弹性运动向量和公式、,为当前宏块中的每个像素计算其在参考帧中的匹配像素,并利用双线性插值计算该匹配像素的值,表示参考帧中位于坐标“”处的2 bit深度像素值;

步骤6. 计算运动补偿误差并将其二值化,转换方法由公式和公式给出:

步骤7. 计算,并将其二值化:;

步骤8. 利用二值化后的运动补偿误差计算向量b,其第k个分量的定义由公式给出:

所述表示异或运算;

步骤9. 如果,则转入步骤9.1计算迭代步长;否则,转入步骤9.2;

步骤9.1 令,所述;

步骤9.2 计算弹性运动向量的增量,其定义由公式给出:

所述为符号函数;

步骤10. 更新弹性运动参数;

步骤11. 如果或在相邻的3次迭代中连续变化3次,则令;

步骤12. 令迭代次数,判断迭代次数是否达到迭代次数阈值(所述=15),如果,转入步骤5;否则,表明当前宏块处理完毕,转入步骤4。

不同视频测试序列采用本发明及不同运动估计方法得到的运动补偿峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)结果如表1。

表1 不同运动估计方法的运动补偿PSNR比较

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1