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

图像预测方法、编码器、解码器以及存储介质

文献发布时间:2024-01-17 01:24:51


图像预测方法、编码器、解码器以及存储介质

本申请是申请日为2020年3月2日的PCT国际专利申请PCT/CN2020/077491进入中国国家阶段的中国专利申请号202080097798.X、发明名称为“图像预测方法、编码器、解码器以及存储介质”的分案申请。

技术领域

本申请实施例涉及视频编解码技术领域,尤其涉及一种图像预测方法、编码器、解码器以及存储介质。

背景技术

随着多媒体技术的广泛应用,现代编码技术采用混合编码框架,包括预测、变换、量化和熵编码等过程。其中,预测编码包括帧内预测和帧间预测,前者是利用同一帧图像中已经编码并重建的图像块对当前要编码的图像块进行预测,后者是利用已经编码并重建的其它帧的图像对当前要编码的图像进行预测。这里,帧间预测编码利用了视频序列的时间相关性,去除了空间冗余,是目前视频编码框架中非常重要的环节。

新一代的数字音视频编解码技术标准(3rd Audio and Video Coding Standard,AVS3)的参考软件模型HPM6.0中引入了双向预测技术。在对当前块进行预测时,可以根据两组参考帧和运动矢量(Motion Vector,MV)分别求得两个单向预测值,然后将所得到的两个单向预测值进行平均,以得到双向预测值。这种求平均方式可能会使得该双向预测值存在偏差,从而导致预测结果可能不准确。

发明内容

本申请实施例提供一种图像预测方法、编码器、解码器以及存储介质,通过对初始双向预测值进行修正,可以提高预测结果的准确性。

本申请实施例的技术方案可以如下实现:

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

对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;

确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;

利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

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

解析码流,获得待解码的图像块的预测模式参数;

当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;

根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;

确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

第三方面,本申请实施例提供了一种编码器,该编码器包括第一确定单元、第一计算单元和第一修正单元,其中,

所述第一确定单元,配置为对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;

所述第一确定单元,还配置为确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;

所述第一计算单元,配置为利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

所述第一修正单元,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

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

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

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

第五方面,本申请实施例提供了一种解码器,该解码器包括解析单元、第二确定单元、第二计算单元和第二修正单元,其中,

所述解析单元,配置为解析码流,获得待解码的图像块的预测模式参数;以及当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;

所述第二确定单元,配置为根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;

所述第二计算单元,配置为确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

所述第二修正单元,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

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

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

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

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

本申请实施例提供了一种图像预测方法、编码器、解码器以及存储介质,该方法可以应用于编码器,通过对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。该方法可以应用于解码器,通过解析码流,获得待解码的图像块的预测模式参数;当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值。这样,可以利用图像块对应的梯度参数用以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编解码效率,进而提升了视频图像质量。

附图说明

图1A为相关技术方案提供的一种单向帧间预测的结构示意图;

图1B为相关技术方案提供的一种双向帧间预测的结构示意图;

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

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

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

图4为本申请实施例提供的一种亮度值变化趋势的曲线示意图;

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

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

图7为本申请实施例提供的一种编码器的具体硬件结构示意图;

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

图9为本申请实施例提供的一种解码器的具体硬件结构示意图。

具体实施方式

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

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

在本申请实施例中,第一图像分量可以为亮度分量,第二图像分量可以为蓝色色度分量,第三图像分量可以为红色色度分量,但是不作具体限定。

下面将针对帧间预测技术的相关技术方案进行描述。

帧间预测是利用视频图像的帧间相关性,即时间相关性,来达到图像压缩的目的。其中,连续的视频帧之间内容较为相似,具有较高的相关性。在对视频帧进行编码时,可以使用预测编码技术,利用已解码出的其他视频帧,对当前视频帧进行预测,然后仅将预测残差进行编码,能够有效降低码率,这种预测编码方式简称为帧间预测。

帧间预测可以分为单向预测和双向预测,单向预测主要是通过一组参考帧和MV直接得到预测值,而双向预测则是通过两组参考帧和MV进行相关计算得到预测值。如图1A所示,其给出了单向预测的结构示例,除了当前帧之外,还包括有一组参数,即一个参考帧和一个MV,根据该参考帧和MV能够对当前帧进行单向预测;如图1B所示,其给出了双向预测的结构示例,除了当前帧之外,还包括有两组参数,即参考帧0和MV0、以及参考帧1和MV1,根据参考帧0和MV0能够对当前帧进行一个方向的单向预测,而根据参考帧1和MV1能够对当前帧进行另一个方向的单向预测,以实现当前帧的双向预测。

具体地,针对单向预测而言,单向预测的预测值是通过一组参考帧和MV计算得出。MV可以包括水平方向的MV

针对双向预测而言,双向预测的预测值是通过两组参考帧和MV计算得出。在AVS3的参考软件HPM6.0中,双向预测值的计算方式为:分别使用两组参考帧和MV来计算出两个单向预测值,然后将两个单向预测值进行均值计算,能够得到双向预测值;具体如下所示,

pred

其中,pred0表示一个方向的单向预测值,pred1表示另一个方向的单向预测值,pred

在最新一代的视频编码标准H.266/多功能视频编码(Versatile Video Coding,VVC)中,引入了CU级双向预测(Bi-prediction with CU-level Weight,BCW)技术,通过加权平均的方式可以得到双向预测值。假定两个方向得到的单向预测值分别为pred0和pred1,权重值为w,那么双向预测值pred

pred

其中,w值包括有5个值,w∈{-2、3、4、5、10},可以根据权重索引从这里选择。具体地,w值具有两种获取方式,一种是针对非融合(merge)模式的CU,这时候需要传输运动矢量差(Motion Vector Difference,MVD),解码器侧通过解析码流中的运动矢量差以确定出权重索引;另一种是针对merge模式的CU,可以从相邻块推断出权重索引,但是本申请实施例不作任何限定。

进一步地,在AVS3中还采纳了双向光流(Bi-directional Optical Flow,BIO)技术,而在VVC中采纳了类似的双向光流(Bi-Directional Optical Flow,BDOF)技术。其中,该双向光流技术均是采样点级别的运动优化,基于双向预测的块运动补偿,不需要传输多余信号。但是在经过双向预测之后,仍然发现在当前块的部分区域内存在运动偏差。

实际应用中,对于AVS3而言,目前参考软件HPM6.0所得到双向预测值的方法为,首先根据两组参考帧和MV能够分别得到两个单向预测值,然后将两个单向预测值进行平均值计算,所得到的平均值即为得到双向预测值,即使添加了BIO等双向预测技术来调整双向预测值,但是由于在进行双向预测时,是直接将两个单向预测值进行平均计算,这种求平均方式可能会使得该双向预测值存在偏差,从而导致预测结果可能不准确。

基于此,本申请实施例提供了一种图像预测方法,应用于编码器或解码器。对于编码器侧,通过对待编码的图像块进行运动估计,确定出图像块在两个预测方向分别对应的单向预测值之后,根据所确定的图像块对应的梯度参数以及在两个预测方向分别对应的单向预测值,计算出图像块的梯度值;然后再根据图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到图像块的双向预测值,其中,初始双向预测值是在两个预测方向分别对应的单向预测值的加权和。对于解码器侧,通过解析码流,获得待解码的图像块的预测模式参数之后,当预测模式参数指示图像块使用双向预测模式时,再解析出图像块的运动参数;根据运动参数,确定图像块在两个预测方向分别对应的单向预测值;再根据所确定的图像块对应的梯度参数以及在两个预测方向分别对应的单向预测值,计算出图像块的梯度值;然后再根据图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到图像块的双向预测值。这样,可以利用图像块对应的梯度参数用以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编解码效率,进而提升了视频图像质量。

