一种基于P帧的多假设运动补偿方法与流程

文档序号:17607408发布日期:2019-05-07 20:50阅读:306来源:国知局
一种基于P帧的多假设运动补偿方法与流程

本申请涉及视频编码技术领域,具体涉及一种基于P帧的多假设运动补偿方法。



背景技术:

目前,主流的视频编码标准如AVS、H.264、HEVC等大多使用混合编码框架,由于综合使用了运动估计和运动补偿技术,使得视频帧之间的时域相关性获得了很好的利用,视频的压缩效率得到了提高。

在传统的P帧运动补偿方法中,预测块只与经过运动估计之后获得的单个运动矢量有关,这使得得到的预测块的准确性并不是很高。对于如B帧的双向运动补偿方法,经过运动估计之后,它获得前向和后向两个运动矢量,并相应的获得两个预测块,最终预测块由两个预测块进行加权求平均获得,这使得得到的预测块更准确,但由于需要在码流中传入两个运动矢量,使得码率增大。



技术实现要素:

本申请提供一种可以在不增加码率的前提下,提高P帧运动补偿预测块准确性的多假设运动补偿方法。

该基于P帧的多假设运动补偿方法,包括:

以当前图像块的相邻已编码图像块作为参考图像块,利用参考图像块的运动矢量获得当前图像块的第一运动矢量,所述第一运动矢量指向第一预测块。

以所述第一运动矢量为参考值,对当前图像块进行联合运动估计获得当前图像块的第二运动矢量,所述第二运动矢量指向第二预测块。

对所述第一预测块和所述第二预测块进行加权平均,获得当前图像块的最终预测块。

在一具体实例中,以当前图像块的相邻已编码图像块作为参考图像块,为:以当前图像块的相邻已编码图像块中的三个图像块作为参考图像块。

进一步,利用参考图像块的运动矢量获得当前图像块的第一运动矢量,包括:

判断到三个参考图像块中只有一个参考图像块具有运动矢量,则将该运动矢量作为当前图像块的第一运动矢量;否则,继续执行下面步骤:

判断到三个参考图像块中有一个参考图像块的运动矢量的水平分量与另外两个参考图像块的运动矢量的水平分量方向相反时,将所述两个参考图像块的运动矢量的水平分量的平均值作为当前图像块的第一运动矢量的水平分量;判断到三个参考图像块中有一个参考图像块的运动矢量的垂直分量与另外两个参考图像块的运动矢量的垂直分量方向相反时,将所述两个参考图像块的运动矢量的垂直分量的平均值作为当前图像块的第一运动矢量的垂直分量;否则,继续执行下面步骤:

计算任意两个参考图像块在水平方向的距离,将距离最小的两个参考图像块的运动矢量的水平分量的平均值作为当前图像块的第一运动矢量的水平分量;计算任意两个参考图像块在垂直方向的距离,将距离最小的两个参考图像块的运动矢量的垂直分量的平均值作为当前图像块的第一运动矢量的垂直分量。

在一实施例中,对所述第一预测块和所述第二预测块进行加权平均,获得当前图像块的最终预测块时,第一预测块和第二预测块的权重和为1。具体的,第一预测块和第二预测块的权重各为1/2。

在一实施例中,在获得当前图像块的最终预测块后,还包括:

将当前图像块和最终预测块的残差信息、第二运动矢量加入到当前图像块的编码码流中。

本申请提供的一种基于P帧的多假设运动补偿方法,对于待编码的当前图像块,其最终预测块不仅与经过运动估计之后获得的运动矢量有关,还与其相邻已编码图像块的运动矢量有关,其最终预测块由第一运动矢量和第二运动矢量决定,第一运动矢量由其相邻已编码图像块的运动矢量决定,第二运动矢量以第一运动矢量为参考值通过联合运动估计获得,最终预测块由第一运动矢量和第二运动矢量指向的第一预测块和第二预测块的加权平均得到。使用多假设运动补偿的方法,可以使得待编码的当前图像块的预测块具有更高的准确性,且不会增大码率。

附图说明

下面结合附图和具体实施方式作进一步详细的说明。

图1为本申请一种实施例中参考图像块的示意图;

