一种编解码方法、装置及其设备与流程

文档序号:26669767发布日期:2021-09-17 22:14阅读:68来源:国知局
一种编解码方法、装置及其设备与流程

1.本技术涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。


背景技术:

2.为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。
3.在帧间编码中,可以使用运动矢量(motion vector,mv)表示当前帧视频图像的当前块与参考帧视频图像的参考块之间的相对位移。例如,当前帧的视频图像a与参考帧的视频图像b存在很强的时域相关性,在需要传输视频图像a的图像块a1(当前块)时,则可以在视频图像b中进行运动搜索,找到与图像块a1最匹配的图像块b1(即参考块),并确定图像块a1与图像块b1之间的相对位移,该相对位移也就是图像块a1的运动矢量。
4.编码端可以将运动矢量发送给解码端,不是将图像块a1发送给解码端,解码端可以根据运动矢量和图像块b1得到图像块a1。显然,由于运动矢量占用的比特数远远小于图像块a1占用的比特数,因此,上述方式可以节约大量比特开销。
5.在传统方式中,在当前块是单向块时,获得当前块的运动信息后,可以根据该运动信息进行编码/解码,从而提高编码性能。但是,在当前块是双向块时,获得当前块的双向运动信息后,可以根据双向运动信息获取来自两个不同方向的预测图像,而来自两个不同方向的预测图像往往存在镜像对称的关系,当前编码框架中未充分利用这一特性来进一步的去除冗余。也就是说,针对双向块的应用场景,目前存在编码性能比较差等问题。


技术实现要素:

6.本技术提供了一种编解码方法、装置及其设备,可以提高编码性能。
7.本技术提供一种编解码方法,所述方法包括:若当前块的特征信息满足特定条件,则执行以下步骤获取所述当前块或者所述当前块的子块的目标预测值:
8.根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值;根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;
9.根据所述水平方向速率和所述垂直方向速率获取预测补偿值;
10.根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
11.本技术提供一种编解码装置,所述装置包括:所述装置用于若当前块的特征信息满足特定条件,则获取所述当前块或者所述当前块的子块的目标预测值,所述装置包括:
12.第一确定模块,用于若当前块的特征信息满足特定条件,根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预
测值;
13.第二确定模块,用于根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;
14.第一获取模块,用于根据所述水平方向速率和所述垂直方向速率获取预测补偿值;
15.第二获取模块,用于根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
16.本技术提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现如下步骤:若当前块的特征信息满足特定条件,则执行以下步骤获取所述当前块或者所述当前块的子块的目标预测值:根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值;
17.根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;
18.根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;
19.根据所述水平方向速率和所述垂直方向速率获取预测补偿值;
20.根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
21.本技术提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现如下步骤:若当前块的特征信息满足特定条件,则执行以下步骤获取所述当前块或者所述当前块的子块的目标预测值:根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值;
22.根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;
23.根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;
24.根据所述水平方向速率和所述垂直方向速率获取预测补偿值;
25.根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
26.由以上技术方案可见,本技术实施例中,可以根据当前块的第一单向运动信息确定第一原始预测值,根据当前块的第二单向运动信息确定第二原始预测值,根据第一原始预测值和第二原始预测值确定水平方向速率和垂直方向速率,并根据水平方向速率和垂直方向速率获取预测补偿值,并根据预测补偿值获取目标预测值。上述方式能够基于光流法获取当前块或者当前块的子块的目标预测值,从而提高硬件实现友好性,带来编码性能的提高。
附图说明
27.为了更加清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本技术实施例的这些附图获得其他的附图。
28.图1a是本技术一种实施方式中的插值的示意图;
29.图1b是本技术一种实施方式中的视频编码框架的示意图;
30.图2是本技术一种实施方式中的编解码方法的流程图;
31.图3是本技术一种实施方式中的编解码方法的流程图;
32.图4是本技术一种实施方式中的当前块的子块对应的参考块的示意图;
33.图5是本技术一种实施方式中的编解码装置的结构图;
34.图6是本技术一种实施方式中的解码端设备的硬件结构图;
35.图7是本技术一种实施方式中的编码端设备的硬件结构图。
具体实施方式
36.在本技术实施例中所使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本技术。本技术实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
37.本技术实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
38.帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,利用视频空间域的相关性,使用当前图像已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。帧间预测是指,利用视频时域的相关性,由于视频序列包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,达到有效去除视频时域冗余的目的。主要视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一像素块在之前的已编码图像中寻找最佳匹配块,该过程称为运动估计(motion estimation,me)。
39.运动矢量(motion vector,mv):在帧间编码中,可以使用运动矢量表示当前编码块与其参考图像中的最佳匹配块之间的相对位移。每个划分的块都有相应的运动矢量需要传输到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是划分成小尺寸的块时,则需要消耗相当多的比特。为了降低用于编码运动矢量的比特数,则可以利用相邻图像块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后,对预测差进行编码。这样,可以有效地降低表示运动矢量的比特数。在对当前块的运动矢量编码过程中,首先,使用相邻已编码块的运动矢量预测当前块的运动矢量,然后,可以对运动矢量的预测值(mvp,motion vector prediction)与运动矢量的真正估值之间的差值(mvd,motionvector difference)进行编码,从而有效降低mv的编码比特数。
40.运动信息(motion information):由于运动矢量表示当前图像块与某个参考图像块的位置偏移,为了准确的获取指向图像块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前图像块采用了参考帧图像列表中的第
几个参考帧图像。此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
41.插值(interpolation):若当前运动矢量为非整像素精度,则无法直接从对应参考帧中拷贝已有像素值,所需像素值通过插值获得。如图1a所示,若想获得偏移为1/2像素的像素值y
1/2
,则通过周围已有像素值x插值获得。若采用抽头数为n的插值滤波器,则通过周围n个整像素插值获得。若抽头数n为8,则a
k
为滤波器系数,即加权系数。
42.运动补偿:运动补偿的过程就是通过插值或拷贝获得当前块所有预测像素值的过程。
43.视频编码框架:参见图1b所示,可以使用视频编码框架实现本技术实施例的编码端处理流程,此外,视频解码框架的示意图与图1b类似,在此不再重复赘述,而且,可以使用视频解码框架实现本技术实施例的解码端处理流程。具体的,在视频编码框架和视频解码框架中,包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
44.在传统方式中,在当前块是双向块(即当前块是采用双向预测的块)时,来自两个不同方向的预测图像往往存在镜像对称的关系,当前编码框架中未充分利用这一特性来进一步的去除冗余,从而存在编码性能比较差等问题。针对上述发现,本技术实施例中,在当前块是双向块时,提出一种基于光流法的预测信号调整方式,能够基于原始运动信息获得原始预测值,基于原始预测值,通过光流方程获得当前块的预测补偿值,基于该预测补偿值与原始预测值获得当前块的目标预测值。上述方式能够基于光流法获取当前块的目标预测值,从而提高硬件实现友好性,带来编码性能的提高,即可以提高编码性能和编码效率。
45.以下结合几个具体实施例,对本技术实施例中的编解码方法进行详细说明。
46.实施例1:参见图2所示,为编解码方法的流程示意图,该方法可以应用于解码端或者编码端,该方法通过执行以下步骤获取当前块或者当前块的子块的目标预测值。若针对当前块执行以下步骤,则可以获取当前块的目标预测值;若当前块被划分为至少一个子块,且针对当前块的每个子块执行以下步骤,则可以获取当前块的子块的目标预测值,该方法包括:
47.步骤201,若当前块的特征信息满足特定条件,则根据当前块的第一单向运动信息确定第一原始预测值,并根据当前块的第二单向运动信息确定第二原始预测值。
48.示例性的,当前块可以是双向块(即当前块是采用双向预测的块),也就是说,当前块对应的运动信息是双向运动信息,且这个双向运动信息可以包括两个不同方向的运动信息,将这两个不同方向的运动信息称为第一单向运动信息和第二单向运动信息。第一单向运动信息可以对应第一参考帧,且该第一参考帧位于当前块所处当前帧的前面;第二单向运动信息可以对应第二参考帧,且该第二参考帧位于当前块所处当前帧的后面。
49.示例性的,特征信息可以包括但不限于以下一种或者多种:运动信息属性;预测模式属性;尺寸信息;序列级开关控制信息。当然,上述只是几个示例,对此不做限制。
50.若特征信息包括运动信息属性,且运动信息属性满足如下情况的一种或者同时满足以下至少两种时,则确定运动信息属性满足特定条件;1、当前块采用双向预测,且当前块对应的两个参考帧来自不同方向;2、当前块包括多个子块,多个子块的运动信息均相同;3、当前块采用双向预测,且当前块对应的两个参考帧的加权权重相同;4、当前块采用双向预测,且当前块对应的两个参考帧与当前帧的距离相同;5、当前块采用双向预测,且当前块对应的两个参考帧的预测值的差异值小于预设阈值。当然,上述只是几个示例,对此不做限制。
51.针对情况5,还需要获取当前块对应的两个参考帧的预测值的差异值,为了获取该差异值,可以采用如下方式:根据当前块的第一单向运动信息从第一参考帧中获取第一预测块,并根据当前块的第二单向运动信息从第二参考帧中获取第二预测块;根据第一预测块的下采样后的预测值与第二预测块的下采样后的预测值的sad,获取第一参考帧与第二参考帧的预测值的差异值。或者,根据当前块的第一单向运动信息从第一参考帧中获取第一预测块,并根据当前块的第二单向运动信息从第二参考帧中获取第二预测块;根据第一预测块的预测值与第二预测块的预测值的sad,获取第一参考帧与第二参考帧的预测值的差异值。
52.若特征信息包括预测模式属性,且预测模式属性为不采用基于帧内帧间联合预测的融合模式,和/或,不采用对称运动矢量差模式,则确定预测模式属性满足特定条件。
53.若特征信息包括序列级开关控制信息,且该序列级开关控制信息为允许当前块采用双向光流模式,则确定序列级开关控制信息满足特定条件。
54.若特征信息包括尺寸信息,且尺寸信息包括宽度值、高度值和面积值中的至少一个,当尺寸信息中的宽度值、高度值和面积值中的至少一个满足相应的阈值条件时,尺寸信息满足特定条件。示例性的,尺寸信息满足如下情况的一种或者同时满足以下至少两种时,则确定尺寸信息满足特定条件;当前块的宽度值大于或等于第一阈值,当前块的宽度值小于或等于第二阈值;当前块的高度值大于或等于第三阈值,当前块的高度值小于或等于第四阈值;当前块的面积值大于或等于第五阈值,当前块的面积值小于或等于第六阈值。当然,上述只是几个示例,对此不做限制。
55.示例性的,第一阈值可以小于第二阈值,第一阈值和第二阈值均为2的x1次方,x1为正整数,对此第一阈值和第二阈值均不做限制,例如,第一阈值可以为8,第二阈值可以为128。第三阈值可以小于第四阈值,第三阈值和第四阈值也为2的x2次方,x2为正整数,对此第三阈值和第四阈值均不做限制,例如,第三阈值可以为8,第四阈值可以为128。第五阈值可以小于第六阈值,第五阈值和第六阈值也为2的x3次方,x3为正整数,对此第五阈值和第六阈值均不做限制,例如,第五阈值可以为64(即8*8),第六阈值可以为16384(即128*128)。当然,上述阈值只是示例,对这些阈值均不做限制。
56.示例性的,特征信息可以包括运动信息属性、预测模式属性、尺寸信息、序列级开关控制信息中的一种或者几种。当特征信息包括运动信息属性时,则运动信息属性满足特定条件时,可以表明特征信息满足特定条件;当特征信息包括预测模式属性时,则预测模式属性满足特定条件时,可以表明特征信息满足特定条件;当特征信息包括尺寸信息时,则尺寸信息满足特定条件时,可以表明特征信息满足特定条件;当特征信息包括序列级开关控制信息时,则序列级开关控制信息满足特定条件时,可以表明特征信息满足特定条件。
57.当特征信息包括运动信息属性、预测模式属性、尺寸信息、序列级开关控制信息中的至少两种时,例如,以特征信息包括运动信息属性和预测模式属性为例,则运动信息属性满足特定条件、且预测模式属性满足特定条件时,可以表明特征信息满足特定条件。又例如,以特征信息包括运动信息属性、尺寸信息、序列级开关控制信息为例,则运动信息属性满足特定条件、且尺寸信息满足特定条件、且序列级开关控制信息满足特定条件时,可以表明特征信息满足特定条件。当然,上述过程只是几个示例,对此不做限制。
58.示例性的,根据当前块的第一单向运动信息确定第一原始预测值,并根据当前块的第二单向运动信息确定第二原始预测值,可以包括但不限于:基于当前块的第一单向运动信息,从第一参考帧中确定第一参考块,并确定第一参考块的第一原始预测值;第一参考块的中心区域的第一原始预测值是通过对第一参考帧中的像素值进行插值得到,第一参考块的边缘区域的第一原始预测值是通过对第一参考帧中的像素值进行拷贝得到。基于当前块的第二单向运动信息,从第二参考帧中确定第二参考块,并确定第二参考块的第二原始预测值;第二参考块的中心区域的第二原始预测值是通过对第二参考帧中的像素值进行插值得到,第二参考块的边缘区域的第二原始预测值是通过对第二参考帧中的像素值进行拷贝得到。
59.例如,基于当前块的第一单向运动信息,可以从第一参考帧中确定当前块对应的第一参考块,假设当前块的大小为m*m,第一参考块的大小为n*n,n可以大于m,如m为4,n为6。可以将第一参考块划分为中心区域和边缘区域,第一参考块的中心区域是指:以第一参考块的中心点为中心,大小为m*m的区域;第一参考块的边缘区域是指:第一参考块中除了中心区域之外的其它区域。针对第一参考块的中心区域,第一参考块的中心区域的第一原始预测值是通过对第一参考帧中的像素值进行插值得到;针对第一参考块的边缘区域,第一参考块的边缘区域的第一原始预测值是通过对第一参考帧中的像素值进行拷贝得到。
60.基于当前块的第二单向运动信息,可以从第二参考帧中确定当前块对应的第二参考块,假设当前块的大小为m*m,第二参考块的大小为n*n,n可以大于m,如m为4,n为6。可以将第二参考块划分为中心区域和边缘区域,第二参考块的中心区域是指:以第二参考块的中心点为中心,大小为m*m的区域;第二参考块的边缘区域是指:第二参考块中除了中心区域之外的其它区域。针对第二参考块的中心区域,第二参考块的中心区域的第二原始预测值是通过对第二参考帧中的像素值进行插值得到;针对第二参考块的边缘区域,第二参考块的边缘区域的第二原始预测值是通过对第二参考帧中的像素值进行拷贝得到。
61.示例性的,根据当前块的第一单向运动信息确定第一原始预测值,并根据当前块的第二单向运动信息确定第二原始预测值,可以包括但不限于:基于当前块的第一单向运动信息,从第一参考帧中确定第一参考块,并确定第一参考块的第一原始预测值,所述第一原始预测值是通过对第一参考帧中的像素值进行插值得到。基于当前块的第二单向运动信息,从第二参考帧中确定第二参考块,并确定第二参考块的第二原始预测值,所述第二原始预测值是通过对第二参考帧中的像素值进行插值得到。例如,基于当前块的第一单向运动信息,可以从第一参考帧中确定当前块对应的第一参考块,假设当前块的大小为m*m,则第一参考块的大小可以为m*m。基于当前块的第二单向运动信息,可以从第二参考帧中确定当前块对应的第二参考块,假设当前块的大小为m*m,则第二参考块的大小可以为m*m。
62.步骤202,根据第一原始预测值和第二原始预测值确定水平方向速率。
63.示例性的,水平方向速率是指:当前块在参考帧上对应子块(即位于参考帧的与当前块对应的子块)的水平方向(即x方向)速率。或者,当前块的子块在参考帧上对应子块(即位于参考帧的与当前块的子块对应的子块)的水平方向(即x方向)速率。
64.示例性的,根据第一原始预测值和第二原始预测值确定水平方向速率,包括但不限于:
65.方式一、根据第一原始预测值和第二原始预测值确定水平方向梯度和的自相关系数s1、时域预测值差值与水平方向梯度和的互相关系数s3。然后,根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率。
66.方式二、若满足第一预设条件,根据第一原始预测值和第二原始预测值确定水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与垂直方向梯度和的互相关系数s6;根据互相关系数s2、速率阈值、互相关系数s6、第一放大因子和第二放大因子确定水平方向速率。若不满足第一预设条件,根据第一原始预测值和第二原始预测值确定水平方向梯度和的自相关系数s1、时域预测值差值与水平方向梯度和的互相关系数s3;根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率。
67.示例性的,第一预设条件基于互相关系数s2、垂直方向梯度和的自相关系数s5确定。
68.方式三、若满足第二预设条件,根据第一原始预测值和第二原始预测值确定水平方向梯度和的自相关系数s1、水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与水平方向梯度和的互相关系数s3、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6;根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定水平方向速率。若不满足第二预设条件,则根据第一原始预测值和第二原始预测值确定水平方向梯度和的自相关系数s1、时域预测值差值与水平方向梯度和的互相关系数s3;根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率。
69.示例性的,第二预设条件基于互相关系数s2、自相关系数s5确定。
70.步骤203,根据第一原始预测值和第二原始预测值确定垂直方向速率。
71.示例性的,垂直方向速率是指:当前块在参考帧上对应子块(即位于参考帧的与当前块对应的子块)的垂直方向(即y方向)速率。或者,当前块的子块在参考帧上对应子块(即位于参考帧的与当前块的子块对应的子块)的垂直方向(即y方向)速率。
72.示例性的,根据第一原始预测值和第二原始预测值确定垂直方向速率,包括但不限于:
73.方式一、根据第一原始预测值和第二原始预测值确定水平方向梯度和与垂直方向梯度和的互相关系数s2、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6。然后,可以根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、水平方向速率、第一放大因子和第二放大因子确定垂直方向速率。
74.方式二、根据第一原始预测值和第二原始预测值获取未进行截断处理的未截断水平方向速率,并根据所述未截断水平方向速率确定垂直方向速率。
75.示例性的,可以根据第一原始预测值和第二原始预测值确定水平方向梯度和的自
相关系数s1、水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与水平方向梯度和的互相关系数s3、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6。然后,根据自相关系数s1、互相关系数s3、第一放大因子和第二放大因子确定未截断水平方向速率,并根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、未截断水平方向速率、第一放大因子和第二放大因子确定垂直方向速率。
76.方式三、当满足第三预设条件时,根据第一原始预测值和第二原始预测值确定垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6;然后,根据自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定垂直方向速率。当不满足第三预设条件时,根据第一原始预测值和第二原始预测值确定水平方向梯度和与垂直方向梯度和的互相关系数s2、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6;然后,根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、水平方向速率、第一放大因子和第二放大因子确定垂直方向速率。
77.示例性的,第三预设条件可以基于所述水平方向速率确定。
78.步骤202和步骤203中,可以根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子,确定水平方向梯度和、垂直方向梯度和、时域预测值差值;根据水平方向梯度和、垂直方向梯度和、时域预测值差值,确定水平方向梯度和的自相关系数s1、水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与水平方向梯度和的互相关系数s3、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6。
79.示例性的,互相关系数s2可以位于第一互相关系数阈值与第二互相关系数阈值之间;互相关系数s6可以位于第三互相关系数阈值与第四互相关系数阈值之间。
80.例如,若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s2小于第一互相关系数阈值,则将互相关系数s2更新为第一互相关系数阈值;若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s2大于第二互相关系数阈值,则将互相关系数s2更新为第二第二互相关系数阈值;若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s2大于或等于第一互相关系数阈值、小于或者等于第二互相关系数阈值,则保持互相关系数s2不变。
81.若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s6小于第三互相关系数阈值,则将互相关系数s6更新为第三互相关系数阈值;若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s6大于第四互相关系数阈值,则将互相关系数s6更新为第四互相关系数阈值;若根据第一原始预测值、第二原始预测值、第一放大因子和第二放大因子得到的互相关系数s6大于或等于第三互相关系数阈值、小于或者等于第四互相关系数阈值,则保持互相关系数s6不变。
82.示例性的,第一放大因子可以为5与(bd

7)中的较小值,或者,1与(bd

11)中的较大值。当然,上述只是第一放大因子的示例,对此不做限制,可以根据经验配置。
83.示例性的,第二放大因子可以为8与(bd

4)中的较小值,或者,4与(bd

8)中的较大值。当然,上述只是第二放大因子的示例,对此不做限制,可以根据经验配置。
84.示例性的,速率阈值可以为2的m次方,m为13与bd的差值,或者,5与(bd

7)中的较大值。当然,上述只是速率阈值的示例,对此不做限制,可以根据经验配置。
85.示例性的,bd(bit depth)为比特深度,表示为每个色度或亮度像素值所需的比特宽度。
86.步骤204,根据水平方向速率和垂直方向速率获取预测补偿值。
87.示例性的,根据水平方向速率和垂直方向速率获取预测补偿值,可以包括但不限于:根据第一原始预测值、第二原始预测值和梯度右移位数,确定水平方向梯度和垂直方向梯度,并根据水平方向速率、垂直方向速率、水平方向梯度和所述垂直方向梯度,获取预测补偿值。
88.示例性的,梯度右移位数可以为2与(14

bd)中的较大值,或者,6与(bd

6)中的较大值。当然,上述只是梯度右移位数的示例,对此不做限制,可以根据经验配置。
89.步骤205,根据第一原始预测值、第二原始预测值和预测补偿值获取目标预测值。
90.示例性的,若上述方法用于获取当前块的目标预测值,则:若当前块的特征信息满足特定条件,则根据当前块的第一单向运动信息确定所述当前块对应的第一原始预测值,并根据当前块的第二单向运动信息确定所述当前块对应的第二原始预测值。根据第一原始预测值和第二原始预测值确定所述当前块对应的水平方向速率,并根据第一原始预测值和第二原始预测值确定所述当前块对应的垂直方向速率。然后,根据水平方向速率和垂直方向速率获取所述当前块对应的预测补偿值,并根据第一原始预测值、第二原始预测值和预测补偿值获取所述当前块对应的目标预测值。至此,成功获取到所述当前块对应的目标预测值。
91.示例性的,若当前块被划分为至少一个子块,且上述方法用于获取当前块的每个子块的目标预测值,则:若当前块的特征信息满足特定条件,针对所述当前块的每个子块,根据所述子块的第一单向运动信息(与当前块的第一单向运动信息相同)确定所述子块对应的第一原始预测值,并根据所述子块的第二单向运动信息(与当前块的第二单向运动信息相同)确定所述子块对应的第二原始预测值。根据第一原始预测值和第二原始预测值确定所述子块对应的水平方向速率,根据第一原始预测值和第二原始预测值确定所述子块对应的垂直方向速率。然后,根据水平方向速率和垂直方向速率获取所述子块对应的预测补偿值,并根据第一原始预测值、第二原始预测值和预测补偿值获取所述子块对应的目标预测值。
92.至此,成功获取到所述子块对应的目标预测值。在得到所述当前块的每个子块的目标预测值之后,实际上,就是得到了所述当前块的目标预测值。
93.由以上技术方案可见,本技术实施例中,可以根据当前块的第一单向运动信息确定第一原始预测值,根据当前块的第二单向运动信息确定第二原始预测值,根据第一原始预测值和第二原始预测值确定水平方向速率和垂直方向速率,并根据水平方向速率和垂直方向速率获取预测补偿值,并根据预测补偿值获取目标预测值。上述方式能够基于光流法获取当前块或者当前块的子块的目标预测值,从而提高硬件实现友好性,带来编码性能的提高。
94.实施例2:本技术实施例中提出一种编解码方法,可以应用于解码端或者编码端,参见图3所示,为编解码方法的流程示意图。示例性的,若当前块的特征信息满足特定条件,
则可以针对当前块的每个子块执行以下步骤,以获取当前块的每个子块的目标预测值。
95.步骤301,若当前块的特征信息满足特定条件,则根据当前块的第一单向运动信息(即当前块的子块的第一单向运动信息)确定子块的第一原始预测值,并根据当前块的第二单向运动信息(即当前块的子块的第二单向运动信息)确定子块的第二原始预测值。
96.示例性的,若当前块是双向块(即当前块是采用双向预测的块),则可以获取当前块对应的双向运动信息,对此获取方式不做限制。这个双向运动信息包括两个不同方向的运动信息,将两个不同方向的运动信息称为第一单向运动信息(如第一运动矢量和第一参考帧索引)和第二单向运动信息(如第二运动矢量和第二参考帧索引)。基于第一单向运动信息可以确定第一参考帧(如参考帧0),且第一参考帧位于当前块所处当前帧的前面;基于第二单向运动信息可以确定第二参考帧(如参考帧1),且第二参考帧位于当前块所处当前帧的后面。
97.示例性的,针对当前块的每个子块,该子块的第一单向运动信息与当前块的第一单向运动信息相同,该子块的第二单向运动信息与当前块的第二单向运动信息相同。
98.示例性的,特征信息可以包括以下一种或者多种:运动信息属性;预测模式属性;尺寸信息;序列级开关控制信息,关于特征信息满足特定条件,参见步骤201,在此不再赘述。
99.示例性的,根据当前块的第一单向运动信息确定子块的第一原始预测值,并根据当前块的第二单向运动信息确定子块的第二原始预测值,可以包括:基于当前块的第一单向运动信息,从第一参考帧中确定与当前块的子块对应的第一参考块,并确定所述第一参考块的第一原始预测值i
(0)
(x,y);基于当前块的第二单向运动信息,从第二参考帧中确定与当前块的子块对应的第二参考块,并确定所述第二参考块的第二原始预测值i
(1)
(x,y)。关于第一原始预测值和第二原始预测值的确定方式,可以参见步骤201,在此不再赘述。
100.步骤302,根据子块的第一原始预测值和第二原始预测值确定水平方向梯度和、垂直方向梯度和、时域预测值差值。例如,根据子块的第一原始预测值、子块的第二原始预测值、第一放大因子和第二放大因子,确定水平方向梯度和、垂直方向梯度和、时域预测值差值。
101.步骤303,根据水平方向梯度和、垂直方向梯度和、时域预测值差值,确定水平方向梯度和的自相关系数s1(后续称为自相关系数s1)、水平方向梯度和与垂直方向梯度和的互相关系数s2(后续称为互相关系数s2)、时域预测值差值与水平方向梯度和的互相关系数s3(后续称为互相关系数s3)、垂直方向梯度和的自相关系数s5(后续称为自相关系数s5)、时域预测值差值与垂直方向梯度和的互相关系数s6(后续称为互相关系数s6)。
102.步骤304,根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的水平方向速率。
103.步骤305,根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的垂直方向速率。
104.步骤306,根据水平方向速率和垂直方向速率获取当前块的子块的预测补偿值。
105.步骤307,根据当前块的子块的第一原始预测值、当前块的子块的第二原始预测值和当前块的子块的预测补偿值,获取当前块的子块的目标预测值。
106.示例性的,步骤301

