一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2021-12-15 00:06:00 来源:中国专利 TAG:


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


背景技术:

2.为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码可以包括预测、变换、量化、熵编码、滤波等过程。针对预测过程,预测过程可以包括帧内预测和帧间预测,帧间预测是指利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内预测是指利用视频空间域的相关性,使用当前帧图像的已编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
3.在相关技术中,当前块为矩形,而实际物体的边缘往往不是矩形,因此,对于物体边缘来说,往往存在两个不同对象(如存在前景的物体和背景)。基于此,当两个对象的运动不一致时,矩形划分不能很好的将两个对象分割,即使将当前块划分为两个非矩形子块,通过两个非矩形子块预测当前块,目前,也存在预测效果不佳,编码性能较差等问题。


技术实现要素:

4.有鉴于此,本技术提供了一种编解码方法、装置及其设备,提高了预测的准确性。
5.本技术提供一种编解码方法,所述方法包括:
6.在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
7.根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
8.针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
9.获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
10.根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
11.根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
12.本技术提供一种编解码装置,所述装置包括:获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式为:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;配置模块,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块,用于针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块,还用于获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;所述确定模块,还用于根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;以及,根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
13.本技术提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
14.所述处理器用于执行机器可执行指令,以实现如下步骤:
15.在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
16.根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
17.针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
18.获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
19.根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
20.根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
21.本技术提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
22.所述处理器用于执行机器可执行指令,以实现如下步骤:
23.在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
24.根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
25.针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
26.获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
27.根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
28.根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
29.由以上技术方案可见,本技术实施例中,提出一种配置权重值的有效方式,能够为当前块的每个像素位置配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
附图说明
30.图1是视频编码框架的示意图;
31.图2a

图2e是加权预测的示意图;
32.图3是本技术一种实施方式中的编解码方法的流程图;
33.图4a

图4d是当前块外部的周边位置的示意图;
34.图5是本技术一种实施方式中的权重预测角度的示意图;
35.图6是本技术一种实施方式中的四种权重变换率的参考权重值的示意图;
36.图7a

图7c是本技术一种实施方式中的权重预测角度与角度分区的示意图;
37.图8是本技术一种实施方式中的当前块的相邻块的示意图;
38.图9a和图9b是本技术一种实施方式中的当前块的分割效果示意图。
具体实施方式
39.在本技术实施例使用的术语仅仅是出于描述特定实施例的目的,而非用于限制本
申请。本技术实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息,取决于语境。此外,所使用的词语“如果”可以被解释成为“在
……
时”,或“当
……
时”,或“响应于确定”。
40.本技术实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
41.帧内预测(intra prediction)和帧间预测(inter prediction):
42.帧内预测是指,基于视频空间域的相关性,使用已编码块进行预测,以达到去除视频空域冗余的目的。帧内预测规定了多种预测模式,每种预测模式对应一种纹理方向(dc模式除外),例如,若图像纹理呈现水平状排布,则水平预测模式可以更好的预测图像信息。
43.帧间预测是指,基于视频时间域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计(motion estimation,me)。
44.预测像素(prediction signal):预测像素是指从已编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。帧间的预测像素指的是当前块从参考帧导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
45.运动矢量(motion vector,mv):在帧间预测中,可以使用运动矢量表示当前帧的当前块与参考帧的参考块之间的相对位移。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是小尺寸的大量块,则消耗很多比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量进行编码时,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(mvp,motion vector prediction)与运动矢量的真正估值之间的差值(mvd,motion vector difference)进行编码。
46.运动信息(motion information):由于运动矢量表示当前块与某个参考块之间的位置偏移,为了准确的获取指向块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示当前块使用哪个参考帧图像。在视频编码技术中,对于当前帧,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。
47.此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。综上所述,在视频编码技术
中,可以将运动矢量,参考帧索引,参考方向等与运动相关的信息统称为运动信息。
48.帧内预测模式:在帧内编码中,使用帧内预测模式进行运动补偿,即采用帧内预测模式获取当前块的预测值。例如,帧内预测模式可以包括但不限于planar模式,dc模式和33种角度模式。参见表1所示,为帧内预测模式的示例,planar模式对应模式0,dc模式对应模式1,其余的33种角度模式对应模式1

模式34。planar模式适用于像素值缓慢变化的区域,使用水平方向和垂直方向的两个线性滤波器,将两者的平均值作为当前块像素的预测值。dc模式适用于大面积平坦区域,将当前块的周围像素的平均值作为当前块的预测值。角度模式有33种角度模式,新一代编解码标准vvc中采用了更细分的角度模式,如67种角度模式。
49.表1
[0050][0051][0052]
知识库帧(lib picture):知识库帧也可以称为知识库图像,类似长期参考帧(long term reference picture)的概念,知识库帧可以为较远距离的帧,知识库帧可以存在于当前帧的参考帧列表(也可以称为参考帧队列)中,用于有效的帧间预测。示例性的,知识库帧的poc(picture order count,显示顺序,即图像顺序号)可以被设置为当前帧的poc减1。
[0053]
率失真原则(rate

distortion optimized):评价编码效率的有两大指标:码率和psnr(peak signal to noise ratio,峰值信噪比),比特流越小,则压缩率越大,psnr越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:j(mode)=d λ*r,其中,d表示distortion(失真),通常可以使用sse指标来进行衡量,sse是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用rdo原则去对编码模式做比较决策,通常可以保证编码性能最佳。
[0054]
视频编码框架:参见图1所示,可以使用视频编码框架实现本技术实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本技术实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括但不限于帧内预测/帧间预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
[0055]
在相关技术中,当前块可以为矩形,而实际物体的边缘往往不是矩形,因此,对于物体的边缘来说,往往存在两个不同对象(如存在前景的物体和背景等)。当两个对象的运动不一致时,则矩形划分不能很好的将这两个对象进行分割,为此,可以将当前块划分为两个非矩形子块,并对两个非矩形子块进行加权预测。示例性的,加权预测是利用多个预测值进行加权操作,从而获得最终预测值,加权预测可以包括:帧间和帧内的联合加权预测,帧间和帧间的联合加权预测,帧内和帧内的联合加权预测等。针对加权预测的权重值,可以为
当前块的不同像素位置配置相同权重值,也可以为当前块的不同像素位置配置不同权重值。
[0056]
参见图2a所示,为帧间帧内联合加权预测的示意图。
[0057]
ciip(combined inter/intra prediction,帧间帧内联合预测)预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)加权得到,每个像素位置采用的帧内预测值与帧间预测值的权重比是1:1。例如,针对每个像素位置,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权,得到该像素位置的联合预测值,最终将每个像素位置的联合预测值组成ciip预测块。
[0058]
参见图2b所示,为帧间三角划分加权预测(triangular partition mode,tpm)的示意图。
[0059]
tpm预测块由帧间预测块1(即采用帧间预测模式1得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式2得到像素位置的帧间预测值)组合得到。tpm预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2,tpm预测块的两个帧间区域可以呈非矩形分布,虚线分界线的角度可以为主对角线或者副对角线两种。
[0060]
针对帧间区域1的每个像素位置,主要基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。针对帧间区域2的每个像素位置,主要基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小(甚至为0),得到该像素位置的联合预测值。
[0061]
参见图2c所示,为帧间帧内联合三角加权预测的示意图。通过对帧间帧内联合加权预测进行修改,使ciip预测块的帧间区域和帧内区域呈现三角加权划分预测的权重分布。
[0062]
ciip预测块由帧内预测块(即采用帧内预测模式得到像素位置的帧内预测值)和帧间预测块(即采用帧间预测模式得到像素位置的帧间预测值)组合得到。ciip预测块可以划分为两个区域,一个区域可以为帧内区域,另一个区域可以为帧间区域,ciip预测块的帧间帧内可以呈非矩形分布,虚线分界线区域可采用混合加权方式或者直接进行分割,且该虚线分界线的角度可以为主对角线或者副对角线两种,帧内区域和帧间区域的位置可变。
[0063]
针对帧内区域的每个像素位置,主要基于帧内预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧内预测值的权重值较大,帧间预测值的权重值较小,得到该像素位置的联合预测值。针对帧间区域的每个像素位置,主要基于帧间预测值确定,例如,将该像素位置的帧内预测值与该像素位置的帧间预测值进行加权时,帧间预测值的权重值较大,帧内预测值的权重值较小,得到该像素位置的联合预测值。
[0064]
参见图2d所示,为帧间块几何分割模式(geometrical partitioning for inter blocks,geo)的示意图,geo模式用于利用一条分割线将帧间预测块划分为两个子块,不同于tpm模式,geo模式可以采用更多的划分方向,geo模式的加权预测过程与tpm模式类似。
[0065]
geo预测块由帧间预测块1(即采用帧间预测模式1得到像素位置的帧间预测值)和帧间预测块2(即采用帧间预测模式2得到像素位置的帧间预测值)组合得到。geo预测块可以划分为两个区域,一个区域可以为帧间区域1,另一个区域可以为帧间区域2。
[0066]
针对帧间区域1的每个像素位置,主要基于帧间预测块1的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块1的帧间预测值的权重值较大,帧间预测块2的帧间预测值的权重值较小。针对帧间区域2的每个像素位置,主要基于帧间预测块2的帧间预测值确定,例如,将该像素位置的帧间预测块1的帧间预测值与该像素位置的帧间预测块2的帧间预测值进行加权时,帧间预测块2的帧间预测值的权重值较大,帧间预测块1的帧间预测值的权重值较小。
[0067]
示例性的,geo预测块的权重值配置与像素位置离分割线的距离有关,参见图2e所示,像素位置a,像素位置b和像素位置c位于分割线右下侧,像素位置d,像素位置e和像素位置f位于分割线左上侧。对于像素位置a,像素位置b和像素位置c来说,帧间区域2的权重值排序为b≥a≥c,帧间区域1的权重值排序为c≥a≥b。对于像素位置d,像素位置e和像素位置f来说,帧间区域1的权重值排序为d≥f≥e,帧间区域2的权重值排序为e≥f≥d。上述方式需要计算像素位置与分割线的距离,继而确定像素位置的权重值。
[0068]
针对上述各种情况,为了实现加权预测,均需要确定当前块的每个像素位置的权重值,并基于像素位置的权重值对该像素位置进行加权预测。但是,相关技术中,并没有配置权重值的有效方式,无法配置合理的权重值,导致预测效果不佳,编码性能差等问题。
[0069]
针对上述发现,本技术实施例中提出权重值的导出方式,可以根据当前块外部的周边位置的参考权重值,确定当前块的每个像素位置的目标权重值,能够为每个像素位置配置合理的目标权重值,提高预测准确性,提高预测性能,提高编码性能,预测值更接近原始像素。
[0070]
以下结合几个具体实施例,对本技术实施例的编解码方法进行详细说明。
[0071]
实施例1:参见图3所示,为编解码方法的流程示意图,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),该方法可以包括:
[0072]
步骤301,在确定对当前块启动加权预测时,获取当前块的权重预测角度和权重配置参数,该权重配置参数包括权重变换率和权重变换的起始位置,该权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
[0073]
示例性的,在需要对当前块进行预测时,解码端或者编码端可以先确定是否对当前块启动加权预测。若对当前块启动加权预测,则采用本技术实施例的编解码方法,即执行步骤301和后续步骤。若对当前块不启动加权预测,则实现方式本技术实施例中不做限制。
[0074]
示例性的,在确定对当前块启动加权预测时,可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。然后,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。至此,可以得到当前块的权重预测角度,当前块的权重变换率和当前块的权重变换的起始位置。
[0075]
示例性的,当前块的权重变换率的确定方式,可以包括但不限于:基于当前块所在
当前帧的帧类型确定当前块的权重变换率。比如说,若该帧类型为p帧,则当前块的权重变换率是参考权重值的最大值。若该帧类型为b帧,且当前块支持权重变换率切换模式,则:获取当前块的权重变换率指示信息;若该权重变换率指示信息为第一指示信息,则可以确定当前块的权重变换率为第一权重变换率;若该权重变换率指示信息为第二指示信息,则可以确定当前块的权重变换率为第二权重变换率。在一种可能的实施方式中,当前块的权重变换率指示信息可以为当前块对应的权重变换率索引,该第一指示信息用于指示当前块不需要进行权重变换率切换,该第二指示信息用于指示当前块需要进行权重变换率切换。
[0076]
示例性的,当前块的权重预测角度为水平角度;或者,当前块的权重预测角度为垂直角度;或者,当前块的权重预测角度的斜率的绝对值为2的n次方,n为整数。
[0077]
示例性的,获取当前块的权重预测角度,可以包括但不限于:若当前块所在当前帧的帧类型为b帧,则从第一角度列表中获取当前块的权重预测角度;若当前块所在当前帧的帧类型为p帧,则从第二角度列表中获取当前块的权重预测角度。示例性的,该第二角度列表可以包括多个权重预测角度,且该第一角度列表可以包括多个权重预测角度,且该第二角度列表中包括的权重预测角度可以是该第一角度列表中包括的权重预测角度的子集。
[0078]
示例性的,获取当前块的权重预测位置,可以包括但不限于:若当前块所在当前帧的帧类型为b帧,则从第一位置列表中获取当前块的权重预测位置;若当前块所在当前帧的帧类型为p帧,则从第二位置列表中获取当前块的权重预测位置。示例性的,该第二位置列表可以包括多个权重预测位置,且该第一位置列表可以包括多个权重预测位置,且该第二位置列表中包括的权重预测位置可以是该第一位置列表中包括的权重预测位置的子集。
[0079]
在一种可能的实施方式中,可以基于当前块的尺寸从第一角度列表中选取部分权重预测角度,并基于选取的部分权重预测角度构建第二角度列表,即第二角度列表包括所述选取的部分权重预测角度。以及,可以基于当前块的尺寸从第一位置列表中选取部分权重预测位置,并基于选取的部分权重预测位置构建第二位置列表,即第二位置列表包括所述选取的部分权重预测位置。示例性的,当前块的尺寸可以包括当前块的宽度值和当前块的高度值。
[0080]
步骤302,根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
[0081]
示例性的,当前块外部的周边位置的数量由如下参数的至少一个确定:当前块的尺寸,当前块的权重预测角度。例如,基于当前块的尺寸和/或当前块的权重预测角度确定当前块外部的周边位置的数量m,并根据当前块的权重配置参数为m个周边位置配置参考权重值。
[0082]
示例性的,针对当前块外部的周边位置,可以根据该周边位置的坐标值,该权重变换的起始位置的坐标值,以及该权重变换率,配置该周边位置的参考权重值。针对该周边位置的坐标值和该权重变换的起始位置的坐标值,与像素坐标值可以不在同一坐标系中,即配置周边位置的参考权重值是个独立操作,当确定像素位置对应的参考权重时,才在同一坐标系。
[0083]
示例性的,当前块外部的周边位置的参考权重值可以单调递增;或,当前块外部的周边位置的参考权重值可以单调递减。例如,当前块外部的周边位置的参考权重值的排布可以为00

0024688

88,或,当前块外部的周边位置的参考权重值的排布可以为88

8864200

00。
[0084]
示例性的,当前块外部的周边位置可以包括但不限于:当前块外部上侧一行的周边位置,或者,当前块外部左侧一列的周边位置。当然,上述只是周边位置的示例,对此不做限制。
[0085]
若当前块外部的周边位置包括当前块外部上侧一行的周边位置,则从左到右的顺序上的参考权重值,可以是单调递增或单调递减。或者,若当前块外部的周边位置包括当前块外部左侧一列的周边位置,则从上到下的顺序上的参考权重值,可以是单调递增或单调递减。
[0086]
示例性的,当前块外部的周边位置可以包括目标区域,目标区域的第一邻近区域,目标区域的第二邻近区域。示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值均为第二参考权重值,且该第一参考权重值与该第二参考权重值不同。示例性的,目标区域可以包括一个参考权重值或至少两个参考权重值;若目标区域包括至少两个参考权重值,则目标区域的至少两个参考权重值可以单调递增或单调递减。
[0087]
步骤303,针对当前块的每个像素位置,基于权重预测角度从当前块外部的周边位置中确定该像素位置对应的周边匹配位置;根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
[0088]
示例性的,针对当前块的每个像素位置,若当前块所在当前帧的帧类型为b帧,则可以基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
[0089]
比如说,权重预测角度表示当前块内部的像素位置所指向的角度方向,例如,基于某一种权重预测角度,该权重预测角度对应的角度方向指向当前块的某个外部周边位置。基于此,针对当前块的每个像素位置,基于该权重预测角度确定该像素位置所指向的角度方向,继而根据该角度方向从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。
[0090]
示例性的,针对当前块的每个像素位置,若当前块所在当前帧的帧类型为p帧,则从当前块包括的所有子块中确定该像素位置所在的子块;然后,基于当前块的权重预测角度从当前块外部的周边位置中确定该子块内的预设位置指向的周边位置,将该子块内的预设位置指向的周边位置确定为该像素位置对应的周边匹配位置,也就是说,该子块内的预设位置指向的周边位置,可以作为该子块内的每个像素位置对应的周边匹配位置。
[0091]
比如说,可以将当前块划分为至少一个子块,针对当前块的每个子块,该子块可以为矩形子块(即四边形子块),也可以不为矩形子块,如三角形子块,五边形子块,六边形子块等,对此子块的形状不做限制,可以是任意形状的子块。不同子块的形状可以相同,不同子块的形状也可以不同。不同子块的尺寸可以相同,不同子块的尺寸也可以不同。
[0092]
若该子块为矩形子块,则该子块的尺寸可以为m*n,m为子块的宽度值,且m大于或者等于1,n为子块的高度值,且n大于或者等于1。综上所述,该子块可以包括至少一个像素位置。若该子块不为矩形子块,则该子块也可以包括至少一个像素位置。
[0093]
基于此,若子块为1*1的像素位置(即只包括一个像素位置),则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置(即包括至少两个像素位置),则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
[0094]
示例性的,针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,基于该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值,例如,每个像素位置的目标权重值与关联权重值的和,可以均为固定的预设数值,因此,关联权重值可以为预设数值与目标权重值之差。假设预设数值为8,像素位置的目标权重值为0,则该像素位置的关联权重值为8;若像素位置的目标权重值为1,则该像素位置的关联权重值为7,以此类推,只要目标权重值与关联权重值之和为8即可。
[0095]
示例性的,当前块外部的周边位置可以包括整像素位置,或亚像素位置,或整像素位置和亚像素位置,对于整像素位置来说,可以为1像素位置,或2像素位置,或4像素位置等,对此不做限制。根据周边匹配位置关联的参考权重值确定该像素位置的目标权重值,可以包括:若周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,则根据该亚像素位置的参考权重值确定该像素位置的目标权重值。若周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,则根据该整像素位置的参考权重值确定该像素位置的目标权重值。
[0096]
在一种可能的实施方式中,当前块可以为亮度分量和/或色度分量,若当前块为亮度分量,针对亮度分量的每个像素位置,若当前帧的帧类型为b帧,则基于权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。针对亮度分量的每个像素位置,若当前帧的帧类型为p帧,则基于权重预测角度从当前块外部的周边位置中确定该像素位置所在子块内的预设位置指向的周边位置,将该子块内的预设位置指向的周边位置确定为该像素位置对应的周边匹配位置,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
[0097]
若当前块为色度分量,针对色度分量的每个像素位置,若当前帧的帧类型为b帧,则基于权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。或者,从当前块的亮度分量中找到与该像素位置匹配的亮度位置,将该亮度位置的目标权重值确定为该像素位置的目标权重值,即,该亮度位置对应的周边匹配位置,也是该像素位置对应的周边匹配位置。
[0098]
针对色度分量的每个像素位置,若当前帧的帧类型为p帧,则基于权重预测角度从当前块外部的周边位置中确定该像素位置所在子块内的预设位置指向的周边位置,将该子块内的预设位置指向的周边位置确定为该像素位置对应的周边匹配位置,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。或者,从当前块的亮度分量中找到与该像素位置匹配的亮度子块(即亮度分量中与该像素位置匹配的亮度位置所在的子块),将该亮度子块内的预设位置的目标权重值确定为该像素位置的目标权重值,即,该亮度子块内的预设位置对应的周边匹配位置,也是该像素位置对应的周边匹配位置。或者,确定该像素位置所在的色度子块内的预设位置(即色度分量的子块内的预设位置),从当前块的亮度分量中找到与该色度子块内的预设位置匹配的亮度位置,将该亮度位置的目标权重值确定为该像素位置的目标权重值,即,该亮度位置对应的周边匹配位置,也是该像素位置对应
的周边匹配位置。
[0099]
显然,色度分量的多个像素位置可以对应同一个色度子块,而色度子块内的预设位置为同一个,与该预设位置匹配的亮度位置也为同一个,即多个像素位置对应同一个目标权重值。
[0100]
步骤304,获取为当前块创建的模式信息候选列表,模式信息候选列表包括至少一个候选模式信息;基于模式信息候选列表获取当前块的第一目标模式信息和第二目标模式信息。
[0101]
示例性的,若对当前块启动帧间awp模式(angular weighted prediction,角度加权预测),则该模式信息候选列表可以为运动信息候选列表,且该运动信息候选列表可以包括至少一个候选运动信息,且该运动信息候选列表中的候选运动信息可以为单向运动信息。基于此,该第一目标模式信息可以为第一目标运动信息,该第二目标模式信息可以为第二目标运动信息。
[0102]
示例性的,可以先获取待加入到当前块的运动信息候选列表中的至少一个可用运动信息,然后,可以基于所述至少一个可用运动信息获取为当前块创建的运动信息候选列表。
[0103]
示例性的,所述至少一个可用运动信息可以包括但不限于如下运动信息的至少一种:时域运动信息;空域运动信息;预设运动信息。当然,上述只是运动信息类型的几个示例。
[0104]
示例性的,若当前块所在当前帧的帧类型为b帧,则从运动信息候选列表中选择候选运动信息作为当前块的第一原始运动信息,从运动信息候选列表中选择候选运动信息作为当前块的第二原始运动信息。根据第一原始运动信息确定当前块的第一目标运动信息,根据第二原始运动信息确定当前块的第二目标运动信息。例如,第一原始运动信息包括第一原始运动矢量,第一目标运动信息包括第一目标运动矢量,获取与第一原始运动矢量对应的第一运动矢量差,根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量,或将第一原始运动矢量确定为第一目标运动矢量。第二原始运动信息包括第二原始运动矢量,第二目标运动信息包括第二目标运动矢量,获取与第二原始运动矢量对应的第二运动矢量差,根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量,或将第二原始运动矢量确定为第二目标运动矢量。其中,获取与第一原始运动矢量对应的第一运动矢量差,包括:获取第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差。获取与第二原始运动矢量对应的第二运动矢量差,包括:获取第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差。
[0105]
示例性的,在另一种可能的实施方式中,若当前块所在当前帧的帧类型为p帧,则可以从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,并从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息。
[0106]
步骤305,针对当前块的每个像素位置,根据当前块的第一目标模式信息确定该像素位置的第一预测值,根据当前块的第二目标模式信息确定该像素位置的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该像素位置的加权预测值。
[0107]
示例性的,假设目标权重值是第一目标模式信息对应的权重值,关联权重值是第二目标模式信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值 该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。或者,假设目标权重值是第二目标模式信息对应的权重值,关联权重值是第一目标模式信息对应的权重值,则该像素位置的加权预测值可以为:(该像素位置的第二预测值*该像素位置的目标权重值 该像素位置的第一预测值*该像素位置的关联权重值)/固定的预设数值。
[0108]
步骤306,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
[0109]
例如,将当前块的所有像素位置的加权预测值组成当前块的加权预测值。
[0110]
示例性的,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值之后,针对当前块的每个模式信息存储单元(即运动信息存储单元),根据该模式信息存储单元的坐标,当前块的权重预测角度和当前块外部的周边位置的参考权重值确定该模式信息存储单元的存储方式;基于该模式信息存储单元的存储方式,将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或将第二目标模式信息存储为该模式信息存储单元的目标模式信息。或者,针对当前块的每个模式信息存储单元,根据该模式信息存储单元的坐标,当前块的权重预测角度和当前块的权重预测位置确定该模式信息存储单元的存储方式;基于该模式信息存储单元的存储方式,将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或将第二目标模式信息存储为该模式信息存储单元的目标模式信息。
[0111]
示例性的,上述执行顺序只是为了方便描述给出的示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
[0112]
由以上技术方案可见,本技术实施例中,提出一种配置权重值的有效方式,能够为当前块的每个像素位置配置合理的目标权重值,从而提高预测的准确性,提高预测性能,提高编码性能,能够使当前块的预测值加更接近原始像素,并带来编码性能的提高。
[0113]
实施例2:本技术实施例提出另一种编解码方法,可以应用于编码端,该方法包括:
[0114]
步骤a1,在确定对当前块启动加权预测时,编码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,编码端确定是否对当前块启动加权预测,如果是,则执行步骤a1及后续步骤,如果否,则处理方式本技术不做限制。
[0115]
在一种可能的实施方式中,若当前块满足启动加权预测的条件,则确定对当前块启动加权预测。若当前块不满足启动加权预测的条件,则确定不对当前块启动加权预测。例如,判断当前块的特征信息是否满足特定条件。如果是,确定对当前块启动加权预测;如果否,确定对当前块不启动加权预测。特征信息包括但不限于以下之一或任意组合:当前块所在当前帧的帧类型,当前块的尺寸信息,开关控制信息。开关控制信息可以包括但不限于:序列级(sps、sh)开关控制信息,或,图像级(pps、ph)开关控制信息,或,片级(slice、tile、patch),或,最大编码单元级(lcu、ctu),或块级(cu、pu、tu)开关控制信息。
[0116]
例如,若特征信息为当前块所在当前帧的帧类型,当前块所在当前帧的帧类型满
足特定条件,可以包括但不限于:若当前块所在当前帧的帧类型为b帧,则可以确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为i帧,则可以确定帧类型满足特定条件。或者,若当前块所在当前帧的帧类型为p帧,则可以确定帧类型满足特定条件。
[0117]
例如,若特征信息为当前块的尺寸信息,如宽度和高度,尺寸信息满足特定条件包括但不限于:若宽度大于或等于第一数值,高度大于或等于第二数值,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于第三数值,高度大于或等于第四数值,宽度小于或等于第五数值,高度小于或等于第六数值,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于第七数值,确定当前块的尺寸信息满足特定条件。上述数值可以根据经验配置,如8、16、32、64、128等。比如说,第一数值为8,第二数值为8,第三数值为8,第四数值为8,第五数值为64,第六数值为64,第七数值为64。综上所述,若宽度大于或等于8,高度大于或等于8,确定当前块的尺寸信息满足特定条件。或,若宽度大于或等于8,高度大于或等于8,宽度小于或等于64,高度小于或等于64,确定当前块的尺寸信息满足特定条件。或,若宽度和高度的乘积大于或等于64,确定当前块的尺寸信息满足特定条件。
[0118]
例如,若特征信息为当前块的尺寸信息,如当前块的宽度和高度,则当前块的尺寸信息满足特定条件,可以包括但不限于:宽度不小于a,且不大于b,高度不小于a,且不大于b。a可以小于或等于16,b可以大于或等于16。例如,a等于8,b等于64或者b等于32。
[0119]
例如,若特征信息为开关控制信息,则该开关控制信息满足特定条件,可以包括但不限于:若开关控制信息为允许当前块启用加权预测,则确定该开关控制信息满足特定条件。
[0120]
例如,若特征信息为当前块所在当前帧的帧类型,当前块的尺寸信息,则帧类型满足特定条件,且尺寸信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型,开关控制信息,则帧类型满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块的尺寸信息、开关控制信息,则尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。或者,若特征信息为当前块所在当前帧的帧类型、当前块的尺寸信息、开关控制信息,则帧类型满足特定条件,尺寸信息满足特定条件,且开关控制信息满足特定条件时,可以确定当前块的特征信息满足特定条件。
[0121]
在一种可能的实施方式中,在确定对当前块启动加权预测时,编码端可以获取当前块的权重预测角度,当前块的权重预测位置,以及当前块的权重变换率。
[0122]
示例性的,权重预测角度表示当前块内部的像素位置所指向的角度方向,参见图4a所示,基于某一种权重预测角度,示出了当前块内部的像素位置(如像素位置1、像素位置2和像素位置3)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。参见图4b所示,基于另一种权重预测角度,示出了当前块内部的像素位置(如像素位置2、像素位置3和像素位置4)所指向的角度方向,该角度方向指向当前块外部的某个周边位置。
[0123]
示例性的,权重预测位置(也可以称为距离参数)用于配置当前块外部周边位置的参考权重值。例如,根据当前块的权重预测角度、当前块的尺寸等参数,确定当前块外部的周边位置的范围(即当前块外部的周边位置的数量),参见图4a或者图4b所示。
[0124]
然后,将周边位置的范围进行n等分,n的取值可以任意配置,如4、6、8等,以8为例进行说明,权重预测位置用于表示当前块外部的哪个周边位置作为当前块的权重变换的起
始位置,从而根据权重变换的起始位置配置当前块外部的周边位置的参考权重值。
[0125]
参见图4c所示,在将所有周边位置8等分后,可以得到7个权重预测位置。在此基础上,当权重预测位置为0时,可以表示周边位置a0(即虚线0指向的周边位置,在实际应用中,并不存在虚线0,虚线0只是为了方便理解给出的示例,虚线0

虚线6用于将所有周边位置8等分)作为当前块外部周边位置的权重变换的起始位置。以此类推,当权重预测位置为6时,表示周边位置a6作为当前块外部周边位置的权重变换的起始位置。
[0126]
针对不同的权重预测角度,n的取值可以不同,例如,针对权重预测角度a,n的取值为6,表示将基于权重预测角度a确定的周边位置的范围进行6等分,针对权重预测角度b,n的取值为8,表示将基于权重预测角度b确定的周边位置的范围进行8等分。
[0127]
针对不同的权重预测角度,n的取值也可以相同,在n的取值相同的情况下,权重预测位置数量可以不同,如针对权重预测角度a,n的取值为8,表示将基于权重预测角度a确定的周边位置的范围进行8等分,针对权重预测角度b,n的取值为8,表示将基于权重预测角度b确定的周边位置的范围进行8等分,但是,权重预测角度a对应的权重预测位置选择a1至a5共5个位置,权重预测角度b对应的权重预测位置选择a0至a6共7个位置。
[0128]
上述是以将周边位置的范围进行n等分为例,在实际应用中,还可以采用不均匀的划分方式,比如说,将周边位置的范围划分成n份,而不是n等分,对此不做限制。
[0129]
在将所有的周边位置8等分后,可以得到7个权重预测位置,步骤a1中,编码端可以从7个权重预测位置中获取一个权重预测位置,也可以从7个权重预测位置中选择部分权重预测位置(如5个权重预测位置),从5个权重预测位置获取一个权重预测位置。
[0130]
示例性的,权重变换率表示当前块外部的周边位置的参考权重值的变换率,用于表示参考权重值的变化速度,权重变换率可以是不为0的任意数,如权重变换率可以是