图2为本申请另一种实施例中参考图像块的示意图;

图3为当前主流的视频编码标准采用的编码框图;

图4为本申请一种实施例中基于P帧的多假设运动补偿方法流程图;

图5为本申请一种实施例中第一运动矢量的导出方法流程图;

图6为本申请一种实施例中当前图像块的预测块的获取示意图;

图7为本申请一种实施例中基于P帧的多假设运动补偿方法相应的解码框图。

具体实施方式

本申请实施例提供了一种基于P帧的多假设运动补偿方法,用于视频编码技术领域。本申请的发明构思在于,综合B帧和P帧的运动补偿方法的利弊,提出一种基于P帧的多假设运动补偿方法,该方法不仅利用视频帧之间的时域相关性,还利用了空域相关性,使得预测块的准确性更高,但同时又只需要在码流中传入一个运动矢量,无需增大码流码率。

在视频编码时,通常将每一帧图像划分宏块,每个宏块具有固定大小,从左上方的第一图像块开始依次按照从左往右、从上往下的顺序依次对一帧图像中的每一个图像块进行处理。请参考图1,例如将一帧图像划分为16*16像素的宏块(图像块),每一宏块的大小为16*16像素,对图像的处理顺序为,先从左到右处理第一行的图像块,然后再依次处理第二行,直到整帧图像被处理完毕。

假设图像块P为当前图像块,在某些实施例中,在对当前图像块P进行运动补偿时,以参考图像块的运动矢量作为参考值来计算当前图像块的第一运动矢量。由于帧图像中的每一个图像块与其相邻已编码图像块具有最高的相似性,因此,一般的,参考图像块采用当前图像块的相邻已编码图像块。如图1中,当前图像块P的参考图像块为A、B、C、D。

在某些实施例中,参考图像块在选择时,也可以选择当前图像块相邻的上块、右上块和左块图像块作为参考图像块,例如图1中当前图像块P的参考图像块为A、B、C;如果当前图像块的右上块图像块不存在(当前图像块位于右边第一列时)或者图像块C不具有运动矢量时,则用当前图像块的左上块图像块来代替,例如图1中当前图像块P的参考图像块选为A、B、D。

在某些实施例中,在对图像块进行编码时还会将图像块再进一步划分子图像块,例如将16*16像素的图像块再划分为4*4像素的子图像块,请参考图2。

本实施例中,在获得当前图像块的第一运动矢量时,以其相邻已编码的子图像块作为参考图像块为例进行说明,为了便于对本申请的理解,本实施例中将当前图像块的相邻已编码的子图像块统称为当前图像块的相邻已编码图像块,并且,选择如图2中的A、B、C作为当前图像块P的相邻已编码图像块,在C不具有运动矢量时,则将D代替C作为当前图像块P的相邻已编码图像块。

请参考图3,为当前主流的视频编码标准采用的编码框图。对输入的帧图像划分成若干宏块(图像块),然后对当前图像块进行帧内预测(帧内编码)或运动补偿(帧间编码),通过选择器选择编码代价最小的编码模式,从而得到当前图像块的预测块,当前图像块与预测块相差得到残差值,并对残差进行变换、量化、扫描和熵编码,形成码流序列输出。

在本申请中,对其中的运动估计和运动补偿部分提出了改进。在运动估计部分,第一运动矢量MVL1的导出利用当前块的相邻已编码图像块的运动矢量信息,第二运动矢量MVL2参考MVL1通过联合运动估计的方式进行搜索获得;在运动补偿部分获得最终预测块时,最终预测块由MVL1和MVL2指向的第一预测块和第二预测块的加权平均获得。本实施例中,在进行熵编码时,也只需要传输一个运动矢量(MVL2)及当前图像块与最终预测块的残差信息。

请参考图4,本实施例提供了一种基于P帧的多假设运动补偿方法,包括:

步骤10:以当前图像块的相邻已编码图像块作为参考图像块,利用参考图像块的运动矢量获得当前图像块的第一运动矢量MVL1,第一运动矢量MVL1指向第一预测块PL1。

