掌桥专利:专业的专利平台
掌桥专利
首页

一种双向帧间预测方法及装置

文献发布时间:2024-04-18 19:59:31


一种双向帧间预测方法及装置

本申请是分案申请,原申请的申请号是201810274457.X,原申请日是2018年03月29日,原申请的全部内容通过引用结合在本申请中。

技术领域

本申请实施例涉及视频图像编解码技术领域,尤其涉及一种双向帧间预测方法及装置。

背景技术

在视频编解码技术中,对于当前图像块而言,可以仅根据一个参考图像块生成当前图像块的预测图像块(即单向帧间预测),也可以根据至少两个参考图像块生成当前图像块的预测图像块(即双向帧间预测),上述至少两个参考图像块可来自于同一个参考帧或者不同的参考帧。

为了使得解码端与编码端使用相同的参考图像块,编码端需要在码流中向解码端发送各个图像块的运动信息。一般的,当前图像块的运动信息包括参考帧的索引值、运动矢量预测值(motion Vector Predictor,MVP)标志和运动矢量差(Motion VectorDifference,MVD)。解码端根据参考帧索引值、MVP标志和MVD,即可以在选定的参考帧中找到正确的参考图像块。

相应的,对于双向帧间预测而言,编码端需要向解码端发送每个图像块在每一个方向的运动信息。这样,运动信息占用的传输资源较大,降低了传输资源的有效利用率,降低了传输速率,且降低了编解码压缩效率。

发明内容

本申请实施例提供一种双向帧间预测方法及装置,能够运动信息占用的传输资源较大,降低了传输资源的有效利用率,降低了传输速率,且降低了编解码压缩效率的问题。

为达到上述目的,本申请实施例采用如下技术方案:

第一方面,提供一种双向帧间预测方法,获取用于指示根据第一运动信息确定第二运动信息的指示信息,这里,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;获取第一运动信息;根据获取到的第一运动信息,确定第二运动信息,这样,即可根据获取到的第一运动信息和确定出的第二运动信息,确定当前图像块的预测像素。

本申请提供的双向帧间预测方法在获取到指示信息后,根据第一运动信息确定第二运动信息,这样,码流中仅包括指示信息和第一运动信息即可,无需再包括第二运动信息。与现有技术中,码流包括每个图像块在每个方向的运动信息相比,有效的减少了码流包括的运动信息,提高了传输资源的有效利用率,提高了传输速率,相应的,也提高了编解码速率。

可选的,在本申请的一种可能的实现方式中,上述“根据第一运动信息,确定第二运动信息”的方法为:获取第一运动信息中的第一参考帧的索引值,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,这里,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表,确定第二参考帧的序号,这里,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据第一运动信息中的第一运动矢量差和第一运动矢量预测值标志,确定第一运动矢量,第一运动矢量为当前图像块在第一方向的运动矢量;根据下述公式确定第二运动信息中的第二运动矢量:

该公式中,mv_lY表示第二运动矢量,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mv_lX表示第一运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述“根据第一运动信息,确定第二运动信息”的方法为:获取第一运动信息中的第一参考帧的索引值,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表,确定第二参考帧的序号,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据第一运动信息中的第一运动矢量差和第一运动矢量预测值标志,确定第一运动矢量,第一运动矢量为当前图像块在第一方向的运动矢量;第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,根据下述公式确定第二运动信息中的第二运动矢量:

mv_lY=-mv_lX

该公式中,mv_lY表示第二运动矢量,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mv_lX表示第一运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

上述“第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况”,或者,“第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0表示,或者用公式POC_listY=2*POC_Cur-POC_listX表示,本申请对此不作具体限定。

此外,上述“第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况”或者“第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0表示。

可选的,在本申请的另一种可能的实现方式中,上述“根据第一运动信息,确定第二运动信息”的方法为:获取第一运动信息中的第一参考帧的索引值和第一运动矢量差,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表确定第二参考帧的序号,根据第二参考帧的索引值和第二候选预测运动矢量列表确定第二预测运动矢量,第二预测运动矢量为当前图像块在第二方向的预测运动矢量,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据下述公式确定第二运动信息中的第二运动矢量差:

该公式中,mvd_lY表示第二运动矢量差,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mvd_lX表示第一运动矢量差;根据第二预测运动矢量和第二运动矢量差,确定第二运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述“根据第一运动信息,确定第二运动信息”的方法为:获取第一运动信息中的第一参考帧的索引值和第一运动矢量,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表确定第二参考帧的序号,根据第二参考帧的索引值和第二候选预测运动矢量列表确定第二预测运动矢量,第二预测运动矢量为当前图像块在第二方向的预测运动矢量,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;在第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,根据下述公式确定第二运动信息中的第二运动矢量差:

mvd_lY=-mvd_lX

该公式中,mvd_lY表示第二运动矢量差,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mvd_lX表示第一运动矢量差;这样,根据第二预测运动矢量和第二运动矢量差,确定第二运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

同理,上述“第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况”,或者,“第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0表示,或者用公式POC_listY=2*POC_Cur-POC_listX表示,本申请对此不作具体限定。

上述“第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况”或者“第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0表示。

可以看出,本申请提供的双向帧间预测方法可以为根据第一运动矢量确定第二运动矢量,也可以为根据第一运动矢量差确定第二运动矢量差,并根据第二运动矢量差确定第二运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述“获取第二参考帧的索引值”的方法为:根据当前帧的序号和第一参考帧的序号,通过公式POC_listY0=2*POC_Cur-POC_listX,计算第一序号,其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY0表示第一序号;在第二参考帧列表包括第一序号的情况下,将第一序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述“获取第二参考帧的索引值”的方法为:根据当前帧的序号和第一参考帧的序号,通过公式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0,计算第二序号,其中,POC_listY0'表示第二序号;在第二参考帧列表包括第二序号的情况下,将第二序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述“获取第二参考帧的索引值”的方法为:根据当前帧的序号和第一参考帧的序号,通过公式POC_listX≠POC_listY0'',计算第三序号,其中,POC_listY0''表示第三序号;将第三序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述“获取第二参考帧的索引值”的方法为:根据当前帧的序号和第一参考帧的序号,通过公式POC_listY0=2*POC_Cur-POC_listX,计算第一序号,其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY0表示第一序号。在第二参考帧列表包括第一序号的情况下,将第一序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。在第二参考帧列表不包括第一序号的情况下,根据当前帧的序号和第一参考帧的序号,通过公式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0,计算第二序号,其中,POC_listY0'表示第二序号。在第二参考帧列表包括第二序号的情况下,将第二序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。在第二参考帧列表不包括第二序号的情况下,根据当前帧的序号和第一参考帧的序号,通过公式POC_listX≠POC_listY0'',计算第三序号,其中,POC_listY0''表示第三序号;将第三序号表征的参考帧在第二参考帧列表中的编号确定为所述第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述“获取第二参考帧的索引值”的方法为:解析码流,获取第二参考帧的索引值。

可以看出,本申请中“获取第二参考帧的索引值”的方法可以有多种,具体采用哪一种方法获取第二参考帧的索引值需要根据实际需求或预先设定确定。

第二方面,提供一种双向帧间预测装置,该双向帧间预测装置包括获取单元和确定单元。

具体的,上述获取单元,用于获取指示信息,指示信息用于指示根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息,以及获取第一运动信息。上述确定单元,用于根据获取单元获取到的第一运动信息,确定第二运动信息,以及用于根据第一运动信息和第二运动信息,确定当前图像块的预测像素。

可选的,在本申请的一种可能的实现方式中,上述确定单元具体用于:获取第一运动信息中的第一参考帧的索引值,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表,确定第二参考帧的序号,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据第一运动信息中的第一运动矢量差和第一运动矢量预测值标志,确定第一运动矢量,第一运动矢量为当前图像块在第一方向的运动矢量;根据下述公式确定第二运动信息中的第二运动矢量:

其中,mv_lY表示第二运动矢量,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mv_lX表示第一运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述确定单元具体用于:获取第一运动信息中的第一参考帧的索引值,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表,确定第二参考帧的序号,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据第一运动信息中的第一运动矢量差和第一运动矢量预测值标志,确定第一运动矢量,第一运动矢量为当前图像块在第一方向的运动矢量;第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,根据下述公式确定第二运动信息中的第二运动矢量:

mv_lY=-mv_lX

该公式中,mv_lY表示第二运动矢量,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mv_lX表示第一运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述确定单元具体用于:获取第一运动信息中的第一参考帧的索引值和第一运动矢量差,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表确定第二参考帧的序号,根据第二参考帧的索引值和第二候选预测运动矢量列表确定第二预测运动矢量,第二预测运动矢量为当前图像块在第二方向的预测运动矢量,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;根据下述公式确定第二运动信息中的第二运动矢量差:

其中,mvd_lY表示第二运动矢量差,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mvd_lX表示第一运动矢量差;根据第二预测运动矢量和第二运动矢量差,确定第二运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述确定单元具体用于:获取第一运动信息中的第一参考帧的索引值和第一运动矢量,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第一参考帧的索引值为第一参考帧在第一参考帧列表中的编号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表确定第二参考帧的序号,根据第二参考帧的索引值和第二候选预测运动矢量列表确定第二预测运动矢量,第二预测运动矢量为当前图像块在第二方向的预测运动矢量,第二参考帧为当前图像块在第二方向的参考帧,第二参考帧的索引值为第二参考帧在第二参考帧列表中的编号;在第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,根据下述公式确定第二运动信息中的第二运动矢量差:

mvd_lY=-mvd_lX

其中,mvd_lY表示第二运动矢量差,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mvd_lX表示第一运动矢量差;根据第二预测运动矢量和第二运动矢量差,确定第二运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,在本申请的另一种可能的实现方式中,上述获取单元具体用于:根据当前帧的序号和第一参考帧的序号,通过公式POC_listY0=2*POC_Cur-POC_listX,计算第一序号,其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY0表示第一序号;在第二参考帧列表包括第一序号的情况下,将第一序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述获取单元具体用于:根据当前帧的序号和第一参考帧的序号,通过公式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0,计算第二序号,其中,POC_listY0'表示第二序号;在第二参考帧列表包括第二序号的情况下,将第二序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

可选的,在本申请的另一种可能的实现方式中,上述获取单元具体用于:根据当前帧的序号和第一参考帧的序号,通过公式POC_listX≠POC_listY0'',计算第三序号,其中,POC_listY0''表示第三序号;将第三序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

第三方面,提供一种双向帧间预测方法。该双向帧间预测方法存在多种实现方式:

一种实现方式为:解析码流,获取第一标识,第一标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;若第一标识的取值为第一预设值,获取第一运动信息,并根据第一运动信息确定第二运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

另一种实现方式为:解析码流,获取第二标识,第二标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息;若第二标识的取值为第二预设值,获取第三标识,第三标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;若第三标识取值为第三预设值,获取第一运动信息,并根据第一运动信息确定第二运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

另一种实现方式为:解析码流,获取第二标识,第二标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息;若第二标识的取值为第二预设值,获取第一运动信息,并根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

另一种实现方式为:解析码流,获取第四标识,第四标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息;若第四标识的取值为第四预设值,根据第一参考帧列表和第二参考帧列表,确定第一参考帧的索引值和第二参考帧的索引值,第一参考帧列表为当前图像块在第一方向的参考帧列表,第二参考帧列表为当前图像块在第二方向的参考帧列表,第一参考帧为当前图像块在第一方向的参考帧,第二参考帧为当前图像块在第二方向的参考帧;获取第一运动矢量差和第一运动矢量预测值标志,并根据第一运动信息确定第二运动信息,第一运动信息包括第一参考帧的索引值、第一运动矢量差和第一运动矢量预测值标志,第二运动信息为当前图像块在第二方向的运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

另一种实现方式为:解析码流,获取第一标识,第一标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;若第一标识的取值为第八预设值,获取第五标识,该第五标识用于指示是否根据第二运动信息确定第一运动信息;若第五标识的取值为第五预设值,获取第二运动信息,并根据第二运动信息确定第一运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

另一种实现方式为:解析码流,获取第二标识,第二标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息;若第二标识的取值为第二预设值,获取第三标识,第三标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息;若第三标识取值为第六预设值,获取第二运动信息,并根据第二运动信息确定第一运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

上述第一标识~第四标识的具体描述可以参考后续描述。

本申请提供的双向帧间预测方法中,在解析码流获取到某一标识后,根据该标识的取值,确定是否根据第一运动信息确定第二运动信息。在确定需要根据第一运动信息确定第二运动信息后,获取第一运动信息,进而根据获取到的第一运动信息确定第二运功信息,这样,码流中仅包括相应标识和第一运动信息即可,无需再包括第二运动信息。与现有技术中,码流包括每个图像块在每个方向的运动信息相比,有效的减少了码流包括的运动信息,提高了传输资源的有效利用率,提高了传输速率,相应的,也提高了编解码速率。

第四方面,提供一种双向帧间预测装置,该双向帧间预测装置包括获取单元和确定单元。

具体的,在一种实现方式中,上述获取单元,用于解析码流,获取第一标识,第一标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息,以及用于若第一标识的取值为第一预设值,获取第一运动信息。上述确定单元,用于根据上述获取单元获取到的第一运动信息确定第二运动信息,以及用于根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

在另一种实现方式中,上述获取单元,用于解析码流,获取第二标识,第二标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息,以及用于若第二标识的取值为第二预设值,获取第三标识,第三标识用于指示是否根据第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息,以及用于若第三标识取值为第三预设值,获取第一运动信息。上述确定单元,用于根据上述获取单元获取到的第一运动信息确定第二运动信息,以及用于根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

在另一种实现方式中,上述获取单元,用于解析码流,获取第二标识,第二标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息,以及用于若第二标识的取值为第二预设值,获取第一运动信息。上述确定单元,用于根据上述获取单元获取到的第一运动信息确定第二运动信息,第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息,以及用于根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

在另一种实现方式中,上述获取单元,用于解析码流,获取第四标识,第四标识用于指示是否采用运动信息推导算法计算当前图像块的运动信息。上述确定单元,用于若上述获取单元获取到的第四标识的取值为第四预设值,根据第一参考帧列表和第二参考帧列表,确定第一参考帧的索引值和第二参考帧的索引值,第一参考帧列表为当前图像块在第一方向的参考帧列表,第二参考帧列表为当前图像块在第二方向的参考帧列表,第一参考帧为当前图像块在第一方向的参考帧,第二参考帧为当前图像块在第二方向的参考帧。上述获取单元,还用于获取第一运动矢量差和第一运动矢量预测值标志。上述确定单元,还用于根据第一运动信息确定第二运动信息,第一运动信息包括第一参考帧的索引值、第一运动矢量差和第一运动矢量预测值标志,第二运动信息为当前图像块在第二方向的运动信息;根据第一运动信息和第二运功信息,确定当前图像块的预测像素。

第五方面,提供一种终端,该终端包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,终端执行如上述第一方面及其任意一种可能的实现方式所述的双向帧间预测方法或执行如上述第三方面及其任意一种可能的实现方式所述的双向帧间预测方法。

第六方面,提供一种视频解码器,包括非易失性存储介质以及中央处理器,所述非易失性存储介质存储有可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述可执行程序以实现如上述第一方面及其任意一种可能的实现方式所述的双向帧间预测方法或如上述第三方面及其任意一种可能的实现方式所述的双向帧间预测方法。

第七方面,提供一种解码器,所述解码器包括上述第二方面中的双向帧间预测装置以及重建模块,其中,所述重建模块用于根据所述双向帧间预测装置得到的预测像素确定当前图像块的重建像素值;或者,所述解码器包括包括上述第四方面中的双向帧间预测装置以及重建模块,其中,所述重建模块用于根据所述双向帧间预测装置得到的预测像素确定当前图像块的重建像素值。

第八方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在上述第五方面所述的终端上运行时,使得所述终端执行如上述第一方面及其任意一种可能的实现方式所述的双向帧间预测方法或执行如上述第三方面及其任意一种可能的实现方式所述的双向帧间预测方法。

第九方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在上述第五方面所述的终端上运行时,使得所述终端执行如上述第一方面及其任意一种可能的实现方式所述的双向帧间预测方法或执行如上述第三方面及其任意一种可能的实现方式所述的双向帧间预测方法。

在本申请中,上述双向帧间预测装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。

本申请中第五方面到第九方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述或第三方面及其各种实现方式中的详细描述;并且,第五方面到第九方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析或第三方面及其各种实现方式中的有益效果分析,此处不再赘述。

本申请的这些方面或其他方面在以下的描述中会更加简明易懂。

附图说明

图1为本申请实施例中视频编解码系统的结构示意图;

图2为本申请实施例中视频编码器的结构示意图;

图3为本申请实施例中视频解码器的结构示意图;

图4为本申请实施例提供的双向帧间预测方法流程示意图;

图5为本申请实施例提供的双向帧间预测装置的结构示意图一;

图6为本申请实施例提供的双向帧间预测装置的结构示意图二。

具体实施方式

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于限定特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

为了便于理解本申请实施例,首先在此介绍本申请实施例涉及到的相关要素。

图像编码(image encoding):将图像序列压缩成码流的处理过程。

图像解码(image decoding):将码流按照特定的语法规则和处理方法恢复成重建图像的处理过程。

