帧间预测方法、编码器、解码器以及计算机存储介质

文档序号:1893585 发布日期:2021-11-26 浏览:20次 >En<

阅读说明:本技术 帧间预测方法、编码器、解码器以及计算机存储介质 (Inter-frame prediction method, encoder, decoder, and computer storage medium ) 是由 唐海 于 2020-05-20 设计创作,主要内容包括:本申请实施例公开了一种帧间预测方法、编码器、解码器以及计算机存储介质,应用于解码器,该方法包括:解析码流,获取当前块的预测模式参数;当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。(The embodiment of the application discloses an inter-frame prediction method, an encoder, a decoder and a computer storage medium, which are applied to the decoder, wherein the inter-frame prediction method comprises the following steps: analyzing the code stream to obtain the prediction mode parameter of the current block; determining at least one set of unidirectional motion information from among a plurality of known motion information of a current block when the prediction mode parameter indicates that an inter prediction value of the current block is determined using a preset inter prediction mode; each group of unidirectional motion information comprises at least two unidirectional motion information; performing motion vector calculation on the at least one group of unidirectional motion information to obtain at least one new unidirectional motion information; constructing a new motion information candidate list based on the at least one new unidirectional motion information; and determining the inter-frame prediction value of the current block according to the new motion information candidate list.)

帧间预测方法、编码器、解码器以及计算机存储介质

技术领域

本申请涉及视频编解码技术领域,尤其涉及一种帧间预测方法、编码器、解码器以及计算机存储介质。

背景技术

在视频编解码领域,针对当前块进行编解码的过程,除了采用帧内预测方式外,还可以采用帧间预测方式。其中,帧间预测可以包括帧间几何划分预测模式(GeometricPartitioning Mode,GPM)和角度加权预测模式(Angular Weighted Prediction,AWP)等,通过将帧间的当前块划分为两个非矩形的分区(或两个块)分别进行预测后再加权融合,能够得到当前块的预测值。

目前,在GPM或AWP的预测过程中,虽然使用了空域相邻块的运动信息和时域同位置块的运动信息来构造运动信息候选列表,但是并不能够保证该运动信息候选列表可以填满。当运动信息候选列表未填满时,通常是利用最后一个有效的运动信息进行复制填满。

这样,在两个运动不同的区域边缘,比如一些形变,如果空域相邻块的运动信息和时域同位置块的运动信息没有包含这种形变的运动信息,将会导致GPM或AWP无法发挥作用。另外,由于编码器所选择的运动信息和实际的运动信息可能存在偏差,也即当前构建的运动信息候选列表中的运动信息与当前块的实际运动信息可能存在偏差,还会影响到编解码的性能。

发明内容

本申请提出一种帧间预测方法、编码器、解码器以及计算机存储介质,可以增加运动信息候选列表中运动信息的多样性,从而提升编解码性能。

本申请的技术方案是这样实现的:

第一方面,本申请实施例提供了一种帧间预测方法,应用于解码器,该方法包括:

解析码流,获取当前块的预测模式参数;

当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

第二方面,本申请实施例提供了一种帧间预测方法,应用于编码器,该方法包括:

确定当前块的预测模式参数;

当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

第三方面,本申请实施例提供了一种解码器,该解码器包括解析单元、第一确定单元、第一计算单元、第一构建单元和第一预测单元;其中,

所述解析单元,配置为解析码流,获取当前块的预测模式参数;

所述第一确定单元,配置为当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

所述第一计算单元,配置为对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

所述第一构建单元,配置为基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

所述第一预测单元,配置为根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

第四方面,本申请实施例提供了一种解码器,该解码器包括第一存储器和第一处理器;其中,

所述第一存储器,用于存储能够在所述第一处理器上运行的计算机程序;

所述第一处理器,用于在运行所述计算机程序时,执行如第一方面所述的方法。

第五方面,本申请实施例提供了一种编码器,该编码器包括第二确定单元、第二计算单元、第二构建单元和第二预测单元;其中,

所述第二确定单元,配置为确定当前块的预测模式参数;

所述第二确定单元,还配置为当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

所述第二计算单元,配置为对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

所述第二构建单元,配置为基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

所述第二预测单元,配置为根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

第六方面,本申请实施例提供了一种编码器,该编码器包括第二存储器和第二处理器;其中,

所述第二存储器,用于存储能够在所述第二处理器上运行的计算机程序;

所述第二处理器,用于在运行所述计算机程序时,执行如第二方面所述的方法。

第七方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被第一处理器执行时实现如第一方面所述的方法、或者被第二处理器执行时实现如第二方面所述的方法。

本申请实施例所提供的一种帧间预测方法、编码器、解码器以及计算机存储介质,解析码流,获取当前块的预测模式参数;当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。这样,在得到至少一个新的单向运动信息之后,可以将新的单向运动信息填入运动信息候选列表中,能够增加运动信息候选列表中运动信息的多样性;另外,对当前块来说,运动信息候选列表中初始运动信息与实际的运动信息可能存在偏差,这时候构造新的单向运动信息将会比初始运动信息具有更好的效果,从而提升了编解码性能。

附图说明

图1为本申请实施例提供的一种视频编码系统的组成框图示意图;

图2为本申请实施例提供的一种视频解码系统的组成框图示意图;

图3为本申请实施例提供的一种帧间预测方法的流程示意图;

图4为本申请实施例提供的一种典型图像组的结构示意图;

图5为本申请实施例提供的另一种帧间预测方法的流程示意图;

图6A为本申请实施例提供的一种GPM在64×64的当前块上多种划分模式的权重分配示意图;

图6B为本申请实施例提供的一种AWP在64×64的当前块上多种划分模式的权重分配示意图;

图7为本申请实施例提供的一种当前块与相邻块的空间位置关系示意图;

图8为本申请实施例提供的又一种帧间预测方法的流程示意图;

图9为本申请实施例提供的一种解码器的组成结构示意图;

图10为本申请实施例提供的一种解码器的硬件结构示意图;

图11为本申请实施例提供的一种编码器的组成结构示意图;

图12为本申请实施例提供的一种编码器的硬件结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。

在视频图像中,一般采用第一图像分量、第二图像分量和第三图像分量来表征当前块(Coding Block,CB);其中,这三个图像分量分别为一个亮度分量、一个蓝色色度分量和一个红色色度分量,具体地,亮度分量通常使用符号Y表示,蓝色色度分量通常使用符号Cb或者U表示,红色色度分量通常使用符号Cr或者V表示;这样,视频图像可以用YCbCr格式表示,也可以用YUV格式表示。

目前,通用的视频编解码标准基于都采用基于块的混合编码框架。视频图像中的每一帧被分割成相同大小(比如128×128,64×64等)的正方形的最大编码单元(LargestCoding Unit,LCU),每个最大编码单元还可以根据规则划分成矩形的编码单元(CodingUnit,CU);而且编码单元可能还会划分成更小的预测单元(Prediction Unit,PU)。具体地,混合编码框架可以包括有预测、变换(Transform)、量化(Quantization)、熵编码(EntropyCoding)、环路滤波(In Loop Filter)等模块;其中,预测模块可以包括帧内预测(intraprediction)和帧间预测(inter prediction),帧间预测可以包括运动估计(motionestimation)和运动补偿(motion compensation)。由于视频图像的一个帧内相邻像素之间存在很强的相关性,在视频编解码技术中使用帧内预测方式能够消除相邻像素之间的空间冗余;但是由于视频图像中的相邻帧之间也存在着很强的相似性,在视频编解码技术中使用帧间预测方式消除相邻帧之间的时间冗余,从而能够提高编码效率。下述本申请将以帧间预测进行详细描述。

应理解,本申请实施例提供一种视频编码系统,如图1所示,该视频编码系统11可以包括:变换单元111、量化单元112、模式选择和编码控制逻辑单元113、帧内预测单元114、帧间预测单元115(包括:运动补偿和运动估计)、反量化单元116、反变换单元117、环路滤波单元118、编码单元119和解码图像缓存单元110;针对输入的原始视频信号,通过编码树块(Coding Tree Unit,CTU)的划分可以得到一个视频重建块,通过模式选择和编码控制逻辑单元113确定编码模式,然后,对经过帧内或帧间预测后得到的残差像素信息,通过变换单元111、量化单元112对该视频重建块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内预测单元114用于对该视频重建块进行帧内预测;其中,帧内预测单元114用于确定该视频重建块的最优帧内预测模式(即目标预测模式);帧间预测单元115用于执行所接收的视频重建块相对于一或多个参考帧中的一或多个块的帧间预测编码,以提供时间预测信息;其中吗,运动估计为产生运动向量的过程,所述运动向量可以估计该视频重建块的运动,然后,运动补偿基于由运动估计所确定的运动向量执行运动补偿;在确定帧间预测模式之后,帧间预测单元115还用于将所选择的帧间预测数据提供到编码单元119,而且,将所计算确定的运动向量数据也发送到编码单元119;此外,反量化单元116和反变换单元117用于该视频重建块的重构建,在像素域中重构建残差块,该重构建残差块通过环路滤波单元118去除方块效应伪影,然后,将该重构残差块添加到解码图像缓存单元110的帧中的一个预测性块,用以产生经重构建的视频重建块;编码单元119是用于编码各种编码参数及量化后的变换系数。而解码图像缓存单元110用于存放重构建的视频重建块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频重建块,这些重构建的视频重建块都会被存放在解码图像缓存单元110中。