步骤307的流程,可以参见实施例1,在此不再赘述。
107.实施例3:编码端/解码端需要判断当前块的特征信息是否满足特定条件。如果是,则采用本技术实施例的技术方案,获取当前块或者当前块的子块的目标预测值,这个技术方案也可以称为双向光流模式。如果否,则不需要采用本技术提出的目标预测值获取方式。
108.当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
109.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
110.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
111.实施例4:当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
112.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
113.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
114.当前块包括多个子块,多个子块的运动信息均相同,也就是说,当前块的每个子块的运动信息可以完全一样,即当前块不采用子块运动信息模式。
115.示例性的,当前块不采用子块运动信息模式,可以包括:当前块不采用affine模式或sbtmvp模式;affine模式为采用仿射运动模型模式,sbtmvp(subblock

based temporal motion vector prediction)模式为在时域获取整块运动信息的模式。在当前块采用affine模式或sbtmvp模式时,当前块内部的各个子块的运动信息,大概率不完全一样,因此,当前块可以不采用affine模式或sbtmvp模式。
116.实施例5:当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
117.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
118.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
119.当前块包括多个子块,多个子块的运动信息均相同,也就是说,当前块的每个子块的运动信息可以完全一样,即当前块不采用子块运动信息模式。
120.当前块采用双向预测,且当前块对应的两个参考帧的加权权重相同。
121.实施例6:当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
122.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
123.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
124.当前块包括多个子块,多个子块的运动信息均相同,也就是说,当前块的每个子块的运动信息可以完全一样,即当前块不采用子块运动信息模式。
125.当前块采用双向预测,且当前块对应的两个参考帧的加权权重相同。
126.当前块不采用ciip模式(基于帧内帧间联合预测的融合模式)。
127.实施例7:当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
128.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前
块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
129.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
130.当前块包括多个子块,多个子块的运动信息均相同,也就是说,当前块的每个子块的运动信息可以完全一样,即当前块不采用子块运动信息模式。
131.当前块采用双向预测,且当前块对应的两个参考帧的加权权重相同。
132.当前块不采用smvd(symmetric motion vector difference,对称运动矢量差)模式,smvd模式中双向运动信息中的两个mvd是对称的,即只需要编码其中一个运动矢量差mvd,另一个运动矢量差为负的mvd。
133.实施例8:当特征信息至少同时满足下面条件时,确定当前块的特征信息满足特定条件。
134.序列级开关控制信息为允许当前块采用双向光流模式,也就是说,序列级控制允许双向光流模式启用,即序列级控制开关为开,表示允许当前块采用双向光流模式。
135.当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,也就是说,当前块对应的一个参考帧位于当前帧之前,当前块对应的另一个参考帧位于当前帧之后。
136.当前块的尺寸信息(如宽度值、高度值、面积值等)在限定范围内。
137.当前块包括多个子块,多个子块的运动信息均相同,也就是说,当前块的每个子块的运动信息可以完全一样,即当前块不采用子块运动信息模式。
138.当前块采用双向预测,且当前块对应的两个参考帧的加权权重相同。
139.实施例9:将上述实施例3