4、

2、

1、1、2、4、0.5、0.75、1.5等。权重变换率的绝对值为1时,即权重变换率为

1或者1,用于表示参考权重值的变化速度为1,参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8等数值,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0等数值。权重变换率的绝对值为2时,即权重变换率为

2或者2,用于表示参考权重值的变化速度为2,参考权重值从0到8需要经过0,2,4,6,8等数值,参考权重值从8到0需要经过8,6,4,2,0等数值。权重变换率的绝对值为4时,即权重变换率为

4或者4,用于表示参考权重值的变化速度为4,参考权重值从0到8需要经过0,4,8等数值,参考权重值从8到0需要经过8,4,0等数值。权重变换率的绝对值为0.5时,即权重变换率为

0.5或者0.5,用于表示参考权重值的变化速度为0.5,参考权重从0到8需要经过0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8等数值,参考权重从8到0需要经过8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0等数值。当然,上述举例为从0到8,可以将0和8替换为任意数。
[0131]
步骤a2,编码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
[0132]
示例性的,权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸,因此,可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
[0133]
步骤a3,针对当前块的每个像素位置,编码端基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置对应的周边匹配位置。
[0134]
例如,若当前块所在当前帧的帧类型为b帧,则编码端基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。若当前块所在当前帧的帧类型为p帧,则编码端从当前块包括的所有子块中确定该像素位置所在的子块,基于当前块的权重预测角度从当前块外部的周边位置中确定该子块内的预设位置指向的周边位置,将该子块内的预设位置指向的周边位置确定为该像素位置对应的周边匹配位置,也就是说,该子块内的预设位置指向的周边位置,可以作为该子块内的每个像素位置对应的周边匹配位置。
[0135]
示例性的,当前块外部的周边位置可以包括:当前块外部上侧一行的周边位置(即像素位置),如当前块外部上侧第n1行的周边位置,n1可以为1,也可以为2、3等,对此不做限制。或者,当前块外部左侧一列的周边位置(即像素位置),如当前块外部左侧第n2列的周边位置,n2可以为1,也可以为2、3等,对此不做限制。当然,上述只是周边位置的几个示例,对此不做限制。当前块外部周边位置可以位于像素位置之间,即亚像素位置,此时,当前块的位置不能简单描述为第x行,而是位于第x行与第y行之间的亚像素位置行。
[0136]
示例性的,针对当前块外部周边位置的范围,可以预先指定某个范围是当前块外部的周边位置的范围;或者,可以根据权重预测角度确定当前块外部的周边位置的范围,例如,根据权重预测角度确定当前块内部的每个像素位置指向的周边位置,所有像素位置指向的周边位置的边界,可以是当前块外部的周边位置的范围,对此周边位置的范围不做限制。
[0137]
当前块外部周边位置可以包括整像素位置;或者,当前块外部周边位置可以包括非整像素位置,非整像素位置可以为亚像素位置,如1/2亚像素位置,1/4亚像素位置,3/4亚像素位置等,对此不做限制;或者,当前块外部周边位置可以包括整像素位置和亚像素位置。
[0138]
示例性的,当前块外部的两个周边位置,可以对应一个整像素位置;或者,当前块外部的四个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应一个整像素位置;或者,当前块外部的一个周边位置,可以对应两个整像素位置。当然,上述只是几个示例,对此不做限制,周边位置与整像素位置的关系可以任意配置。
[0139]
参见图4a和图4b所示,是一个周边位置对应一个整像素位置,参见图4d所示,是两个周边位置对应一个整像素位置,对于其它情况,本实施例中不再赘述。
[0140]
示例性的,若当前块所在当前帧的帧类型为p帧,则可以将当前块划分为至少一个子块,针对当前块的每个子块,该子块可以为矩形子块,也可以不为矩形子块。不同子块的形状可以相同,也可以不同。不同子块的尺寸可以相同,也可以不同。每个子块的预设位置可以相同,也可以不同,只需要编码端和解码端约定子块的预设位置即可,例如,可以按照当前块的尺寸,面积,形状等确定子块的预设位置。比如说,若子块为1*1的像素位置,则子块的预设位置可以为该像素位置本身。若该子块不为1*1的像素位置,则子块的预设位置可以包括但不限于:左上角像素位置,或右上角像素位置,或左下角像素位置,或右下角像素位置,或中心像素位置,对此不做限制,可以是子块内部的任意一个像素位置。
[0141]
比如说,可以将当前块划分为4*4大小的矩形子块,每个子块的预设位置为该子块
的中心像素位置。或者,将当前块划分为至少两个非矩形子块,每个子块的预设位置为该子块的中心像素位置。或者,可以将当前块划分为4*4大小的矩形子块、8*8大小的矩形子块、4*8大小的矩形子块、8*4大小的矩形子块,每个子块的预设位置可以为该子块的中心像素位置。
[0142]
步骤a4,编码端根据周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
[0143]
针对当前块的每个像素位置,在确定该像素位置指向的周边匹配位置后,编码端确定该周边匹配位置关联的参考权重值,并根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,例如,将该周边匹配位置关联的参考权重值确定为该像素位置的目标权重值。
[0144]
编码端根据周边匹配位置关联的参考权重值确定该像素位置的目标权重值,可以包括:若该周边匹配位置是亚像素位置,且该亚像素位置已设置参考权重值,则根据该亚像素位置的参考权重值确定该像素位置的目标权重值。若该周边匹配位置是整像素位置,且该整像素位置已设置参考权重值,则根据该整像素位置的参考权重值确定该像素位置的目标权重值。
[0145]
步骤a5,编码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
[0146]
示例性的,针对每个像素位置来说,该像素位置的目标权重值与该像素位置的关联权重值的和,可以为固定的预设数值,即关联权重值可以为预设数值与目标权重值之差。基于此,假设预设数值为8,该像素位置的目标权重值为2,则该像素位置的关联权重值为6。
[0147]
步骤a6,编码端获取为当前块创建的运动信息候选列表,该运动信息候选列表可以包括至少一个候选运动信息(为了区分方便,将运动信息候选列表中的运动信息记为候选运动信息);基于该运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
[0148]
步骤a7,针对当前块的每个像素位置,编码端根据当前块的第一目标运动信息确定该像素位置的第一预测值,并根据当前块的第二目标运动信息确定该像素位置的第二预测值。
[0149]
步骤a8,编码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
[0150]
例如,该像素位置的加权预测值可以为:(该像素位置的第一预测值*该像素位置的目标权重值 该像素位置的第二预测值*该像素位置的关联权重值)/固定的预设数值。
[0151]
步骤a9,编码端根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
[0152]
实施例3:本技术实施例提出另一种编解码方法,可以应用于解码端,该方法包括:
[0153]
步骤b1,在确定对当前块启动加权预测时,解码端获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率。示例性的,解码端确定是否对当前块启动加权预测,如果是,则执行步骤b1及后续步骤,如果否,则处理方式本技术不做限制。
[0154]
在一种可能的实施方式中,编码端判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测。解码端也判断当前块的特征信息是否满足特定条件,如果是,则确定对当前块启动加权预测;如果否,则确定不对当前块启动加权预测。关于解
码端如何基于特征信息确定当前块是否启动加权预测,与编码端的确定方式类似,在此不再重复赘述。
[0155]
在另一种可能的实施方式中,编码端根据当前块的特征信息确定当前块是否支持加权预测,在当前块支持加权预测时,还可以采用其它策略确定是否对当前块启动加权预测,如采用率失真原则确定是否对当前块启动加权预测。在确定是否对当前块启动加权预测后,编码端发送当前块的编码比特流时,编码比特流可以包括是否启动加权预测的语法,该语法表示当前块是否启动加权预测。解码端根据当前块的特征信息确定当前块是否支持加权预测,具体方式与编码端的确定方式类似,在此不再赘述。在当前块支持加权预测时,解码端可以从编码比特流中解析出是否启动加权预测的语法,根据该语法确定是否对当前块启动加权预测。
[0156]
示例性的,在确定对当前块启动加权预测时,解码端还可以获取当前块的权重预测角度,当前块的权重预测位置,及当前块的权重变换率,关于该权重预测角度,该权重预测位置及该权重变换率的相关说明,可以参见上述实施例2的步骤a1,在此不再重复赘述。
[0157]
步骤b2,解码端根据当前块的权重变换率和权重变换的起始位置(权重变换率和权重变换的起始位置可以称为权重配置参数)为当前块外部的周边位置配置参考权重值。
[0158]
示例性的,解码端可以基于当前块的权重预测角度,当前块的权重预测位置和当前块的尺寸中的至少一个,确定当前块的权重变换的起始位置。然后,解码端根据当前块的权重变换率和权重变换的起始位置为当前块外部的周边位置配置参考权重值。
[0159]
步骤b3,针对当前块的每个像素位置,解码端可以基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置对应的周边匹配位置。
[0160]
步骤b4,解码端根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值。
[0161]
步骤b5,解码端根据该像素位置的目标权重值确定该像素位置的关联权重值。
[0162]
步骤b6,解码端为当前块创建的运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息;基于运动信息候选列表获取当前块的第一目标运动信息和第二目标运动信息。
[0163]
步骤b7,针对当前块的每个像素位置,解码端根据当前块的第一目标运动信息确定该像素位置的第一预测值,并根据当前块的第二目标运动信息确定该像素位置的第二预测值。
[0164]
步骤b8,解码端根据该像素位置的第一预测值,该像素位置的目标权重值,该像素位置的第二预测值和该像素位置的关联权重值,确定该像素位置的加权预测值。
[0165]
步骤b9,解码端根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
[0166]
示例性的,针对步骤b2

步骤b9,其实现过程可以参见步骤a2

步骤a9,不同之处在于,步骤b2

步骤b9是解码端的处理流程,而不是编码端的处理流程,在此不再赘述。
[0167]
实施例4:在实施例1

实施例3中,需要基于权重预测角度进行加权处理,且采用帧间的运动信息进行加权处理,可以将这种加权处理方式记为帧间角度加权预测(angular weighted prediction,awp)模式,即,在当前块支持awp模式时,采用实施例1

实施例3对当前块进行预测,得到当前块的预测值。实施例1

实施例3涉及权重预测角度,该权重预测角
度可以是任意角度,如180度内任意角度,或,360度内任意角度,如10度,20度等。
[0168]
在一种可能的实施方式中,该权重预测角度可以为水平角度;或者,该权重预测角度可以为垂直角度;或者,该权重预测角度的斜率的绝对值(权重预测角度的斜率的绝对值也就是权重预测角度的tan值)可以为2的n次方,n为整数,如正整数,0,负整数等。
[0169]
例如,该权重预测角度的斜率的绝对值可以为1(即2的0次方),或者为2(即2的1次方),或者为1/2(即2的

1次方),或者为4(即2的2次方),或者为1/4(即2的

2次方),或者为8(即2的3次方),或者为1/8(即2的

3次方)等。示例性的,参见图5所示,示出了8种权重预测角度,这些权重预测角度的斜率的绝对值为2的n次方。
[0170]
本技术实施例中,可以对权重预测角度进行移位操作,关于对权重预测角度进行移位操作的例子参见后续实施例,因此,在权重预测角度的斜率的绝对值为2的n次方时,在对权重预测角度进行移位操作时,可以避免出现除法操作,从而方便的进行移位实现。
[0171]
示例性的,不同块尺寸(即当前块的尺寸)支持的权重预测角度的数量可以相同或者不同。例如,块尺寸a支持8种权重预测角度,块尺寸b和块尺寸c支持6种权重预测角度等。
[0172]
实施例5:在上述实施例1

实施例3中,编码端/解码端可以根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,可以采用如下方式:针对当前块外部的每个周边位置,根据该周边位置的坐标值,该权重变换的起始位置的坐标值,以及该权重变换率,配置该周边位置的参考权重值。针对每个周边位置,若该周边位置是当前块外部上侧一行的周边位置,则该周边位置的坐标值是横坐标值,权重变换的起始位置的坐标值是横坐标值。若该周边位置是当前块外部左侧一列的周边位置,则该周边位置的坐标值是纵坐标值,权重变换的起始位置的坐标值是纵坐标值。
[0173]
示例性的,可以将当前块左上角的像素位置(如左上角的第一个像素位置)作为坐标原点,当前块的周边位置的坐标值(如横坐标值或纵坐标值)和权重变换的起始位置的坐标值(如横坐标值或纵坐标值),均是相对于该坐标原点的坐标值。当然,也可以将当前块的其它像素位置作为坐标原点,实现方式与左上角的像素位置作为坐标原点的实现方式类似。
[0174]
在一种可能的实施方式中,确定周边位置的坐标值与权重变换的起始位置的坐标值的差值,确定该差值与当前块的权重变换率的乘积值。若乘积值小于第一数值(参考权重值的最小值,如0),确定该周边位置关联的参考权重值为第一数值;若乘积值大于第二数值(参考权重值的最大值,如8),确定该周边位置关联的参考权重值为第二数值;若乘积值不小于第一数值,且该乘积值不大于第二数值,确定该周边位置关联的参考权重值为该乘积值。
[0175]
在另一种可能的实施方式中,还可以根据周边位置的坐标值与权重变换的起始位置的坐标值的大小关系,确定周边位置关联的参考权重值。例如,若周边位置的坐标值小于权重变换的起始位置的坐标值,则可以确定周边位置关联的参考权重值为第一数值;若周边位置的坐标值不小于权重变换的起始位置的坐标值,则可以确定周边位置关联的参考权重值为第二数值。又例如,若周边位置的坐标值小于权重变换的起始位置的坐标值,则可以确定周边位置关联的参考权重值为第二数值;若周边位置的坐标值不小于权重变换的起始位置的坐标值,则可以确定周边位置关联的参考权重值为第一数值。
[0176]
在上述实施例中,第一数值和第二数值均可以根据经验配置,且第一数值小于第二数值,对此第一数值和第二数值均不做限制。例如,第一数值是预先约定的参考权重值的最小值,如0,第二数值是预先约定的参考权重值的最大值,如8,当然,0和8也只是示例。
[0177]
示例性的,参见图4c所示,在将所有的周边位置8等分后,可以得到7个权重预测位置,当权重预测位置为0时,表示周边位置a0,权重变换的起始位置的坐标值为周边位置a0的坐标值。当权重预测位置为1时,表示周边位置a1,权重变换的起始位置的坐标值为周边位置a1的坐标值,以此类推,关于权重变换的起始位置的坐标值的确定方式,在此不再赘述。
[0178]
实施例6:在实施例1

实施例3中,编码端/解码端根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式,可以采用如下方式:获取当前块的权重预测角度、当前块的权重变换率和当前块的权重预测位置,基于当前块的权重预测位置确定当前块的权重变换的起始位置,基于该权重变换的起始位置和该权重变换率确定权重配置参数,即该权重配置参数包括权重变换的起始位置和权重变换率。根据该权重配置参数确定当前块外部的周边位置的参考权重值。例如,采用如下方式确定参考权重值:y=clip3(最小值,最大值,a*(x

s)),x表示周边位置的索引,a表示权重变换率,s表示权重变换的起始位置。综上所述,针对当前块外部的每个周边位置,根据该周边位置的索引,权重变换的起始位置以及该权重变换率,配置该周边位置的参考权重值。
[0179]
以下结合具体步骤,对为当前块外部的周边位置配置参考权重值的过程进行说明。
[0180]
步骤c1、获取有效数量个参考权重值。
[0181]
示例性的,当前块外部的周边位置的数量为有效数量,步骤c1中,需要获取有效数量个参考权重值,该有效数量可以是基于当前块的尺寸和/或当前块的权重预测角度确定。例如,采用如下方式确定该有效数量:vl=(n (m>>x))<<1,n和m分别是当前块的高和宽,x为当前块的权重预测角度的斜率的绝对值的log2对数值,如0或1。
[0182]
在一种可能的实施方式中,针对有效数量个参考权重值,可以单调递增或单调递减。或,针对有效数量个参考权重值,可以先包括多个第一数值再包括多个第二数值,或,针对有效数量个参考权重值,可以先包括多个第二数值再包括多个第一数值。若当前块外部的周边位置包括当前块外部上侧一行的像素位置,则从左到右的顺序上的参考权重值,单调递增或单调递减。若当前块外部的周边位置包括当前块外部左侧一列的像素位置,则从上到下的顺序上的参考权重值,单调递增或单调递减。以下结合几个具体情况,对此进行说明。
[0183]
情况1:针对有效数量个参考权重值,可以单调递增,或,单调递减。例如,有效数量个参考权重值可以为[88...88765432100...00],即单调递减。又例如,有效数量个参考权重值可以为[00...00123456788...88],即单调递增。当然,上述只是示例,对此不做限制。
[0184]
示例性的,参考权重值可以是根据权重配置参数配置的,该权重配置参数可以包括权重变换率和权重变换的起始位置,权重变换率的获取方式可以参见后续实施例,权重变换的起始位置可以是根据经验配置的数值,也可以由权重预测位置确定权重变换的起始位置,还可以由权重预测角度和权重预测位置确定权重变换的起始位置,对此不做限制。
[0185]
针对有效数量个参考权重值,按照从第一个到最后一个的顺序,可以单调递增或者单调递减。例如,参考权重值的最大值为m1,参考权重值的最小值为m2,针对有效数量个参考权重值,从最大值m1至最小值m2单调递减;或,从最小值m2至最大值m1单调递增。假设m1为8,m2为0,则多个参考权重值,可以从8至0单调递减;或从0至8单调递增。
[0186]
示例性的,可以先获取权重变换率和权重变换的起始位置,然后,根据权重变换率和权重变换的起始位置,确定多个参考权重值。例如,采用如下方式确定参考权重值:y=clip3(最小值,最大值,a*(x

s)),x表示周边位置的索引,即x的取值范围是1

有效数量值,如x为1,表示第1个周边位置,y表示第1个周边位置的参考权重值,x为2,表示第2个周边位置,y表示第2个周边位置的参考权重值。a表示权重变换率,s表示权重变换的起始位置。
[0187]
clip3用于限制参考权重值位于最小值与最大值之间,最小值和最大值均可以根据经验配置,为了方便描述,在后续过程中,以最小值为0,最大值为8为例进行说明。
[0188]
a表示权重变换率,a可以是不为0的整数,如a可以是

4、

2、

1、1、2、4等,对此a的取值不做限制。若a的绝对值为1,则参考权重值从0到8需要经过0,1,2,3,4,5,6,7,8,或者,参考权重值从8到0需要经过8,7,6,5,4,3,2,1,0。
[0189]
s表示权重变换的起始位置,s可以由权重预测位置确定,例如,s=f(权重预测位置),即s是一个与权重预测位置有关的函数。例如,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行n等分,n的取值可以任意配置,如4、6、8等,而权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。或者,s可以由权重预测角度和权重预测位置确定,例如,s=f(权重预测角度,权重预测位置),即s是一个与权重预测角度和权重预测位置有关的函数。例如,可以根据权重预测角度确定当前块外部的周边位置的范围,在当前块外部的周边位置的范围确定后,可以确定周边位置的有效数量,并将所有周边位置进行n等分,权重预测位置用于表示采用当前块外部的哪个周边位置作为当前块的目标周边区域,而这个权重预测位置对应的周边位置就是权重变换的起始位置。
[0190]
综上所述,在y=clip3(最小值,最大值,a*(x

s))中,权重变换率a和权重变换的起始位置s均为已知值,针对当前块外部的每个周边位置,可以通过该函数关系确定该周边位置的参考权重值。例如,假设权重变换率a为2,权重变换的起始位置s为2,则该函数关系可以为y=2*(x

2),针对当前块外部的每个周边位置x,可以得到参考权重值y。
[0191]
综上所述,可以得到当前块的有效数量个参考权重值,这些参考权重值单调递增或单调递减。在一种可能的实施方式中,当前块外部的周边位置可以包括目标区域,目标区域的第一邻近区域,目标区域的第二邻近区域。目标区域可以包括一个参考权重值或至少两个参考权重值;若目标区域包括至少两个参考权重值,则目标区域的至少两个参考权重值单调递增或单调递减。单调递增可以是严格单调递增(即目标区域的至少两个参考权重值严格单调递增);单调递减可以是严格单调递减(即目标区域的至少两个参考权重值严格单调递减)。例如,目标区域的参考权重值从1

7单调递增,或目标区域的参考权重值从7

1单调递减。
[0192]
示例性的,第一邻近区域的参考权重值均为第一参考权重值,第二邻近区域的参考权重值均为第二参考权重值,且该第一参考权重值与该第二参考权重值不同。例如,第一
邻近区域的参考权重值均为0,目标区域包括至少两个参考权重值,参考权重值从1

7单调递增,第二邻近区域的参考权重值均为8,显然,第一邻近区域的参考权重值与第二邻近区域的参考权重值不同。又例如,第一邻近区域的参考权重值均为8,目标区域包括至少两个参考权重值,参考权重值从7

