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

专利检索2022-05-11  13



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


背景技术:

2.视频编码压缩技术主要采用基于块的混合视频编码,将一帧视频图像划分为多个块(block),以块为单位,通过帧内预测(intra prediction)、帧间预测(inter prediction)、变换(transform)、量化(quantization)、熵编码(entropy encode)和环内滤波(in-loop filtering)(主要为去块滤波(de-blocking filtering))等步骤实现视频编码压缩。帧间预测也可以称为运动补偿预测(motion compensation prediction,mcp),即先得到块的运动信息,然后根据运动信息确定该块的预测像素值。计算块的运动信息的过程称为运动估计(motion estimation,me),根据运动信息确定该块的预测像素值的过程称为运动补偿(motion compensation,mc)。根据预测方向的不同,帧间预测包括前向预测、后向预测和双向预测。
3.对于双向预测,首先,根据运动信息按照前向预测得到当前图像块的前向预测块,以及根据运动信息按照后向预测得到当前图像块的后向预测块,然后,基于双向预测的加权预测技术将前向预测块和后向预测块中相同像素位置的像素值经过加权预测得到当前图像块的预测块,或者,基于双向预测的光流技术(bi-directional optical flow,bio)根据前向预测块和后向预测块确定当前图像块的预测块。
4.加权预测技术的优点为计算简单,但是,将加权预测技术运用在基于块级的运动补偿时,会导致纹理复杂的图像预测效果差,压缩效率不高。虽然,bio技术能够通过像素级的运动细化来提高压缩比,但是,bio技术计算复杂度高,极大地影响了编解码速度,而且在一些情况下,使用加权预测技术也能达到甚至超过bio技术的压缩效果。因此,对于双向帧间预测如何选择双向预测时的运动补偿技术,来达到压缩比与计算复杂度的最佳权衡是一个亟待解决的问题。


技术实现要素:

5.本技术实施例提供一种双向帧间预测方法及装置,解决了对于双向帧间预测如何选择双向预测运动补偿技术,来达到压缩比与计算复杂度的最佳权衡的问题。
6.为达到上述目的,本技术实施例采用如下技术方案:
7.本技术实施例的第一方面,提供一种双向帧间预测方法,包括:在获取到当前图像块的运动信息之后,先根据运动信息获取当前图像块的初始预测块,然后根据初始预测块的属性信息确定当前图像块的运动补偿方式,或者根据运动信息和初始预测块的属性信息确定当前图像块的运动补偿方式,或者根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式,最后根据确定的运动补偿方式以及初始预测块对当前图像块进行运动补偿。其中,当前图像块为待编码图像块或待解码图像块。运动补偿方式为基于双向预测
的加权预测技术或基于双向预测的光流技术。
8.本技术实施例提供的双向帧间预测方法,在对当前图像块进行运动补偿,根据当前图像块的特征和当前图像块的初始预测块的特征确定合适的运动补偿方式,既兼顾了压缩比高的特点,又兼顾了编解码复杂度低的特点,从而,有效地达到了压缩比和复杂度的最佳平衡。
9.本技术实施例所述的运动信息可以包括第一参考帧索引、第二参考帧索引、第一运动矢量和第二运动矢量。结合第一方面,在一种可能的实现方式中,根据运动信息获取当前图像块的初始预测块,具体包括:根据第一参考帧索引和第一运动矢量确定当前图像块的第一初始预测块,并根据第二参考帧索引和第二运动矢量确定当前图像块的第二初始预测块,其中,第一参考帧索引用于表示当前图像块的前向参考块所在的帧的索引,第一运动矢量用于表示当前图像块相对前向参考块的运动位移,第一初始预测块的属性信息包括m*n个像素点的像素值,第二参考帧索引用于表示当前图像块的后向参考块所在的帧的索引,第二运动矢量用于表示当前图像块相对后向参考块的运动位移,第二初始预测块的属性信息包括m*n个像素点的像素值,n为大于等于1的整数,m为大于等于1的整数。
10.结合上述可能的实现方式,在一种可能的实现方式中,本技术实施例所述的根据初始预测块的属性信息确定当前图像块的运动补偿方式,具体包括:先根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值,然后,根据m*n个像素差值确定当前图像块的纹理复杂度,再根据当前图像块的纹理复杂度确定运动补偿方式。
11.可选的,在本技术的另一种可能的实现方式中,上述根据m*n个像素差值确定当前图像块的纹理复杂度,包括:计算m*n个像素差值的绝对值之和;将m*n个像素差值的绝对值之和确定为当前图像块的纹理复杂度。
12.可选的,在本技术的另一种可能的实现方式中,上述根据m*n个像素差值确定当前图像块的纹理复杂度,包括:计算m*n个像素差值的平均值;将m*n个像素差值的平均值确定为当前图像块的纹理复杂度。
13.可选的,在本技术的另一种可能的实现方式中,上述根据m*n个像素差值确定当前图像块的纹理复杂度,包括:计算m*n个像素差值的标准差;将m*n个像素差值的标准差确定为当前图像块的纹理复杂度。
14.可选的,在本技术的另一种可能的实现方式中,上述根据当前图像块的纹理复杂度确定运动补偿方式,具体包括:判断当前图像块的纹理复杂度是否小于第一阈值,第一阈值为大于0的任意实数;若当前图像块的纹理复杂度小于第一阈值,确定运动补偿方式为基于双向预测的加权预测技术;若当前图像块的纹理复杂度大于或等于第一阈值,确定运动补偿方式为基于双向预测的光流技术。
15.结合上述可能的实现方式,在一种可能的实现方式中,本技术实施例所述的当前图像块的运动幅度由运动信息确定,根据运动信息和初始预测块的属性信息确定运动补偿方式,具体包括:根据第一运动矢量确定当前图像块的第一运动幅度,并根据第二运动矢量确定当前图像块的第二运动幅度;根据第一运动幅度、第二运动幅度、初始预测块的属性信息确定运动补偿方式。
16.可选的,在本技术的另一种可能的实现方式中,上述根据第一运动幅度、第二运动
幅度、初始预测块的属性信息确定运动补偿方式,初始预测块的属性信息可以是像素点的像素值。获取初始预测块的属性信息的方式可以参考上述可能的实现方式。确定运动补偿方式方法包括:根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值;根据m*n个像素差值确定当前图像块的纹理复杂度;根据当前图像块的纹理复杂度、第一运动幅度、第二运动幅度和第一数学模型确定选择概率;或者,根据当前图像块的纹理复杂度、第一运动幅度和第二运动幅度查询第一映射表确定选择概率,第一映射表包括选择概率与当前图像块的纹理复杂度、第一运动幅度和第二运动幅度的对应关系;根据选择概率确定运动补偿方式。
17.结合第一方面,在一种可能的实现方式中,运动信息包括第一运动矢量和第二运动矢量,根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式,包括:根据当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量、第二运动矢量的垂直分量和第二数学模型确定选择概率,第一运动矢量包括第一运动矢量的水平分量和第一运动矢量的垂直分量,第二运动矢量包括第二运动矢量的水平分量和第二运动矢量的垂直分量;或者,根据当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量和第二运动矢量的垂直分量查询第二映射表确定选择概率,第二映射表包括选择数值与当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量和第二运动矢量的垂直分量的对应关系;根据选择概率确定运动补偿方式。
18.可选的,在本技术的另一种可能的实现方式中,上述根据选择概率确定运动补偿方式,具体包括:判断选择概率是否大于第二阈值,第二阈值为大于等于0且小于等于1的任意实数;若选择概率大于第二阈值,确定运动补偿方式为基于双向预测的光流技术;若选择概率小于或等于第二阈值,确定运动补偿方式为基于双向预测的加权预测技术。
19.本技术实施例的第二方面,提供一种编码方法,包括:上述任意方面所述的双向帧间预测方法用于编码过程中,当前图像块为待编码图像块。
20.本技术实施例的第三方面,提供一种解码方法,包括:上述任意方面所述的双向帧间预测方法用于解码过程中,当前图像块为待解码图像块。
21.本技术实施例的第四方面,提供一种双向帧间预测装置,包括:运动估计单元、确定单元和运动补偿单元。
22.具体的,上述运动估计单元,用于获取当前图像块的运动信息,当前图像块为待编码图像块或待解码图像块;上述确定单元,用于根据运动信息获取当前图像块的初始预测块;上述确定单元,还用于根据初始预测块的属性信息、或者根据运动信息和初始预测块的属性信息、或者根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式,运动补偿方式为基于双向预测的加权预测技术或基于双向预测的光流技术;上述运动补偿单元,用于根据确定的运动补偿方式以及初始预测块对当前图像块进行运动补偿。
23.本技术实施例提供的双向帧间预测方法,在对当前图像块进行运动补偿,根据当前图像块的特征和当前图像块的初始预测块的特征确定合适的运动补偿方式,既兼顾了压缩比高的特点,又兼顾了编解码复杂度低的特点,从而,有效地达到了压缩比和复杂度的最佳平衡。
24.本技术实施例所述的运动信息包括第一参考帧索引、第二参考帧索引、第一运动
矢量和第二运动矢量。结合第四方面,在一种可能的实现方式中,上述确定单元,具体用于:根据第一参考帧索引和第一运动矢量确定当前图像块的第一初始预测块,第一参考帧索引用于表示当前图像块的前向参考块所在的帧的索引,第一运动矢量用于表示当前图像块相对前向参考块的运动位移,第一初始预测块的属性信息包括m*n个像素点的像素值,n为大于等于1的整数,m为大于等于1的整数;并根据第二参考帧索引和第二运动矢量确定当前图像块的第二初始预测块,第二参考帧索引用于表示当前图像块的后向参考块所在的帧的索引,第二运动矢量用于表示当前图像块相对后向参考块的运动位移,第二初始预测块的属性信息包括m*n个像素点的像素值。
25.结合上述可能的实现方式,在一种可能的实现方式中,上述确定单元,具体用于:根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值;根据m*n个像素差值确定当前图像块的纹理复杂度;根据当前图像块的纹理复杂度确定运动补偿方式。
26.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:计算m*n个像素差值的绝对值之和;将m*n个像素差值的绝对值之和确定为当前图像块的纹理复杂度。
27.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:计算m*n个像素差值的平均值;将m*n个像素差值的平均值确定为当前图像块的纹理复杂度。
28.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:计算m*n个像素差值的标准差;将m*n个像素差值的标准差确定为当前图像块的纹理复杂度。
29.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:判断当前图像块的纹理复杂度是否小于第一阈值,第一阈值为大于0的任意实数;若当前图像块的纹理复杂度小于第一阈值,确定运动补偿方式为基于双向预测的加权预测技术;若当前图像块的纹理复杂度大于或等于第一阈值,确定运动补偿方式为基于双向预测的光流技术。
30.结合上述可能的实现方式,在一种可能的实现方式中,本技术实施例所述的当前图像块的运动幅度由运动信息确定,上述确定单元,具体用于:根据第一运动矢量确定当前图像块的第一运动幅度,并根据第二运动矢量确定当前图像块的第二运动幅度;根据第一运动幅度、第二运动幅度、初始预测块的属性信息确定运动补偿方式。
31.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值;根据m*n个像素差值确定当前图像块的纹理复杂度;根据当前图像块的纹理复杂度、第一运动幅度、第二运动幅度和第一数学模型确定选择概率;或者,根据当前图像块的纹理复杂度、第一运动幅度和第二运动幅度查询第一映射表确定选择概率,第一映射表包括选择概率与当前图像块的纹理复杂度、第一运动幅度和第二运动幅度的对应关系;根据选择概率确定运动补偿方式。
32.结合第四方面,在一种可能的实现方式中,运动信息包括第一运动矢量和第二运动矢量,上述确定单元,具体用于:根据当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量、第二运动矢量的垂直分量和第二数学模型确定选择概率,第一运动矢量包括第一运动矢量的水平分量和第一运动矢量的垂直分量,第二运动矢量包括第二运动矢量的水平分量和第二运动矢量的垂直分量;或者,根据当
前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量和第二运动矢量的垂直分量查询第二映射表确定选择概率,第二映射表包括选择数值与当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量和第二运动矢量的垂直分量的对应关系;根据选择概率确定运动补偿方式。
33.可选的,在本技术的另一种可能的实现方式中,上述确定单元,具体用于:判断选择概率是否大于第二阈值,第二阈值为大于等于0且小于等于1的任意实数;若选择概率大于第二阈值,确定运动补偿方式为基于双向预测的光流技术;若选择概率小于或等于第二阈值,确定运动补偿方式为基于双向预测的加权预测技术。
34.本技术实施例的第五方面,提供一种终端,终端包括:一个或多个处理器、存储器和通信接口;存储器、通信接口与一个或多个处理器连接;终端通过通信接口与其他设备通信,存储器用于存储计算机程序代码,计算机程序代码包括指令,当一个或多个处理器执行指令时,终端执行上述任意方面的双向帧间预测方法。
35.本技术实施例的第六方面,提供一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任意方面的双向帧间预测方法。
36.本技术实施例的第七方面,提供一种计算机可读存储介质,包括指令,当指令在终端上运行时,使得终端执行上述任意方面的双向帧间预测方法。
37.本技术实施例的第八方面,提供一种视频编码器,包括非易失性存储介质以及中央处理器,非易失性存储介质存储有可执行程序,中央处理器与非易失性存储介质连接,当中央处理器执行可执行程序时,视频编码器执行上述任意方面的双向帧间预测方法。
38.本技术实施例的第九方面,提供一种视频解码器,包括非易失性存储介质以及中央处理器,非易失性存储介质存储有可执行程序,中央处理器与非易失性存储介质连接,当中央处理器执行可执行程序时,视频解码器执行上述任意方面的双向帧间预测方法。
39.另外,上述任意方面的设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
40.本技术实施例中,双向帧间预测装置、终端的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本技术实施例类似,属于本技术权利要求及其等同技术的范围之内。
附图说明
41.图1为本技术实施例提供的一种视频传输系统架构的简化示意图;
42.图2为本技术实施例的视频编码器的简化示意图;
43.图3为本技术实施例的视频解码器的简化示意图;
44.图4为本技术实施例提供的一种双向帧间预测方法的流程图;
45.图5为本技术实施例提供的一种当前图像块的运动示意图;
46.图6为本技术实施例提供的另一种双向帧间预测方法的流程图;
47.图7为本技术实施例提供的又一种双向帧间预测方法的流程图;
48.图8为本技术实施例提供的一种获取m*n个像素差值的示意图;
49.图9为本技术实施例提供的再一种双向帧间预测方法的流程图;
50.图10为本技术实施例提供的再一种双向帧间预测方法的流程图;
51.图11为本技术实施例提供的一种双向帧间预测装置的组成示意图;
52.图12为本技术实施例提供的另一种双向帧间预测装置的组成示意图。
具体实施方式
53.本技术的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同对象,而不是用于限定特定顺序。
54.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
55.为了方便理解本技术实施例,首先在此介绍本技术实施例涉及到的相关要素。
56.视频编码(video encoding):将视频(图像序列)压缩成码流的处理过程。
57.视频解码(video decoding):将码流按照特定的语法规则和处理方法恢复成重建图像的处理过程。
58.在大多数的编码框架中,视频包括一系列图像(picture),一个图像称为一帧(frame)。图像被划分为至少一个条带,每个条带又被划分为图像块(block)。视频编码或视频解码以图像块为单位。例如,可从图像的左上角位置开始从左到右、从上到下、一行一行进行编码处理或解码处理。这里,图像块可以为视频编解码标准h.264中的宏块(macro block,mb),也可以为高效视频编码(figh efficiency video coding,hevc)标准中的编码单元(coding unit,cu),本技术实施例对此不作具体限定。
59.本技术实施例中,正在进行编码处理或解码处理的图像块称为当前图像块(current block),当前图像块所在的图像称为当前帧(当前图像)。
60.在视频编码时,根据当前图像块的预测类型,当前帧可分为i帧、p帧和b帧。i帧是作为独立静态图像编码的帧,在视频流中提供随机存取点。p帧是由与其相邻的前一个i帧或者p帧预测而得到的帧,能作为接下来的p帧或b帧的参考帧。b帧是采用最邻近的前后两帧(可以是i帧或p帧)作为参考帧,进行双向预测得到的帧。本技术实施例中,当前帧指双向预测帧(b帧)。
61.由于视频中连续的若干帧图像之间存在较强时间相关性,也就是说,相邻帧之间包含了很多冗余,所以在进行视频编码时,常利用各个帧之间的时间相关性来减少帧间的冗余,达到压缩数据的目的。目前,主要采用运动补偿的帧间预测技术对视频进行编码,来提高压缩比。
62.帧间预测指以编码图像块或解码图像块为单位,利用当前帧与其参考帧之间的相关性完成的预测,当前帧可以存在一个或多个参考帧。具体的,根据当前图像块的参考帧中的像素,生成当前图像块的预测块。
63.具体的,编码端在对当前帧中的当前图像块进行编码时,首先从视频图像已编码的帧中任意选取一个以上参考帧,并从参考帧中获取当前图像块对应的预测块,然后计算预测块与当前图像块之间的残差值,对该残差值进行量化编码;解码端在对当前帧中的当前图像块进行解码时,首先获取当前图像块对应的预测图像块,然后从接收到的码流中获取预测图像块与当前图像块的残差值,根据该残差值和预测块解码重构当前图像块。
64.视频中当前帧与其他帧之间的时间相关性不仅表现在当前帧与在其之前编码的帧之间存在时间相关性,也表现在当前帧与在其之后编码的帧之间存在时间相关性。基于此,在进行视频编码时,可以考虑双向帧间预测,以得到较佳的编码效果。
65.一般的,对于当前图像块而言,可以仅根据一个参考块生成当前图像块的预测块,也可以根据两个参考块生成当前图像块的预测块。上述根据一个参考块生成当前图像块的预测块称为单向帧间预测,上述根据两个参考块生成当前图像块的预测块称为双向帧间预测。双向帧间预测中的两个参考图像块可来自于同一个参考帧或者不同的参考帧。
66.可选的,双向帧间预测可以是指利用当前视频帧与在其之前编码且在其之前播放的视频帧之间的相关性,和当前视频帧与在其之前编码且在其之后播放的视频帧之间的相关性进行的帧间预测。
67.可以看出,上述双向帧间预测涉及两个方向的帧间预测,一般称为:前向帧间预测和后向帧间预测。前向帧间预测是指利用当前视频帧与在其之前编码且在其之前播放的视频帧之间的相关性进行的帧间预测。后向帧间预测是指利用当前视频帧与在其之前编码且在其之后播放的视频帧之间的相关性进行的帧间预测。
68.运动补偿是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,是根据运动信息找到当前图像块的参考块,对当前图像块的参考块经过处理得到当前图像块的预测块的过程,属于帧间预测过程中的一环。
69.对于双向帧间预测,需要基于双向预测的加权预测技术将当前图像块的前向预测块和当前图像块的后向预测块中相同像素位置的像素值经过加权预测才能得到当前图像块的预测块,或者,基于双向预测的光流技术根据当前图像块的前向预测块和当前图像块的后向预测块才能确定当前图像块的预测块。但是,基于双向预测的加权预测技术计算简单,压缩效率不高;基于双向预测的光流技术压缩效率高,计算复杂度也高。因此,如何选择双向预测时的运动补偿技术,来达到压缩比与计算复杂度的最佳权衡是一个亟待解决的问题。
70.针对上述问题,本技术实施例提供一种双向帧间预测方法,其基本原理是:在获取到当前图像块的运动信息之后,先根据运动信息获取当前图像块的初始预测块,然后根据初始预测块的属性信息、或者根据运动信息和初始预测块的属性信息、或者根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式,再根据确定的运动补偿方式以及初始预测块对当前图像块进行运动补偿。其中,当前图像块为待编码图像块或待解码图像块。运动补偿方式为基于双向预测的加权预测技术或基于双向预测的光流技术。从而,在对当前图像块进行运动补偿,根据当前图像块的特征和当前图像块的初始预测块的特征确定合适的运动补偿方式,既兼顾了压缩比高的特点,又兼顾了编解码复杂度低的特点,有效地达到了压缩比和复杂度的最佳平衡。
71.下面将结合附图对本技术实施例的实施方式进行详细描述。
72.本技术实施例提供的双向帧间预测方法适用于视频传输系统。图1示出的是可以应用本技术实施例的视频传输系统100架构的简化示意图。如图1所示,该视频传输系统包括源装置和目的装置。
73.源装置包含视频源101、视频编码器102及输出接口103。
74.在一些实例中,视频源101可包含视频俘获装置(例如,视频相机)、含有先前俘获
的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频输入接口,及/或用于产生视频数据的计算机图形系统,或上述视频数据源的组合。视频源101用于采集视频数据,并对采集到的视频数据进行编码前的处理,将光信号转化为数字化的图像序列,并将数字化的图像序列传输至视频编码器102。
75.视频编码器102用于编码来自视频源101的图像序列,得到码流。
76.输出接口103可包含调制器/解调器(调制解调器)及/或发射器。输出接口103用于将视频编码器102编码得到的码流发送出去。
77.在一些实例中,源装置经由输出接口103将编码得到的码流直接发射到目的装置。编码得到的码流还可存储于存储媒体或文件服务器上以供目的装置稍后存取以用于解码及/或播放。例如,存储装置107。
78.目的装置包含输入接口104、视频解码器105及显示装置106。
79.在一些实例中,输入接口104包含接收器及/或调制解调器。输入接口104可以接收输出接口103发送的经由网络108传输的码流,并将码流传输到视频解码器105。网络108可以ip网络,包括路由器和交换机等。
80.视频解码器105用于对输入接口104接收到的码流进行解码,重建图像序列。视频编码器102及视频解码器105可根据视频压缩标准(例如,高效率视频编解码h.265标准)而操作。
81.显示装置106可与目的装置整合或可在目的装置外部。一般来说,显示装置106显示解码后的视频数据。显示装置106可包括多种显示装置,例如液晶显示器、等离子体显示器、有机发光二极管显示器或其它类型的显示装置。
82.目的装置还可以包括渲染模块用于对视频解码器105解码得到的重建图像序列进行渲染,以提高视频的显示效果。
83.具体的,本技术实施例所述的双向帧间预测方法可以由图1所示的视频传输系统中的视频编码器102及视频解码器105执行。
84.下面结合图2和图3对视频编码器及视频解码器进行简单的介绍。
85.图2为本技术实施例的视频编码器200的简化示意图。视频编码器200包括帧间预测器201、帧内预测器202、求和器203、变换器204、量化器205和熵编码器206。为了图像块重构,视频编码器200还包含反量化器207、反变换器208、求和器209和滤波器单元210。帧间预测器201包括运动估计单元和运动补偿单元。帧内预测器202包括选择帧内预测单元和帧内预测单元。滤波器单元210既定表示一或多个环路滤波器,例如去块滤波器、自适应环路滤波器(alf)和样本自适应偏移(sao)滤波器。尽管在图2中将滤波器单元210示出为环路内滤波器,但在其它实现方式下,可将滤波器单元210实施为环路后滤波器。在一种示例下,视频编码器200还可以包括视频数据存储器、分割单元(图中未示意)。视频数据存储器可存储待由视频编码器200的组件编码的视频数据。可从视频源获得存储在视频数据存储器中的视频数据。dpb107可为参考图像存储器,其存储用于由视频编码器200在帧内、帧间译码模式中对视频数据进行编码的参考视频数据。视频数据存储器和dpb107可由多种存储器装置中的任一者形成,例如包含同步dram(sdram)的动态随机存取存储器(dram)、磁阻式ram(mram)、电阻式ram(rram),或其它类型的存储器装置。视频数据存储器和dpb107可由同一存储器装置或单独存储器装置提供。在各种实例中,视频数据存储器可与视频编码器100的
其它组件一起在芯片上,或相对于那些组件在芯片外。
86.视频编码器200接收视频数据,并将视频数据存储在视频数据存储器中。分割单元将所述视频数据分割成若干图像块,而且这些图像块可以被进一步分割为更小的块,例如基于四叉树结构或者二叉树结构的图像块分割。此分割还可包含分割成条带(slice)、片(tile)或其它较大单元。视频编码器200通常说明编码待编码的视频条带内的图像块的组件。条带可分成多个图像块(并且可能分成被称作片的图像块集合)。
87.在对视频数据进行分割得到当前图像块之后,可以通过帧间预测器201对当前图像块进行帧间预测。帧间预测是指在已重建的图像中,为当前图像中的当前图像块寻找匹配的参考块,从而得到当前图像块的运动信息,然后根据运动信息计算出当前图像块中像素点的像素值的预测信息(预测块)。其中,计算运动信息的过程称为运动估计。运动估计过程需要为当前图像块在参考图像中尝试多个参考块,最终使用哪一个或者哪几个参考块用作预测则使用率失真优化(rate-distortion optimization,rdo)或者其他方法确定。计算出当前图像块的预测块的过程称为运动补偿。具体的,本技术实施例所述的双向帧间预测方法可以由帧间预测器201执行。
88.在对视频数据进行分割得到当前图像块之后,还可以通过帧内预测器202对当前图像块进行帧内预测。帧内预测是指利用当前图像块所在的图像内已重建图像块内的像素点的像素值对当前图像块内像素点的像素值进行预测。
89.在视频数据经帧间预测器201和帧内预测器202产生当前图像块的预测块之后,视频编码器200通过从待编码的当前图像块减去预测块来形成残差图像块。求和器203表示执行此减法运算的一或多个组件。残差块中的残差视频数据可包含在一或多个变换单元(transform unit,tu)中,并应用于变换器204。变换器204使用例如离散余弦变换或概念上类似的变换等变换将残差视频数据变换成残差变换系数。变换器204可将残差视频数据从像素值域转换到变换域,例如频域。
90.变换器204可将所得变换系数发送到量化器205。量化器205量化变换系数以进一步减小位速率。在一些实例中,量化器205可接着执行对包含经量化的变换系数的矩阵的扫描。或者,熵编码器206可执行扫描。
91.在量化之后,熵编码器206对经量化变换系数进行熵编码。举例来说,熵编码器206可执行上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间分割熵(pipe)编码或另一熵编码方法或技术。在由熵编码器206熵编码之后,可将经编码码流发射到视频解码器300,或经存档以供稍后发射或由视频解码器300检索。熵编码器206还可对待编码的当前图像块的语法元素进行熵编码。
92.反量化器207和反变化器208分别应用逆量化和逆变换以在像素域中重构残差块,例如以供稍后用作参考图像的参考块。求和器209将经重构的残差块添加到由帧间预测器201或帧内预测器202产生的预测块,以产生经重构图像块。滤波器单元210可以适用于经重构图像块以减小失真,诸如方块效应(block artifacts)。然后,该经重构图像块作为参考块存储在经解码图像缓冲器中,可由帧间预测器201用作参考块以对后续视频帧或图像中的块进行帧间预测。
93.应当理解的是,视频编码器200的其它的结构变化可用于编码视频流。例如,对于
某些图像块或者图像帧,视频编码器200可以直接地量化残差信号而不需要经变换器204处理,相应地也不需要经反变换器208处理;或者,对于某些图像块或者图像帧,视频编码器200没有产生残差数据,相应地不需要经变换器203、量化器205、反量化器207和反变换器208处理;或者,视频编码器200可以将经重构图像块作为参考块直接地进行存储而不需要经滤波器单元210处理;或者,视频编码器200中量化器205和反量化器207可以合并在一起。
94.视频编码器200用于将视频输出到后处理实体211。后处理实体211表示可处理来自视频编码器200的经编码视频数据的视频实体的实例,例如媒体感知网络元件(mane)或拼接/编辑装置。在一些情况下,后处理实体211可为网络实体的实例。在一些视频编码系统中,后处理实体211和视频编码器200可为单独装置的若干部分,而在其它情况下,相对于后处理实体211所描述的功能性可由包括视频编码器200的相同装置执行。在某一实例中,后处理实体211是图1的存储装置107的实例。
95.图3为本技术实施例的视频解码器300的简化示意图。视频解码器300包括熵解码器301、反量化器302、反变换器303、求和器304、滤波器单元305、帧间预测器306和帧内预测器307。视频解码器300可执行大体上与相对于来自图2的视频编码器200描述的编码过程互逆的解码过程。首先,利用熵解码器301、反量化器302和反变换器303得到残差信息,解码码流确定当前图像块使用的是帧内预测还是帧间预测。如果是帧内预测,则帧内预测器307利用周围已重建区域内像素点的像素值按照所使用的帧内预测方法构建预测信息。如果是帧间预测,则帧间预测器306需要解析出运动信息,并使用所解析出的运动信息在已重建的图像中确定参考块,并将块内像素点的像素值作为预测信息,使用预测信息加上残差信息经过滤波操作便可以得到重建信息。
96.本技术实施例所述的双向帧间预测方法不仅适用于无线应用场景,还可以应用于支持以下应用等多种多媒体应用的视频编解码:空中电视广播、有线电视发射、卫星电视发射、流式传输视频发射(例如,经由因特网)、存储于数据存储媒体上的视频数据的编码、存储于数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频编解码系统可经配置以支持单向或双向视频发射,以支持例如视频流式传输、视频播放、视频广播及/或视频电话等应用。
97.本技术实施例提供的双向帧间预测方法可以由双向帧间预测装置执行,也可以由视频编解码装置执行,还可以由视频编解码器执行,还可以由其它具有视频编解码功能的设备执行,本技术实施例对此不作具体限定。
98.为了便于说明,下面以双向帧间预测装置为执行主体为例对双向帧间预测方法进行说明。
99.图4为本技术实施例提供的双向帧间预测方法的流程示意图。图4所示的双向帧间预测方法既可以发生在编码过程,也可以发生在解码过程。例如,图4所示的双向帧间预测方法可以发生在编解码时的帧间预测过程。如图4所示,该双向帧间预测方法包括:
100.s401、双向帧间预测装置获取当前图像块的运动信息。
101.当前图像块为待编码图像块或待解码图像块。若当前图像块为待编码图像块,当前图像块的运动信息可以根据运动估计获得。若当前图像块为待解码图像块,当前图像块的运动信息可以根据码流解码获得。
102.运动信息主要包括当前图像块的预测方向信息、当前图像块的参考帧索引和当前
图像块的运动矢量。当前图像块的预测方向信息包括前向预测、后向预测和双向预测。当前图像块的参考帧索引指示当前图像块的参考块所在的帧的索引。根据预测方向的不同,当前图像块的参考帧索引包括当前图像块的前向参考帧索引和当前图像块的后向参考帧索引。当前图像块的运动矢量表示当前图像块相对于参考块的运动位移。
103.运动矢量包括水平分量(记作mv
x
)和垂直分量(记作mvy)。水平分量表示当前图像块相对于参考块在水平方向上的运动位移。垂直分量表示当前图像块相对于参考块在垂直方向上的运动位移。若预测方向信息指示前向预测或者后向预测时,运动矢量只有一个,若预测方向信息指示双向预测时,运动矢量有两个。例如,双向预测的运动信息包括第一参考帧索引、第二参考帧索引、第一运动矢量和第二运动矢量。第一参考帧索引用于表示当前图像块的前向参考块所在的帧的索引。第一运动矢量用于表示当前图像块相对前向参考块的运动位移。第二参考帧索引用于表示当前图像块的后向参考块所在的帧的索引。第二运动矢量用于表示当前图像块相对后向参考块的运动位移。
104.示例的,如图5所示,b表示当前图像块。当前图像块所在的帧为当前帧。a表示前向参考块。前向参考块所在的帧为前向参考帧。c表示后向参考块。后向参考块所在的帧为后向参考帧。0表示前向,1表示后向。mv0表示前向运动矢量,mv0=(mv0
x
,mv0y),其中,mv0
x
表示前向运动矢量的水平分量,mv0y表示前向运动矢量的垂直分量。mv1表示后向运动矢量,mv1=(mv1
x
,mv1y),其中,mv1
x
表示前向运动矢量的水平分量,mv1y表示前向运动矢量的垂直分量。虚线表示当前图像块b的运动轨迹。
105.s402、双向帧间预测装置根据运动信息获取当前图像块的初始预测块。
106.根据运动信息获取当前图像块的初始预测块的过程具体的可以参考现有技术,当前图像块的初始预测块包括前向预测块和后向预测块。示例的,如图6所示,s402可以由以下详细步骤实现。
107.s601、双向帧间预测装置根据第一参考帧索引和第一运动矢量确定当前图像块的第一初始预测块。
108.首先,双向帧间预测装置根据第一参考帧索引可以确定当前图像块的第一参考块所在的第一参考帧,然后,在第一参考帧中根据第一运动矢量确定当前图像块的第一参考块,第一参考块经过亚像素插值得到第一初始预测块。第一初始预测块可以指当前图像块的前向预测块。
109.假设第一参考帧索引为前向参考帧索引。示例的,如图5所示,首先根据前向参考帧索引确定当前图像块b的前向参考块a所在的前向参考帧,然后,根据当前图像块的坐标(i,j)在前向参考帧中找到同样的坐标点(i

,j

),再根据当前图像块b的长和宽确定前向参考帧中的块b’,并根据当前图像块b的前向运动矢量mv0=(mv0
x
,mv0y)将块b’移动到前向参考块a,前向参考块a经过亚像素插值后得到当前图像块b的前向预测块。(i,j)表示当前图像块b左上角的点在当前帧中的坐标。当前帧的坐标原点为当前图像块b所在的当前帧的左上角的点。(i

,j

)表示块b’左上角的点在前向参考帧中的坐标。前向参考帧的坐标原点为块b’所在的前向参考帧的左上角的点。
110.s602、双向帧间预测装置根据第二参考帧索引和第二运动矢量确定当前图像块的第二初始预测块。
111.首先,双向帧间预测装置根据第二参考帧索引可以确定当前图像块的第二参考块
所在的第二参考帧,然后,在第二参考帧中根据第二运动矢量确定当前图像块的第二参考块,第二参考块经过亚像素插值得到第二初始预测块。第二初始预测块可以指当前图像块的后向预测块。
112.需要说明的是,确定当前图像块的后向预测块的过程与确定当前图像块的前向预测块的过程相同,只是参考方向不同,具体的方法可以参考s601中的阐述。若当前图像块不是双向预测时,此时得到的前向预测块或后向预测块就是当前图像块的预测块。
113.s403a、双向帧间预测装置根据初始预测块的属性信息确定当前图像块的运动补偿方式。
114.初始预测块的属性信息包括初始预测块的尺寸、初始预测块包括的像素点的个数和初始预测块包括的像素点的像素值。另外,由于本技术实施例所述的方法是针对双向帧间预测的,因此,这里的初始预测块包括第一初始预测块和第二初始预测块。第一初始预测块和第二初始预测块的获取方式可以参考s402的阐述。本技术实施例在此以初始预测块包括的像素点的像素值为例对如何根据初始预测块的属性信息确定当前图像块的运动补偿方式进行说明。
115.示例的,假设当前图像块包括m*n个像素点,第一初始预测块包括m*n个像素点,第二初始预测块包括m*n个像素点。n为大于等于1的整数,m为大于等于1的整数,m与n可以相等,也可以不相等。如图7所示,s403a可以由以下详细步骤实现。
116.s701、双向帧间预测装置根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值。
117.双向帧间预测装置可以根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值做差,得到m*n个像素差值。应当理解的是,m*n个像素差值是第一初始预测块包括的各个像素点的像素值依次减去第二初始预测块中对应位置上的像素值得到的。这里所述的对应位置是指相对同样的坐标系中相同坐标点的位置。m*n个像素差值也相当于组成一个中间预测块。
118.示例的,如图8所示,假设m=4,n=4。当前图像块包括4*4个像素点,即b
0,0
,b
0,1
,b
0,2
,b
0,3
....b
3,0
,b
3,1
,b
3,2
,b
3,3
。第一初始预测块包括4*4个像素点,即a
0,0
,a
0,1
,a
0,2
,a
0,3
....a
3,0
,a
3,1
,a
3,2
,a
3,3
。第二初始预测块包括4*4个像素点,即c
0,0
,c
0,1
,c
0,2
,c
0,3
....c
3,0
,c
3,1
,c
3,2
,c
3,3
。以a
0,0
、b
0,0
和c
0,0
作为坐标原点,以i作为横坐标,以j作为纵坐标j建立二维直角坐标系。例如,第一初始预测块中的像素点a
0,0
对应第二初始预测块中相同位置的像素点为相同坐标节点(0,0)的像素点b
0,0
,用a
0,0
减去b
0,0
得到坐标节点(0,0)的像素差值。根据第一初始预测块的4*4个像素点的像素值与第二初始预测块的4*4个像素点的像素值做差,得到4*4个像素差值。用于公式表示像素差值,公式为d(i,j)=abs(a(i,j)-b(i,j)),其中,(i,j)表示像素点的块内的坐标。d(i,j)表示坐标为(i,j)的像素点的像素差值,即第i行第j列的像素点的像素差值。a(i,j)表示第一初始预测块包括的坐标为(i,j)的像素点的像素值。b(i,j)表示第二初始预测块包括的坐标为(i,j)的像素点的像素值。abs()表示求绝对值运算。i为整数,i取0至m-1。j为整数,j取0至n-1。4*4个像素差值对应的4*4个像素点可以组成一个中间预测块,中间预测块包括4*4个像素点,即d
0,0
,d
0,1
,d
0,2
,d
0,3
....d
3,0
,d
3,1
,d
3,2
,d
3,3