实施例8中的条件“当前块采用双向预测,且当前块对应的两个参考帧来自不同方向”,修改为“当前块采用双向预测,且当前块对应的两个参考帧来自不同方向,且当前块对应的两个参考帧与当前帧的距离相同”。
140.例如,若当前帧的显示顺序号为poc,当前块对应的两个参考帧的显示顺序号分别为poc0和poc1,则两个参考帧来自不同方向,等同于(poc

poc0)*(poc

poc1)<0,两个参考帧与当前帧的距离相同,等同于(poc

poc0)的值等于(poc1

poc)的值。
141.实施例10:当特征信息至少满足下面条件时,确定当前块的特征信息满足特定条件。
142.序列级开关控制信息为允许当前块采用双向光流模式,也就是说,序列级控制允许双向光流模式启用,即序列级控制开关为开,表示允许当前块采用双向光流模式。
143.实施例11:当特征信息至少满足下面条件时,确定当前块的特征信息满足特定条件。
144.当前块采用双向预测,且当前块对应的两个参考帧的预测值的差异值可以小于预设阈值th_sad。示例性的,可以采用如下方式获取当前块对应的两个参考帧的预测值的差异值:
145.方式一、根据当前块的第一单向运动信息从第一参考帧中获取与当前块的子块对应的第一预测块,并根据当前块的第二单向运动信息从第二参考帧中获取与当前块的子块对应的第二预测块;根据第一预测块的预测值与第二预测块的预测值的sad(sum of absolute difference,绝对差值和),获取第一参考帧与第二参考帧的预测值的差异值。
146.在方式一中,预测值的差异值为第一预测块的预测值(后续记为pred0)与第二预测块的预测值(后续记为pred1)的sad,即pred0和pred1中所有像素的sad。例如,可以通过
如下公式确定第一参考帧与第二参考帧的预测值的差异值,在该公式中,pred0(i,j)为pred0的第i列,第j行的pred0预测值,pred1(i,j)为pred1的第i列,第j行的pred1预测值,n为像素总数,abs(x)表示x的绝对值,h表示高度值,w表示宽度值。
[0147][0148]
方式二、根据当前块的第一单向运动信息从第一参考帧中获取与当前块的子块对应的第一预测块,并根据当前块的第二单向运动信息从第二参考帧中获取与当前块的子块对应的第二预测块;根据第一预测块的下采样后的预测值(即对第一预测块的预测值进行下采样后,得到的预测值)与第二预测块的下采样后的预测值(即对第二预测块的预测值进行下采样后,得到的预测值)的sad,获取第一参考帧与第二参考帧的预测值的差异值。
[0149]
在方式二中,预测值的差异值为第一预测块的下采样n倍后的预测值(后续记为pred0)与第二预测块的下采样n倍后的预测值(后续记为pred1)的sad。例如,可以通过如下公式确定第一参考帧与第二参考帧的预测值的差异值,在该公式中,pred0(i,j)为pred0的第i列,第j行的pred0预测值,pred1(i,j)为pred1的第i列,第j行的pred1预测值,n为像素总数,abs(x)表示x的绝对值,h表示高度值,w表示宽度值,n为正整数,优选为2。
[0150][0151]
实施例12:在上述实施例中,当前块的尺寸信息在限定范围内,可为如下情况的一种:
[0152]
情况一、当前块的宽度值在第一区间[wmin,wmax]的范围内;当前块的高度值位于第二区间[hmin,hmax]的范围内;wmin、wmax、hmin、hmax均为2的n1次方,n1为大于等于1的整数;例如,wmin优选为8,wmax优选为128,hmin优选为8,hmax优选为128。
[0153]
当前块的面积值位于第三区间[smin,smax]的范围内;smin、smax均为2的n2次方,n2为大于等于1的整数;例如,smin优选为64,smax优选为128*128=16384。
[0154]
在上述实施例中,[a,b]表示大于等于a,且小于等于b。
[0155]
情况二、当前块的宽度值在第一区间[wmin,wmax]的范围内;wmin、wmax均为2的n1次方,n1为大于等于1的整数;例如,wmin优选为8,wmax优选为128。
[0156]
情况三、当前块的高度值位于第二区间[hmin,hmax]的范围内;hmin、hmax均为2的n1次方,n1为大于等于1的整数;例如,hmin优选为8,hmax优选为128。
[0157]
示例性的,若满足如下任何一种条件,则当前块对应的两个参考帧的加权权重相同:
[0158]
条件1:当前块不采用允许不同加权权重的方法。
[0159]
条件2:当前块允许采用不同加权权重的方法(如块级加权预测方法bcw(bi

prediction with cu based weighting)启用),且当前块的两个加权权重完全一样。
[0160]
条件3:当前块所在当前帧不采用不同加权权重的方法。
[0161]
条件4:当前块所在当前帧允许采用不同加权权重的方法(如帧级加权预测方法启用),且当前帧的两个加权权重完全一样。
[0162]
实施例13:编码端/解码端需要根据当前块的第一单向运动信息确定子块的第一原始预测值,并根据当前块的第二单向运动信息确定子块的第二原始预测值。例如,基于当
前块的第一单向运动信息,从第一参考帧中确定与当前块的子块对应的第一参考块,并确定所述第一参考块的第一原始预测值i
(0)
(x,y);基于当前块的第二单向运动信息,从第二参考帧中确定与当前块的子块对应的第二参考块,并确定所述第二参考块的第二原始预测值i
(1)
(x,y)。
[0163]
例如,基于当前块的第一单向运动信息,从第一参考帧中确定第一参考块,并确定第一参考块的第一原始预测值i
(0)
(x,y);第一参考块的中心区域的第一原始预测值i
(0)
(x,y)是通过对第一参考帧中的像素值进行插值得到,第一参考块的边缘区域的第一原始预测值i
(0)
(x,y)是通过对第一参考帧中的像素值进行拷贝得到。基于当前块的第二单向运动信息,从第二参考帧中确定第二参考块,并确定第二参考块的第二原始预测值i
(1)
(x,y);第二参考块的中心区域的第二原始预测值i
(1)
(x,y)是通过对第二参考帧中的像素值进行插值得到,第二参考块的边缘区域的第二原始预测值i
(1)
(x,y)是通过对第二参考帧中的像素值进行拷贝得到。
[0164]
参见图4所示,假设子块的大小为4*4,第一参考块的大小为6*6,第一参考块的中心区域是指:以第一参考块的中心点为中心,大小为4*4的区域,第一参考块的中心区域的第一原始预测值是通过对第一参考帧中的像素值进行插值得到,对此不再赘述。第一参考块的边缘区域是指:第一参考块中除了中心区域之外的其它区域(即中心区域之外,上下左右各1行1列的区域),第一参考块的边缘区域的第一原始预测值是通过对第一参考帧中的像素值进行拷贝得到,在图4中,示出了将第一参考帧中的像素点的像素值,拷贝到第一参考块的边缘区域。当然,图4只是一个示例,还可以利用其它像素点的像素值进行拷贝。
[0165]
显然,在上述方式中,针对第一参考块的边缘区域,可以通过第一参考帧中最近的整像素值拷贝获取,以避免额外的插值过程,间接地避免访问额外的参考像素。
[0166]
关于第二参考块的中心区域的第二原始预测值、第二参考块的边缘区域的第二原始预测值,第二原始预测值的获取过程可以参见第一原始预测值的获取过程,在此不再重复赘述。
[0167]
例如,基于当前块的第一单向运动信息,从第一参考帧中确定第一参考块,确定第一参考块的第一原始预测值,第一参考块的第一原始预测值均是通过对第一参考帧中的像素值进行插值得到。基于当前块的第二单向运动信息,从第二参考帧中确定第二参考块,确定第二参考块的第二原始预测值,第二参考块的第二原始预测值是通过对第二参考帧中的像素值进行插值得到。例如,假设子块的大小为4*4,第一参考块的大小为4*4,第二参考块的大小为4*4,第一参考块的所有区域的第一原始预测值是通过对第一参考帧中的像素值进行插值得到,第二参考块的所有区域的第一原始预测值是通过对第一参考帧中的像素值进行插值得到。
[0168]
实施例14:在得到子块的第一原始预测值和子块的第二原始预测值后,编码端/解码端根据子块的第一原始预测值和第二原始预测值确定水平方向梯度和、垂直方向梯度和、时域预测值差值。例如,根据子块的第一原始预测值、子块的第二原始预测值、第一放大因子和第二放大因子,确定水平方向梯度和、垂直方向梯度和、时域预测值差值。例如,通过公式(1)确定水平方向梯度和,通过公式(2)确定垂直方向梯度和,通过公式(3)确定时域预测值差值:
[0169][0170][0171]
θ(i,j)=(i
(1)
(i,j)>>n
b
)