步骤20:以第一运动矢量MVL1为参考值,对当前图像块进行联合运动估计获得当前图像块的第二运动矢量MVL2,第二运动矢量MVL2指向第二预测块PL2。

步骤30:对第一预测块PL1和第二预测块PL2进行加权平均,获得当前图像块的最终预测块PL。

在步骤10中,本实施例由于参考图像块选择如图2所示的方式,因此,在选择当前图像块的相邻已编码图像块作为参考图像块时,以选择当前图像块的相邻已编码图像块中的三个图像块作为参考图像块进行说明,即,如图2中A、B、C为当前图像块的参考图像块,当C不具有运动矢量时,选择D来代替C作为当前图像块的参考图像块。在其它实施例中,为了得到与当前图像块的周围图像块有关联的第一运动矢量,还可以选择当前图像块周围的其它相邻已编码图像块作为参考图像块。

本实施例中,第一运动矢量MVL1的获取与当前图像块的相邻已编码图像块A、B、C、D(参考图像块)有关,其获取公式如公式(1)所示。

MVL1=f(MVA,MVB,MVC,MVD)……(1)

其中,MVA、MVB、MVC、MVD是四个参考图像块的运动矢量,f是关于这四个运动矢量的函数。

请参考图5,步骤10中利用参考图像块的运动矢量获得当前图像块的第一运动矢量MVL1时,包括:

步骤101:判断三个参考图像块A、B、C中是否只有一个参考图像块具有运动矢量,具有运动矢量则说明该参考图像块有效,不具有运动矢量则说明该参考图像块无效,如果是则转到步骤102,如果否则转到步骤103。当参考图像块C无效时选择参考图像块D代替参考图像块C。

步骤102:将该有效的参考图像块的运动矢量作为当前图像块的第一运动矢量MVL1。

步骤103:判断三个参考图像块A、B、C中是否有一个参考图像块的运动矢量的水平/垂直分量与另外两个参考图像块的运动矢量的水平/垂直分量方向相反,如果是则转到步骤104,如果否则转到步骤105。

步骤104:将方向相同的两个参考图像块的运动矢量的水平分量的平均值作为当前图像块的第一运动矢量MVL1的水平分量

步骤103、104可以通过如下方式表示,记参考图像块A、B、C的水平分量为MVAx、MVBx、MVCx,垂直分量为MVAy、MVBy、MVCy;第一运动矢量MVL1的水平分量、垂直分量为MVL1x、MVL1y,则:

如果MVAx<0且MVBx>0且MVCx>0,或者MVAx>0且MVBx<0且MVCx<0,则MVL1x=(MVBx+MVCx)/2。

如果MVBx<0且MVAx>0且MVCx>0,或者MVBx>0且MVAx<0且MVCx<0,则MVL1x=(MVAx+MVCx)/2。

如果MVCx<0且MVAx>0且MVBx>0,或者MVCx>0且MVAx<0且MVBx<0,则MVL1x=(MVAx+MVBx)/2。

如果MVAy<0且MVBy>0且MVCy>0,或者MVAy>0且MVBy<0且MVCy<0,则MVL1y=(MVBy+MVCy)/2。

如果MVBy<0且MVAy>0且MVCy>0,或者MVBy>0且MVAy<0且MVCy<0,则MVL1y=(MVAy+MVCy)/2。

如果MVCy<0且MVAy>0且MVBy>0,或者MVCy>0且MVAy<0且MVBy<0,则MVL1y=(MVAy+MVBy)/2。

步骤105:计算三个参考图像块A、B、中任意两个在水平/垂直方向的距离。该距离可以用下面方式表示,记A和B、B和C、A和C之间在水平/垂直方向的距离分别为ABSVABx、ABSVBCx、ABSVCAx、ABSVABy、ABSVBCy、ABSVCAy,即,

ABSVABx=|MVAx-MVBx|,ABSVBCx=|MVBx-MVCx|,

ABSVCAx=|MVCx-MVAx|,ABSVABy=|MVAy-MVBy|,

ABSVBCy=|MVBy-MVCy|,ABSVCAy=|MVCy-MVAy|。

步骤106:将距离最小的两个参考图像块的运动矢量的水平/垂直分量的平均值作为当前图像块的第一运动矢量MVL1的水平/垂直分量,即,