目前,视频图像的编码过程为:编码端首先将一帧原始图像划分成互不重叠的多个部分,每一部分即可作为一个图像块;然后,编码端针对每个图像块执行预测(Prediction)、变换(Transform)和量化(Quantization)等操作,以得到该图像块对应的码流;其中,预测是为了得到图像块的预测块,从而可以仅对该图像块与其预测块之间的差值(或称为残差或残差块)进行编码和传输,进而节省传输开销;最后,编码端将该图像块对应的码流发送给解码端。

相应的,解码端在接收到该码流之后,执行视频解码过程。具体的,解码端对接收到的码流进行预测、反量化和反变换等操作,得到经重建的图像块(或称为重建图像块),该过程称为图像重建过程(或图像重构过程);然后,解码端对上述原始图像中的每个图像块的重建块进行组装,得到该原始图像的经重建的图像,并播放经重建的图像。

现有的视频图像编解码技术包括帧内预测与帧间预测。其中,帧间预测是指以编码图像块/解码图像块为单位,利用当前帧与其参考帧之间的相关性完成的预测。当前帧可以存在一个或多个参考帧。具体的,根据当前图像块的参考帧中的像素,生成当前图像块的预测图像块。

一般的,对于当前图像块而言,可以仅根据一个参考图像块生成当前图像块的预测图像块,也可以根据至少两个参考图像块生成当前图像块的预测图像块。上述根据一个参考图像块生成当前图像块的预测图像块称为单向预测,上述根据至少两个参考图像块生成当前图像块的预测图像块称为双向帧间预测。双向帧间预测中的至少两个参考图像块可来自于同一个参考帧或者不同的参考帧。也就是说,本申请涉及到的“方向”为一个广义的定义。本申请中的一个方向与一个参考图像块对应。下文中的第一方向和第二方向对应不同的参考图像块,这两个参考图像块可以均被包含于当前图像块的前向参考帧/后向参考帧中,也可以一个被包含于当前图像块的前向参考帧,另一个包含于当前图像块的后向参考帧。

可选的,双向帧间预测可以是指利用当前视频帧与在其之前编码且在其之前播放的视频帧之间的相关性,和当前视频帧与在其之前编码且在其之后播放的视频帧之间的相关性进行的帧间预测。

可以看出,上述双向帧间预测涉及两个方向的帧间预测,一般称为:前向帧间预测和后向帧间预测。前向帧间预测是指利用当前视频帧与在其之前编码且在其之前播放的视频帧之间的相关性进行的帧间预测。后向帧间预测是指利用当前视频帧与在其之前编码且在其之后播放的视频帧之间的相关性进行的帧间预测。

前向帧间预测对应前向参考帧列表L0,后向帧间预测对应后向参考帧列表L1,两个参考帧列表中所包含的参考帧的数量可以相同,也可以不同。

运动补偿(Motion Compensation,MC)为利用参考图像块对当前图像块进行预测的过程。

在大多数的编码框架中,视频序列包括一系列图像(picture),图像被划分为至少一个条带(slice),每个条带又被划分为图像块(block)。视频编码/解码以图像块为单位,可从图像的左上角位置开始从左到右、从上到下、一行一行进行编码/解码处理。这里,图像块可以为视频编解码标准H.264中的宏块(macro block,MB),也可以为高效视频编码(HighEfficiency Video Coding,HEVC)标准中的编码单元(Coding Unit,CU),本申请实施例对此不作具体限定。

本申请中,正在进行编码/解码处理的图像块称为当前图像块(current block),当前图像块所在的图像称为当前帧。

一般的,当前帧可以为单向预测帧(P帧),也可以为双向预测帧(B帧)。在当前帧为P帧的情况下,当前帧具有一个参考帧列表。在当前帧为B帧的情况下,当前帧具有两个参考帧列表,这两个列表通常分别称为L0和L1。每个参考帧列表均包含至少一个用作当前帧的参考帧的重建帧。参考帧用于为当前帧的帧间预测提供参考像素。

在当前帧中,与当前图像块相邻的(例如位于当前块的左侧、上侧或右侧)的图像块可能已经完成了编码/解码处理,得到了重建图像,它们称为重建图像块;重建图像块的编码模式、重建像素等信息是可以获得的(available)。

在当前帧进行编码/解码之前已经完成编码/解码处理的帧称为重建帧。

运动矢量(Motion Vector,MV)是帧间预测过程中的一个重要参数,其表示已编码的图像块相对于当前图像块的空间位移。一般的,可以使用运动估计(Motion Estimation,ME)的方法,诸如运动搜索来获取运动矢量。初期的帧间预测技术,编码端在码流中传输当前图像块的运动矢量,以使得解码端再现当前图像块的预测像素,进而得到重建块。为了进一步的改善编码效率,后来又提出使用参考运动矢量差分地编码运动矢量,即仅仅编码运动矢量差(Motion Vector Difference,MVD)。

为了使得解码端与编码端使用相同的参考图像块,编码端需要在码流中向解码端发送各个图像块的运动信息。若编码端直接对每个图像块的运动矢量进行编码,则会消耗大量的传输资源。由于空间域相邻的图像块的运动矢量具有很强的相关性,因此,当前图像块的运动矢量可以根据邻近已编码图像块的运动矢量进行预测,预测所得到的运动矢量称为MVP,当前图像块的运动矢量和MVP之间的差值称为MVD。

视频编解码标准H.264在运动估计过程中采用了多参考帧预测来提高预测精度,即建立储存多个重建帧的缓存,并在缓存内的所有的重建帧中寻找最优的参考图像块进行运动补偿,以便更好地去除时间域的冗余度。视频编解码标准H.264的帧间预测使用两个缓存,即参考帧列表0(reference list0)和参考帧列表1(reference list1)。每一个列表中最优的参考块所在的参考帧用索引值标明,即ref_idx_l0和ref_idx_l1。每一参考帧列表中,参考图像块的运动信息包括参考帧的索引值(ref_idx_l0或ref_idx_l1)、MVP标志和MVD。解码端根据参考帧的索引值、MVP标志和MVD,即可以在选定的参考帧中找到正确的参考图像块。

目前,在HEVC标准中常使用帧间预测模式为高级运动矢量预测(Advanced MotionVector Prediction,AMVP)模式、合并(Merge)模式和非平动运动模型预测模式。

对于AMVP模式,编码端通过当前图像块空域或者时域相邻的已编码的图像块的运动信息构建候选运动矢量列表,并根据率失真代价从该候选运动矢量列表中确定最优的运动矢量作为当前图像块的MVP。此外,编码端在以MVP为中心的邻域内进行运动搜索获得当前图像块的运动矢量。编码端将MVP在候选运动矢量列表中的索引值(即上述MVP标志)、参考帧的索引值以及MVD传递到解码端。

对于合并模式,编码端通过当前图像块空域或者时域相邻的已编码图像块的运动信息,构建候选运动信息列表,并根据率失真代价从该候选运动信息列表中确定最优的运动信息作为当前图像块的运动信息。编码端将最优的运动信息在候选运动信息列表中位置的索引值传递到解码端。

对于非平动运动模型预测模式,编解码端使用相同的运动模型推导出当前图像块中每一个子块的运动信息,并根据所有子块的运动信息进行运动补偿,得到预测图像块,从而提高预测效率。其中,编解码端常用的运动模型为4参数仿射模型、6参数仿射变换模型或8参数的双线性模型。