下面将结合附图对本申请各实施例进行详细说明。

参见图2A,其示出了本申请实施例提供的一种视频编码系统的组成框图示例;如图2A所示,该视频编码系统10包括变换与量化单元101、帧内估计单元102、帧内预测单元103、运动补偿单元104、运动估计单元105、反变换与反量化单元106、滤波器控制分析单元107、滤波单元108、编码单元109和解码图像缓存单元110等,其中,滤波单元108可以实现去方块滤波及样本自适应缩进(Sample Adaptive0ffset,SAO)滤波,编码单元109可以实现头信息编码及基于上下文的自适应二进制算术编码(Context-based Adaptive BinaryArithmatic Coding,CABAC)。针对输入的原始视频信号,通过编码树块(Coding TreeUnit,CTU)的划分可以得到一个视频编码块,然后对经过帧内或帧间预测后得到的残差像素信息通过变换与量化单元101对该视频编码块进行变换,包括将残差信息从像素域变换到变换域,并对所得的变换系数进行量化,用以进一步减少比特率;帧内估计单元102和帧内预测单元103是用于对该视频编码块进行帧内预测;明确地说,帧内估计单元102和帧内预测单元103用于确定待用以编码该视频编码块的帧内预测模式;运动补偿单元104和运动估计单元105用于执行所接收的视频编码块相对于一或多个参考帧中的一或多个块的帧间预测编码以提供时间预测信息;由运动估计单元105执行的运动估计为产生运动向量的过程,所述运动向量可以估计该视频编码块的运动,然后由运动补偿单元104基于由运动估计单元105所确定的运动向量执行运动补偿;在确定帧内预测模式之后,帧内预测单元103还用于将所选择的帧内预测数据提供到编码单元109,而且运动估计单元105将所计算确定的运动向量数据也发送到编码单元109;此外,反变换与反量化单元106是用于该视频编码块的重构建,在像素域中重构建残差块,该重构建残差块通过滤波器控制分析单元107和滤波单元108去除方块效应伪影,然后将该重构残差块添加到解码图像缓存单元110的帧中的一个预测性块,用以产生经重构建的视频编码块;编码单元109是用于编码各种编码参数及量化后的变换系数,在基于CABAC的编码算法中,上下文内容可基于相邻编码块,可用于编码指示所确定的帧内预测模式的信息,输出该视频信号的码流;而解码图像缓存单元110是用于存放重构建的视频编码块,用于预测参考。随着视频图像编码的进行,会不断生成新的重构建的视频编码块,这些重构建的视频编码块都会被存放在解码图像缓存单元110中。

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

本申请实施例中的图像预测方法,可以应用在如图2A所示的运动补偿单元104和运动估计单元105的帧间预测部分,也可以应用在如图2B所示的运动补偿单元204的帧间预测部分。也就是说,本申请实施例中的图像预测方法,既可以应用于视频编码系统,也可以应用于视频解码系统,甚至还可以同时应用于视频编码系统和视频解码系统,但是本申请实施例不作具体限定。这里,当该方法应用于视频编码系统时,“图像块”具体是指帧间预测时的当前待编码块;当该方法应用于视频解码系统时,“图像块”具体是指帧间预测时的当前待解码块。

基于上述图2A的应用场景示例,参见图3,其示出了本申请实施例提供的一种图像预测方法的流程示意图。如图3所示,应用于编码器,该方法可以包括:

S301:对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;

需要说明的是,一帧视频图像可以划分为多个图像块,每个当前待编码的图像块可以为一个CU。这里,待编码的图像块具体是指视频图像中待进行第一图像分量、第二图像分量或者第三图像分量编码预测的当前图像块。

其中,假定对待编码的图像块进行第一图像分量预测,而且第一图像分量为亮度分量,那么可以称为对待编码的图像块进行亮度预测,所获得的预测值可以称为亮度值;或者,假定对待编码的图像块进行第二图像分量预测,而且第二图像分量为色度分量,那么可以称为对待编码的图像块进行色度预测,所获得的预测值可以称为色度值;本申请实施例中,优选为对待编码的图像块进行亮度预测,但是不作任何限定。

具体地,在一些实施例中,所述对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值,可以包括:

获取所述图像块在两个预测方向的预测图像块;

根据所述图像块以及所述两个预测图像块进行运动估计,确定在两个预测方向分别对应的运动矢量;

根据所述两个预测图像块以及所述两个运动矢量,确定在两个预测方向分别对应的单向预测值。

需要说明的是,视频序列包括有多帧视频图像,比如当前帧、第一参考帧(参考帧0)和第二参考帧(参考帧1)等;假定待编码的图像块位于当前帧上,那么两个预测图像块将分别位于视频序列中的参考帧0和参考帧1上。另外,参考帧0和参考帧1可以分别位于当前帧的一个前向方向和一个后向方向,也可以分别位于当前帧的两个后向方向,甚至还可以分别位于当前帧的两个前向方向;也就是说,两个预测方向可以包括一个前向方向和一个后向方向,或者是两个前向方向或者两个后向方向等。在本申请实施例中,优选地,两个预测方向包括一个前向方向和一个后向方向,但是不作任何限定。

还需要说明的是,单向预测值可以是每个预测方向上各有一个单向预测值,使得总共有两个单向预测值;也可以是每个预测方向上有至少一个单向预测值,使得总共有超过两个单向预测值。优选地,在每个预测方向上各有一个单向预测值,比如在第一预测方向所确定的第一单向预测值和在第二预测方向所确定的第二单向预测值。

也就是说,假定两个预测方向包括第一预测方向和第二预测方向,那么针对第一预测方向,根据对应的预测图像块以及运动矢量,可以确定出第一单向预测值(用Pred0表示);针对第二预测方向,根据对应的预测图像块以及运动矢量,可以确定出第二单向预测值(用Pred1表示)。