本申请实施例还提供一种视频解码系统,如图2所示,该视频解码系统12可以包括:解码单元121、反变换单元127,与反量化单元122、帧内预测单元123、运动补偿单元124、环路滤波单元125和解码图像缓存单元126单元;输入的视频信号经过视频编码系统11进行编码处理之后,输出该视频信号的码流;该码流输入视频解码系统12中,首先经过解码单元121,用于得到解码后的变换系数;针对该变换系数通过反变换单元127与反量化单元122进行处理,以便在像素域中产生残差块;帧内预测单元123可用于基于所确定的帧内预测方向和来自当前帧或图片的先前经解码块的数据而产生当前视频解码块的预测数据;运动补偿单元124是通过剖析运动向量和其他关联语法元素来确定用于视频解码块的预测信息,并使用该预测信息以产生正被解码的视频解码块的预测性块;通过对来自反变换单元127与反量化单元122的残差块与由帧内预测单元123或运动补偿单元124产生的对应预测性块进行求和,而形成解码的视频块;该解码的视频信号通过环路滤波单元125以便去除方块效应伪影,可以改善视频质量;然后将经解码的视频块存储于解码图像缓存单元126中,解码图像缓存单元126存储用于后续帧内预测或运动补偿的参考图像,同时也用于视频信号的输出,得到所恢复的原始视频信号。

本申请实施例提供的一种帧间预测方法主要作用于视频编码系统11的帧间预测单元215和视频解码系统12的帧间预测单元,即运动补偿单元124;也就是说,如果在视频编码系统11能够通过本申请实施例提供的帧间预测方法得到一个较好的预测效果,那么,对应地,在视频解码系统12,也能够改善视频解码恢复质量。

基于此,下面结合附图和实施例对本申请的技术方案进一步详细阐述。在进行详细阐述之前,需要说明的是,说明书通篇中提到的“第一”、“第二”、“第三”等,仅仅是为了区分不同的特征,不具有限定优先级、先后顺序、大小关系等功能。

本申请实施例提供一种帧间预测方法,该方法应用于视频解码设备,即解码器。该方法所实现的功能可以通过解码器中的第一处理器调用计算机程序来实现,当然计算机程序可以保存在第一存储器中,可见,该解码器至少包括第一处理器和第一存储器。

参见图3,其示出了本申请实施例一种帧间预测方法的流程示意图。如图3所示,该方法可以包括:

S301:解析码流,获取当前块的预测模式参数。

需要说明的是,待解码图像可以划分为多个图像块,而当前待解码的图像块可以称为当前块(可以用CU表示),与当前块相邻的图像块可以称为相邻块;即在待解码图像中,当前块与相邻块之间具有相邻关系。这里,每个当前块可以包括第一图像分量、第二图像分量和第三图像分量,也即当前块表示待解码图像中当前待进行第一图像分量、第二图像分量或者第三图像分量预测的图像块。

其中,假定当前块进行第一图像分量预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么当前块也可以称为亮度块;或者,假定当前块进行第二图像分量预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么当前块也可以称为色度块。

还需要说明的是,预测模式参数指示了当前块采用的预测模式以及与该预测模式相关的参数。其中,预测模式通常包括有帧间预测模式、传统帧内预测模式和非传统帧内预测模式等,而帧间预测模式又包括有普通帧间预测模式、GPM预测模式和AWP预测模式等。也就是说,编码器会选取最优的预测模式对当前块进行预编码,在这过程中就可以确定出当前块的预测模式,从而将相应的预测模式参数写入码流,由编码器传输到解码器。

这样,在解码器侧,通过解析码流就可以直接获取到当前块的预测模式参数,根据所获取的预测模式参数用以确定当前块是否使用预设的帧间预测模式,比如GPM预测模式或AWP预测模式。

S302:当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息。

需要说明的是,在解码器解析码流获取到预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值的情况下,就可以采用本申请实施例所提供的帧间预测方法。

还需要说明的是,运动信息可以包括运动矢量(Motion Vector,MV)信息和参考帧信息。具体地,对于使用帧间预测的当前块而言,该当前块所在的当前帧具有一个或多个参考帧,而当前块可以是编码单元或预测单元,可以使用一个包含一组运动矢量和参考帧信息的运动信息指示到某一参考帧内一个与当前块大小相同的像素区域,这里称之为参考块,也可以使用一个包含两组运动矢量和参考帧信息的运动信息指示到某两个可以相同也可以不同的参考帧内的两个参考块;然后运动补偿可以根据运动信息所指示的参考块得到当前块的帧间预测值。

应理解,P帧(Predictive Frame)是只能使用图像播放顺序(Picture OrderCount,POC)在当前帧之前的参考帧进行预测的帧。这时候当前参考帧只有一个参考帧列表,用RefPicList0表示;且RefPicList0中都是POC在当前帧之前的参考帧。B帧(Bi-directional Interpolated Prediction Frame)早期是可以使用POC在当前帧之前的参考帧及POC在当前帧之后的参考帧进行预测的帧。B帧有两个参考帧列表,分别用RefPicList0和RefPicList1表示;其中,RefPicList0中都是POC在当前帧之前的参考帧,RefPicList1中都是POC在当前帧之后的参考帧。对于当前块而言,可以只参考RefPicList0中某一帧的参考块,这种情况可称为前向预测;或者也可以只参考RefPicList1中某一帧的参考块,这种情况可称为后向预测;或者还可以同时参考RefPicList0中某一帧的参考块和RefPicList1中某一帧的参考块,这种情况可称为双向预测。同时参考两个参考块的一种简单方式是将两个参考块内每一个对应位置的像素进行平均以得到当前块内每一像素的帧间预测值(或者可以称为预测块)。后期B帧不再限制RefPicList0中都是POC在当前帧之前的参考帧,RefPicList1中都是POC在当前帧之后的参考帧。换句话说,RefPicList0中也可以有POC在当前帧之后的参考帧,RefPicList1中也可以有POC在当前帧之前的参考帧,也即是指当前块可以同时参考POC在当前帧之前的参考帧或者同时参考POC在当前帧之后的参考帧。但是当前块为双向预测时所使用的参考帧必须一个来自于RefPicList0,一个来自于RefPicList1;这种B帧也称为广义B帧。

由于随机访问(Random Access,RA)配置的编解码顺序与POC顺序不同,这样B帧可以同时参考当前帧之前的信息和当前帧之后的信息,能够明显提高编码性能。示例性地,RA的一种经典的图像组(Group Of Pictures,GOP)结构如图4所示,在图4中,箭头表示参考关系,由于I帧不需要参考帧,那么在POC为0的I帧解码后,将会解码POC为4的P帧,而在解码POC为4的P帧时可以参考POC为0的I帧。在POC为4的P帧解码后,然后再解码POC为2的B帧,而在解码POC为2的B帧时可以参考POC为0的I帧和POC为4的P帧,等等。这样,根据图4可以得到,POC顺序为{0 1 2 3 4 5 6 7 8}的情况下,其对应的解码顺序为{0 3 2 4 1 7 6 85}。

另外,低延迟(Low Delay,LD)配置的编解码顺序与POC顺序是相同的,这时候当前帧只能参考当前帧之前的信息。其中,Low Delay配置又分Low Delay P和Low Delay B。LowDelay P即传统的Low Delay配置。其典型的结构是IPPP……,即先编解码一个I帧,之后解码的帧都是P帧。Low Delay B的典型结构是IBBB……,与Low Delay P的区别在于每个帧间帧都是B帧,即使用两个参考帧列表,当前块可以同时参考RefPicList0中的某一帧的参考块和RefPicList1中的某一帧的参考块。这里,当前帧的一个参考帧列表最多可以有几个参考帧,如2个、3个或4个等。当编码或解码某一个当前帧时,RefPicList0和RefPicList1内各有哪几个参考帧是由预设配置或算法决定的,但是同一个参考帧可以同时出现在RefPicList0和RefPicList1中,即编码器或解码器允许当前块同时参考同一个参考帧中的两个参考块。

在本申请实施例中,编码器或解码器通常可以使用参考帧列表里的索引值(用index表示)来对应参考帧。如果一个参考帧列表长度为4,那么index有0、1、2、3等四个值。例如,如果当前帧的RefPicList0有POC为5,4,3,0的4个参考帧,那么RefPicList0的index0为POC 5的参考帧,RefPicList0的index1为POC 4的参考帧,RefPicList0的index 2为POC3的参考帧,RefPicList0的index 3为POC 0的参考帧。

目前的VVC视频编解码标准中,预设的帧间预测模式可以为GPM预测模式。目前的AVS3视频编解码标准中,预设的帧间预测模式可以为AWP预测模式。这两种预测模式虽然名称不同、具体的实现形式不同、但原理上是共通的,即这两种预测模式都可以适用本申请实施例的帧间预测方法。

具体来讲,对于GPM预测模式来说,如果使用GPM,那么码流中将会传输GPM下的预测模式参数,比如GPM具体的划分模式;通常情况下,GPM包括有64种划分模式。对于AWP预测模式来说,如果使用AWP,那么码流中将会传输AWP下的预测模式参数,比如AWP具体的划分模式;通常情况下,AWP包括有56种划分模式。

在预设的预测模式下,比如GPM和AWP均需要使用两个单向运动信息查找两个参考块。目前的实现方式是在编码器侧利用当前块之前已编码/已解码部分的相关信息构建一个单向运动信息候选列表,从单向运动信息候选列表中选择单向运动信息,将这两个单向运动信息在单向运动信息候选列表中的索引值(index)写入码流。在解码器侧采用同样的方式,即利用当前块之前已解码部分的相关信息构建一个单向运动信息候选列表,这个单向运动信息候选列表与编码器侧构建的候选列表一定是相同的。如此,从码流中解析出两个单向运动信息的索引值,然后从单向运动信息候选列表中查找出这两个单向运动信息即为当前块需要使用的两个单向运动信息。