示例性的,4参数仿射变换模型可以通过两个像素点的运动矢量及其相对于当前图像块左上顶点像素的坐标来表示。这里,将用于表示运动模型参数的像素点称为控制点。若当前图像块的左上顶点(0,0)和右上顶点(W,0)像素点为控制点,当前图像块的左上顶点和右上顶点的运动矢量分别为(vx

示例性的,6参数仿射变换模型可以通过三个像素点的运动矢量及其相对于当前图像块左上顶点像素的坐标来表示。若当前图像块的左上顶点(0,0)、右上顶点(W,0)和左下顶点(0,H)像素点为控制点,当前图像块的左上顶点、右上顶点和左下顶点的运动矢量分别为(vx

示例性的,8参数双线性模型可以通过四个像素点的运动矢量及其相对于当前图像块左上顶点像素的坐标来表示。若当前图像块的左上顶点(0,0)、右上顶点(W,0)、左下顶点(0,H)和右下顶点(W,H)像素点为控制点,当前图像块的左上顶点、右上顶点、左下顶点和右下顶点的运动矢量分别为(vx

容易看出,对于上述任一帧间预测模式,若帧间预测为双向帧间预测,则编码端需要向解码端发送每个图像块在每一个方向的运动信息。这样,运动信息占用的传输资源较大,降低了传输资源的有效利用率,降低了传输速率,且降低了编解码压缩效率。

针对上述问题,本申请提供一种双向帧间预测方法,对于双向帧间预测,编码端向解码端发送当前图像块在第一方向的运动信息,解码端在接收到当前图像块在第一方向的运动信息后,根据所述当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息,这样,可根据当前图像块在第一方向的运动信息和当前图像块在第二方向的运动信息计算当前图像块的预测像素。

本申请提供的双向帧间预测方法可以由双向帧间预测装置、视频编解码装置、视频编解码器以及其它具有视频编解码功能的设备来执行。

本申请提供的双向帧间预测方法适用于视频编解码系统。视频编解码系统的视频编码器100和视频解码器200用于根据本申请提出的双向帧间预测方法实例实现当前图像块的运动信息的计算。具体的,根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息,从而根据当前图像块在第一方向的运动信息以及当前图像块在第二方向的运动信息确定当前图像块的预测像素,这样,视频编码器10与视频编码器20之间只需传输当前图像块在第一方向的运动信息即可,有效的提高了传输资源的利用率,提高了编解码压缩效率。

图1示出了视频编解码系统的结构。如图1所示,视频编解码系统1包含源装置10和目的装置20。源装置10产生经过编码后的视频数据,源装置10也可以被称为视频编码装置或视频编码设备,目的装置20可以对源装置10产生的经过编码后的视频数据进行解码,目的装置20也可以被称为视频解码装置或视频解码设备。源装置10和/或目的装置20可包含至少一个处理器以及耦合到所述至少一个处理器的存储器。所述存储器可包含但不限于只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、带电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,本申请对此不作具体限定。

源装置10和目的装置20可以包括各种装置,包含桌上型计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。

目的装置20可经由链路30从源装置10接收经编码视频数据。链路30可包括能够将经编码视频数据从源装置10移动到目的装置20的一个或多个媒体和/或装置。在一个实例中,链路30可包括使得源装置10能够实时地将编码后的视频数据直接发射到目的装置20的一个或多个通信媒体。在此实例中,源装置10可根据通信标准(例如:无线通信协议)来调制编码后的视频数据,并且可以将调制后的视频数据发射到目的装置20。上述一个或多个通信媒体可包含无线和/或有线通信媒体,例如:射频(Radio Frequency,RF)频谱、一个或多个物理传输线。上述一个或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络(例如,局域网、广域网或全球网络(例如,因特网))的部分。上述一个或多个通信媒体可以包含路由器、交换器、基站,或者实现从源装置10到目的装置20的通信的其它设备。

在另一实例中,可将编码后的视频数据从输出接口140输出到存储装置40。类似地,可通过输入接口240从存储装置40存取编码后的视频数据。存储装置40可包含多种本地存取式数据存储媒体,例如蓝光光盘、高密度数字视频光盘(Digital Video Disc,DVD)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、快闪存储器,或用于存储经编码视频数据的其它合适数字存储媒体。

在另一实例中,存储装置40可对应于文件服务器或存储由源装置10产生的编码后的视频数据的另一中间存储装置。在此实例中,目的装置20可经由流式传输或下载从存储装置40获取其存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的装置20的服务器。例如,文件服务器可以包含全球广域网(World Wide Web,Web)服务器(例如,用于网站)、文件传送协议(File TransferProtocol,FTP)服务器、网络附加存储(Network Attached Storage,NAS)装置以及本地磁盘驱动器。

目的装置20可通过任何标准数据连接(例如,因特网连接)存取编码后的视频数据。数据连接的实例类型包含适合于存取存储于文件服务器上的编码后的视频数据的无线信道、有线连接(例如,缆线调制解调器等),或两者的组合。编码后的视频数据从文件服务器的发射可为流式传输、下载传输或两者的组合。

本申请的双向帧间预测方法不限于无线应用场景,示例性的,本申请的双向帧间预测方法可以应用于支持以下应用等多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒体上的视频数据的编码、存储于数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统1可经配置以支持单向或双向视频发射,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。

需要说明的是,图1示出的视频编解码系统1仅仅是视频编解码系统的示例,并不是对本申请中视频编解码系统的限定。本申请提供的双向帧间预测方法还可适用于编码装置与解码装置之间无数据通信的场景。在其它实例中,待编码视频数据或编码后的视频数据可以从本地存储器检索,也可以在网络上流式传输等。视频编码装置可对待编码视频数据进行编码并且将编码后的视频数据存储到存储器,视频解码装置也可从存储器中获取编码后的视频数据并且对该编码后的视频数据进行解码。

在图1中,源装置10包含视频源101、视频编码器102和输出接口103。在一些实例中,输出接口103可包含调节器/解调器(调制解调器)和/或发射器。视频源101可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,和/或用于产生视频数据的计算机图形系统,或视频数据的此些来源的组合。

视频编码器102可对来自视频源101的视频数据进行编码。在一些实例中,源装置10经由输出接口103将编码后的视频数据直接发射到目的装置20。在其它实例中,编码后的视频数据还可存储到存储装置40上,供目的装置20稍后存取来用于解码和/或播放。

在图1的实例中,目的装置20包含显示装置201、视频解码器202以及输入接口203。在一些实例中,输入接口203包含接收器和/或调制解调器。输入接口203可经由链路30和/或从存储装置40接收编码后的视频数据。显示装置201可与目的装置20集成或可在目的装置20外部。一般来说,显示装置201显示解码后的视频数据。显示装置201可包括多种显示装置,例如,液晶显示器、等离子显示器、有机发光二极管显示器或其它类型的显示装置。

可选的,视频编码器102和视频解码器202可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。

视频编码器102和视频解码器202可以包括至少一个微处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application-Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、离散逻辑、硬件或其任何组合。若本申请提供的双向帧间预测方法采用软件实现,则可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用至少一个处理器在硬件中执行所述指令从而实施本申请。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可被视为至少一个处理器。视频编码器102可以包含在编码器中,视频解码器202可包含在解码器中,所述编码器或解码器可以为相应装置中组合编码器/解码器(编码解码器)中的一部分。

本申请中的视频编码器102和视频解码器202可以根据视频压缩标准(例如HEVC)操作,也可根据其它业界标准操作,本申请对此不作具体限定。

视频编码器102用于对当前图像块进行双向运动估计,以确定当前图像块在第一方向的运动信息,并根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息,这样,视频编码器102根据当前图像块在第一方向的运动信息以及当前图像块在第二方向的运动信息确定当前图像块的预测图像块。进而,视频编码器102对当前图像块与其预测图像块之间的残差执行变换和量化等操作,生成码流并向视频解码器202发送该码流。该码流包括当前图像块在第一方向的运动信息以及用于指示根据第一运动信息确定第二运动信息的指示信息。该指示信息可以采用不同的标识表示。这指示信息的表示方法可以参考后续描述。

可选的,上述“视频编码器102根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息”的方法可以为视频编码器102根据当前图像块在第一方向的运动矢量确定当前图像块在第二方向的运动矢量,也可以为视频编码器102根据当前图像块在第一方向的运动矢量差值确定当前图像块在第二方向的运动矢量差值,并根据当前图像块在第二方向的运动矢量差值以及当前图像块在第二方向的预测运动矢量确定当前图像块在第二方向的运动矢量。

参考下述图4,视频解码器202用于:获取码流,并解析该码流,以获取用于指示根据第一运动信息确定第二运动信息的指示信息(S400),即确定从哪一个方向的运动信息推导计算另一方向的运动信息,第一运动信息包括当前图像块在第一方向的运动信息,第二运动信息包括当前图像块在第二方向的运动信息,这里,第一方向与第二方向不同;获取第一运动信息(S401),并根据获取到的第一运动信息,确定第二运动信息(S402),这样,视频解码器202即可根据第一运动信息和第二运动信息确定当前图像块的预测像素(S403)。

上述“视频解码器202根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息”的方法可以为视频解码器202根据当前图像块在第一方向的运动矢量确定当前图像块在第二方向的运动矢量,也可以为视频解码器202根据当前图像块在第一方向的运动矢量差值确定当前图像块在第二方向的运动矢量差值,并根据当前图像块在第二方向的运动矢量差值以及当前图像块在第二方向的预测运动矢量确定当前图像块在第二方向的运动矢量。

图2是本申请实施例中视频编码器102的结构示意图。如图2所示,视频编码器102用于将视频输出到后处理实体41。后处理实体41表示可处理来自视频编码器102的经编码视频数据的视频实体的实例,例如媒体感知网络元件(MANE)或拼接/编辑装置。在一些情况下,后处理实体41可为网络实体的实例。在一些视频编码系统中,后处理实体41和视频编码器102可为单独装置的若干部分,而在其它情况下,相对于后处理实体41所描述的功能性可由包括视频编码器100的相同装置执行。在某一实例中,后处理实体41是图1的存储装置40的实例。

视频编码器102可根据当前图像块在第一方向的运动信息推到计算当前图像块在第二方向的运动信息,进而根据当前图像块在第一方向的运动信息以及当前图像块在第二方向的运动信息确定当前图像块的预测图像块,进而完成双向帧间预测编码。

如图2所示,视频编码器102包括变换器301、量化器302、熵编码器303、滤波器306、存储器307、预测处理单元308、求和器312。预测处理单元308包括帧内预测器309和帧间预测器310。为了图像块重构,视频编码器102还包含反量化器304、反变换器305以及求和器311。滤波器306既定表示一或多个环路滤波器,例如去块滤波器、自适应环路滤波器和样本自适应偏移滤波器。

存储器307可存储由视频编码器102的组件编码的视频数据。可从视频源101获得存储在存储器307中的视频数据。存储器307可为参考图像存储器,其存储用于由视频编码器102在帧内、帧间译码模式中对视频数据进行编码的参考视频数据。存储器307可以为同步DRAM(synchronous DRAM,SDRAM)的动态随机存取存储器(dynamic RAM,DRAM)、磁阻式RAM(magnetic RAM,MRAM)、电阻式RAM(resistive RAM,RRAM),或其它类型的存储器装置。

视频编码器102接收视频数据,并将所述视频数据存储在视频数据存储器中。分割单元将所述视频数据分割成若干图像块,而且这些图像块可以被进一步分割为更小的块,例如基于四叉树结构或者二叉树结构的图像块分割。此分割还可包含分割成条带(slice)、片(tile)或其它较大单元。视频编码器102通常说明编码待编码的视频条带内的图像块的组件。所述条带可分成多个图像块(并且可能分成被称作片的图像块集合)。

预测处理单元308内的帧内预测器309可相对于与当前图像块在相同帧或条带中的一或多个相邻图像块执行当前图像块的帧内预测性编码,以去除空间冗余。预测处理单元308内的帧间预测器310可相对于一或多个参考图像中的一或多个预测图像块执行当前图像块的帧间预测性编码以去除时间冗余。

预测处理单元308可将所得经帧内、帧间译码的图像块提供给求和器310以产生残差块,且提供给求和器309以重建用作参考图像的编码块。

在预测处理单元308经由帧间预测、帧内预测产生当前图像块的预测图像块之后,视频编码器102通过从待编码的当前图像块减去所述预测图像块来形成残差图像块。求和器312表示执行此减法运算的一或多个组件。所述残差块中的残差视频数据可包含在一或多个变换单元(transform unit,TU)中,并应用于变换器301。变换器301使用例如离散余弦变换(discrete cosine transform,DCT)或概念上类似的变换等变换将残差视频数据变换成残差变换系数。变换器301可将残差视频数据从像素值域转换到变换域,例如频域。

变换器301可将所得变换系数发送到量化器302。量化器302量化所述变换系数以进一步减小位速率。在一些实例中,量化器302可接着执行对包含经量化的变换系数的矩阵的扫描。或者,熵编码器303可执行扫描。

在量化之后,熵编码器303对经量化变换系数进行熵编码。举例来说,熵编码器303可执行上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、上下文自适应二进制算术编码(context based adaptive binary arithmeticcoding,CABAC)或另一熵编码方法或技术。在由熵编码器303熵编码之后,可将编码后的码流发送到视频解码器202,或经存档以供稍后发送或由视频解码器202检索。熵编码器303还可对待编码的当前图像块的语法元素进行熵编码。

反量化器304和反变化器305分别应用逆量化和逆变换以在像素域中重构所述残差块,例如以供稍后用作参考图像的参考块。求和器311将经重构的残差块添加到由帧间预测器310或帧内预测器309产生的预测图像块,以产生经重构图像块。其中,对一个图像块的参考图像块进行处理(例如插值等处理)可以得到该图像块的预测图像块。

应当理解的是,视频编码器102的其它的结构变化可用于编码视频流。例如,对于某些图像块或者图像帧,视频编码器102可以直接地量化残差信号而不需要经变换器301处理,相应地也不需要经反变换器305处理;或者,对于某些图像块或者图像帧,视频编码器102没有产生残差数据,相应地不需要经变换器301、量化器302、反量化器304和反变换器305处理;或者,视频编码器102可以将经重构图像块作为参考块直接地进行存储而不需要经滤波器306处理;或者,视频编码器102中量化器302和反量化器304可以合并在一起。

图3是本申请实施例中视频解码器202的结构示意图。如图3所示,视频解码器202包括熵解码器401、反量化器402、反变换器403、滤波器404、存储器405、预测处理单元406以及求和器409。预测处理单元406包括帧内预测器407和帧间预测器408。在一些实例中,视频解码器202可执行大体上与相对于来自图2的视频编码器102描述的编码过程互逆的解码过程。

在解码过程中,视频解码器202从视频编码器102接收码流。视频解码器202可从网络实体42接收视频数据,可选的,还可以将所述视频数据存储在视频数据存储器(图中未示意)中。视频数据存储器可存储待由视频解码器202的组件解码的视频数据,例如编码后的码流。存储在视频数据存储器中的视频数据,例如可从存储装置40、从相机等本地视频源、经由视频数据的有线或无线网络通信或者通过存取物理数据存储媒体而获得。尽管在图3中没有示意出视频数据存储器,但视频数据存储器和存储器405可以是同一个的存储器,也可以是单独设置的存储器。视频数据存储器和存储器405可由多种存储器装置中的任一者形成,例如:包含同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储器装置。在各种实例中,视频数据存储器可与视频解码器200的其它组件一起集成在芯片上,或相对于那些组件设置在芯片外。

网络实体42可例如为服务器、MANE、视频编辑器/剪接器,或用于实施上文所描述的技术中的一或多者的其它此装置。网络实体42可包括或可不包括视频编码器,例如视频编码器102。在网络实体42将码流发送到视频解码器202之前,网络实体42可实施本申请中描述的技术中的部分。在一些视频解码系统中,网络实体42和视频解码器202可为单独装置的部分,而在其它情况下,相对于网络实体42描述的功能性可由包括视频解码器202的相同装置执行。在一些情况下,网络实体42可为图1的存储装置40的实例。

视频解码器202的熵解码器401对码流进行熵解码以产生经量化的系数和一些语法元素。熵解码器401将语法元素转发到滤波器404。视频解码器202可接收在视频条带层级和/或图像块层级处的语法元素。本申请中,在一种示例下,这里的语法元素可以包括与当前图像块相关的指示信息,该指示信息用于指示根据第一运动信息确定第二运动信息。另外,在一些实例中,可以是视频编码器102发信号通知指示是否根据第一运动信息确定第二运动信息的特定语法元素。

反量化器402将在码流中提供且由熵解码器401解码的经量化变换系数逆量化,即去量化。逆量化过程可包括:使用由视频编码器102针对视频条带中的每个图像块计算的量化参数来确定应施加的量化程度以及同样地确定应施加的逆量化程度。反变换器403将逆变换应用于变换系数,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便产生像素域中的残差块。

在预测处理单元406产生用于当前图像块或当前图像块的子块的预测图像块之后,视频解码器202通过将来自反变换器403的残差块与由预测处理单元406产生的对应预测图像块求和以得到重建的块,即经解码图像块。求和器409(亦称为重建器409)表示执行此求和操作的组件。在需要时,还可使用滤波器(在解码环路中或在解码环路之后)使像素转变平滑或者以其它方式改进视频质量。滤波器404可以为一或多个环路滤波器,例如去块效应滤波器、自适应环路滤波器(ALF)以及样本自适应偏移(SAO)滤波器等。

应当理解的是,视频解码器202的其它结构变化可用于码流的解码。例如,对于某些图像块或者图像帧,视频解码器202的熵解码器401没有解码出经量化的系数,相应地不需要经反量化器402和反变换器403处理。例如,视频解码器202中反量化器402和反变换器403可以合并在一起。

以下,结合上述图1示出的视频编解码系统1、图2示出的视频编码器102以及图3示出的视频解码器202对本申请提供的双向帧间预测方法进行详细描述。

图4为本申请实施例中双向帧间预测方法的流程示意图。图4所示的方法由双向帧间预测装置执行。该双向帧间预测装置可以是图1中的视频解码器202。图4以双向帧间预测装置为视频解码器202为例进行说明。

如图4所示,本申请实施例中双向帧间预测方法可以包括下述步骤:

S400、视频解码器202解析获取到的码流,并获取指示信息。

可选的,视频解码器202解析码流,并根据码流中语法元素的值确定用于当前帧中当前图像块进行帧间预测的帧间预测模式。在帧间预测模式为双向帧间预测模式的情况下,视频解码器202获取指示信息。

其中,视频解码器202可以接收视频编码器102发送的编码后的码流,也可以从存装置40获取编码后的码流。

可选的,本申请实施例中的视频解码器202根据语法元素inter_pred_idc的值确定用于当前帧中当前图像块进行帧间预测的帧间预测模式。从上面描述可知,帧间预测包括单向帧间预测和双向帧间预测。当语法元素inter_pred_idc的值为0时,视频解码器202确定用于当前帧中当前图像块进行帧间预测的帧间预测模式为前向帧间预测。当语法元素inter_pred_idc的值为1时,视频解码器202确定用于当前帧中当前图像块进行帧间预测的帧间预测模式为后向帧间预测。当语法元素inter_pred_idc的值为2时,视频解码器202确定用于当前帧中当前图像块进行帧间预测的帧间预测模式为双向帧间预测。

可选的,视频解码器202在确定语法元素inter_pred_idc的值为2后,获取用于指示根据第一运动信息确定第二运动信息的指示信息。第一运动信息为当前图像块在第一方向的运动信息,第二运动信息为当前图像块在第二方向的运动信息,第一方向与第二方向不同。

本申请所涉及到的图像块可以为执行视频编码或视频解码的基本单元,例如:编码单元(Coding Unit,CU),也可以为执行预测操作的基本单元,例如预测单元(PredictionUnit,PU),本申请实施例对此不作具体限定。

若图像块为执行视频编码或视频解码的基本单元,则本申请实施例中的当前图像块包括至少一个子块。相应的,第一运动信息包括当前图像块的至少一个子块中每个子块在第一方向的运动信息,第二运动信息包括当前图像块的至少一个子块中每个子块在第二方向的运动信息,指示信息可以用于指示根据某一子块在第一方向的运动信息确定该子块在第二方向的运动信息。

视频解码器202可以采用多种方式获取指示信息。

在第一种实现方式中,视频解码器202解析第一标识。当第一标识的取值为第一预设值时,视频解码器202确定解析第一运动信息,并根据第一运动信息确定第二运动信息,即视频解码器202获取指示信息。当第一标识的取值为第八预设值时,视频解码器202解析码流获取第五标识。当第五标识的取值为第五预设值时,视频解码器202确定解析第二运动信息,并根据第二运动信息计算第一运动信息。当第五标识的取值为第九预设值时,视频解码器202获取第一运动信息和第二运动信息。其中,第一预设值与第五预设值可以相同,也可以不同,本申请实施例对此不作具体限定。

示例性的,第一标识为mv_derived_flag_l0,第五标识为mv_derived_flag_l1,第一预设值与第五预设值均为1,第八预设值和第九预设值均为0。视频解码器202先解析mv_derived_flag_l0。mv_derived_flag_l0的取值为1时,视频解码器202解析第一运动信息,并根据第一运动信息确定第二运动信息。mv_derived_flag_l0的取值为0时,视频解码器202解析mv_derived_flag_l1。mv_derived_flag_l1的取值为1时,视频解码器202解析第二运动信息,并根据第二运动信息计算第一运动信息。mv_derived_flag_l0和mv_derived_flag_l1的取值均为0时,视频解码器202解析第一运动信息和第二运动信息。

在第二种实现方式中,视频解码器202解析第二标识。当第二标识的取值为第二预设值时,视频解码器202确定采用运动信息推导算法计算当前图像块的运动信息。然后,视频解码器202解析第三标识。当第三标识的取值为第三预设值时,视频解码器202确定解析第一运动信息,并根据第一运动信息确定第二运动信息,即视频解码器202获取指示信息。当第三标识的取值为第六预设值时,视频解码器202确定解析第二运动信息,并根据第二运动信息计算第一运动信息。

示例性的,第二标识为derived_mv_flag,第三标识为derived_mv_direction,第三预设值为1,第六预设值为0。视频解码器202先解析derived_mv_flag。derived_mv_flag的取值为1时,视频解码器202确定采用运动信息推导算法计算当前图像块的运动信息。derived_mv_flag的取值为0时,视频解码器202解析第一运动信息和第二运动信息。derived_mv_direction的取值为1时,视频解码器202解析第一运动信息,并根据第一运动信息确定第二运动信息。derived_mv_direction的取值为0时,视频解码器202确定解析第二运动信息,并根据第二运动信息计算第一运动信息。

在第三种实现方式中,视频解码器202解析第二标识。当第二标识的取值为第二预设值时,视频解码器202确定采用运动信息推导算法计算当前图像块的运动信息。然后,视频解码器202根据预设的推导方向,确定解析第一运动信息,并根据第一运动信息确定第二运动信息,即视频解码器202获取指示信息。也就是说,本实现方式中,“根据第一运动信息确定第二运动信息”是预先设置好的。当第二标识的取值为第七预设值时,解析运动信息第一组和第二运动信息。

示例性的,第二标识为derived_mv_flag,第二预设值为1,第七预设值为0。视频解码器202解析derived_mv_flag。derived_mv_flag的取值为1时,视频解码器202确定采用运动信息推导算法计算当前图像块的运动信息。进一步地,视频解码器202确定解析第一运动信息,并根据第一运动信息确定第二运动信息。derived_mv_flag的取值为0时,视频解码器202解析第一运动信息和第二运动信息。

在第四种实现方式中,视频解码器202解析第四标识(例如mv_derived_flag_l0)。当第四标识的取值为第四预设值时,视频解码器202确定采用运动信息推导算法计算当前图像块的运动信息,并根据第一参考帧列表和第二参考帧列表,计算变量derived_ref_num。该变量表示第一参考帧和第二参考帧能组成镜像/线性的参考帧对的个数。当参考帧对的个数为1时,视频解码器202直接确定参考帧的索引值。然后,视频解码器202根据预设的推导方向,确定解析第一运动信息,并根据第一运动信息确定第二运动信息,即视频解码器202获取指示信息。第一参考帧列表为当前图像块在第一方向的参考帧列表,第二参考帧列表为当前图像块在第二方向的参考帧列表,第一参考帧为当前图像块在第一方向的参考帧,第二参考帧为当前图像块在第二方向的参考帧。本申请实施例中的参考帧的索引值均为该参考帧在对应的参考帧列表中的编号。

示例性的,当前帧的序号为4,第一参考帧列表为{2,0},第二参考帧列表为{6,7},根据上述条件B或条件C,确定第一参考帧列表中序号为2的参考帧和第二参考帧列表中序号为6的参考帧能组成参考帧对。因此,第一参考帧和第二参考帧的索引值均为0。

若当前帧的序号为4,第一参考帧列表为{2,0},第二参考帧列表为{6,7},根据上述条件B或条件C,确定第一参考帧列表中序号为2的参考帧和第二参考帧列表中序号为6的参考帧能组成参考帧对,第一参考帧列表中序号为0的参考帧和第二参考帧列表中序号为8的参考帧也能组成参考帧对。此时,视频解码器202需要解析参考帧的索引值。

进一步地,视频解码器202在确定帧间预测模式为双向帧间预测模式的情况下,还可以确定当前帧的特征信息是否满足预设条件。这样,当所述当前帧的特征信息满足预设条件时,视频解码器202获取指示信息。即S401的过程具体可以为:在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足第一预设条件的情况下,视频解码器202获取指示信息。

当前帧的特征信息包括序号、时域分层级别(Temporal Level ID,TID)和参考帧数量中的至少一个。视频解码器202获取到的码流包括序列参数集(Sequence ParameterSet,SPS)、图像参数集(Picture Parameter Set,PPS)、条带头(slice header)或条带片段头(slice segment header)、以及编码后的图像数据。之后,视频解码器202解析该码流,获取当前帧的特征信息。

上述预设条件包括以下条件中的至少一个:

条件A、当前图像块存在至少两个参考帧。

条件B、当前帧的序号、第一参考帧的序号以及第二参考帧的序号满足下述公式:

POC_Cur-POC_listX=POC_listY-POC_Cur

其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第二参考帧为当前图像块在第二方向的参考帧。

条件C、当前帧的序号、第一参考帧的序号以及第二参考帧的序号满足下述公式:

(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0

其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,第一参考帧为当前图像块在第一方向的参考帧,第二参考帧为当前图像块在第二方向的参考帧。

条件D、当前帧的TID大于或等于预设值。

本申请实施例中的预设条件可以是预先设定的,也可以在高层语法,例如:SPS、PPS、条带头(slice header)或条带片段头(slice segment header)等参数集中指定,本申请实施例对此不作具体限定。

具体的,针对上述条件B(或条件C),视频解码器202从第一参考帧列表和第二参考帧列表各自获取一个参考帧的序号,判断获取到的参考帧的序号和当前帧的序号是否满足上述条件B或条件C。在满足上述条件B(或条件C)的情况下,获取指示信息。

本申请实施例中,“在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足预设条件的情况下,视频解码器202获取指示信息”的方法与上述“在确定帧间预测模式为双向帧间预测模式的情况下,视频解码器202获取指示信息”的方法相同。

结合上述描述,表1为在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足预设条件的情况下,视频解码器202采用上述第一种实现方式获取指示信息的语法表。prediction_unit()为预测图像块的语法结构体,描述确定当前图像块中每一子块的运动信息的方法。

表1中,x0和y0分别表示当前图像块中的子块相对于当前图像块左上顶点的水平坐标偏移和竖直坐标偏移,nPbW表示当前图像块的宽,nPbH表示当前图像块的高。inter_pred_idc[x0][y0]的取值为PRED_L0时,表示当前子块的帧间预测为前向预测。inter_pred_idc[x0][y0]的取值为PRED_L1时,表示当前子块的帧间预测为后向预测。inter_pred_idc[x0][y0]的取值为PRED_BI时,表示当前子块的帧间预测为双向预测。

在双向帧间预测(即inter_pred_idc[x0][y0]==PRED_BI)的情况下,若满足预设条件(conditions),则解析mv_derived_flag_l0[x0][y0]。若mv_derived_flag_l0的取值不为第一预设值,则解析mv_derived_flag_l1[x0][y0]。在mv_derived_flag_l0的取值为第一预设值或者mv_derived_flag_l1[x0][y0]的取值为第五预设值的情况下,确定当前图像块的子块的运动信息,即确定参考帧的索引值ref_idx_l0[x0][y0]、运动矢量预测值标志mvp_l0_flag[x0][y0]以及运动矢量差值mvd_coding(x0,y0,0)。

表1

/>

结合上述描述,表2为在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足预设条件的情况下,视频解码器202采用上述第三种实现方式获取指示信息的语法表。

表2中,在双向帧间预测(即inter_pred_idc[x0][y0]==PRED_BI)的情况下,若满足预设条件(conditions),则解析derived_mv_flag[x0][y0]。若derived_mv_flag[x0][y0]的取值为第二预设值,则确定当前图像块的子块的运动信息,即确定参考帧的索引值ref_idx_lx[x0][y0]、运动矢量预测值标志mvp_lx_flag[x0][y0]以及运动矢量差值mvd_coding(x0,y0,x)。

表2

结合上述描述,表3为在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足第一预设条件的情况下,视频解码器202采用上述第四种实现方式获取指示信息的语法表。

表3中,在双向帧间预测(即inter_pred_idc[x0][y0]==PRED_BI)的情况下,若满足预设条件(conditions),则解析derived_mv_flag[x0][y0]。若derived_mv_flag[x0][y0]的取值为第四预设值,则确定derived_ref_num,并在derived_ref_num的数值大于1的情况下,确定当前图像块的子块的运动信息,即确定参考帧的索引值ref_idx_lx[x0][y0]、运动矢量预测值标志mvp_lx_flag[x0][y0]以及运动矢量差值mvd_coding(x0,y0,x)。

表3

上述第一标识、第二标识、第三标识、第四标识均可以为预先设定的,也可以在高层语法,例如:SPS、PPS、条带头(slice header)或条带片段头(slice segment header)等参数集中指定,本申请实施例对此不作具体限定。

视频解码器202在确定帧间预测模式为双向帧间预测模式、且当前帧的特征信息满足预设条件的情况下,获取指示信息,有效的提高视频解码器202的解码速率,减少信息冗余。

S401、视频解码器202获取第一运动信息。

可选的,视频解码器202解析码流,获取第一参考帧的索引值、第一运动矢量预测值标志和第一运动矢量差,即获取第一运动信息。第一运动矢量预测值标志用于指示第一预测运动矢量在第一候选运动矢量列表的索引值,第一预测运动矢量为当前图像块在第一方向的预测运动矢量,第一运动矢量差为第一预测运动矢量与第一运动矢量的差值,第一运动矢量为当前图像块在第一方向的运动矢量。

上述表1~表3所示的语法表中,视频解码器202均确定出了当前图像块的子块在第一方向的运动信息。

S402、视频解码器202根据第一运动信息,确定第二运动信息。

在第一种实现方式中,视频解码器202确定第二运动信息的方法为:视频解码器202从第一运动信息中选取第一参考帧的索引值,并根据该第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号;根据当前帧的序号和第一参考帧的序号,通过预设公式,计算第二参考帧的序号;根据第二参考帧的序号和第二参考帧列表,确定第二参考帧的索引值;根据第一运动信息和第二参考帧的索引,确定第二运动信息。

这里,预设公式可以为POC_listY=2*POC_Cur-POC_listX。其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号。

示例性的,若当前帧的序号为4,第一参考帧的序号为2,第二参考帧列表为[6,8],根据公式POC_listY=2*POC_Cur-POC_listX,确定第二参考帧的序号为6,则视频解码器202确定第二参考帧的索引值ref_lY_idx为0。

可选的,预设公式还可以为(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0。需要说明的是,若第二参考帧列表中有多个参考帧的序号满足该公式,则视频解码器202先选择出abs((POC_listY-POC_Cur)-(POC_Cur-POC_listX))最小的参考帧,再选择abs(POC_listY-POC_Cur)最小的参考帧,以确定第二参考帧的索引值。其中,abs为绝对值函数。

示例性的,若当前帧的序号为4,第一参考帧的序号为2,第二参考帧列表为[5,7,8],根据公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0确定第二参考帧的序号为5,则视频解码器202确定第二参考帧的索引值ref_lY_idx为0。

可选的,预设公式还可以为POC_listX≠POC_listY。需要说明的是,若第二参考帧列表中有多个参考帧的序号满足该公式,则视频解码器202先选择出abs((POC_listY-POC_Cur)-(POC_Cur-POC_listX))最小的参考帧,再选择abs(POC_listY-POC_Cur)最小的参考帧,以确定第二参考帧的索引值。其中,abs为绝对值函数。

示例性的,若当前帧的序号为4,第一参考帧的序号为2,第二参考帧列表为[3,2,1,0],根据公式POC_listX≠POC_listY确定第二参考帧的序号为3,则视频解码器202确定第二参考帧的索引值ref_lY_idx为0。

可选的,预设公式还可以为POC_listY0=2*POC_Cur-POC_listX、(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0以及POC_listX≠POC_listY0''。在这种情况下,视频解码器202确定第二参考帧的索引值的方法具体为:根据当前帧的序号和第一参考帧的序号,通过公式POC_listY0=2*POC_Cur-POC_listX,计算第一序号,其中,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY0表示第一序号;在第二参考帧列表包括第一序号的情况下,将第一序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值;在第二参考帧列表不包括第一序号的情况下,根据当前帧的序号和第一参考帧的序号,通过(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0,计算第二序号,其中,POC_listY0'表示第二序号;在第二参考帧列表包括第二序号的情况下,将第二序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值;在第二参考帧列表不包括第二序号的情况下,根据当前帧的序号和第一参考帧的序号,通过公式POC_listX≠POC_listY0'',计算第三序号,其中,POC_listY0''表示第三序号;将第三序号表征的参考帧在第二参考帧列表中的编号确定为第二参考帧的索引值。

在第二种实现方式中,视频解码器202确定第二运动信息的方法为:视频解码器202解析码流,获取第二参考帧的索引值,并根据第一运动信息和第二参考帧的索引值,确定第二运动信息。第二参考帧的索引值也可以为预先定义的,或者在SPS、PPS、条带头(slice header)或条带片段头(slice segment header)等参数集中指定,本申请实施例对此不作具体限定。

可以看出,在第一种实现方式和第二种实现方式中,视频解码器202均根据第一运动信息和第二参考帧的索引值,确定第二运动信息。

可选的,视频解码器202可以计算当前图像块在第二方向的所有运动信息,也可以计算当前图像块在第二方向的部分运动信息。

现对视频解码器202均根据第一运动信息和第二参考帧的索引值,确定第二运动信息的过程进行描述。

可选的,“视频解码器202根据第一运动信息和第二参考帧的索引值,确定第二运动信息”的方法可以为:获取第一运动信息中的第一参考帧的索引值,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表,确定第二参考帧的序号;根据第一运动信息中的第一运动矢量差和第一运动矢量预测值标志,确定第一运动矢量(当前图像块在第一方向的运动矢量);根据下述公式确定第二运动信息中的第二运动矢量:

其中,mv_lY表示第二运动矢量,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mv_lX表示第一运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

其中,视频解码器202采用与上述AMVP模式或合并模式中编码端构建候选运动信息列表相同的方式构建候选运动信息列表,并根据第一运动矢量预测标志在该候选运动信息列表中确定第一预测运动矢量,这样,视频解码器202可将第一运动预测矢量与第一运动矢量差的和确定为第一运动矢量。

可选的,第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,视频解码器202可直接令mv_lY=-mv_lX。

示例性的,“第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况”,或者,“第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0表示,或者用公式POC_listY=2*POC_Cur-POC_listX表示。

“第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况”或者“第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况”均可以用公式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0表示。

可选的,“视频解码器202根据第一运动信息和第二参考帧的索引值,确定第二运动信息”的方法可以为:获取第一运动信息中的第一参考帧的索引值和第一运动矢量差,并根据第一参考帧的索引值和第一参考帧列表,确定第一参考帧的序号;获取第二参考帧的索引值,并根据第二参考帧的索引值和第二参考帧列表确定第二参考帧的序号,根据第二参考帧的索引值和第二候选预测运动矢量列表确定第二预测运动矢量,第二预测运动矢量为当前图像块在第二方向的预测运动矢量;根据下述公式确定第二运动信息中的第二运动矢量差:

其中,mvd_lY表示第二运动矢量差,POC_Cur表示当前帧的序号,POC_listX表示第一参考帧的序号,POC_listY表示第二参考帧的序号,mvd_lX表示第一运动矢量差;根据第二预测运动矢量和第二运动矢量差,确定第二运动矢量,第二运动矢量为当前图像块在第二方向的运动矢量。

可选的,第一参考帧为当前图像块的前向参考帧,第二参考帧为当前图像块的后向参考帧的情况下,或者,在第一参考帧为当前图像块的后向参考帧,第二参考帧为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的前向参考帧的情况下,或者,在第一参考帧为当前图像块和第二参考帧均为当前图像块的后向参考帧的情况下,视频解码器202可直接令mvd_lY=-mvd_lX。

示例性的,若(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0、POC_listY=2*POC_Cur-POC_listX或(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0,视频解码器202直接令mvd_lY=-mvd_lX。

S403、视频解码器202根据第一运动信息和第二运动信息,确定当前图像块的预测像素。

可选的,视频解码器202在S402中确定出第一运动矢量和第二运动矢量,这样,视频解码器202可根据第一运动矢量和第一参考帧列表确定第一参考图像块,根据第二运动矢量和第二参考帧列表确定第二参考图像块,进而根据第一参考图像块和第二参考图像块,确定当前图像块的预测像素,即视频解码器202完成运动补偿过程。

视频解码器202根据第一参考图像块和第二参考图像块确定当前图像块的预测像素的方法可以参考现有的任意一种方法,本申请实施例对此不作具体限定。

本申请实施例提供的双向帧间预测方法中,视频解码器202从编码后的码流中仅仅可获取到第一运动信息,在获取到第一运动信息后,视频编码器202根据该第一运动信息计算出第二运动信息,进一步地,根据该第一运动信息和第二运动信息确定出当前图像块的预测像素。与现有技术相比,本申请提供的方法无需再传输每一图像块在所有方向的运动信息,有效的减少了运动信息的传输数量,提高了传输资源的有效利用率,提高了传输速率,且提高了编解码压缩效率。

图4所示的双向帧间预测方法是针对当前图像块进行描述的,即可以理解为当前图像块基于AMVP模式进行帧间预测。

容易理解的是,本申请提供的双向帧间预测方法也适用于非平动运动模型预测模式,如4参数仿射变换运动模型、6参数仿射变换运动模型、8参数双线性运动模型等。在这种场景中,当前图像块包括至少一个子块,上述当前图像块的运动信息包括当前图像块的所有子块中每个子块的运动信息。视频解码器202确定每个子块运动信息(在第一方向的运动信息和在第二方向的运动信息)与视频解码器202确定当前图像块的运动信息的方法类似。

对于非平动运动模型预测模式,视频解码器202根据第i个控制点在第一方向的运动矢量,采用下述公式计算第i个控制点在第二方向的运动矢量:

该公式中,mvi_lY表示第i个控制点在第二方向的运动矢量,mvi_lX表示第i个控制点在第一方向的运动矢量,POC_Cur表示当前帧的序号,POC_listY表示第二参考帧的序号,POC_listX表示第一参考帧的序号。

相应的,视频解码器202根据第i个控制点在第一方向的运动矢量差,采用下述公式计算第i个控制点在第二方向的运动矢量差:

该公式中,mvdi_lY表示第i个控制点在第二方向的运动矢量差,mvdi_lX表示第i个控制点在第一方向的运动矢量差,POC_Cur表示当前帧的序号,POC_listY表示第二参考帧的序号,POC_listX表示第一参考帧的序号。

与视频解码器202相对,本申请实施例中视频编码器102对当前图像块进行双向运动估计,以确定当前图像块在第一方向的运动信息,并根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息,这样,视频编码器102根据当前图像块在第一方向的运动信息以及当前图像块在第二方向的运动信息确定当前图像块的预测图像块。之后,视频编码器102对当前图像块与其预测图像块之间的残差执行变换和量化等操作,生成码流并向视频解码器202发送该码流。该码流包括当前图像块在第一方向的运动信息。

“视频编码器102根据当前图像块在第一方向的运动信息计算当前图像块在第二方向的运动信息”的方法可以参考上述“视频解码器202根据第一运动信息,确定第二运动信息”方法,即参考上述S402的描述,本申请对此不再进行详细赘述。

综上,对于双向帧间预测,本申请提供的双向帧间预测方法无需传输每一图像块在所有方向的运动信息,仅传输某一方向的运动信息即可,有效的减少了运动信息的传输数量,提高了传输资源的有效利用率,提高了传输速率,且提高了编解码压缩效率。

本申请实施例提供一种双向帧间预测装置,该双向帧间预测装置可以为视频解码器。具体的,双向帧间预测装置用于执行以上双向帧间预测方法中的视频解码器202所执行的步骤。本申请实施例提供的双向帧间预测装置可以包括相应步骤所对应的模块。

本申请实施例可以根据上述方法示例对双向帧间预测装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图5示出上述实施例中所涉及的双向帧间预测装置的一种可能的结构示意图。如图5所示,双向帧间预测装置5包括获取单元50和确定单元51。

获取单元50用于支持该双向帧间预测装置执行上述实施例中的S400、S401等,和/或用于本文所描述的技术的其它过程。

确定单元51用于支持该双向帧间预测装置执行上述实施例中的S402、S403等,和/或用于本文所描述的技术的其它过程。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

当然,本申请实施例提供的双向帧间预测装置包括但不限于上述模块,例如:双向帧间预测装置还可以包括存储单元52。

存储单元52可以用于存储该双向帧间预测装置的程序代码和数据。

在采用集成的单元的情况下,本申请实施例提供的双向帧间预测装置的结构示意图如图6所示。在图6中,双向帧间预测装置6包括:处理模块60和通信模块61。处理模块60用于对双向帧间预测装置的动作进行控制管理,例如,执行上述获取单元50和确定单元51执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信模块61用于支持双向帧间预测装置与其他设备之间的交互。如图6所示,双向帧间预测装置还可以包括存储模块62,存储模块62用于存储双向帧间预测装置的程序代码和数据,例如存储上述存储单元52所保存的内容。

其中,处理模块60可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块61可以是收发器、RF电路或通信接口等。存储模块62可以是存储器。

其中,上述方法实施例涉及的各场景的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

上述双向帧间预测装置5和双向帧间预测装置6均可执行上述图4所示的双向帧间预测方法,双向帧间预测装置5和双向帧间预测装置6具体可以是视频解码装置或者其他具有视频编解码功能的设备。双向帧间预测装置5和双向帧间预测装置6可以用于在解码过程中进行图像预测。

本申请还提供一种终端,该终端包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,终端执行本申请实施例的双向帧间预测方法。

这里的终端可以是视频显示设备,智能手机,便携式电脑以及其它可以处理视频或者播放视频的设备。

本申请还提供一种视频解码器,包括非易失性存储介质,以及中央处理器,所述非易失性存储介质存储有可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述可执行程序以实现本申请实施例的双向帧间预测方法。

本申请还提供一种解码器,所述解码器包括本申请实施例中的双向帧间预测装置(双向帧间预测装置5或双向帧间预测装置6)以及重建模块,其中,所述重建模块用于根据所述双向帧间预测装置得到的预测图像素确定当前图像块的重建像素值。

本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当终端中的处理器在执行该程序代码时,该终端执行如图4所示的双向帧间预测方法。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;终端的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得终端实施执行图4所示的双向帧间预测方法中的视频解码器202的步骤。

在上述实施例中,可以全部或部分的通过软件,硬件,固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式出现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。

所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

技术分类

06120116524372