如果ABSVABx<ABSVBCx且ABSVABx<ABSVCAx,

则MVL1x=(MVAx+MVBx)/2;

如果ABSVBCx<ABSVABx且ABSVBCx<ABSVCAx,

则MVL1x=(MVBX+MVCX)/2;

如果ABSVCAx<ABSVABx且ABSVCAx<ABSVBCx,

则MVL1x=(MVAx+MVCx)/2;

如果ABSVABy<ABSVBCy且ABSVABy<ABSVCAy,

则MVL1y=(MVAy+MVBy)/2;

如果ABSVBCy<ABSVABy且ABSVBCy<ABSVCAy,

则MVL1y=(MVBY+MVCY)/2;

如果ABSVCAy<ABSVABy且ABSVCAy<ABSVBCy,

则MVL1y=(MVAy+MVCy)/2。

第二运动矢量MVL2以第一运动矢量MVL1为参考值通过联合运动估计的方式导出,其具体导出公式可如公式(2)所示。

MVL2=f(MVL1)……(2)

其中,f是一个与第一运动矢量MVL1有关的进行联合运动估计的函数。

在本实例中,第二运动矢量MVL2使用的联合运动估计的估计过程与常规的运动估计过程一样(例如常规的B帧运动估计过程),因此在此不再赘述。由于本实施例中第二运动矢量MVL2通过联合运动估计的方式导出时参考了第一运动矢量MVL1,因此,在求拉格朗日代价函数时,在搜索范围内使得如公式(3)所示的拉格朗日代价函数最小的运动矢量即作为第二运动矢量MVL2。

J(λsad,MVL2)=Dsad(S,MVL2,MVL1)+λsad*R(MVL2-MVL2pred)……(3)

其中,MVL2pred是MVL2的预测值,R(MVL2-MVL2pred)表示编码运动矢量残差的比特数,λsad为R(MVL2-MVL2pred)的一个权重系数,Dsad(S,MVL2,MVL1)表示当前图像块S与预测块的残差,它可以由公式(4)进一步获取。

其中,x、y为当前图像块S内的像素点在当前编码帧内的相对坐标位置,MVL1x、MVL1y、MVL2x、MVL2y分别为MVL1和MVL2的水平和垂直分量,Sref代表参考帧。

请参考图6,为本实施例中当前图像块的预测块的获取示意图,其中,时间为t-1的帧图像作为前向参考帧,时间为t的帧图像为当前编码帧。在步骤30中对第一预测块PL1和第二预测块PL2进行加权平均,获得当前图像块S的最终预测块PL,即PL=aPL1+bPL2,a、b为加权系数,a+b=1,本实施例中,a=b=1/2,即第一预测块PL1和第二预测块PL2的权重为1/2。

本实施例中,在获得当前图像块的最终预测块后,还包括:将当前图像块和最终预测块的残差信息、第二运动矢量MVL2加入到当前图像块的编码码流中。由于编码码流中只包含一个运动矢量MVL2,因此,本实施例提供的基于P帧的多假设运动补偿方法可以在不增大码流码率的前提下,提高P帧预测块的准确性。

请参考图7,为本实施例采用的解码框图,在解码端,当码流输入之后,经过熵解码、反量化、反变换,通过一选择器选择是帧内编码还是帧间编码,对于帧间编码,通过解码信息和参考缓冲区中的重建帧获得当前图像块的预测块,再将预测块与残差块相加,即得到重建块。对于本申请来说,MVL1的值可以通过推导求出,具体推导过程见编码端中MVL1的导出过程,MVL2的值通过熵解码得到,MVL1和MVL2分别在参考重建帧上指向对应的预测块PL1和PL2,最终预测块PL由PL1和PL2加权求平均得到。

在具体的编码过程中,可以单独采用本申请实施例中提供的多假设运动补偿方法对P帧进行编码,也可以将该多假设运动补偿方法作为一种新的编码模式加入到P帧的编码模式中,经过模式决策过程,最终选择一种使得编码代价最小的编码模式对P帧进行编码。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分步骤可以通过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘或光盘等。

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。

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