也就是说,本申请实施例所描述的单向运动信息可以包括:运动矢量信息,即(x,y)的值,以及对应的参考帧信息,即参考帧列表及在参考帧列表中的参考索引值。一种表示方式是记录两个参考帧列表的参考索引值,其中一个参考帧列表对应的参考索引值有效,如0,1,2等;另一个参考帧列表对应的参考索引值为无效,即-1。参考索引值有效的参考帧列表即为当前块的运动信息所使用的参考帧列表,根据参考索引值可以从该参考帧列表中查找到对应的参考帧。每个参考帧列表都有一个对应的运动矢量,有效的参考帧列表对应的运动矢量是有效的,无效的参考帧列表对应的运动矢量是无效的。解码器可以通过单向运动信息中的参考帧信息找到所需的参考帧,根据当前块的位置以及运动矢量即(x,y)的值可以在参考帧中找到参考块,进而确定出当前块的帧间预测值。

实际应用中,单向运动信息候选列表的构建方式虽然使用了空域相邻块的运动信息和时域同位置块的运动信息,但是并不能保证单向运动信息候选列表一定能够填满。如果空域相邻块的运动单一,以及时域同位置块的运动信息与某些空域相邻块的运动信息相同,就可能导致单向运动信息候选列表内的单向运动信息数量小于预设数量,也就意味着单向运动信息候选列表处于未填满状态。更特殊地,如果现有方式所查找到的可用单向运动信息都相同,那么单向运动信息候选列表就会出现所有单向运动信息都相同的情况,主要是如果单向运动信息候选列表未填满,目前通常是利用最后一个有效的单向运动信息进行复制填满。但是GPM或AWP需要使用两个不同的参考块,如果查找到的两个单向运动信息均是相同的,即两个参考块是相同的,那么这样将会使得所得到的帧间预测值与原有的单向预测使用的参考块一样,然而GPM或AWP的开销更大,因为需要传输两个单向运动信息的index,以及GPM或AWP的预测模式参数,但其中有效的只有一个单向运动信息的index。这种情况下,GPM或AWP应该是不会被使用的。而且单向运动信息候选列表中的单向运动信息候选越少,可用的单向运动信息候选的组合(比如两个单向运动信息候选)就越少。但是GPM或AWP不仅在两个物体的边界会使用到,在两个运动不同区域的边缘也会使用到,比如一些形变,GPM或AWP有时候会达到不错的效果。但是如果空域相邻块的运动信息和时域同位置块的运动信息没有包含这种形变的运动信息,那么GPM或AWP就无法发挥作用。或者,针对某一当前块而言,编码器所选择的运动信息未必是最准确的运动信息,而是码率(rate)和失真(distortion)权衡最好的运动信息;因而编码的运动信息和实际的运动信息之间可能是存在偏差的,这种情况在低码率的配置下尤其明显;也就是仅通过当前的初始运动信息候选列表所构建的单向运动信息与当前块实际的运动信息可能是存在偏差的,将会影响到编解码的性能。

这时候,为了提高编解码的性能,本申请实施例就需要构造一些新的单向运动信息添加到单向运动信息候选列表中。这里的构造,可以是指不是通过已编码/已解码部分直接获取的已知运动信息,比如空域相邻块的运动信息及当前帧内当前块的相邻块的运动信息,或者更广泛一点,空域上的运动信息即当前帧已解码部分的运动信息、时域上的运动信息即其他帧(参考帧)中的运动信息,基于历史运动矢量列表中的历史运动信息等。需要注意的是,在构造出至少一个新的单向运动信息之前,首先需要从当前块的多个已知运动信息中确定出至少一组单向运动信息;而且每一组单向运动信息对应构造一个新的单向运动信息。

在一些实施例中,当前块的多个已知运动信息至少可以包括:初始运动信息候选列表内的运动信息,和/或,所述当前块的空域运动信息,和/或,所述当前块的时域运动信息,和/或,所述当前块的历史运动信息。

这里,针对初始运动信息候选列表,在一些实施例中,该方法还包括:基于当前块的相邻块的运动信息,确定初始运动信息候选列表。

需要说明的是,初始运动信息候选列表中存在有至少一个单向运动信息。在解码器侧,当初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表内已有的单向运动信息数量小于预设数量时,表明了单向运动信息候选列表处于未填满状态,可以从初始运动信息候选列表内选择运动信息,以得到至少一组单向运动信息;或者,也可以从已解码部分获取运动信息,比如从当前块的空域运动信息和/或当前块的时域运动信息和/或当前块的历史运动信息中获取运动信息,以得到至少一组单向运动信息。这样,在得到至少一组单向运动信息之后,后续可以构造出至少一个新的单向运动信息。

S303:对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息。

需要说明的是,在得到至少一组单向运动信息之后,可以对其采用平均值计算方法、或者采用加权计算方法、或者采用其他计算方法等,以计算得到至少一个新的单向运动信息;而且每一组单向运动信息对应得到一个新的单向运动信息。

可选地,在一些实施例中,对于S303来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,对该组单向运动信息进行平均值计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

可选地,在一些实施例中,对于S303来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,确定该组单向运动信息各自对应的权重值;

根据该组单向运动信息以及各自对应的权重值进行加权平均计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

也就是说,在得到至少一组单向运动信息之后,可以通过平均值计算方法或者加权平均计算方法,能够得到至少一个新的单向运动信息;而且每一个新的单向运动信息与参与计算的一组单向运动信息的参考帧信息相同。

可选地,在一些实施例中,对于S303来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,确定该组单向运动信息各自对应的比例因子;

根据该组单向运动信息、各自对应的比例因子以及预设偏移值进行计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

也就是说,假定这里n个参考帧信息相同的单向运动信息的MV分别是(x0,y0),(x1,y1),……,(xn-1,yn-1),新的单向运动信息的MV是(x,y),那么新的单向运动信息的MV中x和y的计算如下,

x=(P0×x0+P1×x1+...+Pn-1×xn-1+offset)/M (1)

y=(P0×y0+P1×y1+...+Pn-1×yn-1+offset)/M (2)

其中,P0,P1,…,Pn-1表示每一单向运动信息对应的比例因子;n的取值可能是2、3、4等,M的取值可能是1、2、4、8等,预设偏移值(用offset表示)的取值可能是0或M/2。

还需要说明的是,针对式(1)或式(2)中的除法还可以修改为右移的形式。具体地,如果把除法运算修改为右移运算,一种可能的实施方式是把负数的绝对值进行右移后,然后再将其变成负数;或者,另一种可能的实施方式是不考虑正、负值符号而统一进行右移运算。

还需要说明的是,一种可能的实施方式是P0,P1,…,Pn-1都等于M/n;或者,另一种可能的实施方式是P0+P1+…+Pn-1=M,其中,P0,P1,...,Pn-1不一定都相等;或者,又一种可能的实施方式是P0+P1+…+Pn-1可以大于M或小于M;或者,再一种可能的实施方式是P0,P1,…,Pn-1都大于或等于0且小于或等于M;或者,再一种可能的实施方式是P0,P1,…,Pn-1都小于0或大于M。

可以理解,构造每一个新的单向运动信息,主要涉及到参与计算的一组单向运动信息的确定。通常而言,可以根据当前块的已知运动信息来构造新的单向运动信息并加入运动信息候选列表。当运动信息候选列表中存在有运动信息时,可以根据运动信息候选列表中的运动信息进行构造;或者也可以根据通过已解码部分获取的运动信息进行构造,比如根据空域信息、时域信息、历史运动信息(即基于历史信息所得到的运动信息)等进行构造。具体地,可以选择两个或多个已知运动信息进行新的单向运动信息的构造。当运动信息候选列表中存在有2个或2个以上的运动信息时,可以根据运动信息候选列表中的运动信息进行构造;或者也可以根据通过已解码部分获取的2个或2个以上的运动信息进行构造,比如根据空域信息、时域信息、历史运动信息等进行构造。

这时候,一种可能的实施方式是所选择的2个或2个以上的运动信息不相同,如果根据上述方式不能找到2个或2个以上的不同的运动信息,那么可以加入默认的运动信息。其中,默认的运动信息可能是与所选择运动信息的参考帧信息相同的运动矢量为(0,0)的运动信息;默认的运动信息也可能是与所选择运动信息的参考帧信息相同的运动矢量为(x,y)的运动信息,而x,y为某个预设的固定值或者与已知运动信息的运动矢量相关的某个预设的固定值,本申请实施例不作具体限定。

还需要说明的是,由于当前块的已知运动信息可以是单向运动信息,还可以是双向运动信息,还需要对其进行判断。具体地,在一些实施例中,该方法还可以包括:

若从初始运动信息候选列表内选择运动信息,则确定所选择的运动信息为单向运动信息;

若从当前块的空域运动信息和/或所述当前块的时域运动信息和/或所述当前块的历史运动信息内选择运动信息,则判断所选择的运动信息是否为双向运动信息;

当所选择的运动信息为双向运动信息时,将所选择的运动信息拆分为两个单向运动信息,以执行从所述当前块的多个已知运动信息中确定至少一组单向运动信息的步骤。

也就是说,在确定至少一组单向运动信息时,如果是从初始运动信息候选列表中选取运动信息,那所选取的运动信息为单向运动信息。如果是根据空域信息、时域信息、历史运动信息等,那么需要确定所选取的运动信息是否为单向;如果这个运动信息是双向运动信息,即两个参考帧列表的参考索引值都是有效值,这时候需要把它拆成两个单向运动信息分别处理。

下面将结合几种情况,对新的单向运动信息的构造进行详细说明。

在一种可能的实施方式中,对于S302来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个初始单向运动信息;