1单调递减,第二邻近区域的参考权重值均为0。
[0193]
情况2:针对有效数量个参考权重值,可以先包括多个第一数值,再包括多个第二数值,或者,可以先包括多个第二数值,再包括多个第一数值。例如,有效数量个参考权重值可以为[88...8800...00]或[00...0088...88]。示例性的,可以根据权重变换的起始位置确定多个参考权重值。例如,权重变换的起始位置表示第s个参考权重值,因此,第s个参考权重值之前(不包括第s个参考权重值)的所有参考权重值为第一数值(如8),第s个参考权重值之后(包括第s个参考权重值)的所有参考权重值为第二数值(如0)。或者,第s个参考权重值之前的所有参考权重值为第二数值,第s个参考权重值之后的所有参考权重值为第一数值。
[0194]
步骤c2,根据有效数量个参考权重值,配置当前块外部的周边位置的参考权重值。
[0195]
示例性的,当前块外部的周边位置的数量为有效数量,且参考权重值的数量为有效数量,因此,可以将有效数量个参考权重值,配置为当前块外部的周边位置的参考权重值。
[0196]
例如,可以将第1个参考权重值配置为当前块外部的第1个周边位置的参考权重值,将第2个参考权重值配置为当前块外部的第2个周边位置的参考权重值,以此类推。
[0197]
综上所述,由于已经为当前块外部的周边位置配置参考权重值,即每个周边位置均具有参考权重值,因此,在从当前块外部的周边位置中确定像素位置指向的周边匹配位置后,可以确定该周边匹配位置关联的参考权重值,也就是该像素位置的目标权重值。
[0198]
以下结合几个具体应用场景,对上述过程的实施方式进行说明。在后续几个应用场景中,假设当前块的尺寸为m*n,m为当前块的宽,n为当前块的高。x为权重预测角度的tan值的log2对数值,如0或者1。y为权重预测位置的索引值,a,b,c,d为预设的常数值。validlenth(后续简称为vl)表示有效数量,firstpos(后续简称为fp)表示权重变换的起始位置,referenceweights[i]表示第i个周边位置的参考权重值,clip3用于限制参考权重值位于0与8之间,i表示当前块外部的周边位置的索引,a表示权重变换率的绝对值。
[0199]
应用场景1:基于当前块的尺寸和当前块的权重预测角度确定有效数量(也可以称为参考权重有效长度,即vl),获取权重变换的起始位置(即fp)。例如,通过如下公式确定vl:vl=(n (m>>x))<<1;通过如下公式确定fp:fp=(vl>>1)

a y*((vl

1)>>3)。基于此,通过如下公式导出每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,a*(i

fp))。i的取值范围可以是0~vl

1,或1~vl。在得到当前块的周边位置的参考权重值referenceweights[i]后,通过如下公式导出当前块的像素位置(x,y)的目标权重值:sampleweight[x][y]=referenceweights[(y<<1) ((x<<1)>>x)],<<表示左移,>>表示右移。
[0200]
应用场景2:通过如下公式确定vl:vl=(n (m>>x))<<1;通过如下公式确定fp:fp=(vl>>1)

b y*((vl

1)>>3)

((m<<1)>>x)。通过如下公式导出每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,a*(i

fp))。通过如下公式导出当前块的像素位置(x,y)的目标权重值:sampleweight[x][y]=referenceweights[(y<<1)

((x<<1)>>x)]。
[0201]
应用场景3:通过如下公式确定vl:vl=(m (n>>x))<<1;通过如下公式确定fp:fp=(vl>>1)

c y*((vl

1)>>3)

((n<<1)>>x)。通过如下公式导出每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,a*(i

fp))。可以通过如下公式导出每个像素位置(x,y)的目标权重值:sampleweight[x][y]=referenceweights[(x<<1)

((y<<1)>>x)]。
[0202]
应用场景4:通过如下公式确定vl:vl=(m (n>>x))<<1;通过如下公式确定fp:fp=(vl>>1)

d y*((vl

1)>>3);通过如下公式导出当前块的每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,a*(i

fp))。通过如下公式导出当前块的每个像素位置(x,y)的目标权重值:sampleweight[x][y]=referenceweights[(x<<1) ((y<<1)>>x)]。
[0203]
应用场景5:参见图6所示,示出了四种权重变换率的参考权重值的示意图。
[0204]
在权重变换率的绝对值为1时,即权重变换率为1或者权重变换率为

1,可以通过如下公式导出当前块的每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,1*(i

fp)),上述公式可以等价为referenceweight[i]=clip3(0,8,i

fp)。在该情况中,参见图6所示的第一类情况,fp可以为4,即第1个到第4个周边位置的参考权重值为0,第5个周边位置的参考权重值为1,第6个周边位置的参考权重值为2,以此类推。
[0205]
在权重变换率的绝对值为2时,即权重变换率为2或者权重变换率为

2,通过如下公式导出当前块的每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,2*(i

fp)),上述公式可以等价为referenceweight[i]=clip3(0,8,(i

fp)<<1)。在该情况中,参见图6所示的第二类情况,fp可以为6,即第1个到第6个周边位置的参考权重值为0,第7个周边位置的参考权重值为2,第8个周边位置的参考权重值为4,以此类推。
[0206]
在权重变换率的绝对值为4时,即权重变换率为4或者权重变换率为

4,可以通过如下公式导出当前块的每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,4*(i

fp)),上述公式可以等价为referenceweight[i]=clip3(0,8,(i

fp)<<2)。在该情况中,参见图6所示的第三类情况,fp可以为7,第1个到第7个周边位置的参考权重值为0,第8个周边位置的参考权重值为4,第9

17个周边位置的参考权重值为8,以此类推。
[0207]
在权重变换率的绝对值为8时,即权重变换率为8或者权重变换率为

8,通过如下公式导出当前块的每个周边位置的参考权重值:referenceweights[i]=clip3(0,8,8*(i

fp)),上述公式可以等价为referenceweight[i]=clip3(0,8,(i

fp)<<3)。在该情况中,参见图6所示的第四类情况,fp可以为8,即第1个到第8个周边位置的参考权重值为0,第9个周边位置的参考权重值为9,第10

17个周边位置的参考权重值为8,以此类推。
[0208]
综上所述,在权重变换率的绝对值为1时,fp为4,在权重变换率的绝对值为2时,fp为6(即权重变换率1时的fp 2),在权重变换率的绝对值为4时,fp为7(即权重变换率1时的fp 3),基于此,可以对齐参考权重值为4的位置。
[0209]
示例性的,针对当前块来说,在支持权重变换率切换并启动权重变换率切换时,可以从图6所示的4类权重变换率的参考权重值分布示例中选择一种进行切换,从而通过对图像或者图像的局部区域进行权重变换率的切换,达到减弱一些图像显示场景中的图像显示的跳变突出。比如说,有一些图像显示场景中需要解决跳变比较突出的问题,awp模式的权重变化率切换能够解决这个问题。例如,混合图像内容包括部分屏幕内容,动画片,包含动画片的图像等,可以对某个含有屏幕内容的区域进行权重变换率切换,解决跳变比较突出的问题。
[0210]
在上述过程中,vl与当前块的权重预测角度和当前块的尺寸相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,vl只与当前块的尺寸相关。在上述过程中,fp与当前块的权重预测角度,当前块的尺寸,当前块的权重预测位置相关,为了方案简化,可以固化某些参数来达到优化目的,例如,可以将当前块的权重预测角度配置为固定参数值,fp只与当前块的尺寸和当前块的权重预测位置相关。或,将当前块的权重预测位置配置为固定参数值,fp只与当前块的尺寸和当前块的权重预测角度相关。或,将当前块的权重预测角度和当前块的权重预测位置均配置为固定参数值,这两个固定参数值可以相同或者不同,fp只与当前块的尺寸相关,对此不做限制。
[0211]
实施例7:在实施例1

实施例3中,编码端/解码端可以根据当前块的权重变换率和当前块的权重变换的起始位置为当前块外部的周边位置配置参考权重值。在一种可能的实施方式中,记m和n是当前块的宽和高,帧间awp模式的权重阵列导出方式,可以包括:
[0212]
步骤d1,根据awp_index获取stepindex,angleindex以及angleareaindex等参数。
[0213]
示例性的,awp_index表示权重预测位置和权重预测角度的索引值,假设存在7种权重预测位置,8种权重预测角度,则awp_index的取值范围是0

55。若权重预测位置为

3至3(表示第4个权重预测位置是中心,第4个权重预测位置为0),权重预测角度的索引为0

7,则awp_index的56个索引值对应的权重预测位置和权重预测角度的排列方式可以包括:
[0214]
排列方式1:
[0215]
{角度0,跨度

3},{角度1,跨度

3},...,{角度6,跨度

3},{角度7,跨度

3};
[0216]
{角度0,跨度

2},{角度1,跨度

2},...,{角度6,跨度

2},{角度7,跨度

2};
[0217]
{角度0,跨度

1},{角度1,跨度

1},...,{角度6,跨度

1},{角度7,跨度

1};
[0218]
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
[0219]
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
[0220]
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
[0221]
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
[0222]
排列方式2:
[0223]
{角度0,跨度0},{角度1,跨度0},...,{角度6,跨度0},{角度7,跨度0};
[0224]
{角度0,跨度

1},{角度1,跨度

1},...,{角度6,跨度

1},{角度7,跨度

1};
[0225]
{角度0,跨度1},{角度1,跨度1},...,{角度6,跨度1},{角度7,跨度1};
[0226]
{角度0,跨度

2},{角度1,跨度

2},...,{角度6,跨度

2},{角度7,跨度

2};
[0227]
{角度0,跨度2},{角度1,跨度2},...,{角度6,跨度2},{角度7,跨度2};
[0228]
{角度0,跨度

3},{角度1,跨度

3},...,{角度6,跨度

3},{角度7,跨度

3};
[0229]
{角度0,跨度3},{角度1,跨度3},...,{角度6,跨度3},{角度7,跨度3}。
[0230]
在上述排列方式1和排列方式2中,角度0表示8种权重预测角度中的第一种权重预测角度,角度1表示8种权重预测角度中的第二种权重预测角度,以此类推。
[0231]
跨度0表示7种权重预测位置中的第4个权重预测位置(即处于中心的权重预测位置),跨度

1表示第4个权重预测位置左侧第一个权重预测位置(即表示7种权重预测位置中的第3个权重预测位置),跨度1表示第4个权重预测位置右侧第一个权重预测位置(即表示7种权重预测位置中的第5个权重预测位置),跨度

2表示第4个权重预测位置左侧第二个权
重预测位置(即表示7种权重预测位置中的第2个权重预测位置),以此类推。
[0232]
在排列方式1中,{角度0,跨度

3}对应的awp_index为0,{角度1,跨度

3}对应的awp_index为1,{角度2,跨度

3}对应的awp_index为2,以此类推,{角度7,跨度3}对应的awp_index为55,显然,按照排列方式1的顺序,awp_index的取值可以依次增加。
[0233]
在排列方式2中,{角度0,跨度0}对应的awp_index为0,{角度1,跨度0}对应的awp_index为2,{角度2,跨度0}对应的awp_index为3,以此类推,{角度7,跨度3}对应的awp_index为55,显然,按照排列方式2的顺序,awp_index的取值可以依次增加。
[0234]
综上所述,当awp_index的取值越小时,码率代价越小,当awp_index的取值越大时,码率代价越大,因此,awp_index的前面取值的码率代价会低于后面取值的码率代价。基于上述原因,在排列方式2中,考虑将“跨度0”的权重预测位置放置于最前面,即“跨度0”的权重预测位置与8种权重预测角度的组合,其awp_index的取值是前8种取值,其码率代价最小。又由于“跨度0”的权重预测位置被选中的概率较大,因此,排列方式2能够降低编码的码率代价。为了方便描述,在后续实施例中,以排列方式2为例进行说明。
[0235]
示例性的,stepindex表示权重预测位置(即权重预测位置的索引值),权重预测位置的范围可以是

3至3。例如,针对第1个权重预测位置,权重预测位置为

3,针对第2个权重预测位置,权重预测位置为

2,以此类推,针对第7个权重预测位置,权重预测位置为3。
[0236]
angleindex表示权重预测角度的斜率的绝对值的log2对数值(如0或1或较大常数),angleareaindex表示权重预测角度所在的角度分区。参见图7a所示,示出8种权重预测角度,权重预测角度0的angleindex为权重预测角度0的斜率的绝对值的log2对数值,权重预测角度1的angleindex为权重预测角度1的斜率的绝对值的log2对数值,以此类推,权重预测角度7的angleindex为权重预测角度7的斜率的绝对值的log2对数值。权重预测角度0和权重预测角度1位于角度分区0,权重预测角度2和权重预测角度3位于角度分区1,权重预测角度4和权重预测角度5位于角度分区2,权重预测角度6和权重预测角度7位于角度分区3。
[0237]
综上所述,根据awp_index获取stepindex,angleindex以及angleareaindex,可以包括:
[0238]
可以采用如下公式确定stepindex:
[0239]
stepindex=(awp_index>>3 1)>>1
[0240]
if((awp_index>>3)%2==1)
[0241]
{
[0242]
stepindex=

stepindex
[0243]
}
[0244]
可以根据如下公式确定modangnum(角度编号):modangnum=awp_index%8;基于modangnum,可以采用如下方式确定angleindex:若modangnum等于2,则angleindex=7;若modangnum等于6,则angleindex=8;否则,angleindex=modangnum%2。
[0245]
可以采用如下公式确定angleareaindex:angleareaindex=modangnum>>1。
[0246]
综上所述,编码端在确定出当前块的权重预测角度和当前块的权重预测位置后,可以基于权重预测角度和权重预测位置确定awp_index的取值,参见排列方式2。编码端向解码端发送编码比特流时,该编码比特流可以携带awp_index的取值,基于此,解码端得到
awp_index的取值,并根据awp_index获取stepindex,angleindex以及angleareaindex。stepindex能够唯一确定一个权重预测位置,angleindex以及angleareaindex能够唯一确定一个权重预测角度,参见表2所示,当然,也可以采用其它方式确定权重预测角度,例如,更改分区编号等。
[0247]
表2
[0248][0249]
步骤d2,根据stepindex,angleindex和angleareaindex为当前块外部周边位置配置参考权重值,以下结合几个具体情况,对参考权重值的配置过程进行说明。
[0250]
情况一、若angleareaindex为0,即权重预测角度位于角度分区0,比如说,权重预测角度为权重预测角度0或权重预测角度1,则采用如下公式确定权重变换的起始位置fp:fp=(vl_h>>1)

6 deltapos_h。然后,采用如下公式确定当前块外部的周边位置的参考权重值:referenceweights[x]=clip3(0,8,x

fp),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为1为例进行说明,也就是说,上述公式可以等价为referenceweights[x]=clip3(最小值,最大值,a*(x

fp))。x可以是当前块外部的周边位置的索引,x的取值范围是0~vl_h

1,a表示权重变换率。
[0251]
在上述公式中,vl_h可以表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在angleareaindex为0时,权重预测角度指向的当前块外部的周边位置,可以是左侧一列的周边位置,因此,可以将有效数量记为vl_h。
[0252]
示例性的,可以采用如下公式确定有效数量vl_h:vl_h=(n (m>>angleindex))<<1。此处左移一位,是因为公式采用1/2

pel精度,若为1

pel精度,则vl_h=(n (m>>angleindex));若为1/4

pel精度,则vl_h=(n (m>>angleindex))<<2;若为2

pel精度,则vl_h=(n (m>>angleindex))>>1,其他像素精度以此类推,在此不在赘述。之后的公式中,涉及的部分>>1操作,均可能因为像素精度的不同而发生改变。
[0253]
deltapos_h表示位置变化量参数(即中间参数),在angleareaindex为0时,权重预测角度指向的当前块外部的周边位置,是当前块外部左侧一列的周边位置,将位置变化量参数记为deltapos_h。采用如下公式确定deltapos_h:deltapos_h=stepindex*((vl_h>>3)

1)。
[0254]
情况二、若angleareaindex为1,即权重预测角度位于角度分区1,比如说,权重预测角度为权重预测角度2或权重预测角度3,则可以采用如下公式确定权重变换的起始位置
fp:fp=(vl_h>>1)

4 deltapos_h