(i
(0)
(i,j)>>n
b
)
ꢀꢀ
(3)
[0172]
示例性的,表示水平方向梯度,表示垂直方向梯度,针对公式(1)

公式(3)中的如下参数:和可以通过方式(4)和公式(5)确定。
[0173][0174][0175]
ψ
x
(i,j)表示水平方向梯度和,ψ
y
(i,j)表示垂直方向梯度和,θ(i,j)表示时域预测值差值。
[0176]
i
(0)
(x,y)表示子块的第一原始预测值,i
(1)
(x,y)表示子块的第二原始预测值。假设子块的大小为4*4,参见实施例13,i
(0)
(x,y)是大小为4*4的第一参考块的第一原始预测值,或大小为6*6的第一参考块的第一原始预测值,i
(1)
(x,y)是大小为4*4的第二参考块的第二原始预测值,或大小为6*6的第二参考块的第二原始预测值,以i
(0)
(x,y)是大小为4*4的第一参考块的第一原始预测值,i
(1)
(x,y)是大小为4*4的第二参考块的第二原始预测值为例。i
(k)
(i,j)表示坐标(i,j)的像素值,如i
(0)
(i,j)表示第一参考块中坐标(i,j)的像素值,对应子块的第一原始预测值,i
(1)
(i,j)表示第二参考块中坐标(i,j)的像素值,对应子块的第二原始预测值。
[0177]
n
a
可以表示第一放大因子,第一放大因子n
a
可以为5与(bd

7)中的较小值,或者,1与(bd

11)中的较大值。n
b
可以表示第二放大因子,第二放大因子n
b
可以为8与(bd

4)中的较小值,或者,4与(bd

8)中的较大值。shift1可以表示梯度右移位数,梯度右移位数shift1可以为2与(14

bd)中的较大值,或者,6与(bd

6)中的较大值。
[0178]
>>表示右移,如>>n
a
表示右移n
a
,即,除以2的n
a
次方。>>n
b
表示右移n
b
,也就是说,除以2的n
b
次方。>>shift1表示右移shift1,即,除以2的shift1次方。
[0179]
bd(bit depth)可以为比特深度,可以表示为每个色度或亮度像素值所需的比特宽度。例如,bd可以为10或者8,通常情况下,bd可以为已知值。
[0180]
实施例15:在得到水平方向梯度和、垂直方向梯度和、时域预测值差值后,编码端/解码端还可以根据水平方向梯度和、垂直方向梯度和、时域预测值差值,确定水平方向梯度和的自相关系数s1(后续称自相关系数s1)、水平方向梯度和与垂直方向梯度和的互相关系数s2(后续称互相关系数s2)、时域预测值差值与水平方向梯度和的互相关系数s3(后续称互相关系数s3)、垂直方向梯度和的自相关系数s5(后续称自相关系数s5)、时域预测值差值与垂直方向梯度和的互相关系数s6(后续称互相关系数s6)。例如,可以通过如下公式确定自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6。
[0181]
s1=∑
(i,j)∈ω
ψ
x
(i,j)
·
ψ
x
(i,j)
ꢀꢀꢀꢀꢀ
(6)
[0182]
s2=∑
(i,j)∈ω
ψ
x
(i,j)
·
ψ
y
(i,j)
ꢀꢀꢀꢀꢀ
(7)
[0183]
s3=∑
(i,j)∈ω
θ(i,j)
·
ψ
x
(i,j)
ꢀꢀꢀꢀꢀꢀ
(8)
[0184]
s5=∑
(i,j)∈ω
ψ
y
(i,j)
·
ψ
y
(i,j)
ꢀꢀꢀꢀꢀ
(9)
[0185]
s6=∑
(i,j)∈ω
θ(i,j)
·
ψ
y
(i,j)
ꢀꢀꢀꢀꢀ
(10)
[0186]
ψ
x
(i,j)表示水平方向梯度和,ψ
y
(i,j)表示垂直方向梯度和,θ(i,j)表示时域预测值差值。
[0187]
假设子块的大小为4*4,ω表示4*4子块对应的窗口,或者,ω表示4*4子块周围的6*6窗口。针对ω中的每个坐标点(i,j),可以先通过上述实施例确定ψ
x
(i,j)、ψ
y
(i,j)和θ(i,j),然后,根据ψ
x
(i,j)、ψ
y
(i,j)和θ(i,j),确定s1、s2、s3、s5、s6。
[0188]
实施例16:在得到互相关系数s2和互相关系数s6之后,可以将互相关系数s2限制在第一互相关系数阈值与第二互相关系数阈值之间,例如,若互相关系数s2小于第一互相关系数阈值,则可以将互相关系数s2更新为第一互相关系数阈值,若互相关系数s2大于第二互相关系数阈值,则可以将互相关系数s2更新为第二互相关系数阈值。可以将互相关系数s6限制在第三互相关系数阈值与第四互相关系数阈值之间,例如,若互相关系数s6小于第三互相关系数阈值,则可以将互相关系数s6更新为第三互相关系数阈值,若互相关系数s6大于第四互相关系数阈值,则可以将互相关系数s6更新为第四互相关系数阈值;第一互相关系数阈值可以小于第二互相关系数阈值,第三互相关系数阈值可以小于第四互相关系数阈值。
[0189]
示例性的,可以对互相关系数s2和互相关系数s6进行如下大小限制,从而防止中间结果溢出,即使得位宽不超过一定范围。