确定候选参考帧,将所选择的至少两个初始单向运动信息缩放到所述候选参考帧,得到至少两个缩放后的单向运动信息;

将所述至少两个缩放后的单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为缩放后的单向运动信息,而且对应的参考帧信息为候选参考帧;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息也为候选参考帧。其中,候选参考帧是预先任意选定的参考帧。

具体来讲,该实施方式可以包括如下步骤:

第一步,选取N个单向运动信息,N为大于或等于2的整数,即N可能是2,3,4等。如果是从初始运动信息候选列表中选取运动信息,那所选取的运动信息为单向运动信息。如果是根据空域信息、时域信息、历史运动信息等选取运动信息,那么需要确定所选取的运动信息是否为单向;如果这个运动信息是双向运动信息,即两个参考帧列表的参考索引值都是有效值,这时候需要把它拆成两个单向运动信息分别处理。

第二步,选定一个候选参考帧,将N个单向运动信息的MV缩放到选定的候选参考帧上。一种可能的方式是依次将这N个单向运动信息对应的参考帧作为选定的候选参考帧。这样的话,与选定的候选参考帧相同的参考帧对应的单向运动信息的MV无需再做缩放,而只需将另外N-1个单向运动信息的MV缩放到该参考帧上。

第三步,对N个缩放后的单向运动信息的MV进行计算得到一个新的单向运动信息,新的单向运动信息对应的参考帧为第二步所选定的候选参考帧。这里,计算可以是平均计算、或者是加权平均计算、或者其他计算方法等,本申请实施例不作限定。

在另一种可能的实施方式中,对于S302来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息相同;

将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,仍以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为所选择的单向运动信息,而且所选择的单向运动信息对应的参考帧信息相同;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息与所选择的单向运动信息对应的参考帧信息是相同的。

具体来讲,该实施方式可以包括如下步骤:

第一步,选取N个单向运动信息,这N个单向运动信息对应的参考帧信息相同。如果是从初始运动信息候选列表中选取运动信息,那所选取的运动信息为单向运动信息,只需要判断这N个单向运动信息对应的参考帧信息是否相同。如果是根据空域信息、时域信息、历史运动信息等选取运动信息,而且所选取的运动信息是单向的,那么仍然只需要判断这N个运动信息对应的参考帧信息是否相同;但如果所选取的运动信息是双向的,即两个参考帧列表的参考索引值都是有效值,这时候还需要把它拆成两个单向运动信息分别处理。

第二步,对这N个单向运动信息进行计算得到一个新的单向运动信息,新的单向运动信息对应的参考帧为与这N个单向运动信息对应的参考帧相同的参考帧。这里,计算仍然可以是平均计算、或者是加权平均计算、或者其他计算方法等,本申请实施例不作限定。

在又一种可能的实施方式中,对于S302来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,确定候选参考帧;

从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息均为所述候选参考帧;

将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,仍以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为所选择的单向运动信息,而且所选择的单向运动信息对应的参考帧信息为候选参考帧;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息也为候选参考帧。

具体来讲,该实施方式可以包括如下步骤:

第一步,选定一个候选参考帧。

第二步,选取N个参考帧为候选参考帧的单向运动信息。可以是从初始运动信息候选列表中选取运动信息,也可以是根据空域信息、时域信息、历史运动信息等选取运动信息。

第三步,对这N个单向运动信息进行计算得到一个新的单向运动信息,新的单向运动信息对应的参考帧为与这N个单向运动信息的参考帧相同的候选参考帧。这里,计算可以是平均计算、或者是加权平均计算、或者其他计算方法等,本申请实施例不作限定。

这样,可以通过以上的几种可能的实施方式构造出一个或多个单向运动信息。然后将构造出的单向运动信息填入初始运动信息候选列表,以得到新的运动信息候选列表。

S304:基于所述至少一个新的单向运动信息,构建新的运动信息候选列表。

需要说明的是,在得到至少一个新的单向运动信息之后,可以将其填入到初始运动信息候选列表中,以得到新的运动信息候选列表。具体地,对于S304来说,该步骤可以包括:将至少一个新的单向运动信息填入初始运动信息候选列表中,得到所述新的运动信息候选列表。

还需要说明的是,只有所得到的新的单向运动信息与初始运动信息候选列表内所包括的原有单向运动信息不重复的情况下,才能够将其填充到该候选列表。也就是说,在一些实施例中,所述将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中,可以包括:

判断至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息是否重复;

在所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息不重复的情况下,将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中。

这样,初始运动信息候选列表的构建方式中,如果不重复的单向运动信息无法填满该候选列表,通常是采用该候选列表中最后一个单向运动信息来重复填充以填满该候选列表。而本申请实施例中,可以在不重复的单向运动信息且无法填满候选列表时,这时候通过构造新的单向运动信息的方式以构建出新的单向运动信息来填充候选列表;即所构造出新的单向运动信息与候选列表中原有的单向运动信息不重复的情况下才能够填充进该候选列表。

进一步地,当初始运动信息候选列表使用不重复的运动信息无法填满该初始运动信息候选列表时,可以使用构造的新的单向运动信息填充该候选列表,以得到新的运动信息候选列表。换句话说,本申请实施例的帧间预测方法是在初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表内已有的单向运动信息数量小于预设数量(即初始运动信息候选列表处于未填满状态)下进行的。因此,在一些实施例中,该方法还可以包括:

在所述初始运动信息候选列表不包括重复的单向运动信息且所述初始运动信息候选列表内的单向运动信息数量小于预设数量时,执行所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

这里,预设数量表示初始运动信息候选列表内预先设置可填充的单向运动信息数量,也可以称为初始运动信息候选列表的长度。也就是说,根据两个或多个已知运动信息进行新的单向运动信息的构造,并将构造的新的单向运动信息写入运动信息候选列表。具体地,使用确定的参考帧信息,求取平均值或加权平均值的方式构造新的单向运动信息。这样,当初始运动信息候选列表使用不重复的运动信息无法填满该初始运动信息候选列表时,这时候可以使用构造的新的单向运动信息来填充该候选列表,即执行从当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤;直至初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表处于填满状态时,停止构造新的单向运动信息,即不再执行从当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

S305:根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

需要说明的是,当预测模式参数指示使用GPM或AWP确定当前块的帧间预测值时,这时候可以确定出当前块的两个分区;其中,两个分区可以包括第一分区和第二分区。

这样,在得到新的运动信息候选列表后,可以确定出当前块的第一分区对应的运动信息和所述第二分区的运动信息;然后根据第一分区对应的运动信息和所述第二分区的运动信息,能够确定出当前块的帧间预测值。

具体地,如图5所示,其示出了本申请实施例提供的另一种帧间预测方法的流程示意图。该方法可以包括:

S501:解析码流,确定所述第一分区对应的第一运动信息索引值和所述第二分区对应的第二运动信息索引值;

S502:基于新的运动信息候选列表,将所述第一运动信息索引值指示的所述新的运动信息候选列表中的运动信息确定为所述第一分区的运动信息,将所述第二运动信息索引值指示的所述新的运动信息候选列表中的运动信息确定为所述第二分区的运动信息;

S503:利用所述第一分区的运动信息计算所述第一分区的第一预测值,利用所述第二分区的运动信息计算所述第二分区的第二预测值;

S504:对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。

需要说明的是,传统的单向预测只是查找一个与当前块大小相同的参考块,而传统的双向预测使用两个与当前块大小相同的参考块,且预测块内每个点的像素值为两个参考块对应位置的平均值,即每一个参考块的所有点都占50%的比例。双向加权预测使得两个参考块的比例可以不同,如第一个参考块中所有点都占75%的比例,第二个参考块中所有点都占25%的比例。但同一个参考块中的所有点的比例都相同。其他一些优化方式比如采用解码端运动矢量修正(Decoder side Motion Vector Refinement,DMVR)技术、双向光流(Bi-directional Optical Flow,BIO)等会使参考像素或预测像素产生一些变化,而且GPM或AWP也使用两个与当前块大小相同的参考块,但某些像素位置100%使用第一个参考块对应位置的像素值,某些像素位置100%使用第二个参考块对应位置的像素值,而在交界区域,按一定比例使用这两个参考块对应位置的像素值。具体这些权重如何分配,由GPM或AWP的预测模式决定,或者也可以认为GPM或AWP使用两个与当前块大小不相同的参考块,即各取所需的一部分作为参考块。

示例性地,如图6A所示,其示出了本申请实施例提供的一种GPM在64×64的当前块上的多种划分模式的权重分配示意图。在图6A中,GPM存在有64种划分模式。如图6B所示,其示出了本申请实施例提供的一种AWP在64×64的当前块上的多种划分模式的权重分配示意图。在图6B中,AWP存在有56种划分模式。无论是图6A还是图6B,每一种划分模式下,黑色区域表示第一个参考块对应位置的权重值为0%,白色区域表示第一个参考块对应位置的权重值为100%,灰色区域则按颜色深浅的不同表示第一个参考块对应位置的权重值为大于0%且小于100%的某一个权重值,第二个参考块对应位置的权重值则为100%减去第一个参考块对应位置的权重值。

应理解,早期的编解码技术中只存在矩形的划分方式,无论是CU、PU还是变换单元(Transform Unit,TU)的划分。而GPM或AWP均实现了非矩形的划分,即用一条直线可以将一个矩形块分成两个分区,根据直线的位置和角度的不同,划分的两个分区可能是三角形或梯形或矩形等,从而能使得划分更贴近物体的边缘或者两个运动不同区域的边缘。需要注意的是,这里所说的划分并不是真正意义上的划分,而更像是一种预测效果上的划分。因为这个划分只是划分了两个参考块在产生预测块时的权重,或者可以简单地理解为预测块的一部分位置来自于第一个参考块,而另一部分位置来自于第二个参考块,并没有真正按划分线把当前块划分成两个CU或PU或TU。这样,在预测之后残差的变换、量化、反变换、反量化等也都是将当前块作为一个整体进行处理。