((m<<1)>>angleindex)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:referenceweights[x]=clip3(0,8,a*(x

fp)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~vl_h

1。
[0255]
在上述公式中,vl_h和deltapos_h可以参见情况一,在此不再赘述。
[0256]
情况三、若angleareaindex为2,即权重预测角度位于角度分区2,比如说,权重预测角度为权重预测角度4或权重预测角度5,则可以采用如下公式确定权重变换的起始位置fp:fp=(vl_w>>1)

4 deltapos_w

((n<<1)>>angleindex)。然后,采用如下公式确定当前块外部的周边位置的参考权重值:referenceweights[x]=clip3(0,8,a*(x

fp)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~vl_w

1。
[0257]
在上述公式中,vl_w表示当前块外部的周边位置的数量(即有效数量,也可以称为有效长度),在angleareaindex为2时,权重预测角度指向的当前块外部的周边位置,可以是上侧一行的周边位置,因此,将有效数量记为vl_w。示例性的,可以采用如下公式确定有效数量vl_w:vl_w=(m (n>>angleindex))<<1。
[0258]
deltapos_w表示位置变化量参数(即中间参数),在angleareaindex为2时,权重预测角度指向的当前块外部的周边位置,是当前块外部上侧一行的周边位置,将位置变化量参数记为deltapos_w。采用如下公式确定deltapos_w:deltapos_w=stepindex*((vl_w>>3)

1)。
[0259]
情况四、若angleareaindex为3,即权重预测角度位于角度分区3,比如说,权重预测角度为权重预测角度6或权重预测角度7,则可以采用如下公式确定权重变换的起始位置fp:fp=(vl_w>>1)

6 deltapos_w。然后,可以采用如下公式确定当前块外部的周边位置的参考权重值:referenceweights[x]=clip3(0,8,a*(x

fp)),在该公式中,是以参考权重值的最小值为0,参考权重值的最大值为8,权重变换率为a为例进行说明。x可以是当前块外部的周边位置的索引,x的取值范围是0~vl_w

1。
[0260]
在上述公式中,vl_w和deltapos_w可以参见情况三,在此不再赘述。
[0261]
综上所述,可以根据angleareaindex确定应该采用哪种情况进行处理,例如,情况一和情况二中,根据angleindex和stepindex确定vl_h和deltapos_h,根据vl_h和deltapos_h确定fp,继而根据fp配置参考权重值。情况三和情况四中,根据angleindex和stepindex确定vl_w和deltapos_w,根据vl_w和deltapos_w确定fp,继而根据fp配置参考权重值。
[0262]
上述各情况中的公式的区别在于,将当前块的左上角作为坐标原点时,参考权重值referenceweights[x]的起始位置发生了变化。例如,参见图7b所示,示出了角度分区2和角度分区3的示例,在1/2

pel精度时,参考权重值referenceweights[x]的起始位置为(高<<1)>>angleindex,即公式中的偏移
“–
((n<<1)>>angleindex)”。角度分区0和角度分区1的实现类似,只是公式中的偏移为
“–
((m<<1)>>angleindex)”,即高度改为宽度即可。
[0263]
步骤d3,根据angleindex和参考权重值referenceweights[x]获取像素位置的亮度权重值。
[0264]
情况一、若angleareaindex为0,则采用如下公式确定像素位置(x,y)的亮度权重
值:awpweightarrayy[x][y]=referenceweights[(y<<1) ((x<<1)>>angleindex)],(y<<1) ((x<<1)>>angleindex)表示像素位置(x,y)指向的周边位置,referenceweights[(y<<1) ((x<<1)>>angleindex)]表示周边位置的参考权重值。x的取值范围是0~m

1,y的取值范围是0~n

1。
[0265]
情况二、若angleareaindex为1,则采用如下公式确定像素位置(x,y)的亮度权重值:awpweightarrayy[x][y]=referenceweights[(y<<1)

((x<<1)>>angleindex)],(y<<1)

((x<<1)>>angleindex)表示像素位置(x,y)指向的周边位置,referenceweights[(y<<1)

((x<<1)>>angleindex)]表示周边位置的参考权重值。x的取值范围是0~m

1;y的取值范围是0~n

1。
[0266]
情况三、若angleareaindex为2,则采用如下公式确定像素位置(x,y)的亮度权重值:awpweightarrayy[x][y]=referenceweights[(x<<1)

((y<<1)>>angleindex)],(x<<1)

((y<<1)>>angleindex)表示像素位置(x,y)指向的周边位置,referenceweights[(x<<1)

((y<<1)>>angleindex)]表示周边位置的参考权重值。x的取值范围是0~m

1;y的取值范围是0~n

1。
[0267]
情况四、若angleareaindex为3,则采用如下公式确定像素位置(x,y)的亮度权重值:awpweightarrayy[x][y]=referenceweights[(x<<1) ((y<<1)>>angleindex)],(x<<1) ((y<<1)>>angleindex)表示像素位置(x,y)指向的周边位置,referenceweights[(x<<1) ((y<<1)>>angleindex)]表示周边位置的参考权重值。x的取值范围是0~m

1;y的取值范围是0~n

1。
[0268]
步骤d4,根据像素位置的亮度权重值获取该像素位置的色度权重值,而该像素位置的亮度权重值和该像素位置的色度权重值,就可以组成该像素位置的目标权重值。
[0269]
例如,若色度分辨率的格式为4:2:0,则采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=awpweightarrayy[x<<1][y<<1]。又例如,若色度分辨率的格式为4:4:4,则采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=awpweightarrayy[x][y]。其中,x的取值范围是0~m/2

1;y的取值范围是0~n/2

1。
[0270]
步骤d4的另一种实现方式为:根据angleindex和参考权重值referenceweight[x]获取像素位置的色度权重值,而不需要根据亮度权重值获取色度权重值。例如,若色度分辨率的格式为4:2:0,则根据angleindex和参考权重值referenceweight[x]获取像素位置的色度权重值。
[0271]
例如,若angleareaindex为0,则可以采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=referenceweights[(y<<2) ((x<<2)>>angleindex)]。
[0272]
例如,若angleareaindex为1,则可以采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=referenceweights[(y<<2)

((x<<2)>>angleindex)]。
[0273]
例如,若angleareaindex为2,则可以采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=referenceweights[(x<<2)

((y<<2)>>angleindex)]。
[0274]
例如,若angleareaindex为3,则可以采用如下公式确定像素位置(x,y)的色度权重值:awpweightarrayuv[x][y]=referenceweights[(x<<2) ((y<<2)>>angleindex)]。
[0275]
在上述各公式中,x的取值范围是0~m

1,y的取值范围是0~n

1。
[0276]
在步骤d3和步骤d4中,各情况中的公式的区别在于,参见图7c所示,示出了角度分区2和角度分区3的示例。将当前块的左上角作为坐标原点时,(x,y)的匹配位置在角度分区2的计算公式可以为:x

y>>angleindex,(x,y)的匹配位置在角度分区3的计算公式可以为:x y>>angleindex。在1/2

pel精度时,(x,y)的匹配位置在角度分区2的计算公式可以为:(x<<1)

(y<<1)>>angleindex,(x,y)的匹配位置在角度分区3的计算公式可以为:(x<<1) (y<<1)>>angleindex。角度分区0和角度分区1的实现类似,只是交换(x,y)的位置即可。
[0277]
实施例8:在实施例1

实施例3中,编码端/解码端需要获取当前块的权重变换率,为了获取当前块的权重变换率,本实施例中,需要区分当前块所在当前帧的帧类型,即基于当前块所在当前帧的帧类型确定当前块的权重变换率,以下对权重变换率的获取方式进行说明。
[0278]
在一种可能的实施方式中,若当前块所在当前帧的帧类型为p帧,则当前块的权重变换率是参考权重值的最大值。比如说,若配置参考权重值的最大值是8(表示为当前块外部的周边位置配置的参考权重值不能大于8),则当前块的权重变换率是8,即左移3(<<3);若配置参考权重值的最大值是16,则当前块的权重变换率是16,以此类推。
[0279]
在一种可能的实施方式中,若当前块所在当前帧的帧类型为b帧,则:若当前块支持权重变换率切换模式,则可以采用如下方式获取当前块的权重变换率:获取当前块的权重变换率指示信息,并根据该权重变换率指示信息确定当前块的权重变换率。示例性的,若该权重变换率指示信息为第一指示信息,则当前块的权重变换率为第一权重变换率;若权重变换率指示信息为第二指示信息,则当前块的权重变换率为第二权重变换率。若当前块不支持权重变换率切换模式,则可以将预设的权重变换率确定为当前块的权重变换率。
[0280]
综上所述,若当前块支持权重变换率切换模式,则当前块的权重变换率可以为第一权重变换率或者第二权重变换率,且第一权重变换率与第二权重变换率不同,即,当前块的权重变换率是可变的,从而能够自适应的切换权重变换率,而不是采用统一的一个权重变换率。
[0281]
示例性的,若切换控制信息允许当前块启用权重变换率切换模式,则当前块支持权重变换率切换模式,若切换控制信息不允许当前块启用权重变换率切换模式,则当前块不支持权重变换率切换模式。该切换控制信息可以包括但不限于:序列级切换控制信息,帧级切换控制信息,slice(片)级切换控制信息,tile(片)级切换控制信息,patch(片)级切换控制信息,ctu(coding tee unit,编码树单元)级切换控制信息,lcu(largest coding unit,最大编码单元)级切换控制信息,块级切换控制信息,cu(coding unit,编码单元)级切换控制信息,pu(prediction unit,预测单元)级切换控制信息等,对此不做限制。
[0282]
对于编码端来说,可以获知切换控制信息,且获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端可以将切换控制信息编码到码流,使得解码端从码流中解析出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。编码端也可以不将切换控制信息编码到码流,而是由解码端隐式推导出切换控制信息,获知切换控制信息是否允许当前块启用权重变换率切换模式,继而确定当前块是否支持权重变换率切换模式。
[0283]
以图像级控制信息为例,图像级控制信息为picture_awp_refine_index(角度加
权预测权重调整索引值),若picture_awp_refine_index为第一取值,则表示图像级控制信息指定当前图像启用第一权重变换率,从而指定当前块启用第一权重变换率,若picture_awp_refine_index为第二取值,则表示图像级控制信息指定当前图像启用第二权重变换率,从而指定当前块启用第二权重变换率。示例性的,第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。针对其它类型的控制信息,实现过程与图像级控制信息类似,在此不再赘述。
[0284]
示例性的,当前块的权重变换率指示信息可以为当前块对应的权重变换率索引,第一指示信息用于指示当前块不需要进行权重变换率切换,第二指示信息用于指示当前块需要进行权重变换率切换。在此基础上,可以获取当前块对应的权重变换率索引,并根据该权重变换率索引确定当前块的权重变换率。例如,若该权重变换率索引用于指示当前块不需要进行权重变换率切换,则当前块的权重变换率可以为第一权重变换率;若该权重变换率索引用于指示当前块需要进行权重变换率切换,则当前块的权重变换率可以为第二权重变换率。第一权重变换率的绝对值不等于第二权重变换率的绝对值。
[0285]
例如,第一权重变换率的绝对值可以大于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为4,第二权重变换率的绝对值为1或2。或,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值为1。或,第一权重变换率的绝对值可以为8,第二权重变换率的绝对值为1或2或4。又例如,第一权重变换率的绝对值可以小于第二权重变换率的绝对值,如第一权重变换率的绝对值可以为1,第二权重变换率的绝对值可以为2或4或8。或者,第一权重变换率的绝对值可以为2,第二权重变换率的绝对值可以为4或8。或者,第一权重变换率的绝对值可以为4,第二权重变换率的绝对值可以为8。当然,上述只是几个示例,对此不做限制,只要第一权重变换率的绝对值不等于第二权重变换率的绝对值即可。
[0286]
示例性的,权重变换率索引可以包括但不限于:序列级权重变换率索引,帧级权重变换率索引,slice级权重变换率索引,tile级权重变换率索引,patch级权重变换率索引,ctu级权重变换率索引,lcu级权重变换率索引,块级权重变换率索引,cu级权重变换率索引,pu级权重变换率索引等等,对此不做限制。例如,可以将当前块对应的序列级权重变换率索引确定为当前块对应的权重变换率索引,或者,将当前块对应的帧级权重变换率索引确定为当前块对应的权重变换率索引,以此类推,只要能够得到当前块对应的权重变换率索引即可。
[0287]
示例性的,可以将第一权重变换率作为默认的权重变换率,对于编码端来说,可以获知当前块是否需要进行权重变换率切换,若当前块不需要进行权重变换率切换,则编码端确定当前块的权重变换率为第一权重变换率。若当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。或者,对于编码端来说,可以获知当前块对应的权重变换率索引,若该权重变换率索引用于指示当前块不需要进行权重变换率切换,则编码端可以确定当前块的权重变换率为第一权重变换率。若该权重变换率索引用于指示当前块需要进行权重变换率切换,则编码端确定当前块的权重变换率为第二权重变换率。
[0288]
例如,编码端确定与第一权重变换率对应的率失真代价值1,与第二权重变换率对应的率失真代价值2。若率失真代价值1小于率失真代价值2,则确定当前块不需要进行权重变换率切换,若率失真代价值2小于率失真代价值1,则确定当前块需要进行权重变换率切
换。
[0289]
编码端可以将权重变换率索引编码到码流,使得解码端从码流中解析出该权重变换率索引,并将该权重变换率索引确定为当前块对应的权重变换率索引。
[0290]
综上所述,解码端可以获知当前块对应的权重变换率索引,若该权重变换率索引用于指示当前块不需要进行权重变换率切换,则解码端确定当前块的权重变换率为第一权重变换率。若该权重变换率索引用于指示当前块需要进行权重变换率切换,则解码端确定当前块的权重变换率为第二权重变换率。例如,若权重变换率索引为第一取值,则指示当前块不需要进行权重变换率切换,若权重变换率索引为第二取值,则指示当前块需要进行权重变换率切换。示例性的,第一取值为1,第二取值为0,或者,第一取值为0,第二取值为1。当然,上述只是第一取值和第二取值的示例,对此不做限制。
[0291]
编码端也可以不将权重变换率索引编码到码流,而是由解码端隐式推导权重变换率索引,并将该权重变换率索引确定为当前块对应的权重变换率索引。例如,若连续多个块均需要进行权重变换率切换,则当前块也需要进行权重变换率切换,解码端隐式推导出权重变换率索引,将该权重变换率索引确定为当前块对应的权重变换率索引,且该权重变换率索引指示当前块需要进行权重变换率切换。若连续多个块均不需要进行权重变换率切换,则当前块也不需要进行权重变换率切换,解码端隐式推导出权重变换率索引,且权重变换率索引指示当前块不需要进行权重变换率切换。当然,上述方式只是隐式推导出权重变换率索引的示例,对此推导方式不做限制。综上所述,解码端可以获知当前块对应的权重变换率索引,若该权重变换率索引指示当前块不需要进行权重变换率切换,则确定当前块的权重变换率为第一权重变换率。若该权重变换率索引指示当前块需要进行权重变换率切换,则确定当前块的权重变换率为第二权重变换率。
[0292]
综上所述,当前块的权重变换率为第一权重变换率或第二权重变换率,即当前块的权重变换率可进行切换,权重变换率的切换依赖于某级的权重变换率索引(awprefineindex),该权重变换率索引为显示标识或隐式标识,显示标识是指将权重变换率索引编入码流,使得解码端从码流中解析出权重变换率索引,隐式标识是指编解码端根据能够得到的信息自适应推导权重变换率索引。示例性的,某级的权重变换率索引是指:
[0293]
序列级指示当前序列的权重变换率索引,作为属于当前序列的所有块的权重变换率索引;帧级指示当前帧的权重变换率索引,作为属于当前帧的所有块的权重变换率索引;slice级指示当前slice的权重变换率索引,作为属于当前slice的所有块的权重变换率索引;tile级指示当前tile的权重变换率索引,作为属于当前tile的所有块的权重变换率索引;patch级指示当前patch的权重变换率索引,作为属于当前patch的所有块的权重变换率索引;ctu级指示当前ctu的权重变换率索引,作为属于当前ctu的所有块的权重变换率索引;lcu级指示当前lcu的权重变换率索引,作为属于当前lcu的所有块的权重变换率索引;块级指示当前块的权重变换率索引,作为属于当前块的权重变换率索引;cu级指示当前cu的权重变换率索引,作为属于当前cu的权重变换率索引;pu级指示当前pu的权重变换率索引,作为属于当前pu的权重变换率索引。当然,上述只是几个示例,对此不做限制。
[0294]
示例性的,可以将第一权重变换率作为默认的权重变换率,在权重变换率索引用于指示当前块不需要进行权重变换率切换时,不对权重变换率进行切换,即确定当前块的权重变换率为第一权重变换率。在权重变换率索引用于指示当前块需要进行权重变换率切
换时,对权重变换率进行切换,即确定当前块的权重变换率为第二权重变换率。
[0295]
实施例9:在实施例1

实施例3中,编码端/解码端需要获取当前块的权重预测角度和权重预测位置,在实施例8中,可以得到当前块的权重变换率,在此基础上,编码端/解码端可以采用如下方式获取当前块的权重预测角度和权重预测位置:
[0296]
编码端和解码端约定相同的权重预测角度作为当前块的权重预测角度,并约定相同的权重预测位置作为当前块的权重预测位置。例如,编码端和解码端将权重预测角度0作为当前块的权重预测角度,编码端和解码端将权重预测位置4作为当前块的权重预测位置。
[0297]
编码端构建权重预测角度列表,权重预测角度列表包括至少一个权重预测角度,并构建权重预测位置列表,权重预测位置列表包括至少一个权重预测位置。编码端依次遍历权重预测角度列表中每个权重预测角度,遍历权重预测位置列表中每个权重预测位置,即遍历每个权重预测角度及每个权重预测位置的组合。将每个组合作为步骤a1中获取的权重预测角度和权重预测位置,基于权重预测角度,权重预测位置及权重变换率,得到当前块的加权预测值。
[0298]
例如,编码端遍历到权重预测角度0和权重预测位置0时,基于权重预测角度0和权重预测位置0得到当前块的加权预测值。遍历到权重预测角度1和权重预测位置0时,基于权重预测角度1和权重预测位置0得到当前块的加权预测值,以此类推。基于权重预测角度和权重预测位置的每个组合,得到当前块的加权预测值。基于权重预测角度和权重预测位置的组合得到当前块的加权预测值后,根据当前块的加权预测值确定率失真代价值,对此率失真代价值的确定方式不做限制,基于每个组合的率失真代价值选择最小率失真代价值。
[0299]
然后,编码端将最小率失真代价值对应的权重预测角度和权重预测位置组合分别作为目标权重预测角度和目标权重预测位置,最后,可以将目标权重预测角度在权重预测角度列表中的索引值和目标权重预测位置在权重预测位置列表中的索引值编入码流。
[0300]
针对解码端来说,解码端构建权重预测角度列表,该权重预测角度列表与编码端的权重预测角度列表相同,权重预测角度列表包括至少一个权重预测角度。构建权重预测位置列表,该权重预测位置列表与编码端的权重预测位置列表相同,权重预测位置列表包括至少一个权重预测位置。解码端在接收到当前块的编码比特流后,从编码比特流中解析出指示信息,根据该指示信息从权重预测角度列表中选择一个权重预测角度作为当前块的权重预测角度,根据该指示信息从权重预测位置列表中选择一个权重预测位置作为当前块的权重预测位置。
[0301]
比如说,编码端向解码端发送编码比特流时,该编码比特流可以包括指示信息,该指示信息用于指示当前块的权重预测角度和当前块的权重预测位置,参见实施例7中的awp_index,以排列方式2为例,基于当前块的权重预测角度和当前块的权重预测位置,编码端可以获知awp_index的取值,并在编码比特流中编码awp_index的取值(即指示信息)。解码端在接收到编码比特流后,从该编码比特流中解析出该指示信息(即awp_index的取值),基于awp_index的取值以及排列方式2,可以确定当前块的权重预测角度和当前块的权重预测位置。
[0302]
示例性的,实施例1

9是awp模式的编解码过程,在awp模式中,awp的模式数可以在序列级,帧级,slice级,tile级,patch级,ctu级,lcu级,块级,cu级,pu级开关控制大小。模式数大小的控制可以通过权重预测角度的增减或/和参考权重配置方式数量的增减。语法
标识可以单独编码flag也可以依赖别的flag导出,例如通过某个flag来控制awp模式数,如该flag为1时,权重预测角度为6种,该flag为0时,权重预测角度为8种。
[0303]
在一种可能的实施方式中,编码端/解码端构建的权重预测角度列表,还可以区分当前块所在当前帧的帧类型,即为p帧和b帧构建不同的权重预测角度列表,将为b帧构建的权重预测角度列表记为第一角度列表,将为p帧构建的权重预测角度列表记为第二角度列表,且第二角度列表中包括的权重预测角度是第一角度列表中包括的权重预测角度的子集。基于此,若当前块所在当前帧的帧类型为b帧,则可以从第一角度列表中获取当前块的权重预测角度;若当前块所在当前帧的帧类型为p帧,则可以从第二角度列表中获取当前块的权重预测角度。
[0304]
比如说,可以构建第一角度列表,该第一角度列表包括多个权重预测角度,如上述实施例的8种权重预测角度,这8种权重预测角度分别为角度0、角度1、

、角度7。
[0305]
然后,可以基于当前块的尺寸从第一角度列表中选取部分权重预测角度,基于选取的部分权重预测角度构建第二角度列表,关于选取哪些权重预测角度,参见表3所示。
[0306]
在一种可能的实施方式中,编码端/解码端构建的权重预测位置列表,还可以区分当前块所在当前帧的帧类型,即为p帧和b帧构建不同的权重预测位置列表,将为b帧构建的权重预测位置列表记为第一位置列表,将为p帧构建的权重预测位置列表记为第二位置列表,且第二位置列表中包括的权重预测位置是第一位置列表中包括的权重预测位置的子集。基于此,若当前块所在当前帧的帧类型为b帧,则可以从第一位置列表中获取当前块的权重预测位置;若当前块所在当前帧的帧类型为p帧,则可以从第二位置列表中获取当前块的权重预测位置。
[0307]
比如说,构建第一位置列表,第一位置列表包括多个权重预测位置,如上述实施例的7种权重预测位置,这7种权重预测位置分别为跨度

3、跨度

2、跨度

1、跨度0、跨度1、跨度2和跨度3。然后,可以基于当前块的尺寸从第一位置列表中选取部分权重预测位置,基于选取的部分权重预测位置构建第二位置列表,关于选取哪些权重预测位置,参见表3所示。
[0308]
表3
[0309][0310]
以上述排列方式2为例,awp_index与权重预测角度和权重预测位置的关系参见表4所示。
[0311]
表4
[0312][0313]
[0314]
结合表3和表4所示,以当前块的尺寸为8x8为例,awp_index为{16,26,28,30,32,44},16对应角度0和跨度1,26对应角度2和跨度

2,28对应角度4和跨度

2,30对应角度6和跨度

2,32对应角度0和跨度2,44对应角度4和跨度

3。综上所述,在当前块的尺寸为8x8时,第一角度列表可以包括角度0

角度7,第一位置列表可以包括跨度
‑3‑
跨度3,以及,第二角度列表可以包括角度0、角度2、角度4、角度6,第二位置列表可以包括跨度1、跨度

2、跨度2、和跨度

3,也就是说,可以基于当前块的尺寸构建第二角度列表和第二位置列表。
[0315]
同理,在当前块的尺寸为8x16、8x32、8x64、16x8、16x16、16x32、16x64、32x8、32x16、32x32、32x64、64x8、64x16、64x32、64x64时,第一角度列表均包括角度0

角度7,第一位置列表均包括跨度
‑3‑
跨度3,且可以基于当前块的尺寸构建第二角度列表和第二位置列表。
[0316]
实施例10:在实施例1

实施例3中,编码端/解码端需要获取为当前块创建的运动信息候选列表,该运动信息候选列表包括至少一个候选运动信息,且运动信息候选列表中的候选运动信息可以为单向运动信息。例如,获取待加入到运动信息候选列表中的至少一个可用运动信息,基于这些可用运动信息获取为当前块创建的运动信息候选列表。至少一个可用运动信息包括但不限于如下运动信息的至少一种:时域运动信息;空域运动信息;预设运动信息。
[0317]
在一种可能的实施方式中,针对时域运动信息,待加入到运动信息候选列表中的可用运动信息的获取过程,可以包括:基于当前块的预设位置,从当前块的参考帧中选取与该预设位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息,即,该可用运动信息为时域运动信息。针对空域运动信息,待加入到运动信息候选列表中的可用运动信息的获取过程,可以包括:针对当前块的空域相邻块,若空域相邻块存在,且该空域相邻块采用帧间预测模式,则可以将该空域相邻块的运动信息确定为可用运动信息,即,该可用运动信息为空域运动信息。针对预设运动信息,待加入到运动信息候选列表中的可用运动信息的获取过程,可以包括:可以将预设运动信息确定为可用运动信息,该预设运动信息可以包括但不限于基于该运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。
[0318]
在一种可能的实施方式中,针对待加入到运动信息候选列表中的可用运动信息,若该可用运动信息为单向运动信息,则可以将该单向运动信息加入到运动信息候选列表。或者,若该单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则可以将该单向运动信息加入到运动信息候选列表。或者,若该单向运动信息与运动信息候选列表中已存在的候选运动信息重复,则可以不将该单向运动信息加入到运动信息候选列表。
[0319]
在一种可能的实施方式中,针对待加入到运动信息候选列表中的可用运动信息,若该可用运动信息为双向运动信息,则可以根据该可用运动信息的属性将该可用运动信息裁剪为单向运动信息(如指向第一参考帧列表中参考帧的单向运动信息,或者,指向第二参考帧列表中参考帧的单向运动信息),并将该单向运动信息加入到运动信息候选列表。或者,若该单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则可以将该单向运动信息加入到运动信息候选列表。或者,若该单向运动信息与运动信息候选列表中已存在的候选运动信息重复,则可以不将该单向运动信息加入到运动信息候选列表。
[0320]
示例性的,可以采用如下方式将可用运动信息(即双向运动信息)裁剪为单向运动
信息:根据可用运动信息的编号的奇偶属性将可用运动信息裁剪为单向运动信息。例如,若可用运动信息是当前块的相邻块的运动信息,则基于相邻块的遍历次序确定该可用运动信息的编号,该相邻块为空域相邻块和/或时域相邻块。若编号的奇偶属性为奇数,则将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息;若编号的奇偶属性为偶数,将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。或,若编号的奇偶属性为偶数,则将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息;若编号的奇偶属性为奇数,则将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。
[0321]
例如,当前块的相邻块可以是空域相邻块,参见图8所示,为空域相邻块的位置的示意图,f,g,c,a,b,d是当前块的空域相邻块,当然,空域相邻块可以是f,g,c,a,b,d中的一个或多个。假设空域相邻块的遍历次序是fgcabd,则f对应的编号为0,g对应的编号为1,c对应的编号为2,a对应的编号为3,b对应的编号为4,d对应的编号为5。或者,f对应的编号为1,g对应的编号为2,c对应的编号为3,a对应的编号为4,b对应的编号为5,d对应的编号为6。当然,上述fgcabd的遍历次序只是示例,对此遍历次序不做限制,且上述编号也只是示例。假设fgcabd对应的编号依次为0,1,2,3,4,5,若可用运动信息是空域相邻块f的运动信息,则基于空域相邻块f的遍历次序确定可用运动信息的编号为0,编号0表示按照遍历顺序遍历的第一个空域相邻块。若可用运动信息是空域相邻块g的运动信息,则基于空域相邻块g的遍历次序确定可用运动信息的编号为1,编号1表示按照遍历顺序遍历的第二个空域相邻块,以此类推。
[0322]
又例如,当前块的相邻块可以是时域相邻块,假设时域相邻块的遍历次序是右上角像素位置的时域相邻块,右下角像素位置的时域相邻块,左下角像素位置的时域相邻块,则右上角像素位置的时域相邻块对应的编号为0,右下角像素位置的时域相邻块对应的编号为1,左下角像素位置的时域相邻块对应的编号为2。或,右上角像素位置的时域相邻块对应的编号为1,右下角像素位置的时域相邻块对应的编号为2,左下角像素位置的时域相邻块对应的编号为3。当然,上述遍历次序只是示例,对此遍历次序不做限制,且上述各时域相邻块对应的编号也只是示例。综上所述,若可用运动信息是右上角像素位置的时域相邻块的运动信息,则基于右上角像素位置的时域相邻块的遍历次序确定可用运动信息的编号为0,以此类推。
[0323]
又例如,当前块的相邻块可以是空域相邻块和时域相邻块,假设空域相邻块的遍历次序是fgcabd,时域相邻块位于任意空域相邻块的后面(如位于d的后面,或位于b的后面,或位于a的后面,或位于c的后面,或位于g的后面,或位于f的后面),或者,时域相邻块位于所有空域相邻块的前面(如位于f的前面),假设时域相邻块位于f的前面,则所有相邻块的遍历次序是tfgcabd,t用于表示时域相邻块(可以是任意位置的时域相邻块)。当然,上述tfgcabd的遍历次序只是示例,对此遍历次序不做限制。基于此,t对应的编号为0,f对应的编号为1,g对应的编号为2,c对应的编号为3,a对应的编号为4,b对应的编号为5,d对应的编号为6。或者,t对应的编号为1,f对应的编号为2,g对应的编号为3,c对应的编号为4,a对应的编号为5,b对应的编号为6,d对应的编号为7。
[0324]
综上所述,针对空域相邻块和时域相邻块,假设tfgcabd对应的编号依次为0,1,2,3,4,5,6,若可用运动信息是时域相邻块t的运动信息,基于时域相邻块t的遍历次序确定可
用运动信息的编号为0,若可用运动信息是空域相邻块d的运动信息,基于空域相邻块d的遍历次序确定可用运动信息的编号为6,以此类推。假设tfgcabd对应的编号依次为0,1,2,3,4,5,6,若对tfgcabd的运动信息进行依次遍历后,t的运动信息为可用运动信息且为双向运动信息,g的运动信息为可用运动信息且为双向运动信息,a的运动信息为可用运动信息且为双向运动信息,则t的运动信息的编号为0,g的运动信息的编号为2,a的运动信息的编号为4。一种情况下,t的运动信息的编号的奇偶属性为偶数,将t的运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。g的运动信息的编号的奇偶属性为偶数,将g的运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。a的运动信息的编号的奇偶属性为偶数,将a的运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。另一种情况下,t的运动信息的编号的奇偶属性为偶数,将t的运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。g的运动信息的编号的奇偶属性为偶数,将g的运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。a的运动信息的编号的奇偶属性为偶数,将a的运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。
[0325]
例如,可用运动信息还可以是预设运动信息,根据预设运动信息的编号将预设运动信息裁剪为单向运动信息。当然,若预设信息通过已经存在于列表中的单向运动信息导出,预设运动信息也为单向运动信息,不需要进行裁剪操作。假设空域相邻块的遍历次序是fgcabd,预设运动信息位于任意空域相邻块的后面,或位于所有空域相邻块的前面,假设预设运动信息位于d的后面,则遍历次序是fgcabdk,k用于表示预设运动信息(预设运动信息可以为至少一个,预设运动信息为多个时,将多个预设运动信息按照顺序排列)。当然,fgcabdk的遍历次序只是示例,对此遍历次序不做限制。基于此,fgcabdk对应的编号依次为0123456或1234567。假设相邻块(如空域相邻块和时域相邻块)的遍历次序是tfgcabd,预设运动信息可以位于任意相邻块的后面,也可以位于所有相邻块的前面,假设预设运动信息位于d的后面,则遍历次序是tfgcabdk。当然,tfgcabdk的遍历次序只是示例,对此遍历次序不做限制。基于此,tfgcabdk对应的编号依次为01234567或12345678。
[0326]
示例性的,可以采用如下方式将可用运动信息(即双向运动信息)裁剪为单向运动信息:根据可用运动信息的性质(也可理解成类型)将该可用运动信息裁剪为单向运动信息。例如,若该可用运动信息是当前块的时域相邻块的运动信息,则可以将该可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息;即,只要可用运动信息的性质为时域相邻块的运动信息,就将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。或者,若该可用运动信息是当前块的时域相邻块的运动信息,则可以将该可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息,即,只要可用运动信息的性质为时域相邻块的运动信息,就将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。
[0327]
又例如,若可用运动信息是当前块的空域相邻块的运动信息,则将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息,即,只要可用运动信息的性质为空域相邻块的运动信息,就将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。或者,若可用运动信息是当前块的空域相邻块的运动信息,则将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息,即,只要可用运动信息的性质为空域相邻块的运动信息,就将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。
[0328]
又例如,若可用运动信息是预设运动信息(即可用运动信息的性质为预设运动信息),则将可用运动信息裁剪为指向第一参考帧列表中参考帧的单向运动信息。或,若可用运动信息是预设运动信息,则将可用运动信息裁剪为指向第二参考帧列表中参考帧的单向运动信息。
[0329]
在上述实施例中,第一参考帧列表也称为第一参考帧队列,还可以称为前向参考帧列表,如list0。第二参考帧列表也称为第二参考帧队列,还可以称为后向参考帧列表,如list1。
[0330]
示例性的,可以比较单向运动信息(若可用运动信息为单向运动信息,则待比较的单向运动信息为可用运动信息,若可用运动信息为双向运动信息,则待比较的单向运动信息为对可用运动信息进行裁剪后的单向运动信息)与运动信息候选列表中已存在的候选运动信息是否重复。针对单向运动信息与候选运动信息的查重操作包括:若单向运动信息指向的参考帧与候选运动信息指向的参考帧相同,单向运动信息的运动矢量与候选运动信息的运动矢量相同,则确定单向运动信息与候选运动信息重复;否则,确定单向运动信息与候选运动信息不重复。单向运动信息指向的参考帧与候选运动信息指向的参考帧是否相同的确定过程,包括:
[0331]
情况1、若该单向运动信息指向的参考帧列表与该候选运动信息指向的参考帧列表相同,且该单向运动信息指向的参考帧索引(refidx)与该候选运动信息指向的参考帧索引(refidx)相同,则可以确定该单向运动信息指向的参考帧与该候选运动信息指向的参考帧相同;否则,可以确定该单向运动信息指向的参考帧与该候选运动信息指向的参考帧不同。
[0332]
情况2、若单向运动信息指向的参考帧的poc(显示顺序)与候选运动信息指向的参考帧的poc相同,则确定单向运动信息指向的参考帧与候选运动信息指向的参考帧相同;否则,确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0333]
情况3、若单向运动信息指向的参考帧为知识库帧,候选运动信息指向的参考帧为非知识库帧,或单向运动信息指向的参考帧为非知识库帧,候选运动信息指向的参考帧为知识库帧,则确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0334]
若单向运动信息指向的参考帧和候选运动信息指向的参考帧均为非知识库帧,则比较单向运动信息指向的参考帧的poc与候选运动信息指向的参考帧的poc是否相同,若是,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧相同;若否,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0335]
若单向运动信息指向的参考帧和候选运动信息指向的参考帧均为知识库帧,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧相同。
[0336]
情况4、若单向运动信息指向的参考帧为知识库帧,候选运动信息指向的参考帧为非知识库帧,或单向运动信息指向的参考帧为非知识库帧,候选运动信息指向的参考帧为知识库帧,则确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0337]
若单向运动信息指向的参考帧和候选运动信息指向的参考帧均为非知识库帧,则比较单向运动信息指向的参考帧的poc与候选运动信息指向的参考帧的poc是否相同,若是,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧相同;若否,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0338]
若单向运动信息指向的参考帧和候选运动信息指向的参考帧均为知识库帧,则比较单向运动信息指向的参考帧的知识库帧索引与候选运动信息指向的参考帧的知识库帧索引是否相等,若是,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧相同,若否,则可以确定单向运动信息指向的参考帧与候选运动信息指向的参考帧不同。
[0339]
实施例11:针对实施例10,可以利用时域运动信息(将时域相邻块的运动信息称为时域运动信息)和/或空域运动信息(将空域相邻块的运动信息称为空域运动信息)获取运动信息候选列表,从时域运动信息和/或空域运动信息中选取可用运动信息。例如,时域运动信息为至少一个,空域运动信息是图8中f,g,c,a,b,d等空域相邻块的运动信息。
[0340]
针对空域运动信息,可以采用如下方式获取待加入到运动信息候选列表的可用运动信息:
[0341]
参见图8所示,f,g,c,a,b,d可以是当前块e的空域相邻块,可以确定f,g,c,a,b,d的“可用”性。示例性的,如果f存在且采用帧间预测模式,则f可用,f的运动信息为可用运动信息;否则,f不可用,f的运动信息为不可用运动信息。如果g存在且采用帧间预测模式,则g可用,g的运动信息为可用运动信息;否则,g不可用,g的运动信息为不可用运动信息。如果c存在且采用帧间预测模式,则c可用,c的运动信息为可用运动信息;否则,c不可用,c的运动信息为不可用运动信息。如果a存在且采用帧间预测模式,则a可用,a的运动信息为可用运动信息;否则,a不可用,a的运动信息为不可用运动信息。如果b存在且采用帧间预测模式,则b可用,b的运动信息为可用运动信息;否则,b不可用,b的运动信息为不可用运动信息。如果d存在且采用帧间预测模式,则d可用,d的运动信息为可用运动信息;否则,d不可用,d的运动信息为不可用运动信息。
[0342]
针对时域运动信息,可以采用如下方式获取待加入到运动信息候选列表的可用运动信息:
[0343]
基于当前块的预设位置,从当前块的参考帧中选取与该预设位置对应的时域相邻块,并将该时域相邻块的运动信息确定为可用运动信息。比如说,若当前块所在当前帧为b帧,则可以根据co