(1<<ths2)表示第一阈值,1<<ths2表示第二阈值,

(1<<ths6)表示第三阈值,1<<ths6表示第四阈值。例如,为了防止位宽超过32比特,则ths2可以为25,ths6可以为27。当然,上述数值只是一个示例,对此不做限制。
[0190]
s2=clip3(

(1<<ths2),(1<<ths2),s2)
ꢀꢀꢀꢀꢀ
(11)
[0191]
s6=clip3(

(1《ths6),(1《ths6),s6)
ꢀꢀꢀꢀꢀ
(12)
[0192]
clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变。因此,公式(11)表示,若s2小于

(1《ths2),则s2为

(1《ths2),若s2大于(1《ths2),则s2为(1<<ths2),否则,s2保持不变。同理,公式(12)表示,若s6小于

(1<<ths6),则s6为

(1<<ths6),若s6大于(1《ths6),则s6为(1《ths6),否则,s6保持不变。<<表示左移。
[0193]
实施例17:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的水平方向速率。可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的垂直方向速率。
[0194]
例如,可以根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率,参见如下公式所示,为基于上述参数确定水平方向速率的示例。
[0195][0196]
在上述公式中,若s1>0成立,则
若s1>0不成立,则v
x
=0。v
x
表示水平方向速率,th

bio
表示速率阈值,即用于将水平方向速率v
x
限制在

th

bio
与th

bio
之间,即水平方向速率v
x
大于或者等于

th

bio
,水平方向速率v
x
小于或者等于th

bio
。速率阈值th

bio
可以为2的m次方,m为13与bd的差值,或者,5与(bd

7)中的较大值。例如,th

bio
=2
13

bd
或者th

bio
=2
max(5,bd

7)
,bd为比特深度。
[0197]
n
a
可以表示第一放大因子,第一放大因子n
a
可以为5与(bd

7)中的较小值,或者,1与(bd

11)中的较大值。n
b
可以表示第二放大因子,第二放大因子n
b
可以为8与(bd

4)中的较小值,或者,4与(bd

8)中的较大值。>>表示右移,为向下取整。
[0198]
第一放大因子n
a
和第二放大因子n
b
均可以根据经验配置,第二放大因子n
b
可以大于第一放大因子n
a
。第一放大因子n
a
和第二放大因子n
b
用于放大水平方向速率v
x
的取值区间,例如,假设n
b

n
a
为3,则为8,则可以将水平方向速率v
x
的取值区间放大8倍,假设n
b

n
a
为4,则为16,则可以将水平方向速率v
x
的取值区间放大16倍,以此类推。
[0199]
clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为b,为x,综上所述,若为x,综上所述,若大于

th

bio
,且小于th

bio
,则水平方向速率v
x

[0200]
例如,可以根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、水平方向速率、第一放大因子和第二放大因子确定垂直方向速率,参见如下公式所示。
[0201][0202]
v
y
表示垂直方向速率,v
x
表示水平方向速率,th

bio
表示速率阈值,即用于将垂直方向速率限制在

th

bio
与th

bio
之间,即垂直方向速率大于或者等于

th

bio
,垂直方向速率小于或者等于th

bio
。速率阈值th

bio
可以为2的m次方,m为13与bd的差值,或者,5与(bd

7)中的较大值。例如,th

bio
=2
13

bd
或者th

bio
=2
max(5,bd

7)
,bd为比特深度。
[0203]
n
a
可以表示第一放大因子,第一放大因子n
a
可以为5与(bd

7)中的较小值,或者,1与(bd

11)中的较大值。n
b
可以表示第二放大因子,第二放大因子n
b
可以为8与(bd

4)中的较小值,或者,4与(bd

8)中的较大值。>>表示右移,为向下取整。
[0204]
第一放大因子n
a
和第二放大因子n
b
均可以根据经验配置,第二放大因子n
b
可以大于第一放大因子n
a
。第一放大因子n
a
和第二放大因子n
b
用于放大垂直方向速率v
y
的取值区间,例如,假设n
b

n
a
为3,则为8,则可以将垂直方向速率v
y
的取值区间放大8倍,假设n
b

n
a
为4,则为16,则可以将垂直方向速率v
y
的取值区间放大16倍,以此类推。
[0205]
clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为为
x,综上所述,若大于

th

bio
,且小于th

bio
,则垂直方向速率v
y

[0206]
示例性的,在上述公式中,
[0207]
实施例18:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的水平方向速率。可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的垂直方向速率。
[0208]
例如,可以根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率,参见如下公式所示,为基于上述参数确定水平方向速率的示例。
[0209][0210]
公式(15)与公式(13)相比,去除了前面的负号,其它内容与公式(13)相同,各参数的含义也与公式(13)相同,在此不再重复赘述。
[0211]
例如,可以根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、水平方向速率、第一放大因子和第二放大因子确定垂直方向速率,参见如下公式所示。
[0212][0213]
前面的负号,其它内容与公式(14)相同,各参数的含义也与公式(14)相同,在此不再重复赘述。
[0214]
实施例19:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的水平方向速率。
[0215]
例如,若满足第一预设条件,则可以根据互相关系数s2、速率阈值、互相关系数s6、第一放大因子和第二放大因子确定水平方向速率。若不满足第一预设条件,则可以根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率。第一预设条件基于互相关系数s2、自相关系数s5确定,参见如下公式所示:
[0216]
当满足第一预设条件时,
[0217][0218]
当不满足第一预设条件时,
[0219][0220]
上述第一预设条件可以包括:|s2|>k|s5|,|.|表示取绝对值,k为阈值,可任意设
置,如设为8。
[0221]
当满足第一预设条件时,若s2==0成立,则=0成立,则若s2==00不成立,则v
x
=0。v
x
表示水平方向速率,th

bio
表示速率阈值,n
a
表示第一放大因子,n
b
表示第二放大因子,》表示右移,为向下取整。
[0222]
clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为b,为x,综上所述,若为x,综上所述,若大于

th

bio
,且小于th

bio
,则水平方向速率v
x

[0223]
当不满足第一预设条件时,公式(18)与公式(13)相同,在此不再重复赘述。
[0224]
实施例20:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的水平方向速率。
[0225]
例如,若满足第二预设条件,则可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定水平方向速率。若不满足第二预设条件,则可以根据自相关系数s1、速率阈值、互相关系数s3、第一放大因子和第二放大因子确定水平方向速率。第二预设条件基于互相关系数s2、自相关系数s5确定,参见如下公式所示:当满足第二预设条件时,则s
tmp
=s1·
s5‑
s2·
s2,
[0226][0227]
当不满足第二预设条件时,则
[0228][0229]
当满足第二预设条件时,先根据s1、s2、s5确定s
tmp
,具体确定方式参见上述公式,然后,若s
tmp
==0成立,则==0成立,则若s
tmp
==0不成立,则v
x
=0。v
x
表示水平方向速率,th

bio
表示速率阈值,n
a
表示第一放大因子,n
b
表示第二放大因子,>>表示右移,为向下取整。
[0230]
在上述公式中,clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为b,为x,综上所述,若大于

th

bio
,且小于th

bio
,则水平方向速率v
x
可以为
[0231]
当不满足第二预设条件时,公式(20)与公式(13)相同,在此不再重复赘述。
[0232]
上述第二预设条件可以包括但不限于:|s2|>k|s5|,|.|表示取绝对值,k为阈值,可任意设置,如设为8。当然,这个第二预设条件只是一个示例,对此不做限制。
[0233]
实施例21:针对实施例19,当不满足第一预设条件时,水平方向速率的确定公式变
为公式(15),针对实施例20,当不满足第二预设条件时,水平方向速率的确定公式变为公式(15)。
[0234]
实施例22:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的垂直方向速率。
[0235]
例如,可以根据自相关系数s1、互相关系数s3、第一放大因子和第二放大因子确定未截断水平方向速率,并根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、所述未截断水平方向速率、第一放大因子和第二放大因子确定垂直方向速率。
[0236]
参见如下公式所示:
[0237][0238][0239]
从上述公式可以看出,若s1>0成立,则若s1>0不成立,则v
x_org
=0。与上述实施例中的v
x
相比,本实施例中,并未使用速率阈值th

bio
将水平方向速率限制在

th

bio
与th

bio
之间,因此,将v
x_org
称为未截断水平方向速率,即未进行截断处理,也就是说,这个未截断水平方向速率v
x_org
没有被限制在

th

bio
与th

