发明名称 基于宏块特征的快速运动估计视频编码方法
摘要 本发明方法公开了一种基于宏块运动矢量特征分类的快速运动估计视频编码方法,涉及视频压缩编码领域。本发明包括以下步骤:首先从原始视频数据中提取当前编码宏块的亮度信息;针对整像素运动矢量搜索设计了简洁的运动估计搜索模板,合理分配搜索点;依据率失真准则对当前预测宏块的运动剧烈程度进行了分类,从当前预测宏块的运动特征着手,制定了相应的运动搜索优先停止策略,动态调整运动估计的搜索层数和搜索点数,自适应的选择相应的运动估计搜索准则。本发明方法与视频编码标准H.264中采用的运动估计搜索方法相比较,能有效地加速运动估计搜索过程,减少运动估计耗时,严格控制了码率增加,保证了较好的重构图像质量,实现了快速运动估计编码。
申请公布号 CN101815218B 申请公布日期 2012.02.08
申请号 CN201010140709.3 申请日期 2010.04.02
申请人 北京工业大学 发明人 刘鹏宇;贾克斌
分类号 H04N7/26(2006.01)I;H04N7/32(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 张慧
主权项 1.基于宏块特征的快速运动估计视频编码方法,根据当前预测宏块的特征和帧间预测编码模式设计运动估计搜索模板和动态的快速搜索方法,依据当前被预测宏块的运动剧烈程度,结合帧间预测编码模式的选择结果,动态的调整搜索范围和自适应的选择相应的运动估计搜索准则,从而实现对帧间宏块的快速运动估计预测编码,其特征在于具体包括下述步骤:步骤1:提取当前被预测宏块的亮度分量值:以当前被预测宏块的亮度信息为编码对象,从当前视频帧中提取被预测宏块的亮度分量信息;步骤2:确定运动估计搜索模板,分配搜索点:包含四层搜索,随着搜索半径的增加,搜索范围的扩大,使每层的搜索点数逐步递增由内到外,每层上的搜索点数依次为8,8,12,16;步骤3:确定高准确率的初始搜索点:采用拉格朗日率失真优化函数,作为运动估计判决依据,选择率失真意义上最佳的匹配预测块和最优运动矢量,使得运动矢量和残差编码的比特分配最小;利用拉格朗日率失真准则选择最优运动矢量问题可描述为:J<sub>motion</sub>(mv,ref|λ<sub>motin</sub>)=SAD[s,r(ref,mv)]+λ<sub>motin</sub>[R(mv-pred)+R(ref)]  (1)(1)式中J<sub>motion</sub>为当前预测的运动矢量的率失真代价值RDcost<sub>motion</sub>;s为当前宏块像素值;mv是当前矢量,pred为预测矢量;ref为选择的参考帧;r(ref,mv)为参考宏块的像素值;R是运动矢量进行差分编码消耗的比特数,包括运动矢量与其预测值的差值的编码比特数和参考帧的编码比特数;λ<sub>motion</sub>为拉格朗日乘子;SAD为当前块与参考块像素之间的绝对误差和;<maths num="0001"><![CDATA[<math><mrow><mi>SAD</mi><mo>[</mo><mi>s</mi><mo>,</mo><mi>r</mi><mrow><mo>(</mo><mi>ref</mi><mo>,</mo><mi>mv</mi><mo>)</mo></mrow><mo>]</mo><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>B</mi><mn>1</mn></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>B</mi><mn>2</mn></msub></munderover><mo>|</mo><mi>s</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mi>r</mi><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>m</mi><mi>x</mi></msub><mo>,</mo><mi>y</mi><mo>-</mo><msub><mi>m</mi><mi>y</mi></msub><mo>)</mo></mrow><mo>|</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>公式(2)中B<sub>1</sub>和B<sub>2</sub>分别表示块的水平像素数和垂直像素数,根据不同的帧间预测模式,其取值可为16,8,4;s(x,y)为当前宏块像素值;r(x,y)为参考宏块的像素值,m<sub>x</sub>和m<sub>y</sub>分别表示水平和垂直方向的位移量;利用拉格朗日率失真准则选择最优模式的问题可表述为:J<sub>mode</sub>(s,c,MODE|λ<sub>mode</sub>)=SSD(s,c,MODE|QP)+λ<sub>mode</sub>×R(s,c,MODE|QP)  (3)公式(3)中,MODE表示当前宏块的一种帧间编码模式;J<sub>mode</sub>(s,c,MODE|λ<sub>mode</sub>)表示MODE模式下的率失真代价值RDcost<sub>mode</sub>;s为原始的视频信号;c为采用MODE模式编码后的重构视频信号;λ<sub>mode</sub>为拉格朗日乘子;R(s,c,MODE|QP)是与模式和量化参数有关的包括宏块头信息、运动矢量和所有DCT块信息的总的二进制位数,它是通过对块进行实际的编码后获得的,所以其运算量较大;QP是编码量化步长;SSD(s,c,MODE)为原始信号与重构信号之间的平方差值和,即:<maths num="0002"><![CDATA[<math><mrow><mi>SSD</mi><mrow><mo>(</mo><mi>s</mi><mo>,</mo><mi>c</mi><mo>,</mo><mi>MODE</mi><mo>|</mo><mi>QP</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><msub><mi>B</mi><mn>1</mn></msub><mo>,</mo><msub><mi>B</mi><mn>2</mn></msub></mrow></munderover><msup><mrow><mo>(</mo><msub><mi>S</mi><mi>Y</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>]</mo><mo>-</mo><msub><mi>C</mi><mi>Y</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>MPDE</mi><mo>|</mo><mi>QP</mi><mo>]</mo><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><msub><mi>B</mi><mn>1</mn></msub><mo>,</mo><msub><mi>B</mi><mn>2</mn></msub></mrow></munderover><msup><mrow><mo>(</mo><msub><mi>S</mi><mi>U</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>]</mo><mo>-</mo><msub><mi>C</mi><mi>U</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>MPDE</mi><mo>|</mo><mi>QP</mi><mo>]</mo><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><msub><mi>B</mi><mn>1</mn></msub><mo>,</mo><msub><mi>B</mi><mn>2</mn></msub></mrow></munderover><msup><mrow><mo>(</mo><msub><mi>S</mi><mi>V</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>]</mo><mo>-</mo><msub><mi>C</mi><mi>V</mi></msub><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>MPDE</mi><mo>|</mo><mi>QP</mi><mo>]</mo><mo>)</mo></mrow><mn>2</mn></msup></mrow></math>]]></maths>公式(4)式中:B<sub>1</sub>和B<sub>2</sub>分别表示块的水平像素数和垂直像素数,其取值可为16,8,4;S<sub>Y</sub>[x,y]表示源宏块亮度信息的取值,C<sub>Y</sub>[x,y,MODE|QP]表示重建宏块的亮度信息的取值;S<sub>U</sub>,S<sub>V</sub>和C<sub>U</sub>,C<sub>V</sub>分别表示相应的色差信息的取值;具体包括以下步骤:步骤3.1:利用三种预测编码模式选取最佳的运动矢量Motion Vector,MV,即基于空间域的中值预测MV<sub>pred_space</sub>;基于H.264标准采用的运动估计多尺寸宏块划分特点的上层预测MV<sub>pred_uplayer</sub>;基于时间域的参考帧运动矢量预测MV<sub>pred_ref</sub>;(a)MV<sub>pred_space</sub>:中值预测,利用空间相关性,取已求出的当前帧的左、上、右上临块的运动矢量的中间值;(b)MV<sub>pred_uplayer</sub>:上层预测,利用H.264运动估计多尺寸宏块划分特点,包含模式1:16×16,模式2:16×8,模式3:8×16,模式4:8×8,模式5:8×4,模式6:4×8,模式7:4×4的分级搜索顺序,取已求出的同位置、上一级up layer、大一倍块的运动矢量;(c)MV<sub>pred_ref</sub>:时间域预测,利用时间相关性,根据已求出的前一帧参考帧中的当前块的运动矢量MV<sub>ref</sub>按比例进行预测<img file="FSB00000633605100024.GIF" wi="603" he="139" />其中当前宏块所在帧的时间为t,预测宏块所在参考帧的时间为t’;步骤3.2:相应的SAD值与预测的运动矢量MV具有很强的相关性;将MV<sub>pred_space</sub>,MV<sub>pred_uplayer</sub>,MV<sub>pred_ref</sub>所指向点的率失真代价值分别记为pred_space_mincost,pred_uplayer_mincost,pred_ref_mincost,将具有最小率失真代价值的运动矢量指向点作为初始搜索点,该点将作为下一步非对称十字形搜索的初始搜索中心点;步骤4:非对称十字形搜索:非对称十字搜索水平搜索范围设为W,垂直搜索范围为水平搜索范围的一半,即为W/2,相邻搜索点之间间距取两个像素单位,则水平方向的搜索点数为W/2;垂直方向的搜索点数为W/4;在非对称十字形搜索中共有W/2+W/4=3W/4个候选搜索点;本步骤在这3W/4个候选搜索点中确定的最佳匹配点作为下一步非均匀多层六边形格网格搜索的初始搜索中心点;步骤5:判断当前宏块运动剧烈程度:将当前预测宏块按剧烈程度分为三个档次,即运动剧烈程度较低、运动剧烈程度中等、运动剧烈程度较高;当前预测宏块运动剧烈程度的判断方法如下:步骤5.1:根据公式(1)计算当前预测宏块的运动矢量的率失真代价值记为RDcost<sub>motion</sub>,根据公式(3)计算当前预测宏块在mode模式下的率失真代值记为RDcost<sub>mode</sub>,从中选取具有最小预测的率失真代价值,记为RD_mincost,即:RD_mincost=min{Pred_space_mincost,Pred_uplayer_mincost,Pred_ref mincost};步骤5.2:依据初始搜索点选择的运动矢量预测方式确定pred_mincost的值:如果在步骤3中确定的初始搜索点采用时间域预测方式的运动矢量,则pred_mincost=pred_ref_mincost;如果在步骤3中确定的初始搜索点没有采用时间预测方式的运动矢量,再分为两类情况:若当前运动估计预测宏块的帧间编码模式选择的是16×16大尺寸模式,则pred_mincost=pred_space_mincost;若当前运动估计预测宏块的帧间编码模式选择的不是16×16大尺寸模式,则pred_mincost=pred_uplayer_mincost;步骤5.3:计算运动剧烈程度调整因子γ,δ:<maths num="0005"><![CDATA[<math><mrow><mi>&gamma;</mi><mo>=</mo><mfrac><mrow><mi>Bsize</mi><mo>[</mo><mi>blocktype</mi><mo>]</mo></mrow><mrow><mi>pred</mi><mo>_</mo><mi>min</mi><mi>cos</mi><msup><mi>t</mi><mn>2</mn></msup></mrow></mfrac><mo>-</mo><msub><mi>&alpha;</mi><mrow><mi>Radii</mi><mn>1</mn></mrow></msub><mo>[</mo><mi>blocktype</mi><mo>]</mo></mrow></math>]]></maths>(5)<maths num="0006"><![CDATA[<math><mrow><mi>&delta;</mi><mo>=</mo><mfrac><mrow><mi>Bsize</mi><mo>[</mo><mi>blocktype</mi><mo>]</mo></mrow><mrow><mi>pred</mi><mo>_</mo><mi>min</mi><mi>cos</mi><msup><mi>t</mi><mn>2</mn></msup></mrow></mfrac><mo>-</mo><msub><mi>&alpha;</mi><mrow><mi>Radii</mi><mn>2</mn></mrow></msub><mo>[</mo><mi>blocktype</mi><mo>]</mo></mrow></math>]]></maths>公式(5)中Bsize[blocktype]表示当前预测宏块的大小,其取值可为16,8,4;矩阵α<sub>Radii1</sub>[blocktype]依据7种帧间宏块划分模式,其取值定义为:α<sub>Radii1</sub>[1]=-0.23;α<sub>Radii1</sub>[2]=-0.23;α<sub>Radii1</sub>[3]=-0.23;α<sub>Radii1</sub>[4]=-0.25;α<sub>Radii1</sub>[5]=-0.27;α<sub>Radii1</sub>[6]=-0.27;α<sub>Radii1</sub>[7]=-0.28;矩阵α<sub>Radii2</sub>[blocktype]依据7种帧间宏块划分模式,的取值定义为:α<sub>Radii2</sub>[1]=-2.39;α<sub>Radii2</sub>[2]=-2.40;α<sub>Radii2</sub>[3]=-2.40;α<sub>Radii2</sub>[4]=-2.41;α<sub>Radii2</sub>[5]=-2.45;α<sub>Radii2</sub>[6]=-2.45;α<sub>Radii2</sub>[7]=-2.48;步骤5.4:当前预测宏块运动剧烈程度的判断:当RD_mincost<(1+γ)×pred_mincost时,判定当前预测宏块的运动剧烈程度较低;当(1+γ)×pred_mincost<RD_mincost<(1+δ)×pred_mincost时,判定当前预测宏块的运动剧烈程度中等;当RD_mincost>(1+δ)×pred_mincost时,判定当前预测宏块的运动剧烈程度较高;步骤6:进行5×5像素全搜索:在步骤5已经判断出当前搜索内容剧烈程度之后,只在搜索内容剧烈程度较低时才以当前预测点为中心,在其周围的4×4区域进行5×5个搜索点数的全搜索;当运动剧烈程度为中等或者较剧烈时则放弃5×5全搜索,直接进入步骤7;步骤7:非均匀多层六边形网格搜索:依据当前宏块的运动剧烈程度动态选择运动估计搜索层数:采用非均匀六边形搜索作为基本搜索模式,搜索层数最多为4层;运动剧烈程度较低时,只进行2层非均匀六边形网格搜索,每层的搜索点数为8;运动剧烈程度中等时,进行3层非均匀六边形网格搜索,由内到外的搜索点数依次为8,8,12;运动剧烈程度为较高时,才进行4层非均匀六边形网格搜索,由内到外的搜索点数依次为8,8,12,16;本步骤在非均匀六边形网格搜索中确定的最佳匹配点作为步骤8扩展对称六边形搜索的初始搜索中心点;步骤8:扩展对称六边形搜索:以步骤7确定的最佳匹配点作为本步骤的初始搜索中心点;这里采用两个阶段搜索方式:第一阶段:先以步长为2个像素进行对称六边形六点搜索,比较中心点和6个对角点的率失真代价值,依据率失真准则以率失真代价值最小点作为下一次搜索的中心点,直到中心点的率失真代价值变为最小点;第二阶段:再减小步长,以步长为1个像素进行菱形四点搜索,重复第一阶段的搜索过程,依据率失真准则直到中心点的率失真代价值为最小点时终止搜索,该点即为最终确定的整像素搜索最佳匹配点;步骤9:输出运动估计编码信息到Out.264文件中,并且记录运动估计时间、码率、峰值信噪比信息,以评价编码算法质量。
地址 100124 北京市朝阳区平乐园100号