119.s702、双向帧间预测装置根据m*n个像素差值确定当前图像块的纹理复杂度。
120.双向帧间预测装置在根据第一初始预测块的m*n个像素点的像素值与第二初始预测块的m*n个像素点的像素值得到m*n个像素差值之后,可以再根据m*n个像素差值确定当前图像块的纹理复杂度。
121.在一种可能的实现方式中,可以根据m*n个像素差值之和来确定当前图像块的纹理复杂度。应当理解的,这里m*n个像素差值之和也可以指m*n个像素差值的绝对值之和。当前图像块的纹理复杂度为m*n个像素差值之和。用公式表示纹理复杂度,公式为其中,表示纹理复杂度。误差绝对值和(sum of absolute differences,sad)表示m*n个像素差值的绝对值之和。
122.在另一种可能的实现方式中,可以根据m*n个像素差值的平均值来确定当前图像块的纹理复杂度。当前图像块的纹理复杂度为m*n个像素差值的平均值。用公式表示纹理复杂度,公式为其中,μ表示m*n个像素差值的平均值。m*n表示像素点的个数。
123.在第三种可能的实现方式中,可以根据m*n个像素差值的标准差来确定当前图像块的纹理复杂度。当前图像块的纹理复杂度为m*n个像素差值的标准差。用公式表示纹理复杂度,公式为其中,σ表示m*n个像素差值的标准差。
124.s703、双向帧间预测装置根据当前图像块的纹理复杂度确定运动补偿方式。
125.双向帧间预测装置可以根据当前图像块的纹理复杂度与预设阈值进行比较,来确定运动补偿方式。示例的,判断当前图像块的纹理复杂度是否小于第一阈值,若当前图像块的纹理复杂度小于第一阈值,确定运动补偿方式为基于双向预测的加权预测技术;若当前图像块的纹理复杂度大于或等于第一阈值,确定运动补偿方式为基于双向预测的光流技术。第一阈值为大于0的任意实数,如150或200等。在实际应用中,需根据编解码参数、具体的编解码器及目标编解码时间可以对第一阈值做相应调整。需要说明的是,第一阈值的取值可以通过预先设置或者在高层语法中设置。在高层语法可以是序列参数集(sequence parameter set,sps)、图像参数集(picture parameter set,pps)或片头(slice header)等参数集中指定。
126.s403b、双向帧间预测装置根据运动信息和初始预测块的属性信息确定当前图像块的运动补偿方式。
127.在双向帧间预测装置根据初始预测块的属性信息确定当前图像块的运动补偿方式时,还可以根据当前图像块的运动幅度来与初始预测块的属性信息共同确定运动补偿方式。当前图像块的运动幅度可以由运动信息确定。初始预测块的属性信息可以根据上述s701和s702得到,本技术实施例在此不再赘述。
128.示例的,如图9所示,在双向帧间预测装置根据m*n个像素差值确定当前图像块的纹理复杂度,即s702之后,本技术实施例还可以包括以下详细步骤。
129.s901、双向帧间预测装置根据第一运动矢量确定当前图像块的第一运动幅度,并
根据第二运动矢量确定当前图像块的第二运动幅度。
130.示例的,用公式表示第一运动幅度,公式为其中,mv0
x
表示第一运动矢量(前向运动矢量)的水平分量。mv0y表示第一运动矢量(前向运动矢量)的垂直分量。用公式表示第二运动幅度,公式为其中,mv1
x
表示第二运动矢量(后向运动矢量)的水平分量。mv1y表示第二运动矢量(后向运动矢量)的垂直分量。
131.需要说明的是,本技术实施例提供的双向帧间预测方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,示例的,如s901、s701和s702之间的前后顺序可以互换,即可先执行s901,再执行s701和s702,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本技术的保护范围之内,因此不再赘述。
132.s902、双向帧间预测装置根据当前图像块的纹理复杂度、第一运动幅度、第二运动幅度和第一数学模型确定选择概率。
133.示例的,第一数学模型可以是第一逻辑回归模型。第一逻辑回归模型如下:
[0134][0135]
其中,ω0,ω1,ω2和ω3为第一逻辑回归模型的参数。ω0的典型取值为2.06079643。ω1的典型取值为-0.01175306。ω2的典型取值为-0.00122516。ω3的典型取值为-0.0008786。将dist0和dist1分别代入第一逻辑回归模型可以得出选择概率y。需要说明的是,第一逻辑回归模型的参数可以通过预先设置或者在高层语法中设置。在高层语法可以是sps,pps,slice header等参数集中指定。
[0136]
可选的,除了通过逻辑回归模型计算得到选择概率y以外,还可以在编码时预定义一个第一映射表。第一映射表中保存当前图像块的纹理复杂度、第一运动幅度和第二运动幅度的各个可能的取值,以及对应的选择概率y的取值。编码时可以通过查表的方式得到选择概率y的值。
[0137]
s903、双向帧间预测装置根据选择概率确定运动补偿方式。
[0138]
可以根据选择概率与预设阈值进行比较,来确定运动补偿方式。示例的,判断选择概率是否大于第二阈值,若选择概率大于第二阈值,确定运动补偿方式为基于双向预测的光流技术;若选择概率小于或等于第二阈值,确定运动补偿方式为基于双向预测的加权预测技术。第二阈值为大于等于0且小于等于1的任意实数。例如,第二阈值的取值可以为0.7。
[0139]
s403c、双向帧间预测装置或者根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式。
[0140]
当前图像块的属性信息包括当前图像块的尺寸、当前图像块包括的像素点的个数和当前图像块包括的像素点的像素值。下面以当前图像块的尺寸为例结合附图详细解释双向帧间预测装置根据运动信息和当前图像块的属性信息确定运动补偿方式。由于当前图像块由像素点组成的像素点阵列,双向帧间预测装置便可以根据像素点得到当前图像块的尺寸。可理解的,当前图像块的尺寸为当前图像块的宽和高。如图10所示,s403c可以由以下详细步骤实现。
[0141]
s1001、双向帧间预测装置根据当前图像块的尺寸、第一运动矢量的水平分量、第
一运动矢量的垂直分量、第二运动矢量的水平分量、第二运动矢量的垂直分量和第二数学模型确定选择概率。
[0142]
示例的,第二数学模型可以是第二逻辑回归模型。第二逻辑回归模型如下:
[0143]
y=1/(1 exp(-1
×
(ω0 ω1·
h ω2·
w ω3·
mv0
x
ω4·
mv0y ω5·
mv1
x
ω6·
mv1y)))
[0144]
其中,ω0,ω1,ω2、ω3、ω4、ω5和ω6为第二逻辑回归模型的参数。ω0的典型取值为-0.18929861。ω1的典型取值为4.81715386e-03。ω2的典型取值为4.66279123e-03。ω3的典型取值为-7.46496930e-05。ω4的典型取值为1.23565538e-04。ω5的典型取值为-4.25855176e-05。ω6的典型取值为1.44069088e-04。w表示当前图像块的预测块的宽。h表示当前图像块的预测块的高。mv0
x
表示第一运动矢量(前向运动矢量)的水平分量。mv0y表示第一运动矢量(前向运动矢量)的垂直分量。mv1
x
表示第二运动矢量(后向运动矢量)的水平分量。mv1y表示第二运动矢量(后向运动矢量)的垂直分量。将当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量和第二运动矢量的垂直分量分别代入第二逻辑回归模型可以得出选择概率y。需要说明的是,第二逻辑回归模型的参数可以通过预先设置或者在高层语法中设置。在高层语法可以是sps,pps,slice header等参数集中指定。
[0145]
可选的,除了通过第二逻辑回归模型计算得到选择概率y以外,还可以在编码时预定义一个第二映射表。第二映射表中保存当前图像块的尺寸、第一运动矢量的水平分量、第一运动矢量的垂直分量、第二运动矢量的水平分量、第二运动矢量的垂直分量的各个可能的取值,以及对应的选择概率y的取值。编码时可以通过查表的方式得到选择概率y的值。
[0146]
s1002、双向帧间预测装置根据选择概率确定运动补偿方式。
[0147]
对于s1002的详细解释可以参考s903中的阐述,本技术实施例在此不再赘述。
[0148]
s404、双向帧间预测装置根据确定的运动补偿方式以及初始预测块对当前图像块进行运动补偿。
[0149]
初始预测块包括第一初始预测块和第二初始预测块。基于双向预测的加权预测技术以及初始预测块对当前图像块进行运动补偿,以及基于双向预测的光流技术以及初始预测块对当前图像块进行运动补偿都可以参考现有技术的具体实现方式,本技术实施例在此不再赘述。
[0150]
进一步的,在双向帧间预测装置通过上述实施例所述的双向帧间预测方法确定双向运动补偿所使用的运动补偿方式后,可以将所选的运动补偿方式写入当前图像块的语法元素中。解码时无需重复进行判决动作,只需根据语法元素直接选择运动补偿方式。
[0151]
示例的,为当前图像块分配一个语法元素(bio_flag),该语法元素在码流中占1比特。当bio_flag取值为0时,表示运动补偿方式为基于双向预测的加权预测技术;当bio_flag取值为1时,表示运动补偿方式为基于双向预测的光流技术。bio_flag的初始值为0。当解码端解析码流后,得到当前解码块的语法元素(bio_flag)的值。根据bio_flag的值确定双向运动补偿所使用的运动补偿方式。若bio_flag取值为0,运动补偿方式为基于双向预测的加权预测技术;若bio_flag取值为1,运动补偿方式为基于双向预测的光流技术。
[0152]
可选的,还可以通过在高层语法设置语法元素用以指定双向帧间预测装置确定运动补偿方式所用的判决方法。例如,判决方法为第一种判决方法、第二种判决方法或第三种
判决方法。第一种判决方法为根据初始预测块的属性信息确定当前图像块的运动补偿方式。第二种判决方法为根据根据运动信息和初始预测块的属性信息确定当前图像块的运动补偿方式。第三种判决方法根据根据运动信息和当前图像块的属性信息确定当前图像块的运动补偿方式。第一种判决方法、第二种判决方法和第三种判决方法的具体实现方式可以参考上述实施例的详细阐述,本技术实施例在此不再赘述。语法元素可以设置在sps,pps,slice header等参数集中。
[0153]
示例的,语法元素可以是选择模式(select_mode),该语法元素在码流中占2比特。语法元素select_mode的初始值为0。如表1所示,select_mode的取值及其所指示的判决方法如下表所示:
[0154]
表1
[0155]
select_mode的取值判决方法0第一种判决方法1第二种判决方法2第三种判决方法
[0156]
在双向帧间预测装置获取到当前图像块的运动信息之后,根据指定的判决方法确定运动补偿方式。如果确定的判决方法为第一种判决方法,双向帧间预测装置按照第一种判决方法进行双向帧间预测。如果确定的判决方法为第二种判决方法,双向帧间预测装置按照第二种判决方法进行双向帧间预测。如果确定的判决方法为第三种判决方法,双向帧间预测装置按照第三种判决方法进行双向帧间预测。
[0157]
本技术实施例所述的双向帧间预测方法,在对当前图像块进行运动补偿,根据当前图像块的特征和当前图像块的预测块的特征确定合适的运动补偿方式,既兼顾了压缩比高的特点,又兼顾了编解码复杂度低的特点,从而,有效地达到了压缩比和复杂度的最佳平衡。
[0158]
上述主要从各个网元之间交互的角度对本技术实施例提供的方案进行了介绍。可以理解的是,各个网元,例如双向帧间预测装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0159]
本技术实施例可以根据上述方法示例对双向帧间预测装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0160]
在采用对应各个功能划分各个功能模块的情况下,图11示出了上述和实施例中涉及的双向帧间预测装置的一种可能的组成示意图,如图11所示,该双向帧间预测装置可以包括:运动估计单元1101、确定单元1102、运动补偿单元1103。
[0161]
其中,运动估计单元1101,用于支持双向帧间预测装置执行图4所示的双向帧间预
测方法中的s401,图6所示的双向帧间预测方法中的s401,图7所示的双向帧间预测方法中的s401,图9所示的双向帧间预测方法中的s401,图10所示的双向帧间预测方法中的s401。
[0162]
确定单元1102,用于支持双向帧间预测装置执行图4所示的双向帧间预测方法中的s402、s403a、s403b和s403c,图6所示的双向帧间预测方法中的s601、s602、s403a、s403b和s403c,图7所示的双向帧间预测方法中的s601、s602、s701-s703、s403b和s403c,图9所示的双向帧间预测方法中的s601、s602、s701-s703、s901-s903和s403c,图10所示的双向帧间预测方法中的s601、s602、s403a、s403b、s1001和s1002。
[0163]
运动补偿单元1103,用于支持双向帧间预测装置执行图4所示的双向帧间预测方法中的s404,图6所示的双向帧间预测方法中的s404,图7所示的双向帧间预测方法中的s404,图9所示的双向帧间预测方法中的s404,图10所示的双向帧间预测方法中的s404。
[0164]
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0165]
本技术实施例提供的双向帧间预测装置,用于执行上述双向帧间预测方法,因此可以达到与上述双向帧间预测方法相同的效果。
[0166]
在采用集成的单元的情况下,图12示出了上述实施例中所涉及的双向帧间预测装置的另一种可能的组成示意图。如图12所示,该双向帧间预测装置包括:处理模块1201和通信模块1202。
[0167]
处理模块1201用于对双向帧间预测装置的动作进行控制管理,例如,处理模块1201用于支持双向帧间预测装置执行图4所示的双向帧间预测方法中的s402、s403a、s403b和s403c,图6所示的双向帧间预测方法中的s601、s602、s403a、s403b和s403c,图7所示的双向帧间预测方法中的s601、s602、s701-s703、s403b和s403c,图9所示的双向帧间预测方法中的s601、s602、s701-s703、s901-s903和s403c,图10所示的双向帧间预测方法中的s601、s602、s403a、s403b、s1001和s1002、和/或用于本文所描述的技术的其它过程。通信模块1202用于支持双向帧间预测装置与其他网络实体的通信,例如与图1或图3中示出的功能模块或网络实体之间的通信。双向帧间预测装置还可以包括存储模块1203,用于存储双向帧间预测装置的程序代码和数据。
[0168]
其中,处理模块1201可以是处理器或控制器。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块1202可以是收发电路或通信接口等。存储模块1203可以是存储器。
[0169]
其中,上述方法实施例涉及的各场景的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0170]
上述双向帧间预测装置11和双向帧间预测装置12均可执行上述图4、图6、图7、图9和图10中任一附图所示的双向帧间预测方法,双向帧间预测装置11和双向帧间预测装置12具体可以是视频编码装置、视频解码装置或者其他具有视频编解码功能的设备。双向帧间预测装置11和双向帧间预测装置12既可以用于在编码过程中进行运动补偿,也可以用于在解码过程中进行运动补偿。
[0171]
本技术还提供一种终端,该终端包括:一个或多个处理器、存储器、通信接口。该存储器、通信接口与一个或多个处理器耦合;存储器用于存储计算机程序代码,计算机程序代
码包括指令,当一个或多个处理器执行指令时,终端执行本技术实施例的双向帧间预测方法。
[0172]
这里的终端可以是视频显示设备,智能手机,便携式电脑以及其它可以处理视频或者播放视频的设备。
[0173]
本技术还提供一种视频编码器,包括非易失性存储介质,以及中央处理器,所述非易失性存储介质存储有可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述可执行程序以实现本技术实施例的双向帧间预测方法。
[0174]
本技术还提供一种视频解码器,包括非易失性存储介质,以及中央处理器,所述非易失性存储介质存储有可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述可执行程序以实现本技术实施例的双向帧间预测方法。
[0175]
本技术另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括一个或多个程序代码,该一个或多个程序包括指令,当终端中的处理器在执行该程序代码时,该终端执行上述图4、图6、图7、图9和图10中任一附图所示的双向帧间预测方法。
[0176]
在本技术的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;终端的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得终端实施执行上述图4、图6、图7、图9和图10中任一附图所示的双向帧间预测方法中的双向帧间预测装置的步骤。
[0177]
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,dvd)或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0178]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0179]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0180]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的
目的。
[0181]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0182]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0183]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
转载请注明原文地址:https://win.8miu.com/read-1058677.html

最新回复(0)