还需要说明的是,GPM或AWP属于一种帧间预测技术,GPM或AWP需要在码流中传输一个GPM或AWP是否使用的标志(flag),该flag可以指示当前块是否使用GPM或AWP。如果使用GPM或AWP,编码器在码流中需要传输具体使用的模式,即GPM的64种划分模式之一,或AWP的56种划分模式之一;以及两个单向运动信息的索引值。也就是说,对于当前块而言,解码器通过解析码流可以得到GPM或AWP是否使用的信息,如果确定使用GPM或AWP,解码器可以解析出GPM或AWP的预测模式参数以及两个运动信息索引值,比如当前块可以划分为两个分区,那么可以解析出第一分区对应的第一运动信息索引值和第二分区对应的第二运动信息索引值。

在构建新的运动信息候选列表之前,首先需要构建一个初始运动信息候选列表,下面以AVS中的AWP为例介绍初始运动信息候选列表的构建方法。

如图7所示,块E为当前块,而块A、块B、块C、块D、块F、块G均为块E的相邻块。其中,块E的相邻块A是样本(x0-1,y0)所在的块,块E的相邻块B是样本(x0,y0-1)所在的块,块E的相邻块C是样本(x0+1,y0-1)所在的块,块E的相邻块D是样本(x0-1,y0-1)所在的块,块E的相邻块F是样本(x0-1,y1)所在的块,块E的相邻块G是样本(x1,y0-1)所在的块。其中(x0,y0)是块E左上角样本在图像中的坐标,(x1,y0)是块E右上角样本在图像中的坐标,(x0,y1)是块E左下角样本在图像中的坐标。也就是说,块E和它的相邻块A、B、C、D、F和G的空间位置关系详见图7。

对于图7而言,相邻块X(X表示为A、B、C、D、F或G)“存在”是指该块应在待解码图像内并且该块应与块E属于同一空间区域;否则相邻块“不存在”。可以得到,如果块“不存在”或者尚未解码,那么此块“不可用”;否则此块“可用”。或者,如果待解码图像样本所在的块“不存在”或者此样本尚未解码,那么此样本“不可用”;否则此样本“可用”。

假定第一个单向运动信息表示为mvAwp0L0、mvAwp0L1、RefIdxAwp0L0和RefIdxAwp0L1。其中,mvAwp0L0表示在第一个参考帧列表RefPicList0中对应的运动矢量,RefIdxAwp0L0表示在第一个参考帧列表RefPicList0中对应的参考帧的参考索引值;mvAwp0L1表示在第二个参考帧列表RefPicList1中对应运动矢量,RefIdxAwp0L1表示在第二个参考帧列表RefPicList1中对应的参考帧的参考索引值。第二个单向运动信息以此类推。

由于这里的运动信息都是单向的,所以RefIdxAwp0L0和RefIdxAwp0L1必有一个为有效值,比如0,1,2等;另一个为无效值,比如-1。如果RefIdxAwp0L0为有效值,那么RefIdxAwp0L1为-1;这时候对应的mvAwp0L0即为所需要的运动矢量,即(x,y),mvAwp0L1不需要考虑。反之亦然。

具体来讲,推导mvAwp0L0、mvAwp0L1、RefIdxAwp0L0、RefIdxAwp0L1、mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1的步骤如下:

第一步,如图7所示,F、G、C、A、B和D是当前块E的相邻块,确定F、G、C、A、B和D的“可用”性:

(a)如果F存在且采用帧间预测模式,那么F“可用”;否则F“不可用”。

(b)如果G存在且采用帧间预测模式,则G“可用”;否则G“不可用”。

(c)如果C存在且采用帧间预测模式,则C“可用”;否则C“不可用”。

(d)如果A存在且采用帧间预测模式,则A“可用”;否则A“不可用”。

(e)如果B存在且采用帧间预测模式,则B“可用”;否则B“不可用”。

(f)如果D存在且采用帧间预测模式,则D“可用”;否则D“不可用”。

第二步,按F、G、C、A、B和D的顺序将单向可用的运动信息放入单向运动信息候选列表(用AwpUniArray表示),直至AwpUniArray长度为3(或4)或者遍历结束。

第三步,如果AwpUniArray的长度小于3(或4),按F、G、C、A、B和D的顺序将双向可用的运动信息拆分为指向参考帧列表List0的单向运动信息以及指向参考帧列表List1的单向运动信息,先进行单向运动信息查重操作,若不重复则放入AwpUniArray,直至长度为3(或4)或遍历结束。

第四步,将时域双向的运动信息拆分为指向参考帧列表List0的单向运动信息以及指向参考帧列表List1的单向运动信息,先进行单向运动信息查重操作,若不重复则放入AwpUniArray,直至长度为4(或5)或遍历结束。

第五步,如果AwpUniArray的长度小于4(或5),构造新的单向运动信息,具体构造方式如下,

假定当前AwpUniArray的长度用cnt表示,按照如下方式依次获取两个单向运动信息,第一个单向运动信息依次取AwpUniArray中第1到cnt个单向运动信息,用MI0表示;对每一个MI0,依次取第1到cnt个与MI0不在同一位置的运动信息以及与MI0参考帧信息相同运动矢量为(0,0)的运动信息,用MI1表示。

假定单向运动信息与第一个参考帧列表对应的值用mvL0表示,与第二个参考帧列表对应的值用mvL1表示,第一个参考帧列表对应的参考索引值用RefIdxL0表示,第二个参考帧列表对应的参考索引值用RefIdxL1表示,而新构造的单向运动信息用MInew表示。其中,MInew的RefIdxL0和RefIdxL1依次取MI0中的RefIdxL0和RefIdxL1以及MI1中的RefIdxL0和RefIdxL1。如果MInew的RefIdxLX有效,X为0或1,那么可以将MI0的mvLX和MV1的mvLX缩放到RefIdxLX对应的参考帧上,用MV0’和MV1’表示,这时候MInew的mvLX等于MV0’的mvLX与MV1’的mvLX的平均值。假定MInew的mvLX值用(xnew,ynew)表示,而MV0’的mvLX值用(x0’,y0’)表示,MV1’的mvLX值用(x1’,y1’),那么xnew和ynew的计算如下,

xnew=(x0′+x1′+1)>>1 (3)

ynew=(y0′+y1′+1)>>1 (4)

如果新构造的单向运动信息与AwpUniArray中的每一个单向运动信息都不重复,那么可以将其填入AwpUniArray中,直至长度为4(或5)或遍历结束。

第六步,如果AwpUniArray的长度小于4(或5),那么将AwpUniArray中最后一个单向运动信息进行重复填充操作,直至AwpUniArray长度为4(或5)。

第七步,将AwpUniArray中第AwpCandIdx0+1个运动信息赋值给mvAwp0L0、mvAwp0L1、RefIdxAwp0L0和RefIdxAwp0L1,将AwpUniArray中第AwpCandIdx1+1个运动信息赋值给mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1。

也就是说,在构造AwpUniArray的过程中,与相关技术方案相比,新增加了第五步,即构造新的单向运动信息,且新构造的单向运动信息与AwpUniArray中的每一个单向运动信息都不重复,那么可以将其填入AwpUniArray中,直至长度为4(或5)或遍历结束。

这样,对于当前块而言,解码器通过解析码流可以得到GPM或AWP是否使用的信息,如果确定使用GPM或AWP,解码器可以解析出GPM或AWP的预测模式参数以及两个运动信息索引值,并且解码器构造当前块GPM或AWP使用的运动信息候选列表,然后根据解析到的两个运动信息索引值可以在上述构建出新的运动信息候选列表中找到两个单向运动信息,然后利用这两个单向运动信息可以查找到两个参考块,根据GPM或AWP使用的具体预测模式能够确定出两个参考块在每一个像素位置的权值,最后将两个参考块加权计算以得到当前块的预测块。

进一步地,如果当前模式是跳过(skip)模式,那么预测块既是解码块,意味着当前块的解码结束。如果当前模式不是跳过模式,熵解码解析量化系数,接着反量化与反变换以得到残差块,最后将残差块与预测块相加可以得到解码块,意味着当前块的解码结束。

除此之外,目前AVS的普通帧间预测模式中运动矢量预测子(Motion VectorPrediction,MVP)的构建虽然也使用了两个MV求均值的方法,但是与本申请实施例的区别在于该部分普通运动矢量预测方法的目的是利用多个候选构造唯一的MVP,而本发明的目的是构造出更多的MVP以模拟形变的场景以及平衡已有MVP的偏差。

也就是说,在本申请实施例中,通过使用本申请实施例的帧间预测方法构造新的单向运动矢量并填入运动信息候选列表,使得运动矢量候选列表中的运动矢量更多样。这样,针对物体形变的情况,构造新的单向运动信息将会起到一定的作用。而且由于根据空域运动信息或时域运动信息或基于历史运动信息对当前块来说可能是有偏差的,从而构造新的单向运动信息可能会比原来的运动信息具有更好的效果。特别是在根据空域信息或时域信息或基于历史信息所得到的运动信息无法填满该候选列表的时候,本申请实施例的优势将更加明显。

还需要说明的是,本申请实施例的运动信息候选列表一般是指单向运动信息候选列表,但是本申请实施例单向运动信息的构造方式可以扩展到双向运动信息的构造,从而单向运动信息候选列表的构建也可以扩展到双向运动信息候选列表的构建。