bio
之间。
[0240][0241]
v
y
表示垂直方向速率,v
x_org
表示未截断水平方向速率,th

bio
表示速率阈值,n
a
表示第一放大因子,n
b
表示第二放大因子,>>表示右移,为向下取整。clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为b,为x,综上所述,若大于

th

bio
,且小于th

bio
,则垂直方向速率v
y

[0242]
示例性的,在上述公式中,
[0243]
实施例23:在得到自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6后,可以根据自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6中的一个或者多个,确定当前块的子块在参考帧上对应子块的垂直方向速率。
[0244]
例如,当满足第三预设条件时,根据自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定垂直方向速率。当不满足第三预设条件时,根据互相关系数s2、自相关系数s5、互相关系数s6、速率阈值、水平方向速率、第一放大因子和第二放大因子
确定垂直方向速率。示例性的,第三预设条件可以基于所述水平方向速率确定。
[0245]
参见如下公式所示:当满足第三预设条件时,则:
[0246][0247]
当不满足第三预设条件时,则:
[0248][0249]
示例性的,第三预设条件可以为:若v
x


th

bio
或th

bio
,即v
x
为最小值或最大值。
[0250]
当满足第三预设条件时,若s5>0成立,则>0成立,则若s5>0不成立,则v
y
=0。示例性的,v
y
表示垂直方向速率,th

bio
表示速率阈值,n
a
表示第一放大因子,n
b
表示第二放大因子,>>表示右移,为向下取整。clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,

th

bio
为a,th

bio
为b,为x,综上所述,若大于

th

bio
,且小于th

bio
,则垂直方向速率v
y
可以为
[0251]
当不满足第三预设条件时,公式(24)与公式(14)相同,在此不再重复赘述。
[0252]
实施例24:针对实施例23,当不满足第三预设条件时,垂直方向速率的确定公式变更为公式(16)。
[0253]
实施例25:在上述实施例中,第一放大因子n
a
可以为5与(bd

7)中的较小值,即n
a
=min(5,bd

7);或者,第一放大因子n
a
可以为1与(bd

11)中的较大值,即n
a
=max(1,bd

11)。当然,上述只是第一放大因子的示例,对此不做限制,可以根据经验配置。第二放大因子n
b
可以为8与(bd

4)中的较小值,即n
b
=min(8,bd

4);或者,第二放大因子n
b
可以为4与(bd

8)中的较大值,即n
b
=max(4,bd

8)。当然,上述只是第二放大因子的示例,对此不做限制,可以根据经验配置。速率阈值th

bio
可以为2的m次方,m为13与bd的差值,或者,5与(bd

7)中的较大值。例如,th

bio
=2
13

bd
或者th

bio
=2
max(5,bd

7)
。当然,上述只是速率阈值的示例,对此不做限制,可以根据经验配置。
[0254]
通过将第一放大因子n
a
设置为1与(bd

11)中的较大值,可以减少梯度的自相关系数和互相关系数的右移位数,增加自相关系数和互相关系数的所需位宽(保存精度)。通过将第二放大因子n
b
设置为4与(bd

8)中的较大值,可以减少梯度的自相关系数和互相关系数的右移位数,增加自相关系数和互相关系数的所需位宽(保存精度)。通过将速率阈值th

bio
设置为2
max(5,bd

7)
,可以增加水平方向速率v
x
和垂直方向速率v
y
的所需位宽(保存精度)。
[0255]
实施例26:编码端/解码端得到水平方向速率v
x
和垂直方向速率v
y
后,可以根据水平方向速率v
x
和垂直方向速率v
y
获取当前块的子块的预测补偿值,例如,根据子块的第一原始预测值、子块的第二原始预测值和梯度右移位数,确定水平方向梯度和垂直方向梯度,并根据水平方向速率v
x
、垂直方向速率v
y
、水平方向梯度和所述垂直方向梯度,获取预测补偿
值。
[0256]
例如,编码端/解码端可以通过如下公式获取当前块的子块的预测补偿值b(x,y):
[0257][0258]
示例性的,表示水平方向梯度,表示垂直方向梯度,针对上述公式中的如下参数:和还可以通过如下方式确定这些参数。
[0259][0260][0261]
i
(k)
(i,j)表示坐标(i,j)的像素值,如i
(0)
(i,j)表示第一参考块中坐标(i,j)的像素值,对应子块的第一原始预测值,i
(1)
(ivj)表示第二参考块中坐标(i,j)的像素值,对应子块的第二原始预测值。例如,i
(0)
(x,y)表示子块的第一原始预测值,i
(1)
(x,y)表示子块的第二原始预测值。假设子块的大小为4*4,i
(0)
(x,y)是大小为4*4的第一参考块的第一原始预测值,或者大小为6*6的第一参考块的第一原始预测值,i
(1)
(x,y)是大小为4*4的第二参考块的第二原始预测值,或者大小为6*6的第二参考块的第二原始预测值,以i
(0)
(x,y)是大小为4*4的第一参考块的第一原始预测值,i
(1)
(x,y)是大小为4*4的第二参考块的第二原始预测值为例。
[0262]
v
x
表示水平方向速率,v
y
表示垂直方向速率,>>表示右移,rnd为round,表示取整操作,shift1表示梯度右移位数,>>shift1表示右移shift1。梯度右移位数shift1可以为2与(14

bd)中的较大值,即shift1=max(2,14

bd),或者,shift1可以为6与(bd

6)中的较大值,即shift1=max(6,bd

6)。当然,上述只是梯度右移位数的示例,对此不做限制,可以根据经验配置。通过将shift1设置为6与(bd

6)中的较大值,可以增加梯度的右移位数,即减少梯度所需位宽(保存精度)。bd表示比特深度,即亮度值所需比特宽度,一般为10或8。
[0263]
实施例27:编码端/解码端可以根据当前块的子块的第一原始预测值、当前块的子块的第二原始预测值和当前块的子块的预测补偿值,获取当前块的子块的目标预测值。例如,编码端/解码端可以通过如下公式获取当前块的子块的目标预测值pred
bdof
(x,y):
[0264]
pred
bdof
(x,y)=(i
(0)
(x,y)+i
(1)
(x,y)+b(x,y)+o
offset
)>>shift
ꢀꢀ
(28)
[0265]
在上述公式中,i
(0)
(x,y)表示子块的第一原始预测值,i
(1)
(x,y)表示子块的第二原始预测值,b(x,y)表示子块的预测补偿值,>>表示右移,>>shift表示右移shift。
[0266]
示例性的,o
offset
=2
shift
‑1+2
14
,shift=15