located参考帧的co

located块导出单向运动信息或双向运动信息,并将该单向运动信息或双向运动信息作为可用运动信息。若当前帧为p帧,则可以根据co

located参考帧的co

located块导出单向运动信息,并将该单向运动信息作为可用运动信息。
[0344]
示例性的,co

located块是co

located参考帧中与当前块的预设位置对应的时域相邻块,当前块的预设位置可以根据经验配置,对此当前块的预设位置不做限制,如当前块的左上角像素位置,当前块的右上角像素位置,当前块的左下角像素位置,当前块的右下角像素位置,当前块的中心像素位置等。比如说,左上角像素位置的左上角坐标可以为(x0,y0),右上角像素位置的右上角坐标可以为(x0 width,y0)(x0 width

1,y0),右下角像素位置的右下角坐标可以为(x0 width,y0 height)(x0 width

1,y0 height)(x0 width,y0 height

1)(x0 width

1,y0 height

1),左下角像素位置的左下角坐标可以为(x0,y0 height)(x0,y0 height

1)关于co

located参考帧可以是预设的参考帧,如将当前块的list0中的第一个参考帧作为co

located参考帧,也可以是导出的参考帧,如将当前块的list0中与当前帧最近的参考帧作为co

located参考帧,还可以是从码流中解析出的参考帧,如针对解码端来说,可以从码流中解析出co

located参考帧的信息,继而确定co

located参考帧。
[0345]
若当前块所在当前帧为b帧,则根据co

located块的运动信息导出单向运动信息或双向运动信息,若当前块所在当前帧为p帧,则根据co

located块的运动信息导出单向运动信息。
[0346]
示例性的,关于当前块的预设位置,一种可能的实施方式是:若当前块外部右下角点的坐标位置未超出预设块边界(预设块边界可以为最大编码单元边界,如lcu边界或者ctu边界等),则该预设位置为当前块外部右下角点的坐标位置。若当前块外部右下角点的坐标位置超出预设块边界,则该预设位置为当前块内部右下角点的坐标位置(如当前块外部右下角点的坐标位置,超出预设块右边界和下边界),或者,当前块外部右下角点的坐标位置的上边位置(如当前块外部右下角点的坐标位置,超出预设块下边界),或者,当前块外部右下角点的坐标位置的左边位置(如当前块外部右下角点的坐标位置,超出预设块右边界)。
[0347]
关于时域运动信息,可以是利用时域相邻块的模式信息导出的运动信息。比如说,可以先确定时域相邻块的待变换运动信息,例如,时域相邻块采用帧内预测模式时,基于其它块的运动信息推导出时域相邻块的待变换运动信息。例如,利用空域相邻块导出运动信息作为时域相邻块的带变换运动信息,或者,可直接将指向同位帧的零运动信息作为最终的时域相邻块的运动信息;时域相邻块采用帧间预测模式时,基于时域相邻块的运动信息确定时域相邻块的待变换运动信息。然后,对时域相邻块的待变换运动信息进行变换,得到时域运动信息(即变换到当前帧的当前块能用的运动信息),例如,基于当前块的参考帧(即同位帧,也即时域相邻块所在帧)与时域相邻块的参考帧之间的距离,以及当前帧与当前块的参考帧之间的距离,对时域相邻块的运动矢量进行伸缩,得到伸缩后的运动矢量,将伸缩后的运动矢量和当前块的参考帧的索引组成运动信息,这个运动信息就是时域运动信息。针对时域相邻块为帧间预测块的情况,具体的,例如,若时域相邻块为双向运动信息,同时对指向list0的单向运动信息和指向list1的单向运动信息进行相应的伸缩操作得到时域运动信息;若时域相邻块为指向list0或指向list1的单向运动信息,将该单向运动信息进行两次伸缩得到双向运动信息作为时域运动信息。再例如,若时域相邻块的运动信息存在指向list0的运动信息,将伸缩后得到的指向list0单向运动信息作为时域运动信息,否则,将指向list1的运动信息伸缩后得到的指向list0的单向运动信息作为时域运动信息。再例如,若时域相邻块的运动信息存在指向list1的运动信息,将伸缩后得到的指向list1单向运动信息作为时域运动信息,否则,将指向list0的运动信息伸缩后得到的指向list1的单向运动信息作为时域运动信息。
[0348]
在一种可能的实施方式中,在导出时域运动信息时,还可以区分当前块所在当前帧的帧类型,即基于当前帧的帧类型导出时域运动信息,在帧类型为p帧时,导出的时域运动信息为单向,在帧类型为b帧时,导出的时域运动信息为单向或双向,以下对此进行说明。
[0349]
导出情况1、若当前块所在当前帧的帧类型为p帧,则确定当前帧的同位帧(当前帧的参考图像队列0(list0)中的参考索引值为0的参考帧作为同位帧),并从同位帧中确定当前块的同位块(即当前块的预设位置对应的块);若同位块为非帧间预测块,则导出指向第一参考帧列表(如list0)中参考索引值为0的参考帧的单向零运动信息;否则,若同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过
伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息。
[0350]
导出情况2、若当前块所在当前帧的帧类型为p帧,则确定当前帧的同位帧,并从该同位帧中确定当前块的同位块;若该同位块为非帧间预测块,则可以利用空域相邻块导出指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息;否则,若同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息。
[0351]
导出情况3、若当前块所在当前帧的帧类型为b帧,则确定当前帧的同位帧(当前帧的参考图像队列1(list1)中的参考索引值为0的参考帧作为同位帧),并从同位帧中确定当前块的同位块(即当前块的预设位置对应的块);若同位块不存在或者同位块为非帧间预测块,则利用空域相邻块导出指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表(如list1)中参考索引值为0的参考帧的双向运动信息;否则,若同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表中参考索引值为0的参考帧的双向运动信息;否则,若同位块的指向第二参考帧列表的运动信息存在,则基于指向第二参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表中参考索引值为0的参考帧的双向运动信息。
[0352]
导出情况4、若当前块所在当前帧的帧类型为b帧,则确定当前帧的同位帧,并从同位帧中确定当前块的同位块;若同位块不存在或者同位块为非帧间预测块,则导出指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表中参考索引值为0的参考帧的双向零运动信息;否则,若同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表中参考索引值为0的参考帧的双向运动信息;否则,若同位块的指向第二参考帧列表的运动信息存在,则基于指向第二参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧以及指向第二参考帧列表中参考索引值为0的参考帧的双向运动信息。
[0353]
导出情况5、若当前块所在当前帧的帧类型为b帧,则确定当前帧的同位帧,并从同位帧中确定所述当前块的同位块;若同位块不存在或者同位块为非帧间预测块,则导出指向第一参考帧列表中参考索引值为0的参考帧的单向零运动信息;否则,若同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息;否则,若同位块的指向第二参考帧列表的运动信息存在,则基于指向第二参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息。
[0354]
在一种可能的实施方式中,在得到可用运动信息(可以为单向运动信息或者双向运动信息)后,针对每个可用运动信息(如空域运动信息,时域运动信息,预设运动信息等),可以采用如下方式之一或组合将该可用运动信息加入到运动信息候选列表:
[0355]
不进行查重处理。比如说,若可用运动信息为单向运动信息,则将该单向运动信息加入到运动信息候选列表。若可用运动信息为双向运动信息,则根据该可用运动信息的属性将该可用运动信息裁剪为单向运动信息,并将裁剪后的单向运动信息加入到运动信息候
选列表。
[0356]
进行查重处理。比如说,若可用运动信息为单向运动信息,且单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则可以将该单向运动信息加入到运动信息候选列表。若单向运动信息与候选运动信息重复,则不将该单向运动信息加入到运动信息候选列表。
[0357]
若可用运动信息为双向运动信息,则可以根据该可用运动信息的属性将该可用运动信息裁剪为单向运动信息,若裁剪后的单向运动信息与运动信息候选列表中已存在的候选运动信息不重复,则可以将该单向运动信息加入到运动信息候选列表。若裁剪后的单向运动信息与候选运动信息重复,则可以不将该单向运动信息加入到运动信息候选列表。
[0358]
在该查重处理过程中,需要确定单向运动信息与运动信息候选列表中已存在的候选运动信息是否重复,针对该过程,可以确定单向运动信息与运动信息候选列表中已存在的全部候选运动信息(即已存在的每个候选运动信息)是否重复,或者,可以确定单向运动信息与运动信息候选列表中已存在的部分候选运动信息(如第一个候选运动信息,或最后一个候选运动信息,或前两个候选运动信息,或后两个候选运动信息,对此不做限制)是否重复。
[0359]
为了方便描述,将进行查重操作的两个运动信息称为运动信息1和运动信息2,当运动信息1为待查重的单向运动信息时,运动信息2为运动信息候选列表中已存在的候选运动信息;针对运动信息1和运动信息2之间的查重操作,可以采用如下方式实现:
[0360]
查重方式1、基于list refidx mv_x mv_y进行查重操作。比如说,先查指向的list列表是否相同(即是指向list0,还是指向list1,还是同时指向list0和list1),在查refidx是否相同,在查mv是否相同(即运动矢量的水平分量是否相同,以及运动矢量的垂直分量是否相同)。例如,先查询运动信息1指向的参考帧列表与运动信息2指向的参考帧列表是否相同,如果不同,则运动信息1与运动信息2不重复。如果相同,则查询运动信息1的refidx与运动信息2的refidx是否相同,若不同,则运动信息1与运动信息2不重复。若相同,则查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若否,则运动信息1与运动信息2不重复,若是,则确定运动信息1与运动信息2重复。
[0361]
若运动信息1指向的参考帧列表与运动信息2指向的参考帧列表均是list0,则二者相同,或者,若运动信息1指向的参考帧列表与运动信息2指向的参考帧列表均是list1,则二者相同,或者,若运动信息1指向的参考帧列表为list0,运动信息2指向的参考帧列表为list1,则二者不同,或者,若运动信息1指向的参考帧列表为list1,运动信息2指向的参考帧列表为list0,则二者不同,或者,若运动信息1指向的参考帧列表为list0,运动信息2指向的参考帧列表为list0和list1,则二者不同,或者,若运动信息1指向的参考帧列表为list1,运动信息2指向的参考帧列表为list0和list1,则二者不同,或者,若运动信息1指向的参考帧列表list0中参考帧索引为refidx0的参考帧,并指向list1中参考帧索引为refidx1的参考帧,运动信息2指向list0中参考帧索引为refidx2的参考帧,并指向list1中参考帧索引为refidx3的参考帧,refidx0不等于refidx2,或refidx1不等于refidx3,则二者不同。
[0362]
当然,上述只是对参考帧列表进行比较的几个示例,对此不做限制。
[0363]
例如,若运动信息1的运动矢量的水平分量与运动信息2的运动矢量的水平分量相
同,且运动信息1的运动矢量的垂直分量与运动信息2的运动矢量的垂直分量相同,则说明运动信息1的运动矢量与运动信息2的运动矢量相同。
[0364]
查重方式2、基于poc(即帧号) mv_x(运动矢量的水平分量) mv_y(运动矢量的垂直分量)进行查重操作。例如,先查指向的参考帧的poc是否相同(即若指向list0中参考帧索引为refidx0的参考帧的poc等于指向list1中参考帧索引为refidx1的参考帧的poc,也判定为相同,针对单向运动信息与单向运动信息的查重,以及,双向运动信息与双向运动信息的查重都适用);在查mv是否相同(即水平分量是否相同,以及垂直分量是否相同)。
[0365]
示例性的,先查询运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc是否相同,如果不同,则确定运动信息1与运动信息2不重复。如果相同,则可以继续查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若不同,则可以确定运动信息1与运动信息2不重复,若相同,则可以确定运动信息1与运动信息2重复。
[0366]
指向的参考帧的poc相同,包括:运动信息1指向list0中参考帧索引为refidx0的参考帧,且运动信息2指向list0中参考帧索引为refidx0的参考帧,且运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc相同。或,运动信息1指向list1中参考帧索引为refidx1的参考帧,且运动信息2指向list1中参考帧索引为refidx1的参考帧,且运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc相同。或,运动信息1指向list0中参考帧索引为refidx0的参考帧,且运动信息2指向list1中参考帧索引为refidx1的参考帧,且运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc相同。或,运动信息1指向list1中参考帧索引为refidx1的参考帧,且运动信息2指向list0中参考帧索引为refidx0的参考帧,且运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc相同。或,运动信息1指向list0中参考帧索引为refidx0的参考帧,指向list1中参考帧索引为refidx1的参考帧,运动信息2指向list0中参考帧索引为refidx2的参考帧,指向list1中参考帧索引为refidx3的参考帧,运动信息1指向的list0中参考帧索引为refidx0的参考帧的poc与运动信息2指向的list1中参考帧索引为refidx3的参考帧的poc相同,且运动信息1指向的list1中参考帧为refidx1的参考帧的poc与运动信息2指向的list0中参考帧索引为refidx2的参考帧的poc相同。当然,上述只是参考帧的poc相同的示例,对此不做限制。
[0367]
上述过程是对参考帧的poc进行查重,需要注意的是,参考帧的poc只是查重操作的一个示例,除了poc以外,还可以采用其它能够确认参考帧是否相同的属性,如参考帧的doc(解码顺序标记)等,对此不作限制。综上所述,可以将poc替换为doc。
[0368]
查重方式3、基于指向的参考帧为知识库帧进行查重操作。若运动信息1指向的参考帧为知识库帧,运动信息2指向的参考帧为非知识库帧,则确定运动信息1指向的参考帧与运动信息2指向的参考帧不同,并确定运动信息1与运动信息2不重复。或者,若运动信息1指向的参考帧为非知识库帧,运动信息2指向的参考帧为知识库帧,则确定运动信息1指向的参考帧与运动信息2指向的参考帧不同,并确定运动信息1与运动信息2不重复。
[0369]
若运动信息1指向的参考帧和运动信息2指向的参考帧均为非知识库帧,则比较运动信息1指向的参考帧的poc与运动信息2指向的参考帧的poc是否相同。若否,则确定运动信息1指向的参考帧与运动信息2指向的参考帧不同,并确定运动信息1与运动信息2不重复。若是,则确定运动信息1指向的参考帧与运动信息2指向的参考帧相同,并继续查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若不同,则确定运动信息1与运动信息
2不重复,若相同,则确定运动信息1与运动信息2重复。
[0370]
若运动信息1指向的参考帧和运动信息2指向的参考帧均为非知识库帧,还可以采用查重方式1或者查重方式2进行查重处理,对此查重处理过程不再赘述。
[0371]
若运动信息1指向的参考帧和运动信息2指向的参考帧均为均为知识库帧,则比较运动信息1指向的参考帧的知识库帧索引与运动信息2指向的参考帧的知识库帧索引是否相等,若否,则确定运动信息1指向的参考帧与运动信息2指向的参考帧不同,并确定运动信息1与运动信息2不重复。若是,则确定运动信息1指向的参考帧与运动信息2指向的参考帧相同,并继续查询运动信息1的运动矢量与运动信息2的运动矢量是否相同,若不同,则确定运动信息1与运动信息2不重复,若相同,则确定运动信息1与运动信息2重复。
[0372]
知识库帧索引是指:当存在多个知识库帧时,每个知识库帧具有唯一索引,例如,第一个知识库帧的索引为0,第二个知识库帧的索引为1,以此类推。基于此,当知识库帧索引相等时,表示两个知识库帧是同一帧,当知识库帧索引不等时,表示两个知识库帧不是同一帧。
[0373]
在一种可能的实施方式中,知识库帧(类似长期参考帧)的poc被设置为(当前帧的poc

1),因此,在判定两个参考帧是否为同一帧时,可以考虑知识库帧的情况,即采用查重方式3来确定运动信息1指向的参考帧与运动信息2指向的参考帧是否相同。
[0374]
示例性的,如果两个运动信息(如两个都是单向运动信息,如运动信息1和运动信息2)满足下面一个或多个条件,则两个运动信息不重复;否则两个运动信息重复:a)参考帧一个为知识库帧,一个为非知识库帧;b)两个运动信息均指向list0,运动矢量不相等或参考帧poc不相等;c)两个运动信息均指向list1,运动矢量不相等或参考帧poc不相等;d)一个运动信息指向list0,另一个运动信息指向list1,运动矢量不相等或参考帧poc不相等。
[0375]
示例性的,可以采用如下方式判断参考帧是否相同:如果两个参考帧满足下面一个或多个条件,则两个参考帧不同;否则两个参考帧相同。a)一个参考帧是非知识库帧(也可以称为非知识库图像或者非知识图像),另一个参考帧是知识库帧(也可以称为知识库图像或者知识图像);b)两个参考帧都是非知识库帧,两个参考帧对应的参考图像poc不相等;c)两个参考帧都是知识库帧,两个参考帧对应的知识库帧索引(即知识图像索引)不相等。
[0376]
示例性的,若两个运动信息满足下面一个或多个条件,则两个运动信息不重复,否则两个运动信息重复:两个运动信息的参考帧不同;两个运动信息对应的运动矢量不相等。
[0377]
在一种可能的实施方式中,可以利用空域运动信息和/或时域运动信息获取运动信息候选列表,如awpuniarray,以下结合几个具体应用场景,对运动信息候选列表的获取过程进行说明。在后续应用场景中,假设运动信息候选列表的长度为x,即需要添加x个可用运动信息,在将可用运动信息添加到运动信息候选列表后,将已添加的运动信息称为候选运动信息。
[0378]
应用场景1:将时域运动信息加入到运动信息候选列表,若列表长度等于x,结束添加过程,若列表长度小于x,将空域运动信息加入到运动信息候选列表,直至列表长度为x。比如说,若添加时域运动信息后,列表长度为x

1,则添加一个空域运动信息,若添加时域运动信息后,列表长度为x

2,则添加两个可以运动信息,以此类推。
[0379]
针对每个可用运动信息,在将该可用运动信息加入到运动信息候选列表时,可以进行查重操作,也可以不进行查重操作。若对单向运动信息与运动信息候选列表中已存在
的候选运动信息进行查重操作,则可以采用上述查重方式1、查重方式2或查重方式3进行查重操作。
[0380]
应用场景2:将时域运动信息与空域运动信息一起加入运动信息候选列表(空域运动信息可以位于时域运动信息之前,或者时域运动信息也可以位于空域运动信息之前,为了方便描述,后续以时域运动信息位于空域运动信息之前为例),按照时域运动信息与空域运动信息的顺序,依次将每个运动信息加入到运动信息候选列表,若列表长度等于x,结束添加过程,若列表长度小于x,将预设运动信息加入到运动信息候选列表,直至列表长度为x。
[0381]
示例性的,按照时域运动信息(即可用运动信息),f、g、c、a、b、d中可用运动信息(即空域运动信息)的顺序,将可用运动信息加入到运动信息候选列表。针对每个可用运动信息,在将该可用运动信息加入到运动信息候选列表时,可以进行查重操作,也可以不进行查重操作。若对单向运动信息与运动信息候选列表中已存在的候选运动信息进行查重操作,则可以采用上述查重方式1、查重方式2或查重方式3进行查重操作。
[0382]
综上所述,基于时域运动信息和空域运动信息的顺序,可以将时域运动信息与空域运动信息一起加入运动信息候选列表,一直到列表长度等于x,或者,遍历结束,列表长度小于x,并将预设运动信息加入到运动信息候选列表,直至列表长度为x。
[0383]
应用场景3:将时域运动信息加入运动信息候选列表,将时域运动信息加入运动信息候选列表后,预留至少y个位置给空域运动信息,时域运动信息为双向运动信息或单向运动信息。示例性的,将时域运动信息加入运动信息候选列表,若列表长度等于x

y,则结束时域运动信息的添加过程,或直至时域运动信息遍历结束,列表长度小于x

y,结束时域运动信息的添加过程。然后,将空域运动信息加入运动信息候选列表,若列表长度等于x,则结束空域运动信息的添加过程,或直至空域运动信息遍历结束,列表长度小于x,结束空域运动信息的添加过程,将预设运动信息加入到运动信息候选列表,直至列表长度为x。
[0384]
在上述各应用场景中,x可以取任意的正整数,例如,x的取值可以4,5等。
[0385]
在上述各应用场景中,均可能将预设运动信息(也可以称为缺省运动信息)加入到运动信息候选列表,关于预设运动信息的实现方式,可以包括但不限于如下方式:
[0386]
预设运动信息1:零运动信息,如指向listx且refidx小于listx中参考帧数量的零运动矢量。比如说,可以进行补0操作,即运动信息可以为(0,0,ref_idx3,listz)。
[0387]
预设运动信息2:基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。比如说,记需要放大或缩小的x轴方向或y轴方向的绝对值为temp_val,结果为result:
[0388]
1、如果temp_val<8,则result=8,或者,result=

8。
[0389]
示例性的,若候选运动信息的x轴方向的temp_val小于8,则缺省运动信息的x轴方向的运动矢量为8,或者,缺省运动信息的x轴方向的运动矢量为

8。
[0390]
若候选运动信息的y轴方向的temp_val小于8,则缺省运动信息的y轴方向的运动矢量为8,或者,缺省运动信息的y轴方向的运动矢量为

8。
[0391]
2、假设不满足1,如果temp_val<=64,则result=(temp_val*5 2)>>2,或者,result=(temp_val*3 2)>>2,正负号与候选运动信息的运动矢量的正负号相同。
[0392]
示例性的,若候选运动信息的x轴方向的运动矢量为正,且x轴方向的运动矢量的
绝对值(即temp_val)小于或等于64,则缺省运动信息的x轴方向的运动矢量为(temp_val*5 2)>>2,若候选运动信息的x轴方向的运动矢量为负,且x轴方向的运动矢量的绝对值(即temp_val)小于或等于64,则缺省运动信息的x轴方向的运动矢量为result=(temp_val*3 2)>>2。
[0393]
针对缺省运动信息的y轴方向的运动矢量,与x轴方向的运动矢量类似。
[0394]
3、假设不满足1和2,如果temp_val<=128,则result=(temp_val*9 4)>>3,或者,result=(temp_val*7 4)>>3,正负号与候选运动信息的运动矢量的正负号相同。
[0395]
4、假设不满足1,不满足2,且不满足3,则result=(temp_val*33 16)>>5,或者,result=(temp_val*31 16)>>5,正负号与候选运动信息的运动矢量的正负号相同。
[0396]
预设运动信息3:基于运动信息候选列表中已存在的候选运动信息所导出的缺省运动信息。比如说,以运动信息候选列表中的任意一个有效的候选运动信息(x,y,ref_idx,listx)为基础,ref_idx和listx分别为参考帧索引和参考帧列表,且二者统称为参考帧信息,可添加以下至少一个运动信息:(x a,y b,ref_idx,listx),a,b可以取任意整数;(k1*x,k1*y,ref_idx_new1,listx),k1为任意非0正整数,即对运动矢量进行伸缩操作;(k2*x,k2*y,ref_idx_new2,listy),k2为任意非0正整数,即对运动矢量进行伸缩操作。
[0397]
预设运动信息4:预设运动信息为运动信息候选列表中已存在的候选运动信息,即进行扩充(padding)操作,可采用运动信息候选列表中已存在的候选运动信息进行重复填充操作。例如,可采用运动信息候选列表中已存在的最后一个单向运动信息进行重复填充。
[0398]
综上所述,在列表长度小于x,需要将预设运动信息加入到运动信息候选列表时,可以将预设运动信息1加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息2加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息3加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息1和预设运动信息2加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息1和预设运动信息3加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息2和预设运动信息3加入到运动信息候选列表,直至列表长度为x或添加结束。或者,可以将预设运动信息1、预设运动信息2和预设运动信息3加入到运动信息候选列表,直至列表长度为x或添加结束。
[0399]
示例性的,在采用上述方式将预设运动信息加入到运动信息候选列表后,若列表长度仍然小于x,则可以将预设运动信息4加入到运动信息候选列表,即,采用运动信息候选列表中已存在的候选运动信息进行重复填充操作,一直到列表长度为x。
[0400]
在另一种可能的实施方式中,在列表长度小于x,需要将预设运动信息加入到运动信息候选列表时,可以直接将预设运动信息4加入到运动信息候选列表,即,采用运动信息候选列表中已存在的候选运动信息进行重复填充操作,一直到列表长度为x。
[0401]
在上述实施例中,预设运动信息可以为单向运动信息,也可为双向运动信息。若预设运动信息为单向运动信息,在将该预设运动信息添加到运动信息候选列表时,可以进行查重操作,也可以不进行查重操作。若查重操作的结果为不重复,则将该预设运动信息添加到运动信息候选列表。若查重操作的结果为重复,则不将该预设运动信息添加到运动信息候选列表。
[0402]
应用场景4:第一步,f、g、c、a、b和d是当前块的相邻预测块,确定f、g、c、a和d的“可
用”性。第二步,按时域运动信息、f、g、c、a、b和d的顺序,将可用运动信息放入到运动信息候选列表,直至运动信息候选列表长度为5或遍历结束。
[0403]
若可用运动信息为单向运动信息,将该可用运动信息与运动信息候选列表中已经存在的候选运动信息进行查重操作,若不重复则放入运动信息候选列表。否则,按照可用运动信息的编号(即遍历顺序编号)的奇偶属性将双向运动信息裁剪为单向运动信息,然后,将单向运动信息与运动信息候选列表中已经存在的候选运动信息进行查重操作,若不重复则放入运动信息候选列表。例如,若编号为偶数,则将双向运动信息裁剪为指向参考帧列表list0的单向运动信息,若编号为奇数,则将双向运动信息裁剪为指向参考帧列表list1的单向运动信息。
[0404]
第三步,如果运动信息候选列表的长度小于5,依次生成四个运动信息,生成的四个运动信息的参考帧信息与运动信息候选列表中第一个单向运动信息的参考帧信息相同。对运动信息候选列表中第一个单向运动信息的运动矢量记为(x,y),生成的四个运动信息对应的运动矢量为(x0,y0),(x1,y1),(x2,y2),(x3,y3),将新生成的运动信息依次加入运动信息候选列表,直至运动信息候选列表的长度为5,四个运动信息计算如下:
[0405]
x0=abs(x)<8?8:(abs(x)<=64?((abs(x)*5 2)>>2):(abs(x)<=128?((abs(x)*9 4)>>3):((abs(x)*33 16)>>5)))
[0406]
x0=(x<0)?