本实施例提供了一种帧间预测方法,应用于解码器。解析码流,获取当前块的预测模式参数;当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。这样,在得到至少一个新的单向运动信息之后,可以将新的单向运动信息填入运动信息候选列表中,能够增加运动信息候选列表中运动信息的多样性;另外,对当前块来说,运动信息候选列表中初始运动信息与实际的运动信息可能存在偏差,这时候构造新的单向运动信息将会比初始运动信息具有更好的效果,从而提升了编解码性能。

本申请实施例提供一种帧间预测方法,该方法应用于视频编码设备,即编码器。该方法所实现的功能可以通过编码器中的第二处理器调用计算机程序来实现,当然计算机程序可以保存在第二存储器中,可见,该编码器至少包括第二处理器和第二存储器。

参见图8,其示出了本申请实施例又一种帧间预测方法的流程示意图。如图8所示,该方法可以包括:

S801:确定当前块的预测模式参数;

需要说明的是,待编码图像可以划分为多个图像块,当前待编码的图像块可以称为当前块,与当前块相邻的图像块可以称为相邻块;即在待编码图像中,当前块与相邻块之间具有相邻关系。这里,每个当前块可以包括第一图像分量、第二图像分量和第三图像分量;也即当前块为待编码图像中当前待进行第一图像分量、第二图像分量或者第三图像分量预测的图像块。

其中,假定当前块进行第一图像分量预测,而且第一图像分量为亮度分量,即待预测图像分量为亮度分量,那么当前块也可以称为亮度块;或者,假定当前块进行第二图像分量预测,而且第二图像分量为色度分量,即待预测图像分量为色度分量,那么当前块也可以称为色度块。

还需要说明的是,预测模式参数指示了当前块采用的预测模式以及与该预测模式相关的参数。这里,针对预测模式参数的确定,可以采用简单的决策策略,比如根据失真值的大小进行确定;也可以采用复杂的决策策略,比如根据率失真优化(Rate DistortionOptimization,RDO)的结果进行确定,本申请实施例不作任何限定。通常而言,可以采用RDO方式来确定当前块的预测模式参数。

具体地,在一些实施例中,对于S801来说,所述确定当前块的预测模式参数,可以包括:

利用多种预测模式对所述当前块进行预编码处理,获得每一种预测模式对应的率失真代价值;

从所获得的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的预测模式确定为当前块的预测模式参数。

也就是说,在编码器侧,针对当前块可以采用多种预测模式分别对当前块进行预编码处理。这里,多种预测模式通常包括有帧间预测模式、传统帧内预测模式和非传统帧内预测模式;其中,传统帧内预测模式可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非传统帧内预测模式可以包括有基于矩阵的帧内预测(Matrix-based Intra Prediction,MIP)模式、跨分量线性模型预测(Cross-componentLinear Model Prediction,CCLM)模式、帧内块复制(Intra BlockCopy,IBC)模式和PLT(Palette)模式等,而帧间预测模式可以包括有普通帧间预测模式、GPM预测模式和AWP预测模式等。

这样,在利用多种预测模式分别对当前块进行预编码之后,可以得到每一种预测模式对应的率失真代价值;然后从所得到的多个率失真代价值中选取最小率失真代价值,并将该最小率失真代价值对应的预测模式确定为当前块的预测模式参数。除此之外,还可以在利用多种预测模式分别对当前块进行预编码之后,得到每一种预测模式对应的失真值;然后从所得到的多个失真值中选取最小失真值,并将该最小失真值对应的预测模式确定为当前块的预测模式参数。如此,最终使用所确定的预测模式参数对当前块进行编码,而且在这种预测模式下,可以使得预测残差较小,能够提高编码效率。

S802:当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息。

需要说明的是,如果预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值的情况下,就可以采用本申请实施例所提供的帧间预测方法。这里,预设的帧间预测模式可以为GPM预测模式或AWP预测模式等。

还需要说明的是,运动信息可以包括运动矢量(Motion Vector,MV)信息和参考帧信息。另外,参考帧信息可以是由参考帧列表以及参考索引值共同确定所对应的参考帧。

在一些实施例中,当前块的多个已知运动信息至少可以包括:初始运动信息候选列表内的运动信息,和/或,所述当前块的空域运动信息,和/或,所述当前块的时域运动信息,和/或,所述当前块的历史运动信息。

这里,针对初始运动信息候选列表,在一些实施例中,该方法还可以包括:基于当前块的相邻块的运动信息,确定初始运动信息候选列表。

需要说明的是,初始运动信息候选列表中存在有至少一个单向运动信息;当初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表内的单向运动信息数量小于预设数量时,可以从初始运动信息候选列表内选择运动信息,以得到至少一组单向运动信息;或者,也可以从已编码部分获取运动信息,比如从当前块的空域运动信息和/或当前块的时域运动信息和/或当前块的历史运动信息中获取运动信息,以得到至少一组单向运动信息。这样,在得到至少一组单向运动信息之后,由于每一组单向运动信息对应构造一个新的单向运动信息,如此后续可以构造出至少一个新的单向运动信息。

S803:对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息。

需要说明的是,在得到至少一组单向运动信息之后,可以对其采用平均值计算方法、或者采用加权计算方法、或者采用其他计算方法等,以计算得到至少一个新的单向运动信息;而且每一组单向运动信息对应得到一个新的单向运动信息。

可选地,在一些实施例中,对于S803来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,对该组单向运动信息进行平均值计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

可选地,在一些实施例中,对于S803来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,确定该组单向运动信息各自对应的权重值;

根据该组单向运动信息以及各自对应的权重值进行加权平均计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

可选地,在一些实施例中,对于S803来说,所述对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息,可以包括:

针对每一组单向运动信息,确定该组单向运动信息各自对应的比例因子;

根据该组单向运动信息、各自对应的比例因子以及预设偏移值进行计算,获得一个新的单向运动信息;

基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

也就是说,在得到至少一组单向运动信息之后,可以通过平均值计算方法或者加权平均计算方法或者其他计算方法,能够得到至少一个新的单向运动信息;而且每一个新的单向运动信息与参与计算的一组单向运动信息的参考帧信息相同。这里,具体的实施方式可以参见解码器侧的描述。

可以理解,构造每一个新的单向运动信息,主要涉及到参与计算的一组单向运动信息的确定。通常而言,可以根据当前块的已知运动信息来构造新的单向运动信息并加入运动信息候选列表。当运动信息候选列表中存在有运动信息时,可以根据运动信息候选列表中的运动信息进行构造;或者也可以根据通过已解码部分获取的运动信息进行构造,比如根据空域信息、时域信息、历史运动信息(即基于历史信息所得到的运动信息)等进行构造。具体地,可以选择两个或多个已知运动信息进行新的单向运动信息的构造。当运动信息候选列表中存在有2个或2个以上的运动信息时,可以根据运动信息候选列表中的运动信息进行构造;或者也可以根据通过已解码部分获取的2个或2个以上的运动信息进行构造,比如根据空域信息、时域信息、历史运动信息等进行构造。

这时候,一种可能的限制方式是所选择的2个或2个以上的运动信息不相同,如果根据上述方式不能找到2个或2个以上的不同的运动信息,那么可以加入默认的运动信息。其中,默认的运动信息可能是与所选择运动信息的参考帧信息相同的运动矢量为(0,0)的运动信息;默认的运动信息也可能是与所选择运动信息的参考帧信息相同的运动矢量为(x,y)的运动信息,而x,y为某个预设的固定值或者与已知运动信息的运动矢量相关的某个预设的固定值,本申请实施例不作具体限定。

还需要说明的是,由于当前块的已知运动信息可以是单向运动信息,还可以是双向运动信息,还需要对其进行判断。具体地,在一些实施例中,该方法还可以包括:

若从初始运动信息候选列表内选择运动信息,则确定所选择的运动信息为单向运动信息;

若从当前块的空域运动信息和/或所述当前块的时域运动信息和/或所述当前块的历史运动信息内选择运动信息,则判断所选择的运动信息是否为双向运动信息;

当所选择的运动信息为双向运动信息时,将所选择的运动信息拆分为两个单向运动信息,以执行从所述当前块的多个已知运动信息中确定至少一组单向运动信息的步骤。

也就是说,在确定至少一组单向运动信息时,如果是从初始运动信息候选列表中选取运动信息,那所选取的运动信息为单向运动信息。如果是根据空域信息、时域信息、历史运动信息等,那么需要确定所选取的运动信息是否为单向;如果这个运动信息是双向运动信息,即两个参考帧列表的参考索引值都是有效值,这时候需要把它拆成两个单向运动信息分别处理。

下面将结合几种情况,对新的单向运动信息的构造进行详细说明。

在一种可能的实施方式中,对于S802来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个初始单向运动信息;

确定候选参考帧,将所选择的至少两个初始单向运动信息缩放到所述候选参考帧,得到至少两个缩放后的单向运动信息;

将所述至少两个缩放后的单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为缩放后的单向运动信息,而且对应的参考帧信息为候选参考帧;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息也为候选参考帧。其中,候选参考帧是预先任意选定的参考帧。这里,具体的实施方式可以参见解码器侧的描述。

在另一种可能的实施方式中,对于S802来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息相同;

将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,仍以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为所选择的单向运动信息,且所选择的单向运动信息对应的参考帧信息相同;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息与所选择的单向运动信息对应的参考帧信息是相同的。这里,具体的实施方式可以参见解码器侧的描述。

在又一种可能的实施方式中,对于S802来说,所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息,可以包括:

针对每一组单向运动信息,确定候选参考帧;

从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息均为所述候选参考帧;

