一种视频编解码中的运动矢量预测方法和装置
所属技术领域
本发明涉及电数字数据处理技术领域,特别是一种视频编解码中的运动矢量预测方法和装置。
背景技术
传统的视频编码标准如ITU制定的H.261,H.263,H.26L,H.264标准以及ISO的MPEG组织制定的MEPG-1,MPEG-2,MPEG-4等都是基于混合编码,即Hybrid Coding框架之上的。所谓混合编码框架是综合考虑预测,变换以及熵编码的方法的编码框架,有以下主要特点:
1)利用预测去除时间域的冗余度;
2)利用变换去除空间域的冗余度;
3)而用熵编码去除统计上的冗余度;
上述视频编码标准都具有帧内编码帧,即I帧,和帧间编码帧,即P帧,I帧和P帧采用不同的编码方法。I帧的编码过程如下:对原始图像数据或帧内预测得到的残差块进行二维变换;然后在变换域中对变换系数进行量化;最后进行熵编码,即Huffman编码或者算术编码等。P帧的编码过程如下:采用运动估计得到运动矢量,然后采用基于运动补偿的帧间预测,接着对帧间预测得到的残差块进行二维变换,再对变换域系数进行量化,最后进行熵编码。
由于视频数据在时间域和空间域上较强的相关性,将运动估计得到运动矢量及预测残差进行编码可以获得较大的压缩率。运动矢量预测是提高编码增益的一个因素,因此运动矢量预测是视频编解码中重要的组成部分。
运动矢量编码比特数占编码视频比特数中相当大的一部分,所以利用当前待处理像素块周围已处理像素块的运动矢量对待处理像素块运动矢量进行预测,传输运动矢量预测值和实际运动矢量值之差代替直接传输运动矢量,可以提高压缩率。通常情况下,待处理像素块的运动矢量没有进行预测或者采用的预测方法较为简单,编码效率不高。
发明内容
本发明的目的是提供一种视频编解码中的运动矢量预测方法和装置,能根据当前待处理像素块周围已处理像素块的运动矢量来预测待处理像素块的运动矢量。
为了达到上述目的,本发明采用的技术方案如下:
根据当前待处理像素块E周围已处理像素块A、像素块B、像素块C、像素块D的运动矢量中的三个运动矢量来得到像素块E的运动矢量预测值(MVPRED,X,MVPRED,Y),(MVAX,MVAY)是像素块A的运动矢量,(MVBX,MVBY)是像素块B的运动矢量,(MVCX,MVCY)是像素块C的运动矢量,(MVDX,MVDY)是像素块D的运动矢量,下标X表示运动矢量的水平分量,下标Y表示运动矢量的竖直分量。
选择当前待处理像素块E周围的三个已处理像素块的运动矢量得到(MV1X,MV1Y)、(MV2X,MV2Y)、(MV3X,MV3Y),(MV1X,MV1Y)、(MV2X,MV2Y)、(MV3X,MV3Y)分别是(MVAX,MVAY)、(MVBX,MVBY)、(MVCX,MVCY)、(MVDX,MVDY)中的一个。
由MV1X、MV2X、MV3X预测得到暂存值TEMPX,如下:
a)计算ABSVAL12X、ABSVAL23X、ABSVAL13X,其中ABSVAL12X=|MV1X-MV2X|,ABSVAL23X=|MV2X-MV3X|,ABSVAL13X=|MV1X-MV3X|,||表示取绝对值;
b)如果ABSVAL12X小于ABSVAL23X且小于ABSVAL13X,那么暂存值TEMPX=MV1X+MV2X;
c)如果ABSVAL23X小于ABSVAL12X且小于ABSVAL13X,那么暂存值TEMPX=MV2X+MV3X;
d)如果ABSVAL13X小于ABSVAL12X且小于ABSVAL23X,那么暂存值TEMPX=MV1X+MV3X;
e)如果ABSVAL12X等于ABSVAL13X且小于ABSVAL23X,那么暂存值TEMPX=2×MV1X;
f)如果ABSVAL12X等于ABSVAL23X且小于ABSVAL13X,那么暂存值TEMPX=2×MV2X;
g)如果ABSVAL23X等于ABSVAL13X且小于ABSVAL12X,那么暂存值TEMPX=2×MV3X;
h)否则,暂存值TEMPX=2×MV1X。
根据暂存值TEMPX得到待处理像素块E的运动矢量水平分量预测值MVPRED,X,如下:
MVPRED,X=TEMPX÷2。
由MV1Y、MV2Y、MV3Y测得到暂存值TEMPY,如下:
a)计算ABSVAL12Y、ABSVAL23Y、ABSVAL13Y,其中ABSVAL12Y=|MV1Y-MV2Y|,ABSVAL23Y=|MV2Y-MV3Y|,ABSVAL13Y=|MV1Y-MV3Y|,||表示取绝对值;
b)如果ABSVAL12Y小于ABSVAL23Y且小于ABSVAL13Y,那么暂存值TEMPY=MV1Y+MV2Y;
c)如果ABSVAL23Y小于ABSVAL12Y且小于ABSVAL13Y,那么暂存值TEMPY=MV2Y+MV3Y;
d)如果ABSVAL13Y小于ABSVAL12Y且小于ABSVAL23Y,那么暂存值TEMPY=MV1Y+MV3Y;
e)如果ABSVAL12Y等于ABSVAL13Y且小于ABSVAL23Y,那么暂存值TEMPY=2×MV1Y;
f)如果ABSVAL12Y等于ABSVAL23Y且小于ABSVAL13Y,那么暂存值TEMPY=2×MV2Y;
g)如果ABSVAL23Y等于ABSVAL13Y且小于ABSVAL12Y,那么暂存值TEMPY=2×MV3Y;
h)否则,暂存值TEMPY=2×MV1Y。
根据暂存值TEMPY得到待处理像素块E的运动矢量竖直分量预测值MVPRED,Y,如下:
MVPRED,Y=TEMPY÷2。
一种视频编解码中的运动矢量预测装置包括:
用于接受存储当前待处理像素块周围已处理像素块的运动矢量的输入装置;
对输入装置内的已处理像素块的运动矢量进行选择的运动矢量选择处理装置;
用运动矢量选择处理后的三个运动矢量对当前待处理像素块的运动矢量进行预测处理的运动矢量预测处理装置;
用于存储运动矢量进行预测处理后的当前待处理像素块的运动矢量预测值并提供输出的输出装置;
输入装置与运动矢量选择处理装置之间通过数据总线连接,传输已处理像素块的运动矢量;运动矢量选择处理装置与运动矢量预测处理装置之间通过数据总线连接,传输三个运动矢量;运动矢量预测处理装置与输出装置之间通过数据总线连接,传输当前待处理像素块的运动矢量预测值。
本发明与背景技术相比,具有的有益效果:
本发明的视频编解码中运动矢量的预测方法能够选择当前待处理像素块周围的三个已处理像素块的运动矢量得到(MV1X,MV1Y)、(MV2X,MV2Y)、(MV3X,MV3Y),再根据这三个运动矢量来预测得到待处理像素块的运动矢量预测值,从而减少了待处理像素块的运动矢量编码比特数,提高了视频编码的压缩效率。本发明中的视频编解码中的运动矢量预测装置完全实现本发明中的预测方法。
附图说明
图1是待处理像素块与已处理像素块的示意图。
图2是视频编解码中的运动矢量预测装置的示意图。
图3是运动矢量预测装置中的运动矢量预测处理装置的示意图。
具体实施方式
视频数据可以被划分为不同大小的像素块进行运动估计。例如,4×4,4×8,8×4,8×8,4×16,16×4,16×8,8×16和16×16等。待编码像素块或待解码像素块被称为待处理像素块;已编码像素块或已解码像素块被称为已处理像素块。待编码像素块的周围可以有多个已编码像素块。
根据当前待处理像素块E周围已处理像素块A、像素块B、像素块C、像素块D的运动矢量中的三个运动矢量来得到像素块E的运动矢量预测值(MVPRED,X,MVPRED,Y),(MVAX,MVAY)是像素块A的运动矢量,(MVBX,MVBY)是像素块B的运动矢量,(MVCX,MVCY)是像素块C的运动矢量,(MVDX,MVDY)是像素块D的运动矢量,下标X表示运动矢量的水平分量,下标Y表示运动矢量的竖直分量。
选择当前待处理像素块E周围的三个已处理像素块的运动矢量得到(MV1X,MV1Y)、(MV2X,MV2Y)、(MV3X,MV3Y),(MV1X,MV1Y)、(MV2X,MV2Y)、(MV3X,MV3Y)分别是(MVAX,MVAY)、(MVBX,MVBY)、(MVCX,MVCY)、(MVDX,MVDY)中的一个。
由MV1X、MV2X、MV3X预测得到暂存值TEMPX,如下:
a)计算ABSVAL12X、ABSVAL23X、ABSVAL13X,其中ABSVAL12X=|MV1X-MV2X|,ABSVAL23X=|MV2X-MV3X|,ABSVAL13X=|MV1X-MV3X|,||表示取绝对值;
b)如果ABSVAL12X小于ABSVAL23X且小于ABSVAL13X,那么暂存值TEMPX=MV1X+MV2X;
c)如果ABSVAL23X小于ABSVAL12X且小于ABSVAL13X,那么暂存值TEMPX=MV2X+MV3X;
d)如果ABSVAL13X小于ABSVAL12X且小于ABSVAL23X,那么暂存值TEMPX=MV1X+MV3X;
e)如果ABSVAL12X等于ABSVAL13X且小于ABSVAL23X,那么暂存值TEMPX=2×MV1X;
f)如果ABSVAL12X等于ABSVAL23X且小于ABSVAL13X,那么暂存值TEMPX=2×MV2X;
g)如果ABSVAL23X等于ABSVAL13X且小于ABSVAL12X,那么暂存值TEMPX=2×MV3X;
h)否则,暂存值TEMPX=2×MV1X。
根据暂存值TEMPX得到待处理像素块E的运动矢量水平分量预测值MVPRED,X,如下:
MVPRED,X=TEMPX÷2。
由MV1Y、MV2Y、MV3Y预测得到暂存值TEMPY,如下:
a)计算ABSVAL12Y、ABSVAL23Y、ABSVAL13Y,其中ABSVAL12Y=|MV1Y-MV2Y|,ABSVAL23Y=|MV2Y-MV3Y|,ABSVAL13Y=|MV1Y-MV3Y|,||表示取绝对值;
b)如果ABSVAL12Y小于ABSVAL23Y且小于ABSVAL13Y,那么暂存值TEMPY=MV1Y+MV2Y;
c)如果ABSVAL23Y小于ABSVAL12Y且小于ABSVAL13Y,那么暂存值TEMPY=MV2Y+MV3Y;
d)如果ABSVAL13Y小于ABSVAL12Y且小于ABSVAL23Y,那么暂存值TEMPY=MV1Y+MV3Y;
e)如果ABSVAL12Y等于ABSVAL13Y且小于ABSVAL23Y,那么暂存值TEMPY=2×MV1Y;
f)如果ABSVAL12Y等于ABSVAL23Y且小于ABSVAL13Y,那么暂存值TEMPY=2×MV2Y;
g)如果ABSVAL23Y等于ABSVAL13Y且小于ABSVAL12Y,那么暂存值TEMPY=2×MV3Y;
h)否则,暂存值TEMPY=2×MV1Y。
根据暂存值TEMPY得到待处理像素块E的运动矢量竖直分量预测值MVPRED,Y,如下:
MVPRED,Y=TEMPY÷2。
实施例:
如果待编码像素块E周围的已编码像素块C不可用,那么可以选择(MV1X,MV1Y)=(MVAX,MVAY),(MV2X,MV2Y)=(MVBX,MVBY),(MV3X,MV3Y)=(MVDX,MVDY)。并且如果(MVAX,MVAY)=(1,2),(MVBX,MVBY)=(3,2),(MVDX,MVDY)=(7,-4),那么(MVPRED,X,MVPRED,Y)=(2,2)。
视频编解码中的运动矢量预测装置包括输入装置、运动矢量选择处理装置、运动矢量预测处理装置和输出装置,如图2所示。输入装置210用于接受存储当前待处理像素块周围已处理像素块的运动矢量。运动矢量选择处理装置220对输入装置内的已处理像素块的运动矢量进行选择处理,选择出三个运动矢量,其中包括的算术逻辑单元225可以用比较器、选择器实现该处理。运动矢量预测处理装置230用运动矢量选择处理后的三个运动矢量对当前待处理像素块的运动矢量进行预测处理,其中包括的算术逻辑单元235可以用乘法器、比较器、加法器和移位器实现该处理。输出装置240用于存储预测处理后的当前待处理像素块的运动矢量预测值并提供输出。
输入装置与运动矢量选择处理装置之间通过数据总线连接,传输已处理像素块的运动矢量;运动矢量选择处理装置与运动矢量预测处理装置之间通过数据总线连接,传输运动矢量选择处理值;运动矢量预测处理装置与输出装置之间通过数据总线连接,传输当前待处理像素块的运动矢量预测值。
上述的视频编解码中运动矢量的预测装置可以用处理器系统,微控制器,可编程逻辑器件或微处理器等实现部分或全部的操作。上述的一些操作可以用软件实现,同时另一些操作可以用硬件实现。
为了方便起见,这些操作被描述为不同的互连的功能单元或不同的软件模块。但是,这不是必要的。在一些应用中,这些功能单元或模块可以被集成到单一的逻辑器件、程序或操作中,而没有明显的界限。在任何情况中,功能单元和软件模块或描述的特征可以独立实现,或与其他操作一起用硬件或软件实现。
运动矢量预测处理装置包括运动矢量存储装置、加法装置、乘法装置、运动矢量暂存值存储装置、运动矢量差值绝对值生成装置、控制信号生成装置、选择器和输出处理装置,如图3所示。运动矢量存储装置310存储用于预测处理的三个运动矢量的水平分量或竖直分量或两者,都被称为运动矢量;加法装置320将三个运动矢量分别两两相加;乘法装置340将三个运动矢量各乘以2,该操作也可用移位器实现;运动矢量暂存值存储装置330存储加法装置输出的结果;运动矢量暂存值存储装置350存储乘法装置输出的结果;运动矢量差值绝对值生成装置360计算三个运动矢量两两间的差值绝对值;控制信号生成装置370根据运动矢量差值绝对值生成装置的数出结果生成控制信号;选择器380根据控制信号选择运动矢量暂存值存储装置330或350中的运动矢量暂存值;输出处理装置390将选择的运动矢量暂存值做加减法运算和除法运算,也可用移位运算代替,并提供输出当前待处理像素块的运动矢量预测值。
运动矢量存储装置与加法装置之间通过数据总线连接,传输运动矢量;运动矢量存储装置与乘法装置之间通过数据总线连接,传输运动矢量;运动矢量存储装置与运动矢量差值绝对值生成装置之间通过数据总线连接,传输运动矢量;加法装置与运动矢量暂存值存储装置之间通过数据总线连接,传输三个运动矢量分别两两相加的值;乘法装置与运动矢量暂存值存储装置之间通过数据总线连接,传输三个运动矢量各乘以2的值;运动矢量差值绝对值生成装置与控制信号生成装置之间通过数据总线连接,传输三个运动矢量分别两两相减的差值绝对值;运动矢量暂存值存储装置与选择器之间通过数据总线连接,传输运动矢量暂存值;控制信号生成装置与选择器之间通过数据总线连接,传输控制信号;选择器与输出处理装置之间通过数据总线连接,传输选择的运动矢量暂存值。
上述的运动矢量预测处理装置可以用处理器系统,微控制器,可编程逻辑器件或微处理器等实现部分或全部的操作。上述的一些操作可以用软件实现,同时另一些操作可以用硬件实现。
为了方便起见,这些操作被描述为不同的互连的功能单元或不同的软件模块。但是,这不是必要的。在一些应用中,这些功能单元或模块可以被集成到单一的逻辑器件、程序或操作中,而没有明显的界限。在任何情况中,功能单元和软件模块或描述的特征可以独立实现,或与其他操作一起用硬件或软件实现。