主权项 |
1、一种基于运动矢量合成的视频转码方法,包括解码和编码两部分,其特征在于,由原来的运动矢量合成新的运动矢量时,对各个运动矢量的权重进行动态调整,通过误差绝对和的比较,找到估计最准确的运动矢量;具体包括如下步骤:1)对输入的码流进行解码,得到输入图像的图像格式、残差、运动矢量信息;2)从解码得到的信息中找到第n帧中目标宏块MB1在要删除的第n-1帧中对应的宏块MB1’,以及第n-1帧中与该MB1’宏块重叠的相关宏块;根据运动矢量合成方法来估计宏块MB1’在第n-2帧中的运动矢量,并进一步得到MB1相对于第n-2帧的运动矢量V1(n);采用所述的运动矢量合成方法得到V1(n)的步骤如下:(1)设定搜索步长L,L>0,起始迭代次数k=0;(2)用重叠面积最大的宏块的运动矢量来估计第n帧中的宏块MB1对应于n-1帧中的宏块MB1’的运动矢量V1(n-1),根据公式V1(n)=V1(n-1)+I1(n)算出V1(n)的值,并作为运动矢量的最佳估计值,其中I1(n)为目标宏块MB1的运动矢量;按此运动矢量找到n帧中的宏块MB1在n-2帧中对应的宏块MB1”,设:宏块MB1和宏块MB1”内所含的像素为M*N,计算这两个宏块的绝对误差和SAD,将此SAD值作为当前最小的SAD值;设:PC(x+k,y+l)和PR(x+i+k,y+j+l)为宏块MB1和宏块MB1”内对应的点,其中(i,j)为运动矢量,则有SAD的计算公式为:<math> <mrow> <mi>SAD</mi> <mo>=</mo> <munderover> <mi>Σ</mi> <mrow> <mi>k</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>M</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <munderover> <mi>Σ</mi> <mrow> <mi>l</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mi>N</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mo>|</mo> <msub> <mi>P</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>k</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>l</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>P</mi> <mi>R</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>i</mi> <mo>+</mo> <mi>k</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>j</mi> <mo>+</mo> <mi>l</mi> <mo>)</mo> </mrow> <mo>|</mo> </mrow> </math> (3)将重叠宏块的面积进行指数修正后,作为权重进行运动矢量合成;设:第n-1帧中与MB1’交叠的四个宏块对应的运动矢量为I1(n-1),I2(n-1),I3(n-1),I4(n-1),他们对应的重叠面积分别为B1,B2,B3,B4,指数因子a=2k,运动矢量V1(n-1)的计算公式为:<math> <mrow> <msubsup> <mi>V</mi> <mn>1</mn> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> <mo>=</mo> <mfrac> <mrow> <munderover> <mi>Σ</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>4</mn> </munderover> <msubsup> <mi>B</mi> <mi>i</mi> <mi>a</mi> </msubsup> <mo>*</mo> <msubsup> <mi>I</mi> <mi>i</mi> <mrow> <mo>(</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </msubsup> </mrow> <mrow> <munderover> <mi>Σ</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>4</mn> </munderover> <msubsup> <mi>B</mi> <mi>i</mi> <mi>a</mi> </msubsup> </mrow> </mfrac> <mo>,</mo> </mrow> </math> 算出V1(n-1)的值以后,进而计算出对应的V1(n)和SAD值;如果得到的SAD值小于已得到的最小值,则把此次得到的估计值V1(n)作为当前最佳估计值,将此SAD值作为当前最小的SAD值;否则继续进行下一步;(4)令k=k+1,如果新的k值小于搜索步长L,则转到步骤(3)继续进行运动矢量的合成,否则完成搜索,得到V1(n)的最佳估计值;3)得到MB1相对于n-2帧的运动矢量以后,计算按此运动矢量进行估计所还原的图像与实际图像的差值,并对其差值以及运动矢量都进行编码;4)对于第n帧中的所有宏块,对其运动矢量和估计差值都进行编码以后,转码后的第n帧的信息就保存完毕了;5)在每一个被删除的图像帧附近都做2)-4)步骤的处理,就可以得到输出码流,从而完成了降低帧率的视频转码。 |