将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

这样,仍以一组单向运动信息为例,该组单向运动信息内所包括的至少两个单向运动信息即为所选择的单向运动信息,而且所选择的单向运动信息对应的参考帧信息为候选参考帧;在这种情况下,根据这组单向运动信息计算得到一个新的单向运动信息,该新的单向运动信息对应的参考帧信息也为候选参考帧。这里,具体的实施方式可以参见解码器侧的描述。

如此,可以通过以上的几种可能的实施方式构造出一个或多个单向运动信息。然后将构造出的单向运动信息填入初始运动信息候选列表,以得到新的运动信息候选列表。

S804:基于所述至少一个新的单向运动信息,构建新的运动信息候选列表。

需要说明的是,在得到至少一个新的单向运动信息之后,可以将其填入到初始运动信息候选列表中,以得到新的运动信息候选列表。具体地,对于S804来说,该步骤可以包括:将至少一个新的单向运动信息填入初始运动信息候选列表中,得到所述新的运动信息候选列表。

还需要说明的是,只有所得到的新的单向运动信息与初始运动信息候选列表内所包括的原有单向运动信息不重复的情况下,才能够将其填充到该候选列表。在一些实施例中,所述将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中,可以包括:

判断至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息是否重复;

在所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息不重复的情况下,将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中。

这样,初始运动信息候选列表的构建方式中,如果不重复的单向运动信息无法填满该候选列表,通常是采用该候选列表中最后一个单向运动信息来重复填充以填满该候选列表。而本申请实施例中,可以在不重复的单向运动信息且无法填满候选列表时,这时候通过构造新的单向运动信息的方式以构建出新的单向运动信息来填充候选列表;即所构造出新的单向运动信息与候选列表中原有的单向运动信息不重复的情况下才能够填充进该候选列表。

换句话说,本申请实施例的帧间预测方法是在初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表内已有的单向运动信息数量小于预设数量(即初始运动信息候选列表处于未填满状态)下进行的。因此,在一些实施例中,该方法还可以包括:

在所述初始运动信息候选列表不包括重复的单向运动信息且所述初始运动信息候选列表内的单向运动信息数量小于预设数量时,执行所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

也就是说,根据两个或多个已知运动信息进行新的单向运动信息的构造,并将构造的新的单向运动信息写入运动信息候选列表。具体地,使用确定的参考帧信息,求取平均值或加权平均值的方式构造新的单向运动信息。这样,当初始运动信息候选列表使用不重复的运动信息无法填满该初始运动信息候选列表时,这时候可以使用构造的新的单向运动信息来填充该候选列表,即执行从当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤;直至初始运动信息候选列表不包括重复的单向运动信息且初始运动信息候选列表处于填满状态时,停止构造新的单向运动信息,即不再执行从当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

S805:根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

需要说明的是,当预测模式参数指示使用GPM或AWP确定当前块的帧间预测值时,这时候可以确定出当前块的两个分区;其中,两个分区可以包括第一分区和第二分区。

这样,在得到新的运动信息候选列表后,可以确定出当前块的第一分区对应的运动信息和所述第二分区的运动信息;然后根据第一分区对应的运动信息和所述第二分区的运动信息,能够确定出当前块的帧间预测值。

具体地,在一些实施例中,对于S805来说,所述根据所述新的运动信息候选列表,确定所述当前块的帧间预测值,可以包括:

基于所述新的运动信息候选列表,确定所述第一分区的运动信息和所述第二分区的运动信息,并将第一运动信息索引值设置为所述第一分区的运动信息在所述新的运动信息候选列表中的索引序号值,将第二运动信息索引值设置为所述第二分区的运动信息在所述新的运动信息候选列表中的索引序号值;

利用所述第一分区的运动信息计算所述第一分区的第一预测值,利用所述第二分区的运动信息计算所述第二分区的第二预测值;

对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。

进一步地,在一些实施例中,该方法还可以包括:

将所述第一运动信息索引值和所述第二运动信息索引值写入码流。

需要说明的是,GPM或AWP属于一种帧间预测技术,在编码器侧,GPM或AWP需要在码流中传输一个GPM或AWP是否使用的标志(flag)以及两个运动信息索引值(比如第一运动信息索引值和第二运动信息索引值),这样后续解码器侧,能够通过解析码流直接得到GPM或AWP是否使用的flag以及两个运动信息索引值。

也就是说,对于当前块而言,可以尝试使用GPM或AWP进行预编码及其他可用预测模式进行预编码,确定是否使用GPM或AWP。如果GPM或AWP的预编码代价最小,那么可以使用GPM或AWP。同时,在尝试使用GPM或AWP时,还可以构建运动信息候选列表,该构建方式和解码器侧实施例所述的构建方式相同。

这样,在编码器侧,从运动信息候选列表中选择两个单向运动信息,然后从GPM或AWP的预测模式中选择一种模式进行预编码来确定GPM或AWP的预编码代价。一种可能的方式是对所有可能的单向运动信息候选的组合,基于所有可能的GPM或AWP的预测模式确定其代价,然后取代价最小的两个单向运动信息和GPM或AWP的预测模式的组合作为最终所确定的两个单向运动信息和GPM或AWP的预测模式。

最后,在码流中写入GPM或AWP是否使用的信息。如果确定使用GPM或AWP,在码流中写入GPM或AWP的预测模式参数和两个单向运动信息索引值。如此,如果当前模式是跳过模式,那么预测块既是编码块,意味着当前块的编码结束。如果当前模式不是跳过模式,还需要在码流中写入量化系数;其中,量化系数由当前块的实际值减去帧间预测值所得到的残差而组成的残差块,并对残差块进行变换与量化得到,这时候当前块的编码结束。

还需要说明的是,本申请实施例的运动信息候选列表一般是指单向运动信息候选列表,但是本申请实施例单向运动信息的构造方式可以扩展到双向运动信息的构造,从而单向运动信息候选列表的构建也可以扩展到双向运动信息候选列表的构建。

本实施例提供了一种帧间预测方法,应用于编码器。确定当前块的预测模式参数;当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。这样,在得到至少一个新的单向运动信息之后,可以将新的单向运动信息填入运动信息候选列表中,能够增加运动信息候选列表中运动信息的多样性;另外,对当前块来说,运动信息候选列表中初始运动信息与实际的运动信息可能存在偏差,这时候构造新的单向运动信息将会比初始运动信息具有更好的效果,从而提升了编解码性能。

基于前述实施例相同的发明构思,参见图9,其示出了本申请实施例提供的一种解码器90的组成结构示意图。如图9所示,解码器90可以包括:解析单元901、第一确定单元902、第一计算单元903、第一构建单元904和第一预测单元905;其中,

解析单元901,配置为解析码流,获取当前块的预测模式参数;

第一确定单元902,配置为当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

第一计算单元903,配置为对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

第一构建单元904,配置为基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

第一预测单元905,配置为根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

在一些实施例中,所述运动信息包括运动矢量信息和参考帧信息。

在一些实施例中,参见图9,解码器90还可以包括第一选择单元906和第一缩放单元907;其中,

第一选择单元906,配置为针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个初始单向运动信息;

第一缩放单元907,配置为确定候选参考帧,将所选择的至少两个初始单向运动信息缩放到所述候选参考帧,得到至少两个缩放后的单向运动信息;

第一确定单元902,还配置为将所述至少两个缩放后的单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第一选择单元906,还配置为针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息相同;

第一确定单元902,还配置为将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第一选择单元906,还配置为针对每一组单向运动信息,确定候选参考帧;从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息均为所述候选参考帧;

第一确定单元902,还配置为将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第一计算单元903,还配置为针对每一组单向运动信息,对所述一组单向运动信息进行平均值计算,获得一个新的单向运动信息;基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

在一些实施例中,第一计算单元903,还配置为针对每一组单向运动信息,确定所述一组单向运动信息各自对应的权重值;根据所述一组单向运动信息以及各自对应的权重值进行加权平均计算,获得一个新的单向运动信息;基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

在一些实施例中,第一确定单元902,还配置为基于所述当前块的相邻块的运动信息,确定初始运动信息候选列表;

第一构建单元904,配置为将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中,得到所述新的运动信息候选列表。

在一些实施例中,参见图9,解码器90还可以包括第一判断单元908,配置为判断所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息是否重复;

第一构建单元904,还配置为在所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息不重复的情况下,将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中。

在一些实施例中,第一构建单元904,还配置为在所述初始运动信息候选列表不包括重复的单向运动信息且所述初始运动信息候选列表内的单向运动信息数量小于预设数量时,执行所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

在一些实施例中,所述当前块的多个已知运动信息至少包括:所述初始运动信息候选列表内的运动信息,和/或,所述当前块的空域运动信息,和/或,所述当前块的时域运动信息,和/或,所述当前块的历史运动信息。

在一些实施例中,第一确定单元902,还配置为若从所述初始运动信息候选列表内选择运动信息,则确定所选择的运动信息为单向运动信息;

第一判断单元908,还配置为若从所述当前块的空域运动信息和/或所述当前块的时域运动信息和/或所述当前块的历史运动信息内选择运动信息,则判断所选择的运动信息是否为双向运动信息;当所选择的运动信息为双向运动信息时,将所选择的运动信息拆分为两个单向运动信息,以执行从所述当前块的多个已知运动信息中确定至少一组单向运动信息的步骤。

在一些实施例中,所述预设的帧间预测模式包括:几何划分预测模式GPM或角度加权预测模式AWP。

在一些实施例中,第一确定单元902,还配置为当所述预测模式参数指示使用GPM或AWP确定当前块的帧间预测值时,确定所述当前块的两个分区;其中,所述两个分区包括第一分区和第二分区;