bd,bd表示比特深度。
[0267]
当然,上述方式只是获取子块的目标预测值的示例,对此不做限制。
[0268]
实施例28:在当前块被划分为多个子块时,可以采用上述实施例,确定每个子块的目标预测值,即针对当前块的每个子块(如4*4大小的子块)进行预测信号的调整,从而得到每个子块的目标预测值。本实施例中,当满足特定条件时,还可以提前跳出某个子块的信号调整过程,也就是说,不再采用上述实施例的方式确定子块的目标预测值。
[0269]
例如,当前块被划分为子块1、子块2、子块3和子块4,编码端/解码端先采用上述实施例的方式确定子块1的目标预测值,然后采用上述实施例的方式确定子块2的目标预测值,假设满足特定条件,则编码端/解码端不再采用上述实施例的方式确定子块3的目标预测值和子块4的目标预测值,即提前跳出子块3和子块4的信号调整过程。
[0270]
示例性的,若当前块的两个子块的预测值的差异值均小于某个阈值th_sub_sad时,可以确定满足特定条件,提前跳出剩余子块的信号调整过程。例如,若子块1的预测值的差异值小于阈值th_sub_sad,且子块2的预测值的差异值小于阈值th_sub_sad,则确定满足特定条件,提前跳出剩余子块(即子块3和子块4)的信号调整过程。
[0271]
又例如,当前块被划分为多个子块,针对每个子块,编码端/解码端采用上述实施例的方式确定所述子块的目标预测值之前,判断是否满足特定条件。若满足特定条件,则不再采用上述实施例的方式确定所述子块的目标预测值,即提前跳出所述子块的信号调整过程。若不满足特定条件,则可以采用上述实施例的方式确定所述子块的目标预测值。
[0272]
示例性的,若所述子块的预测值的差异值均小于某个阈值th_sub_sad时,可以确定满足特定条件,提前跳出所述子块的信号调整过程。例如,若子块1的预测值的差异值小于阈值th_sub_sad,则确定满足特定条件,提前跳出子块1的信号调整过程。
[0273]
示例性的,为了确定子块的预测值的差异值,可以采用如下方式实现:
[0274]
方式一、预测值的差异值可以为第一预测块(即根据当前块的第一单向运动信息从第一参考帧中获取的与子块对应的第一预测块)的预测值(后续记为pred0)与第二预测块(即根据当前块的第二单向运动信息从第二参考帧中获取的与子块对应的第二预测块)的预测值(后续记为pred1)的sad,即pred0和pred1中所有像素的sad。例如,可以通过如下公式确定第一参考帧与第二参考帧的预测值的差异值,在该公式中,pred0(i,j)为pred0的第i列,第j行的pred0预测值,pred1(i,j)为pred1的第i列,第j行的pred1预测值,n为像素总数,abs(x)表示x的绝对值,h表示高度值,w表示宽度值。
[0275][0276]
方式二、预测值的差异值还可以为第一预测块的下采样n倍后的预测值(记为pred0,即对第一预测块的预测值进行下采样后,得到的预测值)与第二预测块的下采样n倍后的预测值(记为pred1,即对第二预测块的预测值进行下采样后,得到的预测值)的sad。例如,通过如下公式确定第一参考帧与第二参考帧的预测值的差异值,pred0(i,j)为pred0的第i列,第j行的pred0预测值,pred1(i,j)为pred1的第i列,第j行的pred1预测值,n为像素总数,abs(x)表示x的绝对值,h表示高度值,w表示宽度值,n为正整数,优选为2。
[0277][0278]
实施例29:
[0279]
基于与上述方法同样的申请构思,本技术实施例还提出一种编解码装置,应用于编码端或者解码端,所述装置用于若当前块的特征信息满足特定条件,则获取所述当前块或者所述当前块的子块的目标预测值,如图5所示,为所述装置的结构图,所述装置包括:
[0280]
第一确定模块51,用于若当前块的特征信息满足特定条件,根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始
预测值;
[0281]
第二确定模块52,用于根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;
[0282]
第一获取模块53,用于根据所述水平方向速率和所述垂直方向速率获取预测补偿值;
[0283]
第二获取模块54,用于根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
[0284]
示例性的,所述特征信息可以包括但不限于以下一种或多种:运动信息属性;预测模式属性;尺寸信息;序列级开关控制信息。
[0285]
所述第一确定模块51还用于:若所述特征信息包括所述运动信息属性,所述运动信息属性满足如下情况的一种或者同时满足以下至少两种时,确定所述运动信息属性满足特定条件;
[0286]
所述当前块采用双向预测,且所述当前块对应的两个参考帧来自不同方向;
[0287]
所述当前块包括多个子块,所述多个子块的运动信息均相同;
[0288]
所述当前块采用双向预测,且所述当前块对应的两个参考帧的加权权重相同;
[0289]
所述当前块采用双向预测,且所述当前块对应的两个参考帧与当前帧的距离相同;
[0290]
所述当前块采用双向预测,且当前块对应的两个参考帧的预测值的差异值小于预设阈值。
[0291]
所述第一确定模块51还用于:根据所述当前块的第一单向运动信息从第一参考帧中获取第一预测块,并根据所述当前块的第二单向运动信息从第二参考帧中获取第二预测块;
[0292]
根据所述第一预测块的下采样后的预测值与所述第二预测块的下采样后的预测值的sad,获取所述第一参考帧与所述第二参考帧的预测值的差异值。
[0293]
所述第一确定模块51还用于:若所述特征信息包括所述预测模式属性,所述预测模式属性为不采用基于帧内帧间联合预测的融合模式,和/或,不采用对称运动矢量差模式,确定所述预测模式属性满足特定条件。
[0294]
所述第一确定模块51还用于:若所述特征信息包括所述序列级开关控制信息,且所述序列级开关控制信息为允许所述当前块采用双向光流模式,则确定所述序列级开关控制信息满足特定条件。
[0295]
所述第一确定模块51还用于:若所述特征信息包括所述尺寸信息,所述尺寸信息满足如下情况的一种或者同时满足以下至少两种时,则确定所述尺寸信息满足特定条件;所述当前块的宽度值大于或等于第一阈值,所述当前块的宽度值小于或等于第二阈值;所述当前块的高度值大于或等于第三阈值,所述当前块的高度值小于或等于第四阈值;所述当前块的面积值大于或等于第五阈值,所述当前块的面积值小于或等于第六阈值。
[0296]
所述第一确定模块51根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值时具体用于:
[0297]
基于所述当前块的第一单向运动信息,从第一参考帧中确定第一参考块,并确定所述第一参考块的第一原始预测值;其中,所述第一参考块的中心区域的第一原始预测值
是通过对第一参考帧中的像素值进行插值得到,所述第一参考块的边缘区域的第一原始预测值是通过对第一参考帧中的像素值进行拷贝得到;基于所述当前块的第二单向运动信息,从第二参考帧中确定第二参考块,并确定所述第二参考块的第二原始预测值;其中,所述第二参考块的中心区域的第二原始预测值是通过对第二参考帧中的像素值进行插值得到,所述第二参考块的边缘区域的第二原始预测值是通过对第二参考帧中的像素值进行拷贝得到。
[0298]
所述第二确定模块52根据所述第一原始预测值和所述第二原始预测值确定水平方向速率时具体用于:当满足第一预设条件时,根据第一原始预测值和第二原始预测值确定水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与垂直方向梯度和的互相关系数s6;根据互相关系数s2、速率阈值、互相关系数s6、第一放大因子和第二放大因子确定水平方向速率;第一预设条件基于互相关系数s2、垂直方向梯度和的自相关系数s5确定。
[0299]
所述第二确定模块52根据所述第一原始预测值和所述第二原始预测值确定水平方向速率时具体用于:若满足第二预设条件,根据第一原始预测值和第二原始预测值确定水平方向梯度和的自相关系数s1、水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与水平方向梯度和的互相关系数s3、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6;根据所述自相关系数s1、互相关系数s2、互相关系数s3、自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定水平方向速率;其中,所述第二预设条件基于所述互相关系数s2、所述自相关系数s5确定。
[0300]
所述第二确定模块52根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率时具体用于:根据所述第一原始预测值和所述第二原始预测值获取未进行截断处理的未截断水平方向速率,并根据所述未截断水平方向速率确定垂直方向速率。
[0301]
所述第二确定模块52根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率时具体用于:当满足第三预设条件时,根据所述第一原始预测值和所述第二原始预测值确定垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6;根据所述自相关系数s5、互相关系数s6、速率阈值、第一放大因子和第二放大因子确定垂直方向速率;其中,所述第三预设条件基于所述水平方向速率确定。
[0302]
所述互相关系数s2位于第一互相关系数阈值与第二互相关系数阈值之间;
[0303]
所述互相关系数s6位于第三互相关系数阈值与第四互相关系数阈值之间。
[0304]
第一放大因子为5与(bd

7)中的较小值,或,1与(bd

11)中的较大值;第二放大因子为8与(bd

4)中的较小值,或,4与(bd

8)中的较大值;速率阈值为2的m次方,m为13与bd的差值,或,5与(bd

7)中的较大值;其中,bd为比特深度。
[0305]
所述第一获取模块53根据所述水平方向速率和所述垂直方向速率获取预测补偿值时具体用于:根据所述第一原始预测值、所述第二原始预测值和梯度右移位数,确定水平方向梯度和垂直方向梯度,并根据所述水平方向速率、所述垂直方向速率、所述水平方向梯度和所述垂直方向梯度,获取所述预测补偿值;其中,所述梯度右移位数为2与(14

bd)中的较大值,或,6与(bd

6)中的较大值,bd为比特深度。
[0306]
本技术实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图6所示。包括:处理器61和机器可读存储介质62,所述机器可读存储介质62存储有能
够被所述处理器61执行的机器可执行指令;所述处理器61用于执行机器可执行指令,以实现本技术上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
[0307]
若当前块的特征信息满足特定条件,则执行以下步骤获取所述当前块或者所述当前块的子块的目标预测值:根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值;根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取预测补偿值;根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
[0308]
本技术实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图7所示。包括:处理器71和机器可读存储介质72,所述机器可读存储介质72存储有能够被所述处理器71执行的机器可执行指令;所述处理器71用于执行机器可执行指令,以实现本技术上述示例公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
[0309]
若当前块的特征信息满足特定条件,则执行以下步骤获取所述当前块或者所述当前块的子块的目标预测值:根据所述当前块的第一单向运动信息确定第一原始预测值,根据所述当前块的第二单向运动信息确定第二原始预测值;根据所述第一原始预测值和所述第二原始预测值确定水平方向速率;根据所述第一原始预测值和所述第二原始预测值确定垂直方向速率;根据所述水平方向速率和所述垂直方向速率获取预测补偿值;根据所述第一原始预测值、所述第二原始预测值和所述预测补偿值获取目标预测值。
[0310]
基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的编解码方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0311]
上述实施例阐明的系统、装置、模块或单元,可以由计算机芯片或实体实现,或由具有某种功能的产品来实现。一种典型的实现为计算机,计算机的形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0312]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0313]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品形式。
[0314]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程
序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
[0315]
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1