x0:x0
[0407]
y0=y
[0408]
x1=x
[0409]
y1=abs(y)<8?8:(abs(y)<=64?((abs(y)*5 2)>>2):(abs(y)<=128?((abs(y)*9 4)>>3):((abs(y)*33 16)>>5)))
[0410]
y1=(y<0)?

y1:y1
[0411]
x2=abs(x)<8?8:(abs(x)<=64?((abs(x)*3 2)>>2):(abs(x)<=128?((abs(x)*7 4)>>3):((abs(x)*31 16)>>5)))
[0412]
x2=(x<0)?

x2:x2
[0413]
x2=abs(x)<8?

x2:x2
[0414]
y2=y
[0415]
x3=x
[0416]
y3=abs(y)<8?8:(abs(y)<=64?((abs(y)*3 2)>>2):(abs(y)<=128?((abs(y)*7 4)>>3):((abs(y)*31 16)>>5)))
[0417]
y3=(y<0)?

y3:y3
[0418]
y3=abs(y)<8?

y3:y3
[0419]
?:表示三目运算符,又称条件运算符,是具有3个操作数的运算符。比如说,a?b:c整个为三目运算符,a是条件,b是条件成立的操作,c是条件不成立的操作。
[0420]
第四步,将运动信息候选列表中第awpcandidx0 1个运动候选的某一个单项运动信息赋值给mvawp0l0,mvawp0l1,refidxawp0l0,refidxawp0l1。
[0421]
第五步,将运动信息候选列表中第awpcandidx1 1个运动候选的某一个单项运动信息赋值给mvawp1l0,mvawp1l1,refidxawp1l0,refidxawp1l1。
[0422]
第四步和第五步是基于运动信息候选列表确定目标运动信息(mvawp0l0,
mvawp0l1,refidxawp0l0,refidxawp0l1和mvawp1l0,mvawp1l1,refidxawp1l0,refidxawp1l1是目标运动信息)的过程,确定过程参见后续实施例,在此不再赘述。
[0423]
在上述实施例中,运动信息候选列表的长度可以基于高层语法确定,运动信息候选列表的长度表示运动信息候选列表中候选运动信息的最大数量,高层语法用于指示运动信息候选列表的长度。高层语法可以是序列级控制信息,帧级控制信息,slice级控制信息,tile级控制信息,patch级控制信息,ctu级控制信息,lcu级控制信息,块级控制信息,cu级控制信息,pu级控制信息等,对此不做限制,如通过序列级语法awp_cand_list_length_num控制运动信息候选列表的长度。参见表5所示,为序列级语法awp_cand_list_length_num的示例。awp_enable_flag表示角度加权预测模式允许标志,是二值变量,值为1表示使用角度加权预测模式;值为0表示不使用角度加权预测模式。awpenableflag的值等于awp_enable_flag的值,如果位流中不存在awp_enable_flag,awpenableflag的值为0。awp_cand_list_length_minus2表示角度加权预测模式的运动信息候选列表的长度,awpcandlistlengthminus2的值等于awp_cand_list_length_minus2,awp_cand_list_length_minus2的取值范围可为0~3,如果位流中不存在awp_cand_list_length_minus2,awpcandlistlengthminus2的值为0。
[0424]
表5
[0425][0426]
实施例12:针对实施例1

实施例3,编码端/解码端得到运动信息候选列表后,可以基于运动信息候选列表获取第一目标运动信息和第二目标运动信息。例如,可以基于该运动信息候选列表选择一个候选运动信息作为第一目标运动信息,并选择另一个候选运动信息作为第二目标运动信息。或者,可以基于该运动信息候选列表选择一个候选运动信息(即作为第一原始运动信息)叠加第一运动矢量差导出第一目标运动信息,并选择一个候选运动信息(即作为第二原始运动信息)叠加第二运动矢量差导出第二目标运动信息。示例性的,关于第一目标运动信息和第二目标运动信息的获取方式,可以采用如下方式实现:
[0427]
方式a、若当前块所在当前帧的帧类型为p帧,则从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,并从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息。示例性的,若当前块所在当前帧的帧类型为p帧,则对当前块不启动awp_mvr模式(awp_mvr模式的内容参见后续实施例),在此基础上,直接从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,并从运动信息候选列表中选择另一个候选运动信息作为当前块的第二目标运动信息。
[0428]
示例性的,针对编码端和解码端来说,均可以获取运动信息候选列表,且编码端的运动信息候选列表与解码端的运动信息候选列表相同,对此运动信息候选列表不做限制。
[0429]
针对编码端来说,可以基于率失真原则,从运动信息候选列表中选择一个候选运动信息作为当前块的第一目标运动信息,从运动信息候选列表中选择另一个候选运动信息
作为当前块的第二目标运动信息,第一目标运动信息与第二目标运动信息不同,对此不做限制。
[0430]
在一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息b,指示信息a用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。指示信息b用于指示当前块的第二目标运动信息的索引值2,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
[0431]
解码端在接收到编码比特流后,从编码比特流中解析出指示信息a和指示信息b。基于指示信息a,解码端从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息b,解码端从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
[0432]
在另一种可能的实施方式中,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息a和指示信息c,该指示信息a可以用于指示当前块的第一目标运动信息的索引值1,索引值1表示第一目标运动信息是运动信息候选列表中的第几个候选运动信息。该指示信息c可以用于指示索引值2与索引值1的差值,索引值2表示第二目标运动信息是运动信息候选列表中的第几个候选运动信息。示例性的,索引值1和索引值2可以不同。
[0433]
解码端在接收到编码比特流后,可以从编码比特流中解析出指示信息a和指示信息c。基于指示信息a,解码端可以从运动信息候选列表中选择索引值1对应的候选运动信息,该候选运动信息作为当前块的第一目标运动信息。基于指示信息c,解码端先根据索引值2与索引值1的差值,以及索引值1确定索引值2,然后,解码端可以从运动信息候选列表中选择索引值2对应的候选运动信息,该候选运动信息作为当前块的第二目标运动信息。
[0434]
示例性的,第一目标运动信息的指示信息与第二目标运动信息的指示信息,可以进行互换,编码端与解码端一致即可,此处是指示信息的互换,不影响解析过程,即不存在解析依赖。第一目标运动信息的指示信息与第二目标运动信息的指示信息不能相等,假设编码两个索引值,索引值a的取值为1,索引值b的取值为3,先编码索引值a时,索引值b可以编码2(3

1),在先编码索引值b时,则索引值b需要编码3。综上所述,先编码索引值小的指示信息,可以降低较大索引值的编码代价。比如说,先编码第一目标运动信息的指示信息,如索引值a,后编码第二目标运动信息的指示信息,如索引值b。也可以先编码第二目标运动信息的指示信息,如索引值b,后编码第一目标运动信息的指示信息,如索引值a。例如,假设索引值a的取值为1,索引值b的取值为3,则先编码索引值a,后编码索引值b。又例如,假设索引值b的取值为1,索引值a的取值为3,则先编码索引值b,后编码索引值a。
[0435]
方式b、若当前块所在当前帧的帧类型为b帧,则从运动信息候选列表中选择候选运动信息作为当前块的第一原始运动信息,并从运动信息候选列表中选择候选运动信息作为当前块的第二原始运动信息,第一原始运动信息与第二原始运动信息可以不同,即从运动信息候选列表中选择两个不同的候选运动信息作为第一原始运动信息和第二原始运动信息;或者,第一原始运动信息与第二原始运动信息也可以相同,即从运动信息候选列表中选择相同的候选运动信息作为第一原始运动信息和第二原始运动信息。然后,可以根据第一原始运动信息确定当前块的第一目标运动信息,并根据第二原始运动信息确定当前块的第二目标运动信息,该第一目标运动信息与该第二目标运动信息不同。示例性的,若当前块
所在当前帧的帧类型为b帧,则对当前块启动awp_mvr模式,在对当前块启动awp_mvr模式时,可以采用方式b获取当前块的第一目标运动信息和当前块的第二目标运动信息。
[0436]
在一种可能的实施方式中,若高层语法允许当前块启动awp_mvr模式(即加权预测运动矢量修正模式),则采用方式b获取第一目标运动信息与第二目标运动信息,即从运动信息候选列表中选择第一原始运动信息和第二原始运动信息,基于第一原始运动信息确定第一目标运动信息,基于第二原始运动信息确定第二目标运动信息。若高层语法不允许当前块启动awp_mvr模式,则采用方式a获取第一目标运动信息和第二目标运动信息,即直接从运动信息候选列表中选择第一目标运动信息和第二目标运动信息。示例性的,该高层语法可以是序列级控制信息,帧级控制信息,slice级控制信息,tile级控制信息,patch级控制信息,ctu级控制信息,lcu级控制信息,块级控制信息,cu级控制信息,pu级控制信息等,对此不做限制。若当前块所在当前帧的帧类型为b帧,则允许对当前块启动awp_mvr模式,若当前块所在当前帧的帧类型为p帧,则不允许对当前块启动awp_mvr模式。
[0437]
在后续实施例中,以对当前块启动awp_mvr模式的处理流程为例进行说明。
[0438]
关于如何根据原始运动信息确定目标运动信息,本实施例中给出一种单向运动信息叠加运动矢量差的方案,可称之为角度加权预测运动矢量修正模式(awp_mvr模式),比如说,第一原始运动信息包括第一原始运动矢量,第一目标运动信息包括第一目标运动矢量,第二原始运动信息包括第二原始运动矢量,第二目标运动信息包括第二目标运动矢量。获取与第一原始运动矢量对应的第一运动矢量差(即mvd);根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量(第一运动矢量差与第一原始运动矢量的和作为第一目标运动矢量)。获取与第二原始运动矢量对应的第二运动矢量差;根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量(第二运动矢量差与第二原始运动矢量的和作为第二目标运动矢量)。
[0439]
示例性的,在确定第一目标运动矢量时,也可以不叠加第一运动矢量差,即将第一原始运动矢量确定为第一目标运动矢量。但是,在确定第二目标运动矢量,可以叠加第二运动矢量差,即根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量。或者,
[0440]
在确定第二目标运动矢量时,也可以不叠加第二运动矢量差,即将第二原始运动矢量确定为第二目标运动矢量。但是,在确定第一目标运动矢量,可以叠加第一运动矢量差,即根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量。或者,
[0441]
在确定第一目标运动矢量,可以叠加第一运动矢量差,即根据第一运动矢量差和第一原始运动矢量确定第一目标运动矢量。在确定第二目标运动矢量,可以叠加第二运动矢量差,即根据第二运动矢量差和第二原始运动矢量确定第二目标运动矢量。
[0442]
示例性的,可以获取第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差。以及,可以获取第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差。
[0443]
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第一运动矢量差的方向信息。可以采用如下方式获取第二运动矢量差的方向信息:解码端从当前块的编码比特流中解析出第二运动矢量差的方向信息。
[0444]
示例性的,针对解码端来说,可以采用如下方式获取第一运动矢量差的幅值信息:
解码端从当前块的编码比特流中解析出第一运动矢量差的幅值信息。可以采用如下方式获取第二运动矢量差的幅值信息:解码端从当前块的编码比特流中解析出第二运动矢量差的幅值信息。
[0445]
在一种可能的实施方式中,编码端和解码端可以约定运动矢量差的方向信息和幅值信息,若方向信息表示方向为向右,幅值信息表示幅值为a,则运动矢量差为(a,0);若方向信息表示方向为向下,幅值信息表示幅值为a,则运动矢量差为(0,

a);若方向信息表示方向为向左,幅值信息表示幅值为a,则运动矢量差为(

a,0);若方向信息表示方向为向上,幅值信息表示幅值为a,则运动矢量差为(0,a);若方向信息表示方向为向右上,幅值信息表示幅值为a,则运动矢量差为(a,a);若方向信息表示方向为向左上,幅值信息表示幅值为a,则运动矢量差为(

a,a);若方向信息表示方向为向左下,幅值信息表示幅值为a,则运动矢量差为(

a,

a);若方向信息表示方向为向右下,幅值信息表示幅值为a,则运动矢量差为(a,

a)。当然,上述只是几个示例,对此方向信息和幅值信息不做限制。
[0446]
示例性的,幅值a代表的是取值集合,实际的运动矢量差的幅值可以从该取值集合中选择,如幅值a代表的是取值集合(1,2,4,8,16),运动矢量差的幅值可以从该取值集合(1,2,4,8,16)中选择,即选择的运动矢量差的幅值可以为1,2,4,8,16。
[0447]
示例性的,运动矢量差可以支持上述方向信息的部分或全部,运动矢量差支持的幅值a的取值范围,可以根据经验进行配置,至少为一个取值,对此不做限制。如运动矢量差支持上,下,左,右等方向,运动矢量差支持如下5类步长配置:1/4

pel,1/2

pel,1

pel,2

pel,4

pel,即幅值a的取值为1,2,4,8,16。综上所述,在方向为向上时,运动矢量差可以为(0,1),(0,2),(0,4),(0,8),(0,16)。在方向为向下时,运动矢量差可以为(0,

1),(0,

2),(0,

4),(0,

8),(0,

16)。在方向为向左时,运动矢量差可以为(

1,0),(

2,0),(

4,0),(

8,0),(

16,0)。在方向为向右时,运动矢量差可以为(1,0),(2,0),(4,0),(8,0),(16,0)。
[0448]
又例如,运动矢量差支持上,下,左,右等方向,运动矢量差支持如下6类步长配置:1/4

pel,1/2

pel,1

pel,2

pel,3

pel,4

pel,即幅值a的取值可以为1,2,4,8,12,16。
[0449]
又例如,运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动矢量差支持如下3类步长配置:1/4

pel,1/2

pel,1

pel,即幅值a的取值可以为1,2,4。
[0450]
又例如,运动矢量差支持上,下,左,右等四个方向,运动矢量差支持如下4类步长配置:1/4

pel,1/2

pel,1

pel,2

pel,即幅值a的取值可以为1,2,4,8。
[0451]
当然,上述只是给出了几个示例,对此不做限制。例如,运动矢量差支持的方向可以任意选择,如可以支持上,下,左,右,左上,左下等六个方向,或者,可以支持上,下等两个方向。又例如,运动矢量差支持的步长配置可变,可以进行灵活配置。又例如,可根据量化参数qp等编码参数对步长配置进行自适应配置,如对较大qp采用1

pel,2

pel,4

pel,8

pel对较小qp采用1/4

pel,1/2

pel,1

pel,2

pel。又例如,可以在序列级,图像级,帧级,slice级,tile级,patch级,ctu级等配置合适的步长配置,使得解码端可以根据序列级,图像级,帧级,slice级,tile级,patch级,ctu级解析到的步长配置进行解码操作。
[0452]
为了方便描述,在后续实施例中,假设运动矢量差支持上,下等方向,支持1

pel,2

pel等步长配置,按照1/4

pel精度描述,则运动矢量差可以为(0,4),(0,8),(0,

4),(0,

8),即,(0,1<<2),(0,1<<3),(0,

1<<2),(0,

1<<3)。
[0453]
针对编码端来说,在获取到运动信息候选列表后,依次遍历运动信息候选列表中
的每个候选运动信息组合,该候选运动信息组合包括两个候选运动信息,一个候选运动信息作为第一原始运动信息,另一个候选运动信息作为第二原始运动信息。需要注意的是,第一原始运动信息与第二原始运动信息可以相同(即从运动信息候选列表中选出的两个候选运动信息相同),也可以不同。若第一原始运动信息与第二原始运动信息相同,则可以通过叠加不同的运动矢量差来保证第一目标运动信息和第二目标运动信息不同。针对每个候选运动信息组合,依次遍历运动矢量差组合,该运动矢量差组合包括第一运动矢量差和第二运动矢量差,第一运动矢量差和第二运动矢量差可以相同或不同。比如说,存在两个运动矢量差,分别为运动矢量差1和运动矢量差2,运动矢量差组合1为运动矢量差1和运动矢量差1,运动矢量差组合2为运动矢量差1(即第一运动矢量差)和运动矢量差2,运动矢量差组合3为运动矢量差2(即第一运动矢量差)和运动矢量差1,运动矢量差组合4为运动矢量差2和运动矢量差2。
[0454]
示例性的,针对当前遍历的候选运动信息组合和运动矢量差组合,若第一原始运动信息与第二原始运动信息不同,则第一运动矢量差和第二运动矢量差可以相同或不同。若第一原始运动信息与第二原始运动信息相同,则第一运动矢量差和第二运动矢量差可以不同。
[0455]
针对当前遍历的候选运动信息组合和运动矢量差组合,将第一原始运动信息的运动矢量与第一运动矢量差的和作为第一目标运动矢量,将第二原始运动信息的运动矢量与第二运动矢量差的和作为第二目标运动矢量,基于第一目标运动矢量和第二目标运动矢量确定率失真代价值,对此确定方式不做限制。针对每个候选运动信息组合和每个运动矢量差组合进行上述处理,均得到率失真代价值。然后,从所有率失真代价值中选择最小率失真代价值,在当前块的编码比特流中编码最小率失真代价值对应的候选运动信息组合(第一原始运动信息和第二原始运动信息)的信息和运动矢量差组合(第一运动矢量差和第二运动矢量差)的信息。
[0456]
比如说,在当前块的编码比特流中编码最小率失真代价值对应的第一原始运动信息在运动信息候选列表中的索引值,最小率失真代价值对应的第二原始运动信息在运动信息候选列表中的索引值,最小率失真代价值对应的第一运动矢量差的方向信息和幅值信息,最小率失真代价值对应的第二运动矢量差的方向信息和幅值信息。例如,针对第一运动矢量差的方向信息或者第二运动矢量差的方向信息来说,该方向信息的指示信息可以为0,用于表示方向列表中的第一个方向。针对第一运动矢量差的幅值信息或者第二运动矢量差的幅值信息来说,该幅值信息的指示信息可以为0,表示步长配置列表中的第一个步长配置。
[0457]
示例性的,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4

pel,1/2

pel,1

pel,2

pel,4

pel等5类步长配置时,则运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,2bin定长码的4个取值分别表示上,下,左,右等四个方向。运动矢量差的幅值信息可以采用截断一元码进行编码,即通过截断一元码表示5类步长配置。
[0458]
又例如,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4

pel,1/2

pel,1

pel,2

pel,3

pel,4