解析单元901,还配置为解析码流,确定所述第一分区对应的第一运动信息索引值和所述第二分区对应的第二运动信息索引值;

第一确定单元902,还配置为基于所述新的运动信息候选列表,将所述第一运动信息索引值指示的所述新的运动信息候选列表中的运动信息确定为所述第一分区的运动信息,将所述第二运动信息索引值指示的所述新的运动信息候选列表中的运动信息确定为所述第二分区的运动信息;

第一预测单元905,配置为利用所述第一分区的运动信息计算所述第一分区的第一预测值,利用所述第二分区的运动信息计算所述第二分区的第二预测值;对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。

可以理解地,在本申请实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

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

因此,本申请实施例提供了一种计算机存储介质,应用于解码器90,该计算机存储介质存储有帧间预测程序,所述帧间预测程序被第一处理器执行时实现前述实施例中解码器侧所述的方法。

基于上述解码器90的组成以及计算机存储介质,参见图10,其示出了本申请实施例提供的解码器90的具体硬件结构示例,可以包括:第一通信接口1001、第一存储器1002和第一处理器1003;各个组件通过第一总线系统1004耦合在一起。可理解,第一总线系统1004用于实现这些组件之间的连接通信。第一总线系统1004除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图10中将各种总线都标为第一总线系统1004。其中,

第一通信接口1001,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;

第一存储器1002,用于存储能够在第一处理器1003上运行的计算机程序;

第一处理器1003,用于在运行所述计算机程序时,执行:

解析码流,获取当前块的预测模式参数;

当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

可以理解,本申请实施例中的第一存储器1002可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct RambusRAM,DRRAM)。本申请描述的系统和方法的第一存储器1002旨在包括但不限于这些和任意其它适合类型的存储器。

而第一处理器1003可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过第一处理器1003中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器1003可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于第一存储器1002,第一处理器1003读取第一存储器1002中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(Application Specific Integrated Circuits,ASIC)、数字信号处理器(Digital SignalProcessing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等)来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

可选地,作为另一个实施例,第一处理器1003还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。

本实施例提供了一种解码器,该解码器可以包括解析单元、第一确定单元、第一计算单元、第一构建单元和第一预测单元。在该解码器中,在得到至少一个新的单向运动信息之后,可以将新的单向运动信息填入运动信息候选列表中,能够增加运动信息候选列表中运动信息的多样性;另外,对当前块来说,运动信息候选列表中初始运动信息与实际的运动信息可能存在偏差,这时候构造新的单向运动信息将会比初始运动信息具有更好的效果,从而提升了编解码性能。

基于前述实施例相同的发明构思,参见图11,其示出了本申请实施例提供的一种编码器110的组成结构示意图。如图11所示,该编码器110可以包括:第二确定单元1101、第二计算单元1102、第二构建单元1103和第二预测单元1104;其中,

第二确定单元1101,配置为确定当前块的预测模式参数;

第二确定单元1101,还配置为当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

第二计算单元1102,配置为对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

第二构建单元1103,配置为基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

第二预测单元1104,配置为根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

在一些实施例中,所述运动信息包括运动矢量信息和参考帧信息。

在一些实施例中,参见图11,编码器110还可以包括预编码单元1105和第二选择单元1106;其中,

预编码单元1105,配置为利用多种预测模式对所述当前块进行预编码处理,获得每一种预测模式对应的率失真代价值;

第二选择单元1106,配置为从所获得的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的预测模式确定为当前块的预测模式参数。

在一些实施例中,参见图11,编码器110还可以包括第二缩放单元1107;其中,

第二选择单元1106,还配置为针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个初始单向运动信息;

第二缩放单元1107,配置为确定候选参考帧,将所选择的至少两个初始单向运动信息缩放到所述候选参考帧,得到至少两个缩放后的单向运动信息;

第二确定单元1101,还配置为将所述至少两个缩放后的单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第二选择单元1106,还配置为针对每一组单向运动信息,从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息相同;

第二确定单元1101,还配置为将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第二选择单元1106,还配置为针对每一组单向运动信息,确定候选参考帧;从所述当前块的多个已知运动信息中选择至少两个单向运动信息,且所述至少两个单向运动信息对应的参考帧信息均为所述候选参考帧;

第二确定单元1101,还配置为将所述至少两个单向运动信息确定为一组单向运动信息,以得到所述至少一组单向运动信息。

在一些实施例中,第二计算单元1102,还配置为针对每一组单向运动信息,对所述一组单向运动信息进行平均值计算,获得一个新的单向运动信息;基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

在一些实施例中,第二计算单元1102,还配置为针对每一组单向运动信息,确定所述一组单向运动信息各自对应的权重值;根据所述一组单向运动信息以及各自对应的权重值进行加权平均计算,获得一个新的单向运动信息;基于所述至少一组单向运动信息,得到至少一个新的单向运动信息。

在一些实施例中,第二确定单元1101,还配置为基于所述当前块的相邻块的运动信息,确定初始运动信息候选列表;

第二构建单元1103,配置为将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中,得到所述新的运动信息候选列表。

在一些实施例中,参见图11,编码器110还可以包括第二判断单元1108,配置为判断所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息是否重复;

第二构建单元1103,还配置为在所述至少一个新的单向运动信息与所述初始运动信息候选列表内的运动信息不重复的情况下,将所述至少一个新的单向运动信息填入所述初始运动信息候选列表中。

在一些实施例中,第二构建单元1103,还配置为在所述初始运动信息候选列表不包括重复的单向运动信息且所述初始运动信息候选列表内的单向运动信息数量小于预设数量时,执行所述从所述当前块的多个已知运动信息中确定至少一组单向运动信息;以及对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息的步骤。

在一些实施例中,所述当前块的多个已知运动信息至少包括:所述初始运动信息候选列表内的运动信息,和/或,所述当前块的空域运动信息,和/或,所述当前块的时域运动信息,和/或,所述当前块的历史运动信息。

在一些实施例中,第二确定单元1101,还配置为若从所述初始运动信息候选列表内选择运动信息,则确定所选择的运动信息为单向运动信息;

第二判断单元1108,还配置为若从所述当前块的空域运动信息和/或所述当前块的时域运动信息和/或所述当前块的历史运动信息内选择运动信息,则判断所选择的运动信息是否为双向运动信息;当所选择的运动信息为双向运动信息时,将所选择的运动信息拆分为两个单向运动信息,以执行从所述当前块的多个已知运动信息中确定至少一组单向运动信息的步骤。

在一些实施例中,所述预设的帧间预测模式包括:几何划分预测模式GPM或角度加权预测模式AWP。

在一些实施例中,第二确定单元1101,还配置为当所述预测模式参数指示使用GPM或AWP确定当前块的帧间预测值时,确定所述当前块的两个分区;其中,所述两个分区包括第一分区和第二分区;以及基于所述新的运动信息候选列表,确定所述第一分区的运动信息和所述第二分区的运动信息,并将第一运动信息索引值设置为所述第一分区的运动信息在所述新的运动信息候选列表中的索引序号值,将第二运动信息索引值设置为所述第二分区的运动信息在所述新的运动信息候选列表中的索引序号值;

第二计算单元1102,还配置为利用所述第一分区的运动信息计算所述第一分区的第一预测值,利用所述第二分区的运动信息计算所述第二分区的第二预测值;

第二预测单元1104,配置为对所述第一预测值和所述第二预测值进行加权融合,得到所述当前块的帧间预测值。

在一些实施例中,参见图11,编码器110还可以包括写入单元1109,配置为将所述第一运动信息索引值和所述第二运动信息索引值写入码流。

可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例提供了一种计算机存储介质,应用于编码器110,该计算机存储介质存储有帧间预测程序,所述帧间预测程序被第二处理器执行时实现前述实施例中编码器侧所述的方法。

基于上述编码器110的组成以及计算机存储介质,参见图12,其示出了本申请实施例提供的编码器110的具体硬件结构示例,可以包括:第二通信接口1201、第二存储器1202和第二处理器1203;各个组件通过第二总线系统1204耦合在一起。可理解,第二总线系统1204用于实现这些组件之间的连接通信。第二总线系统1204除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图12中将各种总线都标为第二总线系统1204。其中,

第二通信接口1201,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;

第二存储器1202,用于存储能够在第二处理器1203上运行的计算机程序;

第二处理器1203,用于在运行所述计算机程序时,执行:

确定当前块的预测模式参数;

当所述预测模式参数指示使用预设的帧间预测模式确定当前块的帧间预测值时,从所述当前块的多个已知运动信息中确定至少一组单向运动信息;其中,每一组单向运动信息包括至少两个单向运动信息;

对所述至少一组单向运动信息进行运动矢量计算,获得至少一个新的单向运动信息;

基于所述至少一个新的单向运动信息,构建新的运动信息候选列表;

根据所述新的运动信息候选列表,确定所述当前块的帧间预测值。

可选地,作为另一个实施例,第二处理器1203还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。

可以理解,第二存储器1202与第一存储器1002的硬件功能类似,第二处理器1203与第一处理器1003的硬件功能类似;这里不再详述。

本实施例提供了一种编码器,该编码器可以包括第二确定单元、第二计算单元、第二构建单元和第二预测单元。在该编码器中,在得到至少一个新的单向运动信息之后,可以将新的单向运动信息填入运动信息候选列表中,能够增加运动信息候选列表中运动信息的多样性;另外,对当前块来说,运动信息候选列表中初始运动信息与实际的运动信息可能存在偏差,这时候构造新的单向运动信息将会比初始运动信息具有更好的效果,从而提升了编解码性能。

需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

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

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种编解码方法、装置及其设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类