这样,在获取到两个预测方向分别对应的单向预测值之后,一方面,可以将运动矢量以及预测图像块对应的参考图像索引写入码流,供解码器侧通过解析码流得到;另一方面,还可以利用预设算法对两个预测方向分别对应的单向预测值进行计算,从而得到初始双向预测值(用Pred

可以理解,针对帧间的双向预测算法除了可以利用式(1)或式(2)进行计算之外,还可以采用双向光流预测算法。具体地,BIO技术可以利用光流原理对双向预测后的运动进行运动补偿,同时BIO技术仅适用于双向预测的情况,其对前、后向的预测图像块内每一个像素分别计算x方向和y方向的梯度值,并依据各像素对应的像素值及梯度值计算每一个像素的计算因子。

为了降低计算复杂度,可以认为每个簇内所有像素具有相同的运动矢量,而使用比簇更大的窗可以提高计算得到的运动矢量的准确度。这里,簇表示尺寸为4×4的图像块,窗表示尺寸大于4×4的图像块;对于簇或窗来说,可以看作是一个子块(subBlock)。也就是说,在BIO技术中,簇的尺寸为4×4,即4×4簇的运动矢量值(vx,vy)是根据以簇为中心的窗进行计算得到。针对每一个簇,根据簇所在窗内所有像素位置的计算因子可以计算出运动矢量值(vx,vy),最后对簇内的每一个像素进行计算以得到双向预测值。具体的计算公式如下,

pred

其中,pred

具体地,b的计算公式如下,

其中,

v

v

其中,“<<”表示左移运算符,clip3表示钳位运算符,-th

这里,S

S

S

S

S

S

其中,ψ

θ(i,j)=I

除此之外,在VVC中,还具有非常类似的BDOF技术。这里,利用空间和时间梯度来计算S

S

S

S

S

S

其中,ψ

θ(i,j)=(I

根据上述式(15)~(19),可以计算补偿的运动矢量值v

其中,

然后,根据式(23)和式(24)可以推算出修正值b,公式如下,

最后可以得到的双向预测值的计算公式如下,

pred

其中,pred

还需要说明的是,本申请实施例的方法应用于帧间的双向预测技术,主要是针对初始双向预测值的修正处理,可以应用于双向预测和/或BIO之后。也就是说,在HPM6.0中,初始双向预测值可以利用式(1)直接计算得到,还可以利用式(3)~式(14)计算得到。示例性地,如果双向预测满足BIO技术的预设条件,那么可以选择利用式(3)~式(14)计算初始双向预测值Pred

以图像块内样点的亮度值为例,参见图4,其示出了本申请实施例提供的一种亮度值变化趋势的曲线示意图。如图4所示,假定待预测的图像块位于当前帧内,第一预测图像块位于参考帧0内,第二预测图像块位于参考帧1内,样点的亮度值在参考帧和当前帧之间连续变化,参考帧0和参考帧1在当前帧的两侧,对应位置的样点亮度值分别为R0和R1。其中,R0和R1之间的亮度变化趋势可以是沿着曲线1变化,也可以沿着曲线2变化,还可以沿着曲线3变化。如果当前帧位于参考帧0和参考帧1的中间,这时候变化趋势接近线性,即曲线2,那么利用求平均方式得到的双向预测值较为准确;而当变化趋势接近曲线1或者曲线3时,这时候仍然利用求平均方式得到的双向预测值准确度偏低。

为了提高双向预测值的准确度,这时候需要确定图像块对应的梯度参数,以确定出变化趋势是接近曲线1还是接近曲线3,然后执行后续的步骤,通过对双向预测值进行修正,用以提高双向预测值的准确度。

S302:确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;

需要说明的是,在确定出初始双向预测值之后,还可以确定图像块对应的梯度参数。其中,梯度标志值可以grad_flag表示,梯度方向索引值可以用grad_idx表示。这里,梯度标志值用于表示初始双向预测值是否进行梯度修正,梯度方向索引值用于表示修正的梯度方向;并且梯度标志值和梯度方向索引值均为二值变量,即仅包含“0”和“1”两个取值。例如,grad_flag的取值等于0,表示不进行梯度修正;grad_flag的取值等于1,表示进行梯度修正;grad_idx的取值等于0,表示正向梯度方向;grad_idx的取值等于1,表示反向梯度方向。

还需要说明的是,在编码器侧,针对待预测的图像块利用多种预测模式分别进行预编码处理。这里,多种预测模式通常可以包括第一预测模式、第二预测模式和第三预测模式等,其中,第一预测模式、第二预测模式和第三预测模式对应的梯度参数不同;具体地,在第一预测模式下,可以设置梯度参数中的梯度标志值等于0;在第二预测模式下,可以设置梯度参数中的梯度标志值等于1,且梯度参数中的梯度方向索引值等于0;在第三预测模式下,可以设置梯度参数中的梯度标志值等于1,且梯度参数中的梯度方向索引值等于1。

在一些实施例中,对于S302来说,在所述确定所述图像块对应的梯度参数之前,该方法还可以包括:

利用多种预测模式对所述图像块进行预编码处理,获得多个预编码结果;其中,不同的预测模式对应的梯度参数不同;

从所述多个预编码结果中,按照预设策略选取优选预编码结果;

将所述优选预编码结果对应的预测模式确定为目标预测模式。

也就是说,在利用多种预测模式分别对待预测的图像块进行预编码之后,可以得到每一种预测模式对应的预编码结果,即能够得到多个预编码结果;然后从这多个预编码结果中决策出优选预编码结果,并将该优选预编码结果对应的预测模式确定为目标预测模式,从而可以确定出待预测图像块对应的梯度参数;这样,基于所确定的梯度参数进行后续编码预测,可以使得预测残差小,并且能够提高编码效率。

进一步地,针对优选预编码结果的决策,可以采用简单的决策策略,比如根据失真值的大小进行决策;也可以采用复杂的决策策略,比如率失真优化(Rate DistortionOptimization,RDO)的结果进行决策,本申请实施例不作任何限定。

可选地,在一些实施例中,所述从所述多个预编码结果中,按照预设策略选取优选预编码结果,可以包括:

根据所述多个预编码结果,确定每一个预编码结果对应的率失真代价值;

从所确定的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的预编码结果确定为所述优选预编码结果。

可选地,在一些实施例中,所述从所述多个预编码结果中,按照预设策略选取优选预编码结果,可以包括:

根据所述多个预编码结果,确定每一个预编码结果对应的失真值;

从所确定的多个失真值中选择最小失真值,将所述最小失真值对应的预编码结果确定为所述优选预编码结果。

这里,优选以RDO决策为例,根据所得到的多个预编码结果,确定出每一个预编码结果对应的率失真代价值;然后从所确定的多个率失真代价值中选择最小率失真代价值,可以将最小率失真代价值对应的预编码结果确定为优选预编码结果。

进一步地,在确定出目标预测模式之后,可以根据目标预测模式获得梯度参数的设置情况。具体地,在一些实施例中,所述多种预测模式包括第一预测模式、第二预测模式和第三预测模式,所述将所述优选预编码结果对应的预测模式确定为目标预测模式,可以包括:

若所述目标预测模式为第一预测模式,则设置所述梯度参数中的梯度标志值等于0;

若所述目标预测模式为第二预测模式,则设置所述梯度参数中的梯度标志值等于1,且所述梯度参数中的梯度方向索引值等于0;

若所述目标预测模式为第三预测模式,则设置所述梯度参数中的梯度标志值等于1,且所述梯度参数中的梯度方向索引值等于1。

也就是说,如果确定出目标预测模式为第一预测模式,那么可以得到梯度参数中的梯度标志值等于0;如果确定出目标预测模式为第二预测模式,那么可以得到梯度参数中的梯度标志值等于1,且梯度参数中的梯度方向索引值等于0;如果确定出目标预测模式为第三预测模式,那么可以得到梯度参数中的梯度标志值等于1,且梯度参数中的梯度方向索引值等于1。

进一步地,在获取到梯度标志值之后,需要将其写入码流;而且如果梯度标志值等于1,还需要将梯度方向索引值均写入码流。具体地,在一些实施例中,该方法还可以包括:

若所述梯度标志值等于0,则将所述梯度标志值写入码流;

若所述梯度标志值等于1,则将所述梯度标志值和所述梯度方向索引值均写入码流。

这样,在编码器侧,需要将梯度参数中的梯度标志值、或者梯度标志值和梯度方向索引值写入码流中,便于后续在解码器侧进行解析处理,用以直接获取梯度标志值、或者梯度标志值和梯度方向索引值。

S303:利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

需要说明的是,在获得梯度参数之后,如果所设置的梯度标志值等于0,表明了不需要对初始双向预测值进行梯度修正,即关闭梯度修正,这时候无需执行步骤S303,可以直接将初始双向预测值即为图像块的双向预测值。因此,在一些实施例中,该方法还可以包括:当所设置的梯度标志值等于0时,将所述初始双向预测值确定为图像块的双向预测值。

还需要说明的是,默认情况下,梯度标志值等于1,可以在编码器侧通过配置(configure)文件确定。当梯度标志值等于1时,表明了需要对初始双向预测值进行梯度修正,这时候也就需要执行步骤S303,以计算出待编码的图像块的梯度值。

具体地,在一些实施例中,当所设置的梯度标志值等于1时,对于S303来说,所述利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值,可以包括:

获取所设置的梯度标志值和梯度方向索引值;

若所述梯度标志值等于1,且所述梯度方向索引值等于0,则利用第二单向预测值减去第一单向预测值,获得所述图像块的梯度值;

若所述梯度标志值等于1,且所述梯度方向索引值等于1,则利用第一单向预测值减去第二单向预测值,获得所述图像块的梯度值。

这里,第一单向预测值(Pred0)表示所述图像块在第一预测方向对应的单向预测值,第二单向预测值(Pred1)表示所述图像块在第二预测方向对应的单向预测值。

需要说明的是,当梯度标志值等于1时,表明了需要对初始双向预测值进行修正;这时候,如果梯度方向索引值等于0,表明了梯度方向为正向梯度方向,可以获得图像块的梯度值为Pred1-Pred0;如果梯度方向索引值等于1,表明了梯度方向为反向梯度方向,可以获得图像块的梯度值为Pred0-Pred1。

仍以图4为例,当确定出变化趋势接近曲线1时,表明了梯度方向为正向梯度方向,即梯度方向索引值等于0,这时候可以确定一段参考帧0到参考帧1之间的梯度值(R1-R0);当确定出变化趋势接近曲线3时,表明了梯度方向为反向梯度方向,即梯度方向索引值等于1,这时候可以确定一段参考帧1到参考帧0之间的梯度值(R0-R1),后续可以根据所确定的梯度值对初始双向预测值进行修正,即执行步骤S304。

S304:根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值。

需要说明的是,初始双向预测值是在两个预测方向分别对应的单向预测值的加权和。从执行步骤上来说,初始双向预测值可以在步骤S301获得单向预测值之后就计算出初始双向预测值,也可以在步骤S304进行修正操作之前计算出初始双向预测值,甚至还可以在步骤S302和步骤S303的过程中,同步计算出初始双向预测值,对此不作任何限定。

还需要说明的是,在确定出图像块的梯度值之后,可以结合预设的修正强度值对初始双向预测值进行修正,以得到最终的双向预测值。具体地,所述根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,可以包括:

根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值;

利用所确定的修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值。

可选地,可以利用移位方式来计算图像块的修正梯度值,然后根据该修正梯度值对初始双向预测值进行修正。具体地,在一些实施例中,所述根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值,可以包括:

利用预设的修正强度值对所述图像块的梯度值进行移位计算,获得所述修正梯度值。

进一步地,所述利用所确定的修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值,可以包括:

将所述修正梯度值与所述初始双向预测值进行叠加,得到所述图像块的双向预测值。

这里,预设的修正强度值可以用k表示,通常而言,k的默认值可设置为固定值,优选为3,或者也可以利用片(slice)级或者更高级语法对其进行定义。

假定最终的双向预测值用Pred表示,初始双向预测值用Pred

其中,“=”表示赋值运算符,“>>”表示右移运算符,即“>>k”表示比特右移k位。

进一步地,针对k的取值,可以为预设常数值,比如k值为3。除此之外,还可以根据已有参数自适应确定的,比如通过RDO决策等方式在映射列表中选择最佳的k值;然后将该k值在映射列表中对应的索引序号写入码流,便于后续在解码器侧通过解析码流来获取该索引序号,以确定出k值。也就是说,在一些实施例中,该方法还可以包括:

获取修正强度值对应的映射列表;其中,所述映射列表表示修正强度值与索引序号值之间的对应关系;

计算所述映射列表中每一修正强度值对应的率失真代价值;

从计算得到的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的修正强度值确定为所述预设的修正强度值;

获取所述预设的修正强度值对应的索引序号值,将所获取的索引序号值写入码流。

需要说明的是,映射列表反映了修正强度值与索引序号值之间的对应关系。通过采用不同的修正强度值可以实现不同强度的滤波。通常而言,k可以是默认值,也可以是映射列表中的可选项,本申请实施例不作具体限定。例如,表1给出了一种映射列表的示例,其定义了修正强度值与索引序号值之间的对应关系。

表1

可选地,还可以利用乘法方式来计算图像块的修正梯度值,然后根据该修正梯度值对初始双向预测值进行修正。具体地,在一些实施例中,所述根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值,可以包括:

将预设的修正强度值与所述图像块的梯度值进行相乘,获得所述修正梯度值。

进一步地,所述根据所述修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值,可以包括:

将所述修正梯度值与所述初始双向预测值进行叠加,得到所述图像块的双向预测值。

这时候,可以利用乘法代替移位进行计算,能够实现更灵活的修正。其中,这里的修正强度值也可以称为乘法因子,用s表示;那么该双向预测值的表示如下,

还需要说明的是,s的取值可以为预设常数值;或者,也可以根据已有参数自适应确定的,比如通过采用表1所示的映射列表,利用ROD决策的方式,选择出最佳的s值,然后将其对应的索引序号值写入码流,便于后续在解码器侧进行解析处理。

本申请实施例提供了一种图像预测方法,应用于编码器。通过对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。这样,可以利用图像块对应的梯度参数用以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编解码效率,进而提升了视频图像质量。

进一步地,针对本申请实施例中图像预测方法,待编码的图像块可以为一个CU。示例性地,应用该方法的使用限定条件,可以包括:

(1)仅对双向预测CU使用,即仅参考帧0和参考帧1均有效时使用;

(2)仅对样点数大于等于256的CU使用。

(3)仅对传输MVD的CU使用。

(4)仅在非低延时(lowdelay)条件下使用。

(5)仅对亮度值使用。

需要说明的是,这些条件只是示例性地给出了应用该方法的使用限定条件,但是并不作具体限定。另外,对于本申请实施例中图像预测方法,还可以采用slice级或更高级设置对应的语法元素,下面将针对相关的语法元素进行描述。

首先,针对视频序列,需要描述该视频序列是否可以使用帧间双向预测。具体地,可以在序列头中引入一个语法元素:帧间双向梯度允许标志,可以用grad_enable_flag表示。其中,该帧间双向梯度允许标志为二值变量,当取值为“1”时,表示视频序列可以使用帧间双向梯度;当取值为“0”时,表示视频序列不可以使用帧间双向梯度。表2给出这部分内容的语法描述,灰色部分为新增加的语法内容。

表2

然后,针对新增加的梯度参数,比如梯度标志值和梯度方向索引值等。这时候引入了两个CU级的语法元素:(1)帧间双向梯度CU级允许标志,可以用grad_flag表示,它为二值变量,当取值为“1”时,表示CU使用帧间双向梯度修正;当取值为“0”时,表示CU不使用帧间双向梯度修正;(2)帧间双向梯度CU级方向标志,可以用grad_idx表示,它为二值变量,当取值为“1”时,表示CU使用反向梯度修正;当取值为“0”时,表示CU使用正向梯度修正。表3给出这部分内容的语法描述,灰色部分为新增加的语法内容。

表3

进一步地,还可以在序列头定义、图像头定义、片定义、编码树单元定义中设置语法元素,并且较低层可以覆盖较高层。

其中,修改CU级语法元素含义:帧间双向梯度CU级允许标志,用grad_flag表示,它为二值变量,当取值为“1”时,表示CU是否使用梯度修正,与CTU层相反;当取值为“0”时,表示与CTU层一致。

可以增加的语法元素含义:

(1)帧间双向梯度序列级允许标志,用grad_seq_flag表示;它为二值变量,当取值为“1”时,表示视频序列使用帧间双向梯度修正;当取值为“0”时,表示视频序列不使用帧间双向梯度修正;

(2)帧间双向梯度图像级允许标志,用grad_pic_flag表示;它为二值变量,当取值为“1”时,表示图像是否使用梯度修正与序列层相反;当取值为“0”时,表示与序列层一致;

(3)帧间双向梯度片级允许标志,用grad_pat_flag表示;它为二值变量,当取值为“1”时,表示片是否使用梯度修正与图像层相反;当取值为“0”时,表示与图像层一致;

(4)帧间双向梯度CTU级允许标志,用grad_ctu_flag表示;它为二值变量,当取值为“1”时,表示CTU是否使用梯度修正与片层相反;当取值为“0”时,表示与片层一致。

表4-1、表4-2、表4-3、表4-4分别给出这部分内容在序列头定义、帧间预测图像头定义、片定义、编码树单元定义的语法描述,同时将语法元素添加到语法描述的相应部分。

表4-1

表4-2

表4-3

表4-4

进一步地,还可以在序列头定义、图像头定义、片定义、编码树单元定义中设置语法元素,并且较低层可以覆盖较高层。

其中,修改CU级语法元素含义:(1)帧间双向梯度CU级允许标志,用grad_flag表示,它为二值变量,当取值为“1”时,表示CU是否使用梯度修正,与CTU层相反;当取值为“0”时,表示与CTU层一致;(2)帧间双向梯度CU级方向标志,用grad_idx表示,它为二值变量,当取值为“1”时,表示CU使用反向梯度修正;当取值为“0”时,表示CU使用正向梯度修正。

可以增加的语法元素含义:

(1)帧间双向梯度序列级允许标志,用grad_seq_flag表示;它为二值变量,当取值为“1”时,表示视频序列使用帧间双向梯度修正;当取值为“0”时,表示视频序列不使用帧间双向梯度修正;

(2)帧间双向梯度序列级方向标志,用grad_seq_idx表示;它为二值变量,当取值为“1”时,表示视频序列使用反向梯度修正;当取值为“0”时,表示视频序列使用正向梯度修正;

(3)帧间双向梯度图像级允许标志,用grad_pic_flag表示;它为二值变量,当取值为“1”时,表示图像是否使用梯度修正与序列层相反;当取值为“0”时,表示与序列层一致;

(4)帧间双向梯度图像级方向标志,用grad_pic_idx表示;它为二值变量,当取值为“1”时,表示图像使用反向梯度修正;当取值为“0”时,表示与图像使用正向梯度修正;

(5)帧间双向梯度片级允许标志,用grad_pat_flag表示;它为二值变量,当取值为“1”时,表示片是否使用梯度修正与图像层相反;当取值为“0”时,表示与图像层一致;

(6)帧间双向梯度片级方向标志,用grad_pat_iadx表示;它为二值变量,当取值为“1”时,表示片使用反向梯度修正;当取值为“0”时,表示片使用正向梯度修正;

(7)帧间双向梯度CTU级允许标志,用grad_ctu_flag表示;它为二值变量,当取值为“1”时,表示CTU是否使用梯度修正与片层相反;当取值为“0”时,表示与片层一致。

(8)帧间双向梯度CTU级方向标志,用grad_ctu_idx表示;它为二值变量,当取值为“1”时,表示CTU使用反向梯度修正;当取值为“0”时,表示CTU使用正向梯度修正。

表5-1、表5-2、表5-3、表5-4分别给出这部分内容在序列头定义、帧间预测图像头定义、片定义、编码树单元定义的语法描述,同时将语法元素添加到语法描述的相应部分。

表5-1

表5-2

表5-3

表5-4

进一步地,针对预设的修正强度值,可以通过设置语法元素grad_k_idx描述修正强度值在如表1所示的映射列表中的索引序号,从而实现不同强度的滤波。

这时候,需要增加的语法元素:

(1)帧间双向梯度序列级修正强度值,用k_idx_grad_seq表示;它为多值变量。取值为表1中的索引序号值。

(2)帧间双向梯度图像级修改修正强度标志,用k_idx_grad_pic_flag表示,它为二值变量,当取值为“1”时,表示图像不使用序列层的修正强度值;当取值为“0”时,表示与序列层一致,否则将传输k_idx_grad_pic以修改本图像内部使用的修正强度值。

(3)帧间双向梯度图像级修正强度值,用k_idx_grad_pic表示;它为多值变量,取值为上述表1中的索引序号值。

(4)帧间双向梯度片级修改修正强度标志,用k_idx_-grad_pat_flag表示;它为二值变量。当取值为“1”时,表示片不使用图像层修正强度k值;当取值为“0”时,表示与图像层一致,否则将传输k_idx_grad_pat以修改本片内部使用的修正强度值。

(5)帧间双向梯度片级修正强度值,用k_idx_grad_pat表示;它为多值变量,取值为上述表1中的索引序号值。

(6)帧间双向梯度CTU级修改修正强度标志,用k_idx_grad_ctu_flag表示;它为二值变量,当取值为“1”时,表示CTU不使用片层修正强度k值;当取值为“0”时,表示与片层一致,否则将传输k_idx_grad_ctu以修改本CTU内部使用的修正强度值。

(7)帧间双向梯度CTU级修正强度值,用k_idx_grad_ctu表示;它为多值变量,取值为上述表1中的索引序号值。

(8)帧间双向梯度CU级修改修正强度标志,用k_idx_grad_cu_flag表示;它为二值变量,当取值为“1”时,表示CU不使用CTU层修正强度k值;当取值为“0”时,表示与CTU层一致,否则将传输k_idx_grad_cu以修改本CU内部使用的修正强度值。

(9)帧间双向梯度CU级修正强度值,用k_idx_grad_cu表示;它为多值变量,取值为上述表1中的索引序号值。

表6-1、表6-2、表6-3、表6-4、表6-5分别给出这部分内容在序列头定义、帧间预测图像头定义、片定义、编码树单元定义、编码单元定义的语法描述,修正强度值用k表示,同时将语法元素添加到语法描述的相应部分。

表6-1

表6-2

表6-3

表6-4

表6-5

这里,语法元素中,ae(v)表示context-adaptive arithmetic entropy-codedsyntax element,即上下文自适应的算术熵编码语法元素;u(n)表示unsigned integerusing n bits,即n比特表示的无符号整数。其中,CU级别增加的语法元素是ae(v)的,其他头信息里面的flag,或其他只有两种取值的是u(1),其他多种取值的是u(n)。

在本申请实施例中,还可以采用隐性修正方案。具体地,根据CU特性决策grad_flag和grad_idx,这时候可以不在码流中传输grad_flag和grad_idx,或者仅在码流中传输grad_flag,然后根据CU特性预测出grad_idx,以此能够减少编码决策并降低码率;或者,也可以对于AVS3中direct/skip模式的CU,通过继承或预测出grad_flag与grad_idx,从而使预测更加准确。

另外,在本申请实施例中,还可以按照样点亮度值变化趋势,当前帧不在两个参考帧的中间时,假定两个方向所得到的单向预测值分别为pred0和pred1,那么可以根据参考帧位置相对不同,利用下述的计算公式:

Pred=pred

根据这两个计算公式,计算得出最终的双向预测值。

除此之外,在本申请实施例中,还可以在双向预测后或者BIO后应用本方法时,通过运算推导出合并处理的形式来进行本质相同的修正计算。或者,还可以设置隐含应用条件,例如可在两单向预测值的绝对差值和(Sum of Absolute Differences,SAD)满足一定条件时禁用梯度修正,或参考帧位置满足一定条件时禁用梯度修正,或使用BIO时禁用梯度修正。或者,甚至也可以增改语法元素的存在条件,例如可调整允许使用梯度修正的CU大小、编码模式、参考帧位置关系等。

示例性地,以AVS3的参考软件HPM6为基准,随机接入(Random Access,RA)模式下,对通乙序列和通丙序列进行测试,得到结果如下表7所示。具体地,表7给出了利用本申请实施例的图像预测方法所测得的三个图像分量(Y/U/V)的增益效果,可以看出,利用本方法可以使得预测结果更准确,从而提升了编码效率。

表7

本实施例提供了一种图像预测方法,应用于编码器。通过本实施例对前述实施例的具体实现进行详细阐述,从中可以看出,对于待编码的图像块而言,利用图像块对应的梯度参数可以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编码效率,进而提升了视频图像质量。

基于上述图2B的应用场景示例,参见图5,其示出了本申请实施例提供的另一种图像预测方法的流程示意图。如图5所示,该方法可以包括:

S501:解析码流,获得待解码的图像块的预测模式参数;

需要说明的是,该方法应用于解码器。其中,在解码器侧,一帧视频图像也可以划分为多个图像块,每个当前待解码的图像块可以为一个CU。这里,待解码的图像块具体是指视频图像中待进行第一图像分量、第二图像分量或者第三图像分量解码预测的当前图像块。

还需要说明的是,预测模式参数指示了图像块的编码模式及该模式相关的参数。其中,图像块的编码模式通常包括有单向预测模式和双向预测模式等。也就是说,在编码器侧,会针对图像块进行预测编码,在这过程中就可以确定出当前块的编码模式,并将相应的编码模式参数写入码流,由编码器传输到解码器。

这样,在解码器侧,通过解析码流可以获取到图像块的预测模式参数,根据所获取的预测模式参数用以确定图像块是否使用双向预测模式。

S502:当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数;

需要说明的是,所述运动参数包括运动矢量和参考图像索引。这样,如果预测模式参数指示图像块使用双向预测模式,那么还需要继续解析码流,以获取到图像块的运动矢量和参考图像索引,用以确定图像块在两个预测方向分别对应的单向预测值。

S503:根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;

需要说明的是,在获取到图像块的运动参数(运动矢量和参考图像索引)之后,可以根据运动矢量和参考图像索引,以确定出图像块在两个预测方向分别对应的单向预测值。具体地,在一些实施例中,所述根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值,可以包括:

根据所述运动参数中的参考图像索引,确定所述图像块在两个预测方向的预测图像块;

根据所确定的两个预测图像块以及所述运动参数中的运动矢量,确定所述图像块在两个预测方向分别对应的单向预测值。

需要说明的是,视频序列包括有多帧视频图像,比如当前帧、第一参考帧(参考帧0)和第二参考帧(参考帧1)等;假定待解码的图像块位于当前帧上,那么两个预测图像块将分别位于视频序列中的参考帧0和参考帧1上。

另外,参考帧0和参考帧1可以分别位于当前帧的一个前向方向和一个后向方向,也可以分别位于当前帧的两个后向方向,甚至还可以分别位于当前帧的两个前向方向;也就是说,两个预测方向可以包括一个前向方向和一个后向方向,或者是两个前向方向或者两个后向方向等。在本申请实施例中,优选地,两个预测方向包括一个前向方向和一个后向方向,但不作任何限定。

还需要说明的是,单向预测值可以是每个预测方向上各有一个单向预测值,使得总共有两个单向预测值;也可以是每个预测方向上有至少一个单向预测值,使得总共有超过两个单向预测值。优选地,在每个预测方向上各有一个单向预测值,比如在第一预测方向所确定的第一单向预测值和在第二预测方向所确定的第二单向预测值。这里,针对单向预测值的确定,与编码器侧的步骤相同,这里不再详述。

S504:确定所述图像块对应的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

需要说明的是,梯度参数至少包括梯度标志值和梯度方向索引值。编码器侧在设置梯度参数之后,同时还会将梯度参数写入码流,然后由编码器侧传输到解码器侧;如此,在解码器侧,可以不再进行梯度参数的确定,直接通过解析码流来获取图像块对应的梯度参数。

具体地,在一些实施例中,所述确定所述图像块的梯度参数,可以包括:

解析码流,获取所述图像块的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值。

进一步地,在一些实施例中,所述解析码流,获取所述图像块的梯度参数,可以包括:

解析码流,获取梯度参数中的梯度标志值;

判断所获取的梯度标志值是否等于1;

若所获取的梯度标志值等于1,则继续解析码流,获取梯度参数中的梯度方向索引值。

也就是说,在解析码流之后,如果获取到梯度参数中的梯度标志值等于0,那么不会再继续获取梯度参数中的梯度方向索引值;如果获取到梯度参数中的梯度标志值等于1,那么还需要继续解析码流,获取梯度参数中的梯度方向索引值。

可以理解,在获得梯度参数之后,如果获取到梯度标志值等于0,表明了不需要对初始双向预测值进行梯度修正,即关闭梯度修正,这时候无需执行步骤S504,可以直接将初始双向预测值即为图像块的双向预测值。因此,在一些实施例中,该方法还可以包括:若所述梯度标志值等于0,则将所述初始双向预测值确定为所述图像块的双向预测值。

还需要说明的是,默认情况下,梯度标志值等于1,这时候表明了需要对初始双向预测值进行梯度修正,这时候也就需要执行步骤S504,以计算出待预测的图像块的梯度值。

具体地,在一些实施例中,当所述梯度标志值等于1时,对于S504来说,所述利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值,可以包括:

若所述梯度标志值等于1,且所述梯度方向索引值等于0,则利用第二单向预测值减去第一单向预测值,获得所述图像块的梯度值;

若所述梯度标志值等于1,且所述梯度方向索引值等于1,则利用第一单向预测值减去第二单向预测值,获得所述图像块的梯度值。

这里,第一单向预测值(Pred0)表示所述图像块在第一预测方向对应的单向预测值,第二单向预测值(Pred1)表示所述图像块在第二预测方向对应的单向预测值。

需要说明的是,当梯度标志值等于1时,表明了需要对初始双向预测值进行修正;这时候,如果梯度方向索引值等于0,表明了梯度方向为正向梯度方向,可以获得图像块的梯度值为Pred1-Pred0;如果梯度方向索引值等于1,表明了梯度方向为反向梯度方向,可以获得图像块的梯度值为Pred0-Pred1。

仍以图4为例,当确定出变化趋势接近曲线1时,表明了梯度方向为正向梯度方向,即梯度方向索引值等于0,这时候可以确定一段参考帧0到参考帧1之间的梯度值(R1-R0);当确定出变化趋势接近曲线3时,表明了梯度方向为反向梯度方向,即梯度方向索引值等于1,这时候可以确定一段参考帧1到参考帧0之间的梯度值(R0-R1),后续可以根据所确定的梯度值对初始双向预测值进行修正,即执行步骤S505。

S505:根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值。

需要说明的是,初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。从执行步骤上来说,初始双向预测值可以在步骤S503获得单向预测值之后就计算出初始双向预测值,也可以在步骤S505进行修正操作之前计算出初始双向预测值,甚至还可以在步骤S504的过程中,同步计算出初始双向预测值,对此不作任何限定。

在确定出图像块的梯度值之后,可以结合预设的修正强度值对初始双向预测值进行修正,以得到最终的双向预测值。具体地,所述根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,可以包括:

根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值;

利用所确定的修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值。

可选地,在一些实施例中,所述根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值,可以包括:

利用预设的修正强度值对所述图像块的梯度值进行移位计算,获得所述修正梯度值。

可选地,在一些实施例中,所述根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值,可以包括:

将预设的修正强度值与所述图像块的梯度值进行相乘,获得所述修正梯度值。

进一步地,所述根据所述修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值,可以包括:

将所述修正梯度值与所述初始双向预测值进行叠加,得到所述图像块的双向预测值。

也就是说,可以利用移位方式来计算图像块的修正梯度值,然后根据该修正梯度值对初始双向预测值进行修正,也可以利用乘法方式来计算图像块的修正梯度值,然后根据该修正梯度值对初始双向预测值进行修正,本申请实施例不作任何限定。

以移位方式为例,预设的修正强度值可以用k表示,通常而言,k的默认值可设置为预设常数值,优选为3,或者也可以利用片(slice)级或者更高级语法对其进行定义,那么图像块的双向预测值的表示如上述式(27)所示。

进一步地,针对k的取值,除了设置为预设常数值之外,还可以通过解析码流以获取索引序号值,然后在映射列表中选择出与该索引序号值对应的k值。具体地,在一些实施例中,该方法还可以包括:

获取修正强度值对应的映射列表;其中,所述映射列表表示修正强度值与索引序号值之间的对应关系;

解析码流,获取索引序号值;

从所述映射列表中选择所述索引序号值对应的修正强度值,将所选择的修正强度值确定为所述预设的修正强度值。

需要说明的是,映射列表反映了修正强度值与索引序号值之间的对应关系,通过采用不同的修正强度值可以实现不同强度的滤波。该映射列表与编码器侧相同,比如上述的表1所示。这样,在解析码流得到索引序号值后,可以从映射列表中选择与索引序号值对应的修正强度值,从而实现最终对初始双向预测值的修正。

还需要说明的是,解码器侧的部分步骤与编码器侧相同,具体参见编码器侧的内容,这里不再详述。

本实施例提供了一种图像预测方法,该方法应用于解码器。通过解析码流,获得待解码的图像块的预测模式参数;当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。这样,可以利用图像块对应的梯度参数用以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高解码效率,进而提升了视频图像质量。

基于前述实施例相同的发明构思,参见图6,其示出了本申请实施例提供的一种编码器60的组成结构示意图。如图6所示,该编码器60可以包括第一确定单元601、第一计算单元602和第一修正单元603;其中,

第一确定单元601,配置为对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;

第一确定单元601,还配置为确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;

第一计算单元602,配置为利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

第一修正单元603,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

在上述方案中,参见图6,该编码器60还可以包括预编码单元604和第一选择单元605;其中,

预编码单元604,配置为利用多种预测模式对所述图像块进行预编码处理,获得多个预编码结果;其中,不同的预测模式对应的梯度参数不同;

第一选择单元605,配置为从所述多个预编码结果中,按照预设策略选取优选预编码结果;以及将所述优选预编码结果对应的预测模式确定为目标预测模式。

在上述方案中,第一选择单元605,具体配置为根据所述多个预编码结果,确定每一个预编码结果对应的率失真代价值;以及从所确定的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的预编码结果确定为所述优选预编码结果。

在上述方案中,所述多种预测模式包括第一预测模式、第二预测模式和第三预测模式;参见图6,该编码器60还可以包括设置单元606,配置为若所述目标预测模式为第一预测模式,则设置所述梯度参数中的梯度标志值等于0;以及若所述目标预测模式为第二预测模式,则设置所述梯度参数中的梯度标志值等于1,且所述梯度参数中的梯度方向索引值等于0;以及若所述目标预测模式为第三预测模式,则设置所述梯度参数中的梯度标志值等于1,且所述梯度参数中的梯度方向索引值等于1。

在上述方案中,第一确定单元601,还配置为当所设置的梯度标志值等于0时,将所述初始双向预测值确定为所述图像块的双向预测值。

在上述方案中,参见图6,该编码器60还可以包括第一获取单元607,配置为获取所设置的梯度标志值和梯度方向索引值;

第一计算单元602,具体配置为若所述梯度标志值等于1,且所述梯度方向索引值等于0,则利用第二单向预测值减去第一单向预测值,获得所述图像块的梯度值;以及若所述梯度标志值等于1,且所述梯度方向索引值等于1,则利用第一单向预测值减去第二单向预测值,获得所述图像块的梯度值;其中,所述第一单向预测值表示所述图像块在第一预测方向对应的单向预测值,所述第二单向预测值表示所述图像块在第二预测方向对应的单向预测值。

在上述方案中,第一确定单元601,还配置为根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值;

第一修正单元603,具体配置为利用所确定的修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值。

在上述方案中,第一计算单元602,还配置为利用预设的修正强度值对所述图像块的梯度值进行移位计算,获得所述修正梯度值。

在上述方案中,第一计算单元602,还配置为将预设的修正强度值与所述图像块的梯度值进行相乘,获得所述修正梯度值。

在上述方案中,所述预设的修正强度值为预设常数值。

在上述方案中,参见图6,该编码器60还可以包括写入单元608;其中,

第一获取单元607,还配置为获取修正强度值对应的映射列表;其中,所述映射列表表示修正强度值与索引序号值之间的对应关系;

第一计算单元602,还配置为计算所述映射列表中每一修正强度值对应的率失真代价值;

第一选择单元605,还配置为从计算得到的多个率失真代价值中选择最小率失真代价值,将所述最小率失真代价值对应的修正强度值确定为所述预设的修正强度值;

写入单元608,配置为获取所述预设的修正强度值对应的索引序号值,将所获取的索引序号值写入码流。

在上述方案中,写入单元608,还配置为若所述梯度标志值等于0,则将所述梯度标志值写入码流;以及若所述梯度标志值等于1,则将所述梯度标志值和所述梯度方向索引值均写入码流。

在上述方案中,第一获取单元607,还配置为获取所述图像块在两个预测方向的预测图像块;

第一确定单元601,还配置为根据所述图像块以及所述两个预测图像块进行运动估计,确定在两个预测方向分别对应的运动矢量;以及还配置为根据所述两个预测图像块以及所述两个运动矢量,确定在两个预测方向分别对应的单向预测值。

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

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

因此,本实施例提供了一种计算机存储介质,应用于编码器60,该计算机存储介质存储有图像预测程序,所述图像预测程序被第一处理器执行时实现前述实施例中任一项所述的方法。

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

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

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

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

对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;

确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;

利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

可以理解,本申请实施例中的第一存储器702可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(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 Rambus RAM,DRRAM)。本申请描述的系统和方法的第一存储器702旨在包括但不限于这些和任意其它适合类型的存储器。

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

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

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

本实施例提供了一种编码器,该编码器可以包括第一确定单元、第一计算单元和第一修正单元,其中,第一确定单元,配置为对待编码的图像块进行运动估计,确定所述图像块在两个预测方向分别对应的单向预测值;第一确定单元,还配置为确定所述图像块对应的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值;第一计算单元,配置为利用所确定的梯度参数以及所述在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;第一修正单元,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。这样,对于待编码的图像块而言,利用图像块对应的梯度参数可以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编码效率,进而提升了视频图像质量。

基于前述实施例相同的发明构思,参见图8,其示出了本申请实施例提供的一种解码器80的组成结构示意图。如图8所示,该解码器80可以包括解析单元801、第二确定单元802、第二计算单元803和第二修正单元804,其中,

解析单元801,配置为解析码流,获得待解码的图像块的预测模式参数;以及当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;

第二确定单元802,配置为根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;

第二计算单元803,配置为确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

第二修正单元804,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

在上述方案中,解析单元801,还配置为解析码流,获取所述图像块的梯度参数,所述梯度参数至少包括梯度标志值和梯度方向索引值。

在上述方案中,解析单元801,具体配置为解析码流,获取梯度参数中的梯度标志值;以及判断所获取的梯度标志值是否等于1,若所获取的梯度标志值等于1,则继续解析码流,获取梯度参数中的梯度方向索引值。

在上述方案中,第二确定单元802,还配置为若所述梯度标志值等于0,则将所述初始双向预测值确定为所述图像块的双向预测值。

在上述方案中,第二计算单元803,具体配置为若所述梯度标志值等于1,且所述梯度方向索引值等于0,则利用第二单向预测值减去第一单向预测值,获得所述图像块的梯度值;以及若所述梯度标志值等于1,且所述梯度方向索引值等于1,则利用第一单向预测值减去第二单向预测值,获得所述图像块的梯度值;其中,所述第一单向预测值表示所述图像块在第一预测方向对应的单向预测值,所述第二单向预测值表示所述图像块在第二预测方向对应的单向预测值。

在上述方案中,第二确定单元802,还配置为根据所述图像块的梯度值以及预设的修正强度值,确定所述图像块的修正梯度值;

第二修正单元804,具体配置为利用所确定的修正梯度值对所述初始双向预测值进行修正,得到所述图像块的双向预测值。

在上述方案中,第二计算单元803,还配置为利用预设的修正强度值对所述图像块的梯度值进行移位计算,获得所述修正梯度值。

在上述方案中,第二计算单元803,还配置为将预设的修正强度值与所述图像块的梯度值进行相乘,获得所述修正梯度值。

在上述方案中,所述预设的修正强度值为预设常数值。

在上述方案中,参见图8,该解码器80还可以包括第二获取单元805和第二选择单元806;其中,

第二获取单元805,配置为获取修正强度值对应的映射列表;其中,所述映射列表表示修正强度值与索引序号值之间的对应关系;

解析单元801,还配置为解析码流,获取索引序号值;

第二选择单元806,配置为从所述映射列表中选择所述索引序号值对应的修正强度值,将所选择的修正强度值确定为所述预设的修正强度值。

在上述方案中,第二确定单元802,还配置为根据所述运动参数中的参考图像索引,确定所述图像块在两个预测方向的预测图像块;以及还配置为根据所确定的两个预测图像块以及所述运动参数中的运动矢量,确定所述图像块在两个预测方向分别对应的单向预测值。

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

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

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

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

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

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

解析码流,获得待解码的图像块的预测模式参数;

当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;

根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;

确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;

根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。

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

可以理解,第二存储器902与第一存储器702的硬件功能类似,第二处理器903与第一处理器703的硬件功能类似;这里不再详述。

本实施例提供了一种解码器,该解码器可以包括解析单元、第二确定单元、第二计算单元和第二修正单元,其中,解析单元,配置为解析码流,获得待解码的图像块的预测模式参数;以及当所述预测模式参数指示所述图像块使用双向预测模式时,解析所述图像块的运动参数,其中,所述运动参数包括运动矢量和参考图像索引;第二确定单元,配置为根据所述运动参数,确定所述图像块在两个预测方向分别对应的单向预测值;第二计算单元,配置为确定所述图像块的梯度参数,利用所述梯度参数和所述图像块在两个预测方向分别对应的单向预测值,计算所述图像块的梯度值;第二修正单元,配置为根据所述图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到所述图像块的双向预测值,其中,所述初始双向预测值是所述在两个预测方向分别对应的单向预测值的加权和。这样,对于待解码的图像块而言,利用图像块对应的梯度参数可以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编码效率,进而提升了视频图像质量。

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

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

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

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

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

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

本申请实施例中,该方法应用于编码器或解码器。对于编码器侧,通过对待编码的图像块进行运动估计,确定出图像块在两个预测方向分别对应的单向预测值之后,根据所确定的图像块对应的梯度参数以及在两个预测方向分别对应的单向预测值,计算出图像块的梯度值;然后再根据图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到图像块的双向预测值,其中,初始双向预测值是在两个预测方向分别对应的单向预测值的加权和。对于解码器侧,通过解析码流,获得待解码的图像块的预测模式参数之后,当预测模式参数指示图像块使用双向预测模式时,再解析出图像块的运动参数;根据运动参数,确定图像块在两个预测方向分别对应的单向预测值;再根据所确定的图像块对应的梯度参数以及在两个预测方向分别对应的单向预测值,计算出图像块的梯度值;然后再根据图像块的梯度值以及预设的修正强度值对初始双向预测值进行修正,得到图像块的双向预测值。这样,可以利用图像块对应的梯度参数用以得到两个单向预测值之间的梯度值,然后根据该梯度值以及预设的修正强度值对初始双向预测值进行修正,从而使得双向预测值更准确,不仅能够提高预测结果的准确性,同时还能够提高编解码效率,进而提升了视频图像质量。

相关技术
  • MR图像预测模型的训练方法、装置、设备及存储介质
  • CT图像预测模型的训练方法、装置、设备及存储介质
  • 一种图像指纹生成方法、图像相似度比较方法及存储介质
  • 图像生成方法、装置,图像显示方法、装置和存储介质
  • 医学图像的存储方法及装置、计算机可读存储介质
  • 图像预测方法、编码器、解码器以及计算机存储介质
  • 图像预测方法、编码器、解码器以及存储介质
技术分类

06120116195822