pel等6类步长配置时,则运动矢量差的方向信息可以采用2bin定长码(共4类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
[0459]
又例如,若运动矢量差支持上,下,左,右,左上,左下,右上,右下等八个方向,运动
矢量差支持1/4

pel,1/2

pel,1

pel等3类步长配置时,则运动矢量差的方向信息可以采用3bin定长码(共8类值)进行编码,运动矢量差的幅值信息可以采用截断一元码进行编码。
[0460]
又例如,若运动矢量差支持上,下,左,右等四个方向,运动矢量差支持1/4

pel,1/2

pel,1

pel,2

pel等4类步长配置时,基于此,则运动矢量差的方向信息可以采用截断一元码进行编码,运动矢量差的幅值信息可以采用2bin定长码(共4类值)进行编码。
[0461]
当然,上述只是编码方式的几个示例,对此编码方式不做限制。
[0462]
综上所述,针对编码端来说,可以在一定区域内搜索到最佳运动矢量(即目标运动矢量),而后将最佳运动矢量与原始运动矢量的差值,作为运动矢量差(mvd),将运动矢量差的幅值信息和方向信息编入码流。编码端在一定区域内搜索最佳运动矢量时,需要约定运动矢量差的方向以及幅值,即,在(a,0),(0,

a),(

a,0),(0,a),(a,a),(

a,a),(

a,

a),(a,

a)等运动矢量差的限定范围内,搜索最佳运动矢量。
[0463]
针对解码端来说,在接收到当前块的编码比特流后,可以从编码比特流中解析出第一原始运动信息在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动信息,将该候选运动信息作为当前块的第一原始运动信息。解码端可以从编码比特流中解析出第二原始运动信息在运动信息候选列表中的索引值,并从运动信息候选列表中选择与该索引值对应的候选运动信息,将该候选运动信息作为当前块的第二原始运动信息。
[0464]
解码端还可以从该编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第一运动矢量差。以及,从该编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据该方向信息和该幅值信息确定第二运动矢量差。
[0465]
然后,解码端可以根据第一运动矢量差和第一原始运动信息确定当前块的第一目标运动信息,并根据第二运动矢量差和第二原始运动信息确定当前块的第二目标运动信息。
[0466]
示例性的,在根据第一运动矢量差的方向信息和第一运动矢量差的幅值信息确定第一运动矢量差时,若第一运动矢量差的幅值信息表示幅值为a1,则:若第一运动矢量差的方向信息表示方向为向右,则第一运动矢量差为(a1,0);若第一运动矢量差的方向信息表示方向为向下,则第一运动矢量差为(0,

a1);若第一运动矢量差的方向信息表示方向为向左,则第一运动矢量差为(

a1,0);若第一运动矢量差的方向信息表示方向为向上,则第一运动矢量差为(0,a1)。若第一运动矢量差的方向信息表示方向为向右上,则第一运动矢量差为(a1,a1);若第一运动矢量差的方向信息表示方向为向左上,则第一运动矢量差为(

a1,a1);若第一运动矢量差的方向信息表示方向为向左下,则第一运动矢量差为(

a1,

a1);若第一运动矢量差的方向信息表示方向为向右下,则第一运动矢量差为(a1,

a1)。
[0467]
在根据第二运动矢量差的方向信息和第二运动矢量差的幅值信息确定第二运动矢量差时,若第二运动矢量差的幅值信息表示幅值为a2,则:若第二运动矢量差的方向信息表示方向为向右,则第二运动矢量差为(a2,0);若第二运动矢量差的方向信息表示方向为向下,则第二运动矢量差为(0,

a2);若第二运动矢量差的方向信息表示方向为向左,则第二运动矢量差为(

a2,0);若第二运动矢量差的方向信息表示方向为向上,则第二运动矢量差为(0,a2)。若第二运动矢量差的方向信息表示方向为向右上,则第二运动矢量差为(a2,
a2);若第二运动矢量差的方向信息表示方向为向左上,则第二运动矢量差为(

a2,a2);若第二运动矢量差的方向信息表示方向为向左下,则第二运动矢量差为(

a2,

a2);若第二运动矢量差的方向信息表示方向为向右下,则第二运动矢量差为(a2,

a2)。
[0468]
参见上述实施例,编码端在对运动矢量差的方向信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的方向信息进解码,得到运动矢量差的方向信息,如上,下,左,右,左上,左下,右上,右下等。
[0469]
参见上述实施例,编码端在对运动矢量差的幅值信息进行编码时,可以采用定长码,截断一元码等方式,因此,解码端可以采用定长码,截断一元码等方式,对运动矢量差的幅值信息进解码,得到运动矢量差的幅值信息,如1/4

pel,1/2

pel,1

pel,2

pel等步长配置,继而根据1/4

pel,1/2

pel,1

pel,2

pel等步长配置确定出运动矢量差的幅值a的取值。
[0470]
在一种可能的实施方式中,编码端还可以在编码比特流中编码用于指示是否对第一原始运动矢量叠加运动矢量差的第一修正标志和用于指示是否对第一原始运动矢量叠加运动矢量差的第二修正标志,该第一修正标志用于指示对第一原始运动矢量叠加或者不叠加运动矢量差,该第二修正标志用于指示对第二原始运动矢量叠加或者不叠加运动矢量差。
[0471]
解码端在接收到当前块的编码比特流后,可以先从当前块的编码比特流中解析出第一修正标志和第二修正标志。若第一修正标志用于指示对第一原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差,继而根据第一原始运动矢量和第一运动矢量差确定当前块的第一目标运动矢量。若第一修正标志用于指示对第一原始运动矢量不叠加运动矢量差,则不会解析第一运动矢量差的方向信息和幅值信息,可以直接将第一原始运动矢量作为当前块的第一目标运动矢量。若第二修正标志用于指示对第二原始运动矢量叠加运动矢量差,则从当前块的编码比特流中解析出第二运动矢量差的方向信息和幅值信息,并根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差,继而根据第二原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。若第二修正标志用于指示对第二原始运动矢量不叠加运动矢量差,则不会解析第二运动矢量差的方向信息和幅值信息,可以直接将第二原始运动矢量作为当前块的第二目标运动矢量。
[0472]
示例性的,当第一修正标志为第一取值时,指示对第一原始运动矢量叠加运动矢量差,当第一修正标志为第二取值时,指示对第一原始运动矢量不叠加运动矢量差。当第二修正标志为第一取值时,指示对第二原始运动矢量叠加运动矢量差,当第二修正标志为第二取值时,表示对第二原始运动矢量不叠加运动矢量差。第一取值和第二取值可以根据经验配置,如第一取值为1,第二取值为0,或者,如第一取值为0,第二取值为1。
[0473]
在另一种可能的实施方式中,编码端还可以在编码比特流中编码用于指示是否对原始运动矢量叠加运动矢量差的修正标志,该修正标志用于指示对原始运动矢量叠加或者不叠加运动矢量差。解码端接收到编码比特流后,从编码比特流中解析出该修正标志,若该修正标志用于指示对原始运动矢量叠加运动矢量差,则从编码比特流中解析出第一运动矢量差的方向信息和幅值信息,并解析出第二运动矢量差的方向信息和幅值信息。然后,根据第一运动矢量差的方向信息和幅值信息确定第一运动矢量差,根据第一原始运动矢量和第
一运动矢量差确定当前块的第一目标运动矢量,根据第二运动矢量差的方向信息和幅值信息确定第二运动矢量差,根据第二原始运动矢量和第二运动矢量差确定当前块的第二目标运动矢量。若该修正标志用于指示对原始运动矢量不叠加运动矢量差,则不会解析第一运动矢量差的方向信息和幅值信息,也不会解析第二运动矢量差的方向信息和幅值信息,直接将第一原始运动矢量作为当前块的第一目标运动矢量,将第二原始运动矢量作为当前块的第二目标运动矢量。
[0474]
示例性的,当修正标志为第一取值时,可以指示对原始运动矢量叠加运动矢量差,当修正标志为第二取值时,可以指示对原始运动矢量不叠加运动矢量差。
[0475]
实施例13:本技术实施例中提出一种编解码方法,该方法可以应用于解码端(也可以称为视频解码器)或者编码端(也可以称为视频编码器),本实施例中,是针对帧内awp模式的加权预测,可以将帧内awp模式记为帧内sawp模式,该方法可以包括:
[0476]
步骤s11、在确定对当前块启动加权预测时,获取当前块的权重预测角度和权重配置参数,该权重配置参数包括权重变换率和权重变换的起始位置,该权重变换的起始位置可以由如下参数的至少一个确定:当前块的权重预测角度,当前块的权重预测位置,当前块的尺寸。
[0477]
示例性的,步骤s11与步骤301类似,相同之处不再赘述,不同之处在于:
[0478]
在帧内sawp模式中,不用区分帧类型,即,i帧、p帧和b帧的实现方式相同,也就是说,针对i帧、p帧和b帧来说,均采用相同的方式获取当前块的权重变换率。比如说,若当前块支持权重变换率切换模式,则:获取当前块的权重变换率指示信息;若该权重变换率指示信息为第一指示信息,则确定当前块的权重变换率为第一权重变换率;若该权重变换率指示信息为第二指示信息,则确定当前块的权重变换率为第二权重变换率。
[0479]
针对i帧、p帧和b帧来说,均采用相同的方式获取当前块的权重预测角度,比如说,构建当前块的权重预测角度列表(即步骤301中针对b帧的第一角度列表,当然,也可以是第二角度列表),可以从当前块的权重预测角度列表中获取当前块的权重预测角度。
[0480]
针对i帧、p帧和b帧来说,均采用相同的方式获取当前块的权重预测位置,比如说,构建当前块的权重预测位置列表(即步骤301中针对b帧的第一位置列表,当然,也可以是第二位置列表),可以从当前块的权重预测位置列表中获取当前块的权重预测位置。
[0481]
步骤s12,根据当前块的权重配置参数为当前块外部的周边位置配置参考权重值。
[0482]
示例性的,步骤s12与步骤302类似,在此不再重复赘述,
[0483]
步骤s13,针对当前块的每个像素位置,基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置。根据该周边匹配位置关联的参考权重值确定该像素位置的目标权重值,根据该像素位置的目标权重值确定该像素位置的关联权重值。
[0484]
示例性的,步骤s13与步骤303类似,相同之处不再赘述,不同之处在于:
[0485]
在帧内sawp模式中,不用区分帧类型,即,i帧、p帧和b帧的实现方式相同,也就是说,针对i帧、p帧和b帧来说,均基于当前块的权重预测角度从当前块外部的周边位置中确定该像素位置指向的周边匹配位置,而与子块内的预设位置指向的周边位置无关。
[0486]
步骤s14,获取为当前块创建的模式信息候选列表,模式信息候选列表包括至少一个候选模式信息;基于模式信息候选列表获取当前块的第一目标模式信息和第二目标模式
信息。
[0487]
示例性的,若对当前块启动帧内sawp模式,则模式信息候选列表可以为帧内信息候选列表,且帧内信息候选列表可以包括至少一个帧内模式(即候选帧内模式)。基于此,第一目标模式信息可以为第一目标帧内模式,第二目标模式信息可以为第二目标帧内模式。
[0488]
示例性的,编码端和解码端均可以构建帧内信息候选列表,该帧内信息候选列表包括至少两个候选帧内模式,帧内信息候选列表中的候选帧内模式可以包括但不限于:planar模式、dc模式、垂直角度模式、水平角度模式、以及各种角度模式等,对此候选帧内模式不做限制。
[0489]
在一种可能的实施方式中,在构建帧内信息候选列表后,基于该帧内信息候选列表获取当前块的第一目标帧内模式和第二目标帧内模式,可以包括但不限于:
[0490]
方式一、若存在一个帧内信息候选列表,且该帧内信息候选列表可以包括至少两个帧内模式,则从该帧内信息候选列表中选择一个帧内模式作为当前块的第一目标帧内模式,并从该帧内信息候选列表中选择另一个帧内模式作为当前块的第二目标帧内模式。
[0491]
比如说,针对编码端来说,编码端可以基于率失真原则,从帧内信息候选列表中选择一个帧内模式作为当前块的第一目标帧内模式,并从帧内信息候选列表中选择另一个帧内模式作为当前块的第二目标帧内模式,并在当前块的编码比特流中编码指示信息(用于指示第一目标帧内模式在帧内信息候选列表中的索引值,及第二目标帧内模式在帧内信息候选列表中的索引值)。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从帧内信息候选列表中选择一个帧内模式作为当前块的第一目标帧内模式,并从帧内信息候选列表中选择另一个帧内模式作为当前块的第二目标帧内模式。
[0492]
方式二、若存在两个帧内信息候选列表(将这两个帧内信息候选列表分别记为帧内信息候选列表1和帧内信息候选列表2),且每个帧内信息候选列表可以包括至少一个帧内模式,则从帧内信息候选列表1中选择一个帧内模式作为当前块的第一目标帧内模式,并从帧内信息候选列表2中选择一个帧内模式作为当前块的第二目标帧内模式。
[0493]
比如说,针对编码端来说,编码端可以基于率失真原则,从帧内信息候选列表1中选择一个帧内模式作为当前块的第一目标帧内模式,并从帧内信息候选列表2选择一个帧内模式作为当前块的第二目标帧内模式,并在当前块的编码比特流中编码指示信息(用于指示第一目标帧内模式在帧内信息候选列表1中的索引值,及第二目标帧内模式在帧内信息候选列表2中的索引值)。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从帧内信息候选列表1中选择一个帧内模式作为当前块的第一目标帧内模式,并从帧内信息候选列表2中选择一个帧内模式作为当前块的第二目标帧内模式。
[0494]
方式三、若存在一个帧内信息候选列表,且帧内信息候选列表包括至少两个帧内模式,则从该帧内信息候选列表中选择一个帧内模式作为当前块的第一原始帧内模式,并从该帧内信息候选列表中选择另一个帧内模式作为当前块的第二原始帧内模式。根据第一原始帧内模式确定当前块的第一目标帧内模式;根据第二原始帧内模式确定当前块的第二目标帧内模式。
[0495]
例如,针对编码端来说,可以确定当前块的第一目标帧内模式和第二目标帧内模
式。若帧内信息候选列表中不存在第一目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,确定第一目标帧内模式与第一原始预测模式之间的第一偏移量(如第一目标帧内模式的帧内模式号与第一原始预测模式的帧内模式号之间的差值)。若帧内信息候选列表中不存在第二目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式,确定第二目标帧内模式与第二原始预测模式之间的第二偏移量(如第二目标帧内模式的帧内模式号与第二原始预测模式的帧内模式号之间的差值)。
[0496]
编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表中的索引值,第二原始预测模式在帧内信息候选列表中的索引值,第一偏移量和第二偏移量。
[0497]
针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式。以及,基于该指示信息确定第一偏移量和第二偏移量,然后,基于第一原始预测模式和第一偏移量确定第一目标帧内模式(即第一原始预测模式的帧内模式号与第一偏移量的和),基于第二原始预测模式和第二偏移量确定第二目标帧内模式(即第二原始预测模式的帧内模式号与第二偏移量的和)。
[0498]
又例如,针对编码端来说,可以确定当前块的第一目标帧内模式和第二目标帧内模式。若帧内信息候选列表中不存在第一目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,确定第一目标帧内模式与第一原始预测模式之间的第一偏移量。若帧内信息候选列表中存在第二目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式,也即当前块的第二目标帧内模式。
[0499]
编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表中的索引值,第二原始预测模式在帧内信息候选列表中的索引值,第一偏移量。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式,并确定第一偏移量。基于第一原始预测模式和第一偏移量确定第一目标帧内模式,将第二原始预测模式确定为第二目标帧内模式。
[0500]
又例如,针对编码端来说,可以确定当前块的第一目标帧内模式和第二目标帧内模式。若帧内信息候选列表中不存在第二目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式,确定第二目标帧内模式与第二原始预测模式之间的第二偏移量。若帧内信息候选列表中存在第一目标帧内模式,则从帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,也即当前块的第一目标帧内模式。
[0501]
编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表中的索引值,第二原始预测模式在帧内信息候选列表中的索引值,第二偏移量。针对解码端来说,解码端可以从当前块的编码比特流中解析出指示信息,并基于该指示信息,从
帧内信息候选列表中选择一个帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表中选择一个帧内模式作为当前块的第二原始预测模式,并确定第二偏移量。基于第二原始预测模式和第二偏移量确定第二目标帧内模式,将第一原始预测模式确定为第一目标帧内模式。
[0502]
综上所述,可以获取与第一原始帧内模式对应的第一偏移量,并根据第一原始帧内模式和第一偏移量确定第一目标帧内模式;或者,将第一原始帧内模式确定为第一目标帧内模式。以及,可以获取与第二原始帧内模式对应的第二偏移量,并根据第二原始帧内模式和第二偏移量确定第二目标帧内模式;或者,将第二原始帧内模式确定为第二目标帧内模式。
[0503]
示例性的,参见上述实施例,解码端可以从当前块的编码比特流中解析出第一偏移量,和/或,解码端可以从当前块的编码比特流中解析出第二偏移量。
[0504]
方式四、若存在两个帧内信息候选列表(将这两个帧内信息候选列表分别记为帧内信息候选列表1和帧内信息候选列表2),且每个帧内信息候选列表可以包括至少一个帧内模式,则从帧内信息候选列表1中选择一个帧内模式作为当前块的第一原始帧内模式,并从帧内信息候选列表2中选择另一个帧内模式作为当前块的第二原始帧内模式。根据第一原始帧内模式确定当前块的第一目标帧内模式;根据第二原始帧内模式确定当前块的第二目标帧内模式。
[0505]
例如,编码端确定当前块的第一目标帧内模式和第二目标帧内模式。若帧内信息候选列表1不存在第一目标帧内模式,从帧内信息候选列表1中选择一个帧内模式作为当前块的第一原始预测模式,确定第一目标帧内模式与第一原始预测模式之间的第一偏移量。若帧内信息候选列表2不存在第二目标帧内模式,从帧内信息候选列表2中选择一个帧内模式作为当前块的第二原始预测模式,确定第二目标帧内模式与第二原始预测模式之间的第二偏移量。编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表1中的索引值,第二原始预测模式在帧内信息候选列表2中的索引值,第一偏移量和第二偏移量。
[0506]
解码端从当前块的编码比特流中解析出指示信息,基于该指示信息从帧内信息候选列表1选择帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表2选择帧内模式作为当前块的第二原始预测模式,确定第一偏移量和第二偏移量。基于第一原始预测模式和第一偏移量确定第一目标帧内模式,基于第二原始预测模式和第二偏移量确定第二目标帧内模式。
[0507]
又例如,编码端确定当前块的第一目标帧内模式和第二目标帧内模式,若帧内信息候选列表1不存在第一目标帧内模式,从帧内信息候选列表1选择帧内模式作为当前块的第一原始预测模式,确定第一目标帧内模式与第一原始预测模式之间的第一偏移量。若帧内信息候选列表2存在第二目标帧内模式,则从帧内信息候选列表2选择帧内模式作为当前块的第二原始预测模式,也即当前块的第二目标帧内模式。编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表1的索引值,第二原始预测模式在帧内信息候选列表2的索引值,第一偏移量。解码端从当前块的编码比特流解析出指示信息,基于该指示信息从帧内信息候选列表1选择帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表2选择帧内模式作为当前块的第二原始预测模式,确定第一偏移量。基
于第一原始预测模式和第一偏移量确定第一目标帧内模式,将第二原始预测模式确定为第二目标帧内模式。
[0508]
又例如,编码端确定当前块的第一目标帧内模式和第二目标帧内模式。若帧内信息候选列表2不存在第二目标帧内模式,从帧内信息候选列表2选择帧内模式作为当前块的第二原始预测模式,确定第二目标帧内模式与第二原始预测模式之间的第二偏移量。若帧内信息候选列表1存在第一目标帧内模式,从帧内信息候选列表1选择帧内模式作为当前块的第一原始预测模式,也即当前块的第一目标帧内模式。编码端在编码比特流中编码指示信息,用于指示第一原始预测模式在帧内信息候选列表1的索引值,第二原始预测模式在帧内信息候选列表2的索引值,第二偏移量。解码端从当前块的编码比特流中解析出指示信息,基于该指示信息从帧内信息候选列表1选择帧内模式作为当前块的第一原始预测模式,从帧内信息候选列表2选择帧内模式作为当前块的第二原始预测模式,确定第二偏移量。基于第二原始预测模式和第二偏移量确定第二目标帧内模式,将第一原始预测模式确定为第一目标帧内模式。
[0509]
步骤s15,针对当前块的每个像素位置,根据当前块的第一目标模式信息确定该像素位置的第一预测值,根据当前块的第二目标模式信息确定该像素位置的第二预测值;根据该第一预测值,该目标权重值,该第二预测值和该关联权重值,确定该像素位置的加权预测值。
[0510]
步骤s16,根据当前块的所有像素位置的加权预测值确定当前块的加权预测值。
[0511]
示例性的,步骤s15和步骤s16与步骤305和步骤306类似,在此不再重复赘述。
[0512]
示例性的,实施例2、实施例3、实施例4、实施例5、实施例6、实施例7、实施例8和实施例9的内容,也可以应用到帧内sawp模式。与实施例2

实施例9的内容不同的是,在帧内sawp模式中,不用区分帧类型,即,i帧、p帧和b帧的实现方式相同,也就是说,在实施例2

实施例9中,区分p帧和b帧的方案,在帧内sawp模式中,不用区分帧类型,i帧、p帧和b帧的实现方式均可以借鉴实施例2

实施例9的b帧方案,在此不再重复赘述。
[0513]
实施例14:在上述实施例的基础上,以下结合具体应用场景,对帧间awp模式、awp_mvr模式(帧间awp模式的子模式)和帧内sawp模式的相关语法进行说明:
[0514]
参见语法表1所示,为序列头的语法表的一个示例。
[0515]
语法表1
[0516][0517][0518]
在语法表1中,sawp_enable_flag为i帧、p帧、b帧的sawp模式的高层语法开关,awp_enable_flag为p帧、b帧的awp模式和awp_mvr模式共用的高层语法开关。
[0519]
sawp_enable_flag称为空域角度加权预测模式允许标志,二值变量。值为
‘1’
表示可使用空域角度加权预测模式;值为
‘0’
表示不应使用空域角度加权预测模式。sawpenableflag的值等于sawp_enable_flag的值。若位流不存在sawp_enable_flag,sawpenableflag的值为0。
[0520]
awp_enable_flag可以称为角度加权预测模式允许标志,二值变量。值为
‘1’
表示可使用角度加权预测模式;值为
‘0’
表示不应使用角度加权预测模式。awpenableflag的值
等于awp_enable_flag的值。如果位流中不存在awp_enable_flag,awpenableflag的值为0。
[0521]
参见语法表2和语法表3所示,为图像头的语法表的一个示例。
[0522]
语法表2
[0523]
if(sawpenableflag){ picture_awp_refine_indexu(1)} [0524]
语法表3
[0525]
if((awpenableflag&&picturetype==2)||sawpenableflag){ picture_awp_refine_indexu(1)} [0526]
语法表2是i帧图像头的语法表,语法表3是p帧和b帧图像头的语法表。
[0527]
picture_awp_refine_index称为图像级角度加权预测权重索引,即图像级权重变换率索引,是1位无符号整数,用于确定角度加权预测模式的权重变换率,继而确定角度加权预测模式的参考权重。pictureawprefineindex的值等于picture_awp_refine_index的值。如果位流中不存在picture_awp_refine_index,pictureawprefineindex的值为0。
[0528]
参见语法表4所示,为帧间awp模式的语法表的一个示例。
[0529]
语法表4
[0530][0531]
awp_index称为角度加权预测模式索引,是角度加权预测模式索引值。如果当前帧为b帧,awpindex的值等于awp_index的值;否则,可以根据awp_index的值以及当前块的宽度w和高度h得到awpindex的值:awpindex=awpwxh[awp_index]<<1
[0532]
示例性的,w和h为8、16、32、64时,awpwxh的定义如下:
[0533]
awp8x8={8,13,14,15,16,22}
[0534]
awp8x16={4,5,6,12,13,14,15,18,20,21,22,24}
[0535]
awp8x32={0,1,2,4,5,6,8,9,10,12,13,14,15,16,17,18,20,21,22,24,25,26}
[0536]
awp8x64={0,1,2,4,5,6,8,9,10,12,13,14,15,16,17,18,20,21,22,24,25,26}
[0537]
awp16x8={3,4,6,12,13,14,15,18,20,24,26,27}
[0538]
awp16x16={2,3,4,5,6,8,12,13,14,15,16,18,20,21,22,24,26,27}
[0539]
awp16x32={0,1,2,3,4,5,6,8,9,10,12,13,14,15,16,17,18,20,21,22,24,25,26,27}
[0540]
awp16x64={0,1,2,3,4,5,6,8,9,10,12,13,14,15,16,17,18,20,21,22,24,25,26,27}
[0541]
awp32x8={0,2,3,4,6,7,8,10,11,12,13,14,15,16,18,19,20,22,24,26,27}
[0542]
awp32x16={0,1,2,3,4,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27}
[0543]
awp32x32={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27}
[0544]
awp32x64={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27}
[0545]
awp64x8={0,2,3,4,6,7,8,10,11,12,13,14,15,16,18,19,20,22,23,24,26,27}
[0546]
awp64x16={0,1,2,3,4,6,7,8,10,11,12,13,14,15,16,18,19,20,22,23,24,25,26,27}
[0547]
awp64x32={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27}
[0548]
awp64x64={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27}
[0549]
示例性的,如果位流中不存在awp_index,则awpindex的值为0。
[0550]
awp_mvr_cand_flag0为角度加权预测的第一运动矢量修正标志(即第一修正标志),二值变量。值为
‘1’
表示应修正角度加权预测第一运动矢量(即叠加mvd);值为
‘0’
表示不应修正角度加权预测第一运动矢量(即不叠加mvd)。awpmvrcandflag0的值等于awp_mvr_cand_flag0的值。若位流不存在awp_mvr_cand_flag0,awpmvrcandflag0的值为0。
[0551]
awp_mvr_cand_step0为角度加权预测第一运动矢量修正步长索引值(指示幅值),为角度加权预测第一运动矢量修正步长索引值。awpmvrcandstep0的值等于awp_mvr_cand_step0的值。如果位流中不存在awp_mvr_cand_step0,awpmvrcandstep0的值为0。
[0552]
awp_mvr_cand_dir0为角度加权预测第一运动矢量修正方向索引值(用于指示方向),为角度加权预测第一运动矢量修正方向索引值。awpmvrcanddir0的值等于awp_mvr_cand_dir0的值。如果位流中不存在awp_mvr_cand_dir0,awpmvrcanddir0的值为0。
[0553]
awp_mvr_cand_flag1为角度加权预测的第二运动矢量修正标志(即第二修正标志),二值变量。值为
‘1’
表示应修正角度加权预测第二运动矢量(即叠加mvd);值为
‘0’
表示不应修正角度加权预测第二运动矢量(即不叠加mvd)。awpmvrcandflag1的值等于awp_mvr_cand_flag1的值。若位流不存在awp_mvr_cand_flag1,awpmvrcandflag1的值为0。
[0554]
awp_mvr_cand_step1为角度加权预测第二运动矢量修正步长索引值(指示幅值),为角度加权预测第二运动矢量修正步长索引值。awpmvrcandstep1的值等于awp_mvr_cand_step1的值。如果位流中不存在awp_mvr_cand_step1,awpmvrcandstep1的值为0。
[0555]
awp_mvr_cand_dir1为角度加权预测第二运动矢量修正方向索引值(用于指示方向),为角度加权预测第二运动矢量修正方向索引值。awpmvrcanddir1的值等于awp_mvr_cand_dir1的值。如果位流中不存在awp_mvr_cand_dir1,awpmvrcanddir1的值为0。
[0556]
awp_cand_index0为角度加权预测模式第一运动信息索引(用于指示运动信息),为角度加权预测模式第一运动信息索引值。awpcandindex0的值等于awp_cand_index0的值。如果位流中不存在awp_cand_index0,则awpcandindex0的值为0。
[0557]
awp_cand_index1为角度加权预测模式第二运动信息索引(用于指示运动信息),为角度加权预测模式第二运动信息索引值。awpcandindex1的值等于awp_cand_index1的值。如果位流中不存在awp_cand_indxe1,则awpcandindex1的值为0。
[0558]
示例性的,参见语法表4所示,picturetype==2表示b帧,因此,语法表4中各元素的启动条件为b帧,即awp_mvr模式的启用条件为b帧,p帧时awp_mvr模式不启用。
[0559]
参见语法表5所示,为帧内sawp模式的语法表的一个示例。
[0560]
语法表5
[0561][0562]
sawp_index称为空域角度加权预测模式索引,是空域角度加权预测模式索引值。sawpindex的值等于sawp_index的值。如果位流中不存在awp_index,sawpindex的值为0。
[0563]
sawp_pred_mode0_index为空域角度加权预测模式第一预测模式索引(用于指示帧内模式),是空域角度加权预测模式第一预测模式的索引值。sawp_pred_mode0_index的取值范围是0~27。sawppedmode0index的值等于sawp_pred_mode0_index的值。
[0564]
sawp_pred_mode1_index为空域角度加权预测模式第二预测模式索引(用于指示帧内模式),是空域角度加权预测模式第二预测模式的索引值。sawp_pred_mode1_index的取值范围是0~27。sawppedmode1index的值等于sawp_pred_mode1_index的值。
[0565]
实施例15:针对b帧的awp模式,awp_mvr模式,awp_scc模式以及p帧的awp模式,在awp权重导出过程中,输入是角度加权预测模式索引值awpindex,以及当前块的宽度w和高度h,输出是角度加权预测的亮度权重矩阵awpweightmatrixy和色度权重矩阵awpweightmatrixuv。针对i帧、p帧和b帧的sawp模式,输入是空域角度加权预测模式索引值sawpindex,以及当前块的宽度w和高度h,输出是空域角度加权预测的亮度权重矩阵sawpweightmatrixy和色度权重矩阵sawpweightmatrixuv。示例性的,awp权重导出过程可以包括:
[0566]
第1步,采用如下方式计算变量stepindex、angleindex和angleareaindex。
[0567][0568][0569]
stepindex、angleindex和angleareaindex的计算过程,可以参见实施例7,在此不再赘述。
[0570]
第2步,根据angleareaindex查表6得到vl(即validlenth,有效数量),然后根据angleareaindex和pictureawprefineindex(即图像级权重变换率索引,用于指示权重变换率)查表7得到shift(即权重变换率左移的位数)和fp(即firstpos,权重变换的起始位置),如果当前帧是p帧,则shift被修改为等于3(即权重变换率左移3位,表示权重变换率左移为8)。最后,采用如下方式得到参考权重列表referenceweights。
[0571][0572]
表6
[0573][0574]
表7
[0575][0576]
第3步,根据当前帧的帧类型和angleareaindex查表8得到tp(即当前块外部的周边位置),再采用如下方式得到亮度权重矩阵awpweightmatrixy。
[0577][0578]
表8
[0579][0580][0581]
第4步,采用如下方式得到色度权重矩阵awpweightmatrixuv。
[0582]
如果当前帧是p帧,则采用如下方式得到色度权重矩阵awpweightmatrixuv:
[0583][0584]
否则:采用如下方式得到色度权重矩阵awpweightmatrixuv:
[0585][0586]
综上可以看出,针对色度分量来说,若当前帧的帧类型为b帧,则从当前块的亮度分量中找到与像素位置匹配的亮度位置,将该亮度位置的亮度权重值确定为该像素位置的色度权重值,亮度分量中的[x<<1][y<<1]是色度分量中的像素位置[x][y]匹配的亮度位置。
[0587]
针对色度分量来说,若当前帧的帧类型为p帧,则从当前块的色度分量中找到与像素位置匹配的色度子块,并从当前块的亮度分量中找到该色度子块的预设位置[(x>>2)<<2][(y>>2)<<2]对应的亮度位置,将该亮度位置的亮度权重值确定为该像素位置的色度权重值,亮度分量中的[(x>>2)<<3][(y>>2)<<3]是色度分量中的像素位置[x][y]匹配的色度子块内的预设位置(即左上角位置)对应的亮度位置,将该亮度位置的亮度权重值确定为像素位置[x][y]的色度权重值。
[0588]
基于上述awp权重导出方式,可以使得当前块内的不同像素位置对应不同的参考权重值(即亮度权重值或者色度权重值),达到对当前块进行分割的效果。参见图9a和图9b所示,为对当前块进行分割的效果示意图,即当前块的不同像素位置对应不同的参考权重值。
[0589]
sawp权重导出过程可以包括:
[0590]
第1步,采用如下方式计算变量stepindex、angleindex和angleareaindex。
[0591][0592][0593]
stepindex、angleindex和angleareaindex的计算过程,可以参见实施例7,在此不再赘述。
[0594]
第2步,根据angleareaindex查表6得到vl(即validlenth,有效数量),然后根据angleareaindex和pictureawprefineindex(即图像级权重变换率索引,用于指示权重变换率)查表7得到shift(即权重变换率左移的位数)和fp(即firstpos,权重变换的起始位置)。最后,采用如下方式得到参考权重列表referenceweights。
[0595][0596]
表6
[0597][0598]
表7
[0599][0600]
第3步,根据angleareaindex查表8得到tp(即当前块外部的周边位置),再采用如下方式得到亮度权重矩阵sawpweightmatrixy。
[0601][0602]
表8
[0603][0604][0605]
第4步,采用如下方式得到色度权重矩阵sawpweightmatrixuv。
[0606][0607]
综上可以看出,针对色度分量来说,从当前块的亮度分量中找到与像素位置匹配的亮度位置,将该亮度位置的亮度权重值确定为该像素位置的色度权重值,亮度分量中的[x<<1][y<<1]是色度分量中的像素位置[x][y]匹配的亮度位置。
[0608]
基于上述sawp权重导出方式,可以使得当前块内的不同像素位置对应不同的参考权重值(即亮度权重值或者色度权重值),达到对当前块进行分割的效果。参见图9a和图9b所示,为对当前块进行分割的效果示意图,即当前块的不同像素位置对应不同的参考权重值。
[0609]
实施例16:针对b帧的awp模式,awp_mvr模式,awp_scc模式以及p帧awp模式,单向运动信息候选列表(即运动信息候选列表)的构建过程,可以包括:
[0610]
第1步,参见图8所示,f、g、c、a、b和d是当前块e的相邻预测块,确定这些相邻预测块(如f、g、c、a、b和d)的“可用”性。
[0611]
a)如果f存在且采用帧间预测模式,则f“可用”;否则,f“不可用”。
[0612]
b)如果g存在且采用帧间预测模式,则g“可用”;否则,g“不可用”。
[0613]
c)如果c存在且采用帧间预测模式,则c“可用”;否则,c“不可用”。
[0614]
d)如果a存在且采用帧间预测模式,则a“可用”;否则,a“不可用”。
[0615]
e)如果b存在且采用帧间预测模式,则b“可用”;否则,b“不可用”。
[0616]
f)如果d存在且采用帧间预测模式,则d“可用”;否则,d“不可用”。
[0617]
第2步,初始化idx等于0,导出运动信息t(时域运动信息),将t和可用块的运动信息(依照f、g、c、a、b、d的顺序)逐个按照如下步骤,放入运动信息候选列表awpcandarray。
[0618]
在导出运动信息t时,可以采用实施例11的导出情况1导出运动信息t,或采用实施例11的导出情况2导出运动信息t,或采用实施例11的导出情况3导出运动信息t,或采用实施例11的导出情况4导出运动信息t,或采用实施例11的导出情况5导出运动信息t。
[0619]
a)如果当前运动信息的预测参考模式是

pred_list0’或

pred_list1’,将其与awpcandarray中已经存在的运动信息进行查重操作,若不重复则放入awpcandarray。
[0620]
pred_list0是指向list0的单向运动信息,pred_list1是指向list1的单向运动信息。
[0621]
将当前运动信息放入awpcandarray后,idx加1,如果idx等于5,则转到第4步。
[0622]
b)否则,如果当前运动信息的预测参考模式是

pred_list01’,则按照当前可用运动信息的遍历顺序编号,并按照如下规则修改当前运动信息的预测参考模式,并将修改后的运动信息与awpcandarray中已经存在的运动信息进行查重操作,若不重复则放入awpcandarray。
[0623]
pred_list01是指指向list0以及list1的双向运动信息。
[0624]
示例性的,按照如下规则修改当前运动信息的预测参考模式,可以包括:
[0625]
若遍历顺序编号为偶数,将当前运动信息的预测参考模式修改为

pred_list0’;
[0626]
若遍历顺序编号为奇数,将当前运动信息的预测参考模式修改为

pred_list1’。
[0627]
将修改后的运动信息放入awpcandarray后,idx加1,如果idx等于5,则转到第4步。
[0628]
示例性的,针对单向运动信息查重操作,如果运动信息a和运动信息b满足下面一个或多个条件,则运动信息a和运动信息b不同;否则,运动信息a和运动信息b相同:
[0629]
由运动信息a中的预测参考模式和参考索引所确定的参考帧和由运动信息b中的预测参考模式和参考索引所确定的参考帧不同。运动信息a中的预测参考模式对应的运动矢量和运动信息b中的预测参考模式对应的运动矢量不同。
[0630]
示例性的,预测参考模式

pred_list0’对应的运动矢量为l0运动矢量,预测参考模式

pred_list1’对应的运动矢量为l1运动矢量。
[0631]
示例性的,在判断参考帧是否相同时,如果两个参考帧满足下面一个或多个条件,则两个参考帧不同,否则两个参考帧相同:其中一个参考帧是非知识帧,另一个参考帧是知识帧。两个参考帧都是非知识帧,对应的参考帧doi不相等。两个参考帧都是知识帧,对应的知识帧索引不相等。
[0632]
第3步,如果idx小于5,按照以下方法生成运动信息motioninfo[i](i=0~3)。motioninfo[i]的预测参考模式等于awpcandarray[0]的预测参考模式,awpcandarray[0]的与预测参考模式对应的运动矢量记为mv,motioninfo[i]与预测参考模式对应的运动矢量记为mvinfo[i]。
[0633][0634]
第4步,将运动信息awpcandarray[awpcandidx0]赋值给motioninfoawp0。
[0635]
第5步,将运动信息awpcandarray[awpcandidx1]赋值给motioninfoawp1。
[0636]
第6步,将bgcflag和bgcindex的值均置为0。若awpmvrcandflag0或awpmvrcandflag1等于1,对mvawp0l0,mvawp0l1以及mvawp1l0,mvawp1l1进行修正。
[0637]
a)根据awpmvrcandstep0和awpmvrcandstep1的值查表9,分别得到运动矢量偏移量awpmvroffset0和awpmvroffset1。
[0638]
表9
[0639]
[0640][0641]
b)如果awpmvrcandflagx的值等于1,修正mvawpxl0,mvawpxl1,x为0或1。
[0642]
若refidxawpxl0的值大于等于0,则mvawpxl0(mvawpxl0_x,mvawpxl0_y)修正为:
[0643][0644]
否则(refidxawpxl1的值大于等于0),mvawpxl1(mvawpxl1_x,mvawpxl1_y)修正为:
[0645][0646]
在awpmvrcanddirx、awpmvroffset和awpmvrcandirx中,x的值为0或1。
[0647]
实施例17:针对i帧的sawp模式,p帧的sawp模式,b帧的sawp模式,帧内预测模式列表(即帧内信息候选列表)的构建过程,包括:
[0648]
如果当前块e是亮度块(即亮度分量),令modangnum等于sawpindex%8。
[0649]
第1步,计算当前块预测模式的预测值predintrapredmode[i]的值,i的取值范围是0~1。sawp模式的帧内信息候选列表的长度为26,其中两个为mpm,即i=0,1。
[0650]
a)对intrapredmodea执行以下操作:如果左边预测块a“存在”且为普通帧内预测块,则将a的intralumapredmode赋值给intrapredmodea;否则,intrapredmodea的值等于

1。对intrapredmodea进行模式有效性处理。如果intrapredmodea是

1,则intrapredmodea等于表10中modangnum对应的候选模式0。
[0651]
b)对intrapredmodeb执行以下操作:如果上边预测块b“存在”且为普通帧内预测块,则将b的intralumapredmode赋值给intrapredmodeb;否则,intrapredmodeb的值等于

1。对intrapredmodeb进行模式有效性处理。如果intrapredmodeb是

1,则intrapredmodeb等于表10中modangnum对应的候选模式0。
[0652]
c)如果intrapredmodea等于intrapredmodeb,执行以下操作:如果intrapredmodea等于表10中modangnum对应的候选模式0,则intrapredmodea等于表10中modangnum对应的候选模式1。否则,如果intrapredmodea等于表10中modangnum对应的候选
模式1,则intrapredmodea等于表10中modangnum对应的候选模式0。
[0653]
d)predintrapredmode[0]等于min(intrapredmodea,intrapredmodeb),predintrapredmode[1]等于max(intrapredmodea,intrapredmodeb)。
[0654]
表10 modangnum对应的候选模式
[0655]
modangnum候选模式0候选模式103061272422412321244182451512612247912
[0656]
第2步,采用如下方式计算sawppredmode0(即第一目标帧内模式)的值。
[0657][0658]
第3步,采用如下方式计算sawppredmode1(即第二目标帧内模式)的值。
[0659][0660]
在上述过程中,可以采用如下方式对intrapredmodex进行模式有效性处理,x为a或b:
[0661]
[0662][0663]
实施例18:在上述实施例中,涉及当前块的第一目标模式信息和第二目标模式信息,关于如何存储当前块的目标模式信息,可以采用如下方式:
[0664]
在一种可能的实施方式中,针对当前块的每个模式信息存储单元,根据模式信息存储单元的坐标,当前块的权重预测角度和当前块外部的周边位置的参考权重值确定该模式信息存储单元的存储方式;基于该模式信息存储单元的存储方式,将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,将第二目标模式信息存储为该模式信息存储单元的目标模式信息。例如,针对模式信息存储单元,可以从该模式信息存储单元中选取一个目标像素位置(如可以基于模式信息存储单元的坐标,从该模式信息存储单元中选取一个像素位置作为目标像素位置),如模式信息存储单元的左上角的像素位置,右上角的像素位置,左下角的像素位置,右下角的像素位置,中心像素位置等。根据该权重预测角度从当前块外部的周边位置中确定该目标像素位置指向的周边匹配位置,根据该周边匹配位置关联的参考权重值确定该模式信息存储单元的存储方式。比如说,若周边匹配位置关联的参考权重值大于预设阈值(可以根据经验配置),则确定模式信息存储单元的存储方式为存储第一目标模式信息,若周边匹配位置关联的参考权重值不大于预设阈值,则确定模式信息存储单元的存储方式为存储第二目标模式信息;或者,若周边匹配位置关联的参考权重值大于预设阈值,则确定模式信息存储单元的存储方式为存储第二目标模式信息,若周边匹配位置关联的参考权重值不大于预设阈值,则确定模式信息存储单元的存储方式为存储第一目标模式信息。若模式信息存储单元的存储方式为存储第一目标模式信息,则将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,若模式信息存储单元的存储方式为存储第二目标模式信息,则将第二目标模式信息存储为该模式信息存储单元的目标模式信息。
[0665]
在另一种可能的实施方式中,针对当前块的每个模式信息存储单元,可以根据该模式信息存储单元的坐标,当前块的权重预测角度和当前块的权重预测位置确定该模式信息存储单元的存储方式;基于模式信息存储单元的存储方式,将第一目标模式信息存储为模式信息存储单元的目标模式信息,或者,将第二目标模式信息存储为模式信息存储单元的目标模式信息。比如说,若模式信息存储单元的存储方式为存储第一目标模式信息,则将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,若模式信息存储单元的存储方式为存储第二目标模式信息,则将第二目标模式信息存储为该模式信息存储单元的目标模式信息。
[0666]
示例性的,可以将当前块划分为至少一个模式信息存储单元,每个模式信息存储
单元的尺寸可以任意配置,例如,1*1的模式信息存储单元、2*2的模式信息存储单元、4*4的模式信息存储单元等。针对当前块的每个模式信息存储单元,可以根据权重预测角度和权重预测位置确定该模式信息存储单元的存储方式,基于该模式信息存储单元的存储方式,可以将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,将第二目标模式信息存储为该模式信息存储单元的目标模式信息。综上所述,针对当前块的每个模式信息存储单元(如4*4大小),根据权重预测角度和权重预测位置确定将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或将第二目标模式信息存储为该模式信息存储单元的目标模式信息,其依据是每个模式信息存储单元与“划分结果”的相对位置关系。
[0667]
以下结合几个具体应用场景,对上述目标模式信息的存储过程进行说明。假设当前块的尺寸为m*n,m为当前块的宽,n为当前块的高,x为权重预测角度的tan值的log2对数值,如0或1,y为权重预测位置的索引值,如

3~3等,a,b,c,d为预设的常数值。
[0668]
应用场景1:通过如下公式确定有效数量vl:vl=(n (m>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

a y*((vl

1)>>3)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1) ((x<<1)>>x)大于或者等于fp,则该模式信息存储单元的存储方式为存储第一目标模式信息;否则,该模式信息存储单元的存储方式为存储目标模式信息。
[0669]
应用场景2:通过如下公式确定有效数量vl:vl=(n (m>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

b y*((vl

1)>>3)

((m<<1)>>x)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(y<<1)

((x<<1)>>x)大于或等于fp,则该模式信息存储单元的存储方式为存储第一目标模式信息;否则,该模式信息存储单元的存储方式为存储第二目标模式信息。
[0670]
应用场景3:通过如下公式确定有效数量vl:vl=(m (n>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

c y*((vl

1)>>3)

((n<<1)>>x)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1)

((y<<1)>>x)大于或等于fp,则该模式信息存储单元的存储方式为存储第一目标模式信息;否则,该模式信息存储单元的存储方式为存储第二目标模式信息。
[0671]
应用场景4:通过如下公式确定有效数量vl:vl=(m (n>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

d y*((vl

1)>>3)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1) ((y<<1)>>x)大于或者等于fp,则该模式信息存储单元的存储方式为存储第一目标模式信息;否则,该模式信息存储单元的存储方式可以为存储第二目标模式信息。
[0672]
示例性的,基于应用场景1

应用场景4确定每个模式信息存储单元的存储方式,基于模式信息存储单元的存储方式,可以将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,将第二目标模式信息存储为该模式信息存储单元的目标模式信息。
[0673]
应用场景5:当第一目标模式信息与第二目标模式信息来自不同的参考帧列表时,可以采用如下存储方式:通过如下公式确定有效数量vl:vl=(m (n>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

d y*((vl

1)>>3)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1) ((y<<1)>>x)大于fp,则该模式信息存储单元的存储方式为存储第一目标模式信息;若(x<<1) ((y<<1)>>x)小于fp,则该模式
信息存储单元的存储方式为存储第二目标模式信息;若(x<<1) ((y<<1)>>x)等于fp,则该模式信息存储单元的存储方式可以为存储新模式信息(即第一目标模式信息和第二目标模式信息组合成的新模式信息)。
[0674]
应用场景6:当第一目标模式信息与第二目标模式信息来自不同的参考帧列表时,可以采用如下存储方式:通过如下公式确定有效数量vl:vl=(m (n>>x))<<1;通过如下公式确定参数fp:fp=(vl>>1)

d y*((vl

1)>>3)。针对每个模式信息存储单元,将中心位置或者左上角位置的坐标记为(x,y),基于此,若(x<<1) ((y<<1)>>x)大于f1,则该模式信息存储单元的存储方式为存储第一目标模式信息;若(x<<1) ((y<<1)>>x)小于f2,则该模式信息存储单元的存储方式为存储第二目标模式信息;若(x<<1) ((y<<1)>>x)不大于f1,且不小于f2,则该模式信息存储单元的存储方式可以为存储新模式信息(即第一目标模式信息和第二目标模式信息组合成的新模式信息)。
[0675]
示例性的,f1可以大于fp,f2可以小于fp,对此f1和f2的取值不做限制。如f1可以为fp 2,f2可以为fp

2,当然,f1和f2可以任意设置。
[0676]
示例性的,基于应用场景5和应用场景6,确定每个模式信息存储单元的存储方式,基于模式信息存储单元的存储方式,可以将第一目标模式信息存储为该模式信息存储单元的目标模式信息,或者,将第二目标模式信息存储为该模式信息存储单元的目标模式信息,或者,将新模式信息存储为该模式信息存储单元的目标模式信息。
[0677]
应用场景7:对于b帧的awp模式,awp_mvr模式,awp_scc模式,p帧awp模式以及i帧、p帧和b帧的sawp模式,其目标模式信息的存储方式均一致。
[0678]
令w和h是当前块的宽度和高度,(x,y)是当前块中的每个4
×
4子块的左上角像素位置,pos_x等于((x>>2)<<2) 2,pos_y等于((y>>2)<<2) 2,即中心位置,则可以按照以下方法导出每个4
×
4块的目标模式信息存储方式modestoragetype:
[0679]
a)采用如下方式计算stepindex、angleindex和angelareaindex的值。
[0680][0681]
b)根据angleareaindex查表11得到tp和fp,基于tp和fp,可以采用如下方式计算当前块中每个4
×
4块的目标模式信息存储方式modestoragetype。
[0682][0683]
表11
[0684][0685]
示例性的,如果modestoragetype等于0,该模式信息存储单元存储第一目标模式信息,否则(modestoragetype等于1),该模式信息存储单元存储第二目标模式信息。
[0686]
示例性的,上述各实施例可以单独实现,也可以组合实现,比如说,实施例1和实施例2组合实现,实施例1和实施例3组合实现,实施例1和实施例4

实施例12中的至少一个实施例组合实现,实施例1和实施例14

实施例18中的至少一个实施例组合实现,实施例2和实施例4

实施例12中的至少一个实施例组合实现,实施例2和实施例14

实施例18中的至少一个实施例组合实现,实施例3和实施例4

实施例12中的至少一个实施例组合实现,实施例3和实施例14

实施例18中的至少一个实施例组合实现。又例如,实施例14

实施例18中的任意至少两个可以组合实现,实施例4

实施例12中的任意至少两个可以组合实现等。实施例12和实施例4

实施例12中的至少一个实施例组合实现,实施例12和实施例14

实施例18中的至少一个实施例组合实现。当然,上述只是几个示例,对实施例间的组合方式不做限制。
[0687]
示例性的,上述各实施例中,编码端的内容也可以应用到解码端,即解码端可以采用相同方式进行处理,解码端的内容也可以应用到编码端,即编码端可以采用相同方式进行处理。
[0688]
实施例19:基于与上述方法同样的申请构思,本技术实施例中还提出一种解码装置,所述解码装置应用于解码端,所述解码装置包括:存储器,其经配置以存储视频数据;解码器,其经配置以实现上述实施例1

实施例18中的编解码方法,即解码端的处理流程。
[0689]
比如说,在一种可能的实施方式中,解码器,其经配置以实现:
[0690]
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重
变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
[0691]
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
[0692]
针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
[0693]
获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
[0694]
根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
[0695]
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
[0696]
基于与上述方法同样的申请构思,本技术实施例中还提出一种编码装置,所述编码装置应用于编码端,所述编码装置包括:存储器,其经配置以存储视频数据;编码器,其经配置以实现上述实施例1

实施例18中的编解码方法,即编码端的处理流程。
[0697]
比如说,在一种可能的实施方式中,编码器,其经配置以实现:
[0698]
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
[0699]
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
[0700]
针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
[0701]
获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
[0702]
根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
[0703]
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
[0704]
基于与上述方法同样的申请构思,本技术实施例中还提出一种编解码装置,所述装置包括:获取模块,用于在确定对当前块启动加权预测时,获取所述当前块的权重预测角
度和权重配置参数;所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式为:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;配置模块,用于根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;确定模块,用于针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;所述获取模块,还用于获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;所述确定模块,还用于根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
[0705]
示例性的,所述确定模块基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置时具体用于:若所述当前块所在当前帧的帧类型为b帧,则基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置指向的周边匹配位置;或者,若所述当前块所在当前帧的帧类型为p帧,从所述当前块包括的所有子块中确定所述像素位置所在的子块;基于所述权重预测角度从所述当前块外部的周边位置中确定所述子块内的预设位置指向的周边位置,将该周边位置确定为所述像素位置对应的周边匹配位置。
[0706]
示例性的,所述配置模块根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值时具体用于:针对所述当前块外部的周边位置,根据所述周边位置的坐标值,所述权重变换的起始位置的坐标值以及所述权重变换率,配置所述周边位置的参考权重值。
[0707]
示例性的,所述获取模块获取所述当前块的权重预测角度时具体用于:若所述当前块所在当前帧的帧类型为b帧,则从第一角度列表中获取所述当前块的权重预测角度;若所述当前块所在当前帧的帧类型为p帧,则从第二角度列表中获取所述当前块的权重预测角度;其中,所述第二角度列表中包括的权重预测角度是所述第一角度列表中包括的权重预测角度的子集;所述获取模块获取所述当前块的权重预测位置时具体用于:若所述当前块所在当前帧的帧类型为b帧,则从第一位置列表中获取所述当前块的权重预测位置;若所述当前块所在当前帧的帧类型为p帧,则从第二位置列表中获取所述当前块的权重预测位置;其中,所述第二位置列表中包括的权重预测位置是所述第一位置列表中包括的权重预测位置的子集。
[0708]
示例性的,若对所述当前块启动帧间awp模式,则所述模式信息候选列表为运动信息候选列表,所述运动信息候选列表包括至少一个候选运动信息,所述第一目标模式信息为第一目标运动信息,所述第二目标模式信息为第二目标运动信息;其中,所述获取模块获
取为当前块创建的运动信息候选列表时具体用于:获取待加入到所述当前块的运动信息候选列表中的至少一个可用运动信息;基于所述至少一个可用运动信息获取所述运动信息候选列表;其中,所述至少一个可用运动信息包括如下运动信息的至少一种:时域运动信息;空域运动信息;预设运动信息。
[0709]
示例性的,所述获取模块获取待加入到所述当前块的运动信息候选列表中的至少一个可用运动信息时具体用于:若所述当前块所在当前帧的帧类型为p帧,则确定所述当前帧的同位帧,从所述同位帧中确定所述当前块的同位块;若所述同位块为非帧间预测块,则导出指向第一参考帧列表中参考索引值为0的参考帧的单向零运动信息;否则,若所述同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息;或者,
[0710]
若所述当前块所在当前帧的帧类型为p帧,则确定所述当前帧的同位帧,从所述同位帧中确定所述当前块的同位块;若所述同位块为非帧间预测块,则利用空域相邻块导出指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息;否则,若所述同位块的指向第一参考帧列表的运动信息存在,则基于指向第一参考帧列表的单向运动信息,通过伸缩操作得到指向第一参考帧列表中参考索引值为0的参考帧的单向运动信息。
[0711]
示例性的,所述获取模块基于所述运动信息候选列表获取所述当前块的第一目标运动信息和第二目标运动信息时具体用于:若所述当前块所在当前帧的帧类型为b帧,则从所述运动信息候选列表中选择候选运动信息作为所述当前块的第一原始运动信息,并从所述运动信息候选列表中选择候选运动信息作为所述当前块的第二原始运动信息;根据所述第一原始运动信息确定所述当前块的第一目标运动信息;根据所述第二原始运动信息确定所述当前块的第二目标运动信息。若所述当前块所在当前帧的帧类型为p帧,则从所述运动信息候选列表中选择一个候选运动信息作为所述当前块的第一目标运动信息,并从所述运动信息候选列表中选择另一个候选运动信息作为所述当前块的第二目标运动信息。
[0712]
基于与上述方法同样的申请构思,本技术实施例提供的解码端设备(也称为视频解码器),从硬件层面而言,解码端设备包括处理器和机器可读存储介质,机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现本技术上述实施例1

18公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
[0713]
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
[0714]
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
[0715]
针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的
关联权重值;
[0716]
获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
[0717]
根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
[0718]
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
[0719]
基于与上述方法同样的申请构思,本技术实施例提供的编码端设备(也称为视频编码器),从硬件层面而言,编码端设备包括处理器和机器可读存储介质,机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现本技术上述实施例1

18公开的方法。例如,处理器用于执行机器可执行指令,以实现如下步骤:
[0720]
在确定对当前块启动加权预测时,获取所述当前块的权重预测角度和权重配置参数;其中,所述权重配置参数包括权重变换率和权重变换的起始位置;所述权重变换率的确定方式,包括:基于所述当前块所在当前帧的帧类型确定所述权重变换率;其中,若所述帧类型为b帧,且所述当前块支持权重变换率切换模式,则:获取所述当前块的权重变换率指示信息;若所述权重变换率指示信息为第一指示信息,则确定所述权重变换率为第一权重变换率;若所述权重变换率指示信息为第二指示信息,则确定所述权重变换率为第二权重变换率;
[0721]
根据所述权重配置参数为所述当前块外部的周边位置配置参考权重值;
[0722]
针对所述当前块的每个像素位置,基于所述权重预测角度从所述当前块外部的周边位置中确定所述像素位置对应的周边匹配位置;根据所述周边匹配位置关联的参考权重值确定所述像素位置的目标权重值,根据所述像素位置的目标权重值确定所述像素位置的关联权重值;
[0723]
获取为当前块创建的模式信息候选列表,所述模式信息候选列表包括至少一个候选模式信息;基于所述模式信息候选列表获取所述当前块的第一目标模式信息和第二目标模式信息;
[0724]
根据所述第一目标模式信息确定所述像素位置的第一预测值,根据所述第二目标模式信息确定所述像素位置的第二预测值;根据所述第一预测值,所述目标权重值,所述第二预测值和所述关联权重值,确定所述像素位置的加权预测值;
[0725]
根据所述当前块的所有像素位置的加权预测值确定所述当前块的加权预测值。
[0726]
基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的方法,如上述上述各实施例中的编解码方法。
[0727]
基于与上述方法同样的申请构思,本技术实施例还提供一种计算机应用程序,所述计算机应用程序令被处理器执行时,能够实现本技术上述示例公开的编解码方法。
[0728]
本领域内的技术人员应明白,本技术实施例可提供为方法、系统、或计算机程序产品。本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形
式。本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0729]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献