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

文档序号:27824865发布日期:2021-12-07 20:06阅读:59来源:国知局
一种解码、编码方法、装置及其设备与流程

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.图1是本技术一种实施方式中的视频编码框架的示意图;
27.图2a-图2d是本技术一种实施方式中的当前块的划分示意图;
28.图3a是本技术一种实施方式中的解码方法的流程图;
29.图3b和图3c是运动信息角度预测模式的示意图;
30.图3d是本技术一种实施方式中的编码方法的流程图;
31.图4a-图4k是当前块的周边块的示意图;
32.图5a-图5p是为当前块的子区域选取运动信息的示意图;
33.图6a是本技术一种实施方式中的解码装置的结构图;
34.图6b是本技术一种实施方式中的编码装置的结构图;
35.图6c是本技术一种实施方式中的解码端设备的硬件结构图;
36.图6d是本技术一种实施方式中的编码端设备的硬件结构图。
具体实施方式
37.本技术使用的术语仅仅是出于描述特定实施例的目的,而非限制本技术。本技术所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本技术可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,所使用的词语“如果”可以被解释成为“在......时”或“当......时”或“响应于确定”。
38.本技术实施例中提出一种解码、编码方法、装置及其设备,可以涉及如下概念:
39.帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,利用当前块的空域相邻块(即与当前块处于同一帧图像中的块)的重建像素值进行预测编码。帧间预测是指,利用当前块的时域相邻块(即与当前块处于不同帧图像中的块)的重建像素值进行预测编码,帧间预测是利用视频时域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,达到有效去除视频时域冗余的目的。
40.运动矢量(motion vector,mv):在帧间编码中,使用运动矢量表示当前帧的当前块与参考帧的参考块之间的相对位移,例如,当前帧a与参考帧b存在很强的时域相关性,在传输当前帧a的当前块a1时,可以在参考帧b中进行运动搜索,找到与当前块a1最匹配的参考块b1,并确定当前块a1与参考块b1之间的相对位移,该相对位移也就是运动矢量。
41.每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是划分成小尺寸的大量块,则消耗相当多的比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量编码过程中,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对运动矢量的预测值(mvp,motion vector prediction)与运动矢量的真正估值之间的差值(mvd,motionvector difference)进行编码,从而有效降低运动矢量的编码比特数。
42.运动信息(motion information):为了准确获取参考块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧。很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
43.率失真原则(rate-distortion optimized):评价编码效率的有两大指标:码率和psnr(peak signal to noise ratio,峰值信噪比),比特流越小,则压缩率越大,psnr越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:j(mode)=d+λ*r,示例性的,d表示distortion(失真),通常可以使用sse指标来进行衡量,sse是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用rdo原则去对编码模式做比较决策,通常可以保证编码性能最佳。
44.跳过模式和直接模式:在跳过模式或者直接模式下,当前块的运动信息完全复用时域或空域某个相邻块的运动信息,比如说,从周围多个块的运动信息集合中,选择一个运动信息作为当前块的运动信息,因此,只需要编码一个索引值表示当前块使用运动信息集合中的哪个运动信息,而跳过模式和直接模式之间的区别在于:跳过模式不需要编码残差,直接模式需要编码残差。显然,跳过模式或者直接模式可以大大节省运动信息的编码开销。
45.hmvp(history based motion vector prediction,基于历史信息的运动矢量预测)模式:利用先前重建块的运动信息来预测当前块的运动信息,通过建立hmvp列表来保存先前重建块的运动信息,当解码一个块且运动信息发生变化,则更新hmvp列表。对于当前块,始终有hmvp列表中的运动信息可利用,通过利用hmvp列表中的运动信息,提高预测精度。
46.mhbskip模式:mhbskip模式是跳过模式或直接模式的一种预测模式,利用当前块的空域相邻块的运动信息来预测当前块的运动信息。mhbskip模式通过当前块的空域相邻块的运动信息,构建双向、后向和前向三个运动信息来给当前块进行预测。
47.在跳过模式或直接模式下,对当前块进行预测时,需要为当前块创建运动信息预
测模式候选列表。在创建运动信息预测模式候选列表时,运动信息预测模式候选列表可以依次包括时域候选运动信息、空域候选运动信息(即mhbskip模式的候选运动信息)、hmvp候选运动信息(即hmvp模式的候选运动信息)。时域候选运动信息为1个,空域候选运动信息为3个,hmvp候选运动信息为8个。当然,时域候选运动信息的数量可以为其它数值,空域候选运动信息的数量为其它数值,hmvp候选运动信息的数量为其它数值。
48.帧内块拷贝(ibc,intra block copy)也可以称为帧内块复制,允许同帧参考,当前块的参考数据来自同一帧,使用块矢量获取当前块的预测值,基于屏幕内容中同一帧内存在大量重复出现的纹理这一特性,在采用块矢量获取当前块的预测值时,能够提升屏幕内容序列的压缩效率。块矢量表示当前块与当前帧已编码块中的最佳匹配块之间的相对位移。
49.运动矢量角度预测(motion vector angle prediction,mvap)模式:mvap模式将当前块分成子区域(即当前块内部子块),利用预测角度将每个子区域按照预先设置的角度从空间块拷贝运动信息,达到不用分割,即为当前块内部提供更多运动信息,提升编码性能。
50.运动矢量角度预测模式也可以称为运动信息角度预测模式,是预测运动信息的角度预测模式,用于帧间编码,而不是用于帧内编码,运动信息角度预测模式选择的是匹配块,而不是匹配的像素点。运动信息角度预测模式用于指示预配置角度,根据预配置角度从当前块的周边块中为当前块的子区域选择周边匹配块,并根据周边匹配块的运动信息确定当前块的一个或多个运动信息,针对当前块的每个子区域,根据周边匹配块的运动信息确定所述子区域的运动信息。周边匹配块是按照预配置角度从当前块的周边块中确定出的指定位置处的块。
51.视频编码框架:参见图1所示,为视频编码框架的示意图,使用视频编码框架实现本技术实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本技术实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
52.在相关技术中,当前块只有一个运动信息,即当前块内部的所有子块共享一个运动信息,对于运动目标较小的场景来说,存在预测精度不高的问题。参见图2a所示,子区域c,子区域g和子区域h是当前块内的子区域,假设当前块使用块f的运动信息,则当前块内各个子区域均使用块f的运动信息。由于子区域h与块f的距离很远,若子区域h也使用块f的运动信息,则子区域h的运动信息的预测精度不高。若将当前块划分为多个子块,为每个子块选择运动信息,则当前块内部子块的运动信息无法利用当前块周围已编码块的运动信息,造成可用运动信息减少,运动信息的准确度不高。例如,参见图2b所示,当前块的子块i,只能利用子块c,子块g,子块h的运动信息,无法利用a,b,f,d和e的运动信息。
53.针对上述发现,本技术实施例提出一种解码方法和编码方法,在不对当前块进行子块划分的基础上,使当前块对应多个运动信息,提高当前块的运动信息的预测精度。由于未对当前块进行子块划分,因此,可以避免消耗额外的比特来传输子块划分方式,节约这部分比特开销。针对当前块的每个子区域(这里是当前块内部的任意子区域,子区域的尺寸小
于或等于当前块的尺寸,并不是对当前块进行划分得到的子块),可以利用当前块周围已编码块的运动信息,来获取子区域的运动信息,换句话说,当前块的不同子区域可以对应相同或者不同的运动信息,从而为当前块提供更多的运动信息,提高运动信息的准确度。
54.示例性的,参见图2b所示,c为当前块内部的子区域,a,b,d,e和f为当前块周围的已编码块,子区域c的运动信息可以采用当前块周围的已编码块的运动信息,即可以根据当前块周围的已编码块的运动信息来获取当前块的每个子区域的运动信息。
55.示例性的,参见图2c所示,c为当前块内部的子区域,a,b,d,e,f,g,h和i为当前块的周围块,子区域c的运动信息可以采用当前块的周围块的运动信息。显然,与图2b相比,子区域c的运动信息不仅可以采用当前块周围的已编码块(a,b,d,e和f)的运动信息,还可以采用当前块周围的未编码块(g,h,i)的运动信息,当前块周围的未编码块的运动信息可以为时域运动信息。由于可以将当前块周围的未编码块的运动信息作为子区域c的运动信息,因此,使得子区域c的运动信息有更多的选择,能够提高编码性能。
56.参见图2d所示,当前块包括9个子区域,如f1-f9,这些子区域不是对当前块进行划分后的子块。针对不同子区域来说,可以对应相同或不同的运动信息,因此,在不对当前块进行子块划分的基础上,也可以使当前块对应多个运动信息,如子区域f1对应运动信息1,子区域f2对应运动信息2,以此类推。在确定每个子区域的运动信息时,可以利用a1-a14的运动信息,cn-c1的运动信息,d1-dn的运动信息,从而为子区域提供更多的运动信息。
57.本技术实施例中,可以涉及运动信息预测模式候选列表的构建过程,比如说,针对任意一个运动信息角度预测模式,将该运动信息角度预测模式添加到运动信息预测模式候选列表或者禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。可以涉及运动信息的填充过程,比如说,对当前块的周边块中不可用的运动信息进行填充。可以涉及当前块的运动补偿过程,比如说,利用运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定当前块的运动信息,并根据当前块的运动信息确定当前块的预测值。
58.在实现运动信息预测模式候选列表的构建过程和运动信息的填充过程时,先对运动信息角度预测模式进行查重处理,后对周边块中不可用的运动信息进行填充,从而能够降低解码端的复杂度,提高解码性能。例如,针对水平向左运动信息角度预测模式,垂直向上运动信息角度预测模式,水平向上运动信息角度预测模式等,先进行查重处理,若水平向左运动信息角度预测模式不重复,则将不重复的水平向左运动信息角度预测模式添加到当前块的运动信息预测模式候选列表中,从而能够得到运动信息预测模式候选列表。解码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式后,若目标运动信息预测模式是运动信息角度预测模式,则解码端可以对周边块中不可用的运动信息进行填充。若目标运动信息预测模式不是运动信息角度预测模式,则解码端可以不对周边块中不可用的运动信息进行填充,从而使得解码端减少运动信息的填充操作,降低解码端的复杂度,提高解码性能。
59.以下结合几个具体实施例,对本技术实施例中的解码方法、编码方法进行说明。
60.实施例1:参见图3a所示,为解码方法的流程示意图,可以应用于解码端,该方法包括:
61.步骤311,构建当前块的运动信息预测模式候选列表。
62.示例性的,在构建当前块的运动信息预测模式候选列表时,针对当前块的任意一
个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,将该运动信息角度预测模式添加到该运动信息预测模式候选列表。
63.示例性的,针对构建当前块的运动信息预测模式候选列表的过程,可以包括:
64.步骤a1、针对当前块的任意一个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的至少两个周边匹配块。
65.运动信息角度预测模式用于指示预配置角度,根据预配置角度从当前块的周边块中为当前块的子区域选择周边匹配块,并根据周边匹配块的运动信息确定当前块的一个或多个运动信息,即,针对当前块的每个子区域,根据周边匹配块的运动信息确定子区域的运动信息。
66.周边匹配块是按照预配置角度从当前块的周边块中确定出的指定位置处的块。
67.示例性的,周边块可以包括与当前块相邻的块(已编码块和未编码块);或者,周边块可以包括与当前块相邻的块和非相邻的块。当然,周边块还可以包括其它块,对此不做限制。
68.示例性的,运动信息角度预测模式可以包括但不限于以下至少一种:水平向左运动信息角度预测模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。当然,上述只是运动信息角度预测模式的几个示例,还可以有其它类型的运动信息角度预测模式,运动信息角度预测模式与预配置角度有关,如预配置角度还可以为10度、20度等,对此不做限制。
69.参见图3b所示,为水平向左运动信息角度预测模式,垂直向上运动信息角度预测模式,水平向上运动信息角度预测模式,水平向下运动信息角度预测模式,垂直向右运动信息角度预测模式的示意图。参见图3c所示,为水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式的示意图。综上所述,基于运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的周边匹配块。例如,参见图3b和图3c所示,示出各运动信息角度预测模式的预配置角度指向的周边匹配块。
70.步骤a2、若至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
71.在一种可能的实施方式中,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
72.在一种可能的实施方式中,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
73.在一种可能的实施方式中,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
74.在一种可能的实施方式中,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
75.在一种可能的实施方式中,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中存在帧内块和/或预测模式是帧内块拷贝模式的周边块,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中存在帧内块和/或预测模式是帧内块拷贝模式的周边块,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或者当前块所在图像片之外,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或者当前块所在图像片之外,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
76.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息不同,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
77.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息不同时,将该运动信息角度预测模式添加到运动信息预测模式候选列表。
78.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息相同时,禁止将该运动信息角度预测模式添加到运动信
息预测模式候选列表。
79.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
80.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
81.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息不同时,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
82.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息相同时,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
83.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
84.在一种可能的实施方式中,若至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,在继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
85.在上述实施例中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息。
86.在上述实施例中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块的预测模式是帧内块拷贝模式,则确定该周边匹配块不存在可用运动信息。示例性的,帧内块拷贝模式需要为当前块提供一个块矢量,根据块矢量在当前帧中获取预测值,块矢量表示当前块与当前帧已编码块中的最佳匹配块之间的相对位
移。
87.在上述实施例中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块是位于当前块所在图像之外,确定该周边匹配块不存在可用运动信息。或者,若周边匹配块是位于当前块所在图像片之外,确定该周边匹配块不存在可用运动信息。
88.在上述实施例中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息。
89.在一种可能的实施方式中,运动信息预测模式候选列表包括跳过模式或直接模式的候选运动信息,跳过模式或直接模式的候选运动信息包括但不限于:时域候选运动信息,空域候选运动信息,hmvp候选运动信息。基于此,在将运动信息角度预测模式添加到运动信息预测模式候选列表时,运动信息角度预测模式可以位于空域候选运动信息与hmvp候选运动信息之间。当然,上述只是示例,运动信息预测模式候选列表的顺序可以按照其他顺序设置。
90.例如,运动信息预测模式候选列表依次包括:时域候选运动信息,空域候选运动信息,运动信息角度预测模式,hmvp候选运动信息;或者,时域候选运动信息,空域候选运动信息,hmvp候选运动信息,运动信息角度预测模式;或者,空域候选运动信息,时域候选运动信息,运动信息角度预测模式,hmvp候选运动信息;或者,空域候选运动信息,时域候选运动信息,hmvp候选运动信息,运动信息角度预测模式;或者,时域候选运动信息,运动信息角度预测模式,空域候选运动信息,hmvp候选运动信息;或者,运动信息角度预测模式,时域候选运动信息,空域候选运动信息,hmvp候选运动信息。
91.关于时域候选运动信息的数量,空域候选运动信息的数量,运动信息角度预测模式的数量,hmvp候选运动信息的数量,均可以任意配置,对此不做限制。
92.步骤312,从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式。
93.步骤313,若目标运动信息预测模式为目标运动信息角度预测模式(即某运动信息角度预测模式作为目标运动信息预测模式),则对当前块的周边块中不可用的运动信息进行填充。
94.在一种可能的实施方式中,可以直接对当前块的周边块中不可用的运动信息进行填充。在另一种可能的实施方式中,若目标运动信息角度预测模式的预配置角度指向的周边匹配块包括不存在可用运动信息的周边块,才对当前块的周边块中不可用的运动信息进行填充。
95.步骤314,根据目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定当前块的运动信息,并根据当前块的运动信息确定当前块的预测值。
96.在一种可能的实施方式中,可以将当前块划分为至少一个子区域;针对当前块的每个子区域,根据目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定该子区域的运动信息。然后,针对当前块的每个子区域,根据该子区域的运动信息确定该子区域的目标预测值,并根据每个子区域的目标预测值确定当前块的预测值。
97.在另一种可能的实施方式中,将当前块划分为至少一个子区域;针对当前块的每个子区域,根据目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定该子区域的运动信息。根据该子区域的运动信息确定该子区域的运动补偿值;若该子
区域满足使用双向光流的条件,则获取该子区域的双向光流偏移值;根据该子区域的运动补偿值中的前向运动补偿值,该子区域的运动补偿值中的后向运动补偿值和该子区域的双向光流偏移值,确定该子区域的目标预测值;根据每个子区域的目标预测值,确定当前块的预测值。
98.示例性的,根据子区域的运动信息确定该子区域的运动补偿值之后,若该子区域不满足使用双向光流的条件,则根据子区域的运动补偿值确定子区域的目标预测值。
99.示例性的,若该子区域的运动信息为单向运动信息,则该子区域不满足使用双向光流的条件;或者,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域不满足使用双向光流的条件。
100.示例性的,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧之间,则该子区域满足使用双向光流的条件。
101.示例性的,获取子区域的双向光流偏移值,可以包括但不限于:根据该子区域的运动信息确定第一像素值和第二像素值;第一像素值是该子区域的前向运动补偿值和前向扩展值,前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;第二像素值是该子区域的后向运动补偿值和后向扩展值,后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;前向参考帧和后向参考帧根据该子区域的运动信息确定;根据该第一像素值和该第二像素值确定该子区域的双向光流偏移值。
102.由以上技术方案可见,本技术实施例中,不需要对当前块进行子块的划分,可以基于运动信息角度预测模式来确定当前块的每个子区域的划分信息,能够有效解决子块划分带来的比特开销,比如说,在不对当前块进行子块划分的基础上,为当前块的每个子区域提供运动信息,且当前块的不同子区域可以对应相同或者不同的运动信息,从而带来编码性能的提高,解决了传输大量运动信息的问题,可以节约大量编码比特的开销。通过将运动信息不完全相同的运动信息角度预测模式添加到运动信息预测模式候选列表中,从而去除只具有单一运动信息的运动信息角度预测模式,减少运动信息预测模式候选列表中的运动信息角度预测模式的数量,能够降低编码多个运动信息的比特数,进一步提高编码性能。
103.示例性的,上述步骤311的运动信息预测模式候选列表构建过程,可以实现:有些运动信息角度预测模式会使得当前块内部的每个子区域的运动信息相同,这样的运动信息角度预测模式需要剔除,有些运动信息角度预测模式会使得当前块内部的每个子区域的运动信息不同,这样的运动信息角度预测模式需要保留,即添加到运动信息预测模式候选列表中。
104.将运动信息角度预测模式剔除,其原因在于:若将运动信息角度预测模式1,运动信息角度预测模式2和运动信息角度预测模式3均添加到运动信息预测模式候选列表中,在编码运动信息角度预测模式3的索引时,由于前面存在两个运动信息角度预测模式,则可能需要编码001来表示。但是,本技术实施例中,只将运动信息角度预测模式3添加到运动信息预测模式候选列表中,在编码运动信息角度预测模式3的索引时,可能只需要编码0来表示即可。综上所述,上述方式能够减少编码运动信息角度预测模式的索引信息带来的比特开销,在节省比特开销的同时,可以降低硬件复杂度,避免单个运动信息的运动信息角度预测模式所带来的低性能增益问题,降低编码多个运动信息角度预测模式的比特数。
105.本技术实施例中,先对运动信息角度预测模式进行查重处理,后对周边块中不可
用的运动信息进行填充,能够降低解码端的复杂度,提高解码性能。例如,在得到运动信息预测模式候选列表时,还未对周边块中不可用的运动信息进行填充。解码端从运动信息预测模式候选列表中选择目标运动信息预测模式后,若目标运动信息预测模式不为运动信息角度预测模式,则不需要对周边块中不可用的运动信息进行填充,使得解码端减少运动信息的填充操作。
106.实施例2:参见图3d所示,为编码方法的流程示意图,可以应用于编码端,该方法包括:
107.步骤321,构建当前块的运动信息预测模式候选列表。
108.示例性的,在构建当前块的运动信息预测模式候选列表时,针对当前块的任意一个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
109.编码端构建运动信息预测模式候选列表的过程,与解码端构建运动信息预测模式候选列表的过程相同,只是执行主体变为编码端,具体过程参见步骤311,在此不再重复赘述。
110.步骤322,若运动信息预测模式候选列表中存在运动信息角度预测模式(即存在至少一个运动信息角度预测模式),则对当前块的周边块中不可用的运动信息进行填充。
111.在一种可能的实施方式中,可以直接对当前块的周边块中不可用的运动信息进行填充。在另一种可能的实施方式中,针对运动信息预测模式候选列表中的每个运动信息角度预测模式,若该运动信息角度预测模式的预配置角度指向的周边匹配块包括不存在可用运动信息的周边块,才对当前块的周边块中不可用的运动信息进行填充。
112.步骤323,针对运动信息预测模式候选列表中的每个运动信息角度预测模式,根据该运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定当前块的运动信息,并根据当前块的运动信息确定当前块的预测值。
113.示例性的,编码端确定当前块的预测值的过程,与解码端确定当前块的预测值的过程类似,只是执行主体变为编码端,目标运动信息角度预测模式变为运动信息预测模式候选列表中的运动信息角度预测模式,具体过程参见步骤314,在此不再重复赘述。
114.由以上技术方案可见,本技术实施例中,不需要对当前块进行子块的划分,可以基于运动信息角度预测模式来确定当前块的每个子区域的划分信息,能够有效解决子块划分带来的比特开销,比如说,在不对当前块进行子块划分的基础上,为当前块的每个子区域提供运动信息,且当前块的不同子区域可以对应相同或者不同的运动信息,从而带来编码性能的提高,解决了传输大量运动信息的问题,可以节约大量编码比特的开销。通过将运动信息不完全相同的运动信息角度预测模式添加到运动信息预测模式候选列表中,从而去除只具有单一运动信息的运动信息角度预测模式,减少运动信息预测模式候选列表中的运动信息角度预测模式的数量,能够降低编码多个运动信息的比特数,进一步提高编码性能。
115.实施例3:本技术实施例提出另一种编码方法,可以应用于编码端,该方法可以包
括:
116.步骤b1、编码端构建当前块的运动信息预测模式候选列表,该运动信息预测模式候选列表可以包括至少一个运动信息角度预测模式。当然,该运动信息预测模式候选列表也可以包括其它类型的运动信息预测模式(即不是运动信息角度预测模式),对此不做限制。
117.示例性的,可以为当前块构建一个运动信息预测模式候选列表,即当前块内的所有子区域,可以对应相同的运动信息预测模式候选列表;或者,可以为当前块构建多个运动信息预测模式候选列表,即当前块内的所有子区域,可以对应相同或不同的运动信息预测模式候选列表。为了方便描述,以为当前块构建一个运动信息预测模式候选列表为例。
118.运动信息角度预测模式可以是预测运动信息的角度预测模式,即用于帧间编码,而不是应用于帧内编码,运动信息角度预测模式选择的是匹配块,而不是匹配的像素点。
119.示例性的,运动信息预测模式候选列表的构建方式可以参见实施例l,在此不再赘述。
120.步骤b2、若运动信息预测模式候选列表中存在运动信息角度预测模式,则编码端对当前块的周边块中不可用的运动信息进行填充,具体填充方式参见后续实施例。
121.步骤b3、编码端依次遍历运动信息预测模式候选列表中的每个运动信息角度预测模式,针对当前遍历的运动信息角度预测模式,将当前块划分为至少一个子区域,针对每个子区域,根据该运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定该子区域的运动信息。例如,从该运动信息角度预测模式的预配置角度指向的多个周边匹配块中选择该子区域对应的周边匹配块,根据选择的周边匹配块的运动信息确定该子区域的运动信息。
122.需要说明的是,由于已经对当前块的周边块中不存在可用运动信息的周边块进行了填充,因此,该运动信息角度预测模式的预配置角度指向的多个周边匹配块,都是存在可用运动信息的,可以利用周边匹配块的可用运动信息确定子区域的运动信息。
123.步骤b4、编码端根据子区域的运动信息确定该子区域的目标预测值。
124.步骤b5、编码端根据每个子区域的目标预测值,确定当前块的预测值。
125.步骤b6、编码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式,该目标运动信息预测模式为运动信息角度预测模式,或其它类型的运动信息预测模式。
126.例如,针对运动信息预测模式候选列表中的每个运动信息角度预测模式,执行步骤b3-步骤b5,可以得到当前块的目的预测值。基于当前块的目的预测值,编码端采用率失真原则确定该运动信息角度预测模式的率失真代价值,对此确定方式不做限制。
127.针对运动信息预测模式候选列表中的其它类型的运动信息预测模式r(如时域候选运动信息和空域候选运动信息等,对此不做限制),根据运动信息预测模式r确定当前块的目标预测值,继而确定运动信息预测模式r的率失真代价值,对此不做限制。
128.然后,将最小的率失真代价对应的运动信息预测模式确定为目标运动信息预测模式,该目标运动信息预测模式可以为运动信息角度预测模式,或其它类型的运动信息预测模式r。
129.实施例4:本技术实施例中提出另一种解码方法,可以应用于解码端,该方法可以
包括:
130.步骤c1、解码端构建当前块的运动信息预测模式候选列表,该运动信息预测模式候选列表可以包括至少一个运动信息角度预测模式。当然,该运动信息预测模式候选列表也可以包括其它类型的运动信息预测模式(即不是运动信息角度预测模式),对此不做限制。
131.步骤c2、解码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式,该目标运动信息预测模式为目标运动信息角度预测模式,或其它类型的运动信息预测模式。
132.示例性的,解码端在接收到编码比特流后,从编码比特流中获取指示信息,该指示信息用于指示目标运动信息预测模式在运动信息预测模式候选列表中的索引信息,并从运动信息预测模式候选列表中选择与该索引信息对应的运动信息预测模式,并将选择的运动信息预测模式确定为当前块的目标运动信息预测模式。例如,编码端在向解码端发送编码比特流时,该编码比特流可以携带指示信息,该指示信息用于指示目标运动信息预测模式在运动信息预测模式候选列表的索引信息,如索引信息0,且该索引信息0表示运动信息预测模式候选列表中的第一个运动信息预测模式。基于此,解码端基于该索引信息0,可以将运动信息预测模式候选列表中的第一个运动信息预测模式作为前块的目标运动信息预测模式。
133.步骤c3、若目标运动信息预测模式为目标运动信息角度预测模式,则解码端对当前块的周边块中不可用的运动信息进行填充,具体填充方式参见后续实施例。
134.在一种可能的实现方式中,若目标运动信息预测模式不是运动信息角度预测模式,则解码端不需要对当前块的周边块中不可用的运动信息进行填充,以减少运动信息的填充操作。
135.步骤c4、解码端将当前块划分为至少一个子区域,针对每个子区域,根据该目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定该子区域的运动信息。
136.例如,从该目标运动信息角度预测模式的预配置角度指向的多个周边匹配块中选择该子区域对应的周边匹配块,根据选择的周边匹配块的运动信息确定该子区域的运动信息。
137.需要说明的是,由于已经对当前块的周边块中不存在可用运动信息的周边块进行了填充,因此,该目标运动信息角度预测模式的预配置角度指向的多个周边匹配块,都是存在可用运动信息的,可以利用周边匹配块的可用运动信息确定子区域的运动信息。
138.步骤c5、解码端根据子区域的运动信息确定该子区域的目标预测值。
139.步骤c6、解码端根据每个子区域的目标预测值,确定当前块的预测值。
140.实施例5:在上述实施例中,涉及运动信息预测模式候选列表的构建过程,即,针对任意一个运动信息角度预测模式,将该运动信息角度预测模式添加到运动信息预测模式候选列表,或者,禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表,该过程包括:
141.步骤d1、获取当前块的至少一个运动信息角度预测模式。
142.例如,获取如下运动信息角度预测模式的至少一种:水平向左运动信息角度预测
模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。当然,上述只是示例,对此不做限制,运动信息角度预测模式的预配置角度可以是0-360度之间的任意角度,将子区域的中心点向右的水平方向定位为0度,从0度逆时针旋转的任意角度均可以为预配置角度,或将子区域的中心点向其他方向定位为0度。实际应用中,预配置角度可以是分数角度,如22.5度。
143.步骤d2、针对当前块的任意一个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的至少两个周边匹配块。
144.步骤d3、基于至少两个周边匹配块是否存在可用运动信息、至少两个周边匹配块的可用运动信息是否相同等特征,将该运动信息角度预测模式添加到运动信息预测模式候选列表,或者,禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。
145.以下结合几个具体情况,对步骤d3的确定过程进行说明。
146.情况一、从至少两个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
147.或者,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,还可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
148.例如,若第一周边匹配块和第二周边匹配块中存在帧内块,和/或预测模式是帧内块拷贝模式的周边块,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中存在帧内块,和/或预测模式是帧内块拷贝模式的周边块,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
149.若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或当前块所在图像片之外,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或,若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或当前块所在图像片之外,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
150.情况二、从至少两个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息不同,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息相同,禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。
151.情况三、从至少两个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。在此基础上,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则将运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
152.若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息相同,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,第二周边匹配块和第三周边匹配块的运动信息不同,将该运动信息角度预测模式添加到运动信息预测模式候选列表。
153.若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息相同,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,第二周边匹配块和第三周边匹配块的运动信息相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
154.情况四、从至少两个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。在此基础上,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,将该运动信息角度预测模式添加到运动信息预测模式候选列表。
155.若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
156.若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息不同时,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
157.若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息相同时,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
158.若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
159.情况五、若至少两个周边匹配块均存在可用运动信息,且至少两个周边匹配块的运动信息不完全相同,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。若至少两个周边匹配块均存在可用运动信息,且至少两个周边匹配块的运动信息完全相同,则禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。
160.情况六、若至少两个周边匹配块中的至少一个不存在可用运动信息,则将该运动信息角度预测模式添加到运动信息预测模式候选列表。若至少两个周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。若至少两个周边匹配块中的至少一个不存在可用运动信息,且至少两个周边匹配块的运动信息不完全相同,则将该运动信息角度预测模式添加到运动信息预测模式候选列
表。若至少两个周边匹配块中的至少一个不存在可用运动信息,且至少两个周边匹配块的运动信息完全相同,则禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。
161.针对情况五和情况六,至少两个周边匹配块的运动信息不完全相同/完全相同的确定方式,可以包括但不限于:从至少两个周边匹配块中选择至少一个第一周边匹配块(如所有周边匹配块的全部或部分);针对每个第一周边匹配块,从至少两个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。若该第一周边匹配块的运动信息与该第二周边匹配块的运动信息不同,则确定二者的运动信息不同;若该第一周边匹配块的运动信息与该第二周边匹配块的运动信息相同,则确定二者的运动信息相同。基于此,若任意一对待比较周边匹配块的运动信息不同,则确定所述至少两个周边匹配块的运动信息不完全相同。若所有待比较周边匹配块的运动信息均相同,则确定所述至少两个周边匹配块的运动信息完全相同。
162.针对情况五和情况六,至少两个周边匹配块中的至少一个不存在可用运动信息的确定方式,可以包括但不限于:从至少两个周边匹配块中选择至少一个第一周边匹配块;针对每个第一周边匹配块,从至少两个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。若任意一对待比较周边匹配块(第一周边匹配块和第二周边匹配块)中的至少一个不存在可用运动信息,则确定所述至少两个周边匹配块中的至少一个不存在可用运动信息。若所有待比较周边匹配块均存在可用运动信息,则确定所述至少两个周边匹配块均存在可用运动信息。
163.在上述各种情况中,从至少两个周边匹配块中选择第一周边匹配块,可以包括:将所述至少两个周边匹配块中的任意一个作为第一周边匹配块;或者,将所述至少两个周边匹配块中指定的一个作为第一周边匹配块。从至少两个周边匹配块中选择第二周边匹配块,可以包括:根据遍历步长和第一周边匹配块的位置,从至少两个周边匹配块中选择第一周边匹配块对应的第二周边匹配块;该遍历步长是该第一周边匹配块与该第二周边匹配块之间的块间隔。
164.针对情况三和情况四,从至少两个周边匹配块中选择第三周边匹配块,可以包括:根据遍历步长和第二周边匹配块的位置,从至少两个周边匹配块中选择第二周边匹配块对应的第三周边匹配块;该遍历步长可以是该第二周边匹配块与该第三周边匹配块之间的块间隔。
165.例如,针对按照顺序依次排列的周边匹配块a1、周边匹配块a2、周边匹配块a3、周边匹配块a4和周边匹配块a5,则针对不同的情况,各周边匹配块的示例如下所示:
166.针对情况一和情况二,假设将周边匹配块a1作为第一周边匹配块,且遍历步长是2,则周边匹配块a1对应的第二周边匹配块是周边匹配块a3。针对情况三和情况四,假设将周边匹配块a1作为第一周边匹配块,且遍历步长是2,则周边匹配块a1对应的第二周边匹配块是周边匹配块a3。周边匹配块a3对应的第三周边匹配块是周边匹配块a5。
167.针对情况五和情况六,假设将周边匹配块a1和周边匹配块a3均作为第一周边匹配块,且遍历步长是2,在周边匹配块a1作为第一周边匹配块时,则第二周边匹配块是周边匹配块a3。在周边匹配块a3作为第一周边匹配块时,则第二周边匹配块是周边匹配块a5。
168.示例性的,从至少两个周边匹配块中选择周边匹配块之前,还可以基于当前块的
尺寸,确定所述遍历步长。通过所述遍历步长控制运动信息的比较次数。例如,假设周边匹配块的尺寸为4*4,当前块的尺寸为16*16,针对水平向左运动信息角度预测模式,当前块对应4个周边匹配块。为了控制运动信息的比较次数为1,遍历步长可以为2或者3,若遍历步长为2,则第一周边匹配块为第1个周边匹配块,第二周边匹配块为第3个周边匹配块;或者,第一周边匹配块为第2个周边匹配块,第二周边匹配块为第4个周边匹配块。若遍历步长为3,则第一周边匹配块为第1个周边匹配块,第二周边匹配块为第4个周边匹配块。又例如,为了控制运动信息的比较次数为2,遍历步长可以为1,第一周边匹配块为第1个周边匹配块和第3个周边匹配块,第1个周边匹配块对应的第二周边匹配块为第2个周边匹配块,第3个周边匹配块对应的第二周边匹配块为第4个周边匹配块。当然,上述只是针对水平向左运动信息角度预测模式的示例,还可以采用其它方式确定遍历步长,对此不做限制。
169.在上述各种情况中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括:若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息。若周边匹配块的预测模式是帧内块拷贝模式,则确定该周边匹配块不存在可用运动信息。若周边匹配块是位于当前块所在图像之外或者周边匹配块是位于当前块所在图像片之外,则确定该周边匹配块不存在可用运动信息。若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息。
170.实施例6:在上述实施例中,涉及运动信息预测模式候选列表的构建过程,在向运动信息预测模式候选列表中添加水平向左运动信息角度预测模式,垂直向上运动信息角度预测模式,水平向上运动信息角度预测模式,水平向下运动信息角度预测模式,垂直向右运动信息角度预测模式等运动信息角度预测模式时,各运动信息角度预测模式在运动信息预测模式候选列表中的顺序,根据需要进行设定,对此不做限制,以下结合几个具体应用场景进行说明。
171.应用场景1:当前块的周边块存在,表示该周边块位于当前块所在图像之内,当前块的周边块不存在,表示该周边块位于当前块所在图像之外。若周边块不存在,或周边块尚未解码(即周边块是未编码块),或周边块是帧内块,或周边块的预测模式为帧内块拷贝模式,则说明周边块不存在可用运动信息。若周边块存在,且周边块不是未编码块,且周边块不是帧内块,且周边块的预测模式不是帧内块拷贝模式,则说明周边块存在可用运动信息。
172.参见图4a所示,当前块的宽度为w,当前块的高度为h,令m的大小为w/4,n的大小为h/4,当前块内部左上角的像素点为(x,y),(x-1,y+h+w-1)所在周边块为a0,a0的大小为4*4。按照从a0到a
2m+2n
的顺序对这些周边块进行遍历,每一个4*4的周边块分别记为a1、a2、...、a
2m+2n
,a
2m+2n
是像素点(x+w+h-1,y-1)所在的周边块。针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从上述周边块中选择该预配置角度指向的多个周边匹配块,并从多个周边匹配块中选择待遍历的周边匹配块(如选择待遍历的第一周边匹配块和第二周边匹配块;或者,选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块)。若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的
比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
173.若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,可以将运动信息角度预测模式添加到运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,需要继续比较第二周边匹配块和第三周边匹配块。
174.若第二周边匹配块和第三周边匹配块都存在可用运动信息,且第二周边匹配块和第三周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,可以将运动信息角度预测模式添加到运动信息预测模式候选列表。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,或者,第二周边匹配块和第三周边匹配块都存在可用运动信息,且第二周边匹配块和第三周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,可以禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
175.例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平向左运动信息角度预测模式,将a
m-1+h/8
作为第一周边匹配块,将a
m+n-1
作为第二周边匹配块,当然,a
m-1+h/8
和a
m+n-1
只是一个示例,还可以将水平向左运动信息角度预测模式的预配置角度指向的其它周边匹配块作为第一周边匹配块或者第二周边匹配块,其实现方式类似,后续不再赘述。
176.利用上述比较方法判断a
m-1+h/8
和a
m+n-1
的比较结果是否相同。如果相同,则禁止将水平向左运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,则将水平向左运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
177.对于水平向下运动信息角度预测模式,将a
w/8-1
作为第一周边匹配块,将a
m-1
作为第二周边匹配块,将a
m-1+h/8
作为第三周边匹配块,当然,上述只是一个示例,还可以将水平向下运动信息角度预测模式的预配置角度指向的其它周边匹配块作为第一周边匹配块,第二周边匹配块或者第三周边匹配块,其实现方式类似,后续不再赘述。利用上述比较方法判断a
w/8-1
和a
m-1
的比较结果是否相同。如果不同,则将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,则利用上述比较方法判断a
m-1
和a
m-1+h/8
的比较结果是否相同。若a
m-1
和a
m-1+h/8
的比较结果为不同,则将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。若a
m-1
和a
m-1+h/8
的比较结果为相同,则禁止将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
178.例如,若当前块的左边相邻块不存在,上边相邻块存在,对于垂直向上运动信息角度预测模式,将a
m+n+1+w/8
作为第一周边匹配块,将a
m+n+1
作为第二周边匹配块,当然,上述只是一个示例,对此第一周边匹配块和第二周边匹配块不做限制。
179.利用上述比较方法判断a
m+n+1+w/8
和a
m+n+1
的比较结果是否相同。如果相同,则禁止将垂直向上运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,则将垂直向上运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
180.对于垂直向右运动信息角度预测模式,将a
m+n+1+w/8
作为第一周边匹配块,将a
2m+n+1
作为第二周边匹配块,将a
2m+n+1+h/8
作为第三周边匹配块,当然,上述只是示例,对此第一周边匹配块,第二周边匹配块和第三周边匹配块不做限制。利用上述比较方法判断a
m+n+1+w/8
和a
2m+n+1
的比较结果是否相同。如果不同,则将垂直向右运动信息角度预测模式添加到运动信
息预测模式候选列表。如果相同,则利用上述比较方法判断a
2m+n+1
和a
2m+n+1+h/8
的比较结果是否相同。若a
2m+n+1
和a
2m+n+1+h/8
的比较结果为不同,则将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。若a
2m+n+1
和a
2m+n+1+h/8
的比较结果为相同,则禁止将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。
181.例如,若当前块的左边相邻块存在,当前块的上边相邻块也存在,对于水平向下运动信息角度预测模式,将a
w/8-1
作为第一周边匹配块,将a
m-1
作为第二周边匹配块,将a
m-1+h/8
作为第三周边匹配块,当然,上述只是示例。利用上述比较方法判断a
w/8-1
和a
m-1
的比较结果是否相同。如果不同,则可以将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,则利用上述比较方法判断a
m-1
和a
m-1+h/8
的比较结果是否相同。若a
m-1
和a
m-1+h/8
的比较结果为不同,则将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。若a
m-1
和a
m-1+h/8
的比较结果为相同,则禁止将水平向下运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
182.对于水平向左运动信息角度预测模式,将a
m-1+h/8
作为第一周边匹配块,将a
m+n-1
作为第二周边匹配块。利用上述比较方法判断a
m-1+h/8
和a
m+n-1
的比较结果是否相同。若相同,则不将水平向左运动信息角度预测模式添加到运动信息预测模式候选列表。若不同,则将水平向左运动信息角度预测模式添加到运动信息预测模式候选列表。
183.对于水平向上运动信息角度预测模式,将a
m+n-1
作为第一周边匹配块,将a
m+n
作为第二周边匹配块,将a
m+n+1
作为第三周边匹配块。利用上述比较方法判断a
m+n-1
和a
m+n
的比较结果是否相同。如果不同,则将水平向上运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,则利用上述比较方法判断a
m+n
和a
m+n+1
的比较结果是否相同。若a
m+n
和a
m+n+1
的比较结果为不同,则将水平向上运动信息角度预测模式添加到运动信息预测模式候选列表。若a
m+n
和a
m+n+1
的比较结果为相同,禁止将水平向上运动信息角度预测模式添加到运动信息预测模式候选列表。
184.对于垂直向上运动信息角度预测模式,将a
m+n+1+w/8
作为第一周边匹配块,将a
m+n+1
作为第二周边匹配块。利用上述比较方法判断a
m+n+1+w/8
和a
m+n+1
的比较结果是否相同。如果相同,则禁止将垂直向上运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,则将垂直向上运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
185.对于垂直向右运动信息角度预测模式,将a
m+n+1+w/8
作为第一周边匹配块,将a
2m+n+1
作为第二周边匹配块,将a
2m+n+1+h/8
作为第三周边匹配块。利用上述比较方法判断a
m+n+1+w/8
和a
2m+n+1
的比较结果是否相同。若不同,则将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。若相同,利用上述比较方法判断a
2m+n+1
和a
2m+n+1+h/8
的比较结果是否相同。若a
2m+n+1
和a
2m+n+1+h/8
的比较结果为不同,则将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。若a
2m+n+1
和a
2m+n+1+h/8
的比较结果为相同,则禁止将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。
186.应用场景2:与应用场景1的实现方式类似,不同之处在于:应用场景2中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。比如说,无论当前块的左边相邻块是否存在、当前块的上边相邻块是否存在,均采用上述方式处理。
187.应用场景3:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在,
表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在,表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它过程与应用场景1类似,在此不再赘述。
188.应用场景4:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在,表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在,表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它过程与应用场景1类似,在此不再赘述。
189.应用场景5:当前块的周边块存在,表示该周边块位于当前块所在图像之内,且周边块位于当前块所在图像片之内;当前块的周边块不存在,表示该周边块位于当前块所在图像之外,或周边块位于当前块所在图像之内,但周边块位于当前块所在图像片之外。若周边块不存在,或周边块是未编码块,或周边块是帧内块,或周边块的预测模式为帧内块拷贝模式,说明周边块不存在可用运动信息。若周边块存在,且周边块不是未编码块,且周边块不是帧内块,且周边块的预测模式不是帧内块拷贝模式,说明周边块存在可用运动信息。
190.参见图4a所示,当前块的宽度为w,当前块的高度为h,令m的大小为w/4,n的大小为h/4,当前块内部左上角的像素点为(x,y),(x-1,y+h+w-1)所在周边块为a0,a0的大小为4*4。按照从a0到a
2m+2n
的顺序对这些周边块进行遍历,每一个4*4的周边块分别记为a1、a2、...、a
2m+2n
,a
2m+2n
是像素点(x+w+h-1,y-1)所在的周边块。
191.针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从上述周边块中选择该预配置角度指向的多个周边匹配块,并从多个周边匹配块中选择待遍历的周边匹配块。与应用场景1不同的是,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,并将运动信息角度预测模式添加到运动信息预测模式候选列表。
192.若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;或,继续比较第二周边匹配块和第三周边匹配块。
193.若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,或者,第二周边匹配块和第三周边匹配块都存在可用运动信息,且第二周边匹配块和第三周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。或者,若第二周边匹配块和第三周边匹配块都存在可用运动信息,且第二周边匹配块和第三周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
194.基于上述比较方法,相应的处理流程参见应用场景1,例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平向左运动信息角度预测模式,利用上述比较方法判断a
m-1+h/8
和a
m+n-1
的比较结果是否相同。如果相同,禁止将水平向左运动信息角度预测模式添加到运动信息预测模式候选列表。如果不同,将水平向左运动信息角度预测模式添加到运
动信息预测模式候选列表。对于水平向下运动信息角度预测模式,利用上述比较方法判断a
w
/
8-1
和a
m-1
的比较结果是否相同。如果不同,则将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。如果相同,则利用上述比较方法判断a
m-1
和a
m-1+h/8
的比较结果是否相同。若a
m-1
和a
m-1+h/8
的比较结果为不同,则可以将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。若a
m-1
和a
m-1+h/8
的比较结果为相同,则可以禁止将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。
195.应用场景6:与应用场景5的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。比如说,无论当前块的左边相邻块是否存在、当前块的上边相邻块是否存在,均采用应用场景5的方式进行处理。
196.应用场景7:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在,表示该周边块位于当前块所在图像之内,当前块的周边块不存在,表示该周边块位于当前块所在图像之外。其它处理过程与应用场景5类似,在此不再重复赘述。
197.应用场景8:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在,表示该周边块位于当前块所在图像之内,当前块的周边块不存在,表示该周边块位于当前块所在图像之外。应用场景8中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它处理过程与应用场景5类似,在此不再重复赘述。
198.应用场景9:当前块的周边块存在,表示该周边块位于当前块所在图像之内,当前块的周边块不存在,表示该周边块位于当前块所在图像之外。若周边块不存在,或周边块是未编码块,或周边块是帧内块,或周边块的预测模式为帧内块拷贝模式,说明周边块不存在可用运动信息。若周边块存在,且周边块不是未编码块,且周边块不是帧内块,且周边块的预测模式不是帧内块拷贝模式,说明周边块存在可用运动信息。针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从周边块中选择该预配置角度指向的多个周边匹配块,从多个周边匹配块中选择至少一个第一周边匹配块(如一个或者多个);针对每个第一周边匹配块,从所述多个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。
199.将每个第一周边匹配块和第二周边匹配块的组合记为匹配块组,例如,从多个周边匹配块中选择a1、a3、a5作为第一周边匹配块,从多个周边匹配块中选择a2作为a1对应的第二周边匹配块,从多个周边匹配块中选择a4作为a3对应的第二周边匹配块,从多个周边匹配块中选择a6作为a5对应的第二周边匹配块,则匹配块组1包括a1和a2,匹配块组2包括a3和a4,匹配块组3包括a5和a6。上述a1、a2、a3、a4、a5和a6是所述多个周边匹配块中的任意周边匹配块,其选择方式可以根据经验配置,对此不做限制。
200.针对每个匹配块组,若该匹配块组中的两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息不同,则该匹配块组的比较结果为不同。若该匹配块组中的两个周边匹配块中的至少一个不存在可用运动信息,或者,这两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息相同,则该匹配块组的比较结果为相同。若所有匹配块组的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;若任一匹配块组的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
201.例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平向左运动信息角
度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m,m+n-1],且i和j不相同,i和j可以任意选取,位于该取值范围即可)的比较结果。如果所有匹配块组的比较结果都相同,禁止将水平向左运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将水平向左运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0202]
对于水平向下运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[0,m+n-2],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0203]
例如,若当前块的左边相邻块不存在,上边相邻块存在,对于垂直向上运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m+n+1,2m+n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向上运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向上运动信息角度预测模式添加到运动信息预测模式候选列表。
[0204]
对于垂直向右运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m+n+2,2m+2n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。
[0205]
例如,若当前块的左边相邻块存在,当前块的上边相邻块也存在,对于水平向下运动信息角度预测模式,则利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[0,m+n-2],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将水平向下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0206]
对于水平向左运动信息角度预测模式,则利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m,m+n-1],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向左运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将水平向左运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0207]
对于水平向上运动信息角度预测模式,则利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m+1,2m+n-1],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向上运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将水平向上运动信息角度预测模式添加到运动信息预测模式候选列表。
[0208]
对于垂直向上运动信息角度预测模式,则利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m+n+1,2m+n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向上运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向上运动信息角度预测模式添加到运动信息预测模式候选列表。
[0209]
对于垂直向右运动信息角度预测模式,则利用上述比较方法判断至少一匹配块组a
j
和a
j
(i和j的取值范围为[m+n+2,2m+2n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向右运动信息角度预测模式添加到运动信息预测模式候选列表。
[0210]
应用场景10:与应用场景9的实现方式类似,不同之处在于:应用场景10中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。
[0211]
应用场景11:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在,表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在,表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它过程与应用场景9类似,在此不再赘述。
[0212]
应用场景12:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在,表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在,表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它过程与应用场景9类似,在此不再赘述。
[0213]
应用场景13:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。与应用场景9不同的是,比较方式可以为:
[0214]
针对每个匹配块组,若该匹配块组中的两个周边匹配块中的至少一个不存在可用运动信息,或者,这两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息不同,则该匹配块组的比较结果为不同。若该匹配块组中的两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息相同,则该匹配块组的比较结果为相同。若所有匹配块组的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;若任一匹配块组的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0215]
基于上述比较方式,其它过程与应用场景9类似,在此不再重复赘述。
[0216]
应用场景14:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。与应用场景9的比较方式不同,其比较方式可以参见应用场景10。基于上述比较方式,其它过程与应用场景9类似,在此不再重复赘述。
[0217]
应用场景15:与应用场景9的实现方式类似,不同之处在于:与应用场景9的比较方式不同,其比较方式可以参见应用场景10。其它过程与应用场景9类似,在此不再重复赘述。
[0218]
应用场景16:与应用场景9的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。与应用场景9的比较方式不同,其比较方式可以参见应用场景10。其它过程与应用场景9类似,在此不再重复赘述。
[0219]
应用场景17:参见图4b所示,为了降低硬件实现的复杂度,采用下采样方式进行查重。
[0220]
实施例7:在实施例1-实施例5中,涉及运动信息预测模式候选列表的构建过程,在向运动信息预测模式候选列表中添加水平向右运动信息角度预测模式,垂直向下运动信息
角度预测模式,斜向右下运动信息角度预测模式时,由于这些运动信息角度预测模式指向当前块的右侧周边块(即右边列的块)或者下侧周边块(即下边行的块),而对当前块进行编解码处理时,右侧周边块和下侧周边块通常是未编码块,即还没有运动信息,因此,可以根据时域对应位置的运动信息确定右侧周边块和下侧周边块的运动信息,从而能够将水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式等运动信息角度预测模式添加到运动信息预测模式候选列表,在运动信息预测模式候选列表中增加更多的运动信息角度预测模式,提升mvap模式的性能,提升编码性能。
[0221]
在一种可能的实施方式中,若实施例1-实施例5中的周边匹配块位于当前块外部的右侧(即右侧周边块)或者下侧(即下侧周边块),则可以采用如下方式确定周边匹配块的运动信息:确定当前块所在当前帧对应的参考帧;从该参考帧中选取与该周边匹配块位置对应的参考匹配块;根据该参考匹配块的运动信息确定该周边匹配块的运动信息。
[0222]
参见图4c所示,当前块的宽度为w,高度为h,令m的大小为w/4,n的大小为h/4,当前块内部左上角的像素点为(x,y),(x+w,y)所在的周边块记为a0,a0的大小为4*4。从a0到a
m+n
的顺序对这些周边块进行遍历,每一个4*4的周边块分别记为a1、a2、...、a
m+n,
a
m+n
是像素点(x,y+h)所在的周边块。如果某个4*4的周边块超出当前图像边界,则将该4*4的周边块clip(平移或者截断)到当前图像边界内,即保持周边块的大小不变,对周边块进行平移操作,以使该4*4的周边块位于当前图像边界内。比如说,将周边块clip到当前图像边界内是指:参见图4d所示,若周边块超出当前图像的右边界,则对周边块向左平移,以使周边块位于当前图像边界内,参见图4e所示,若周边块超出当前图像的下边界,则对周边块向上平移,以使周边块位于当前图像边界内。若周边块超出当前图像的下边界和右边界,则对周边块向左平移,并对周边块向上平移,以使周边块位于当前图像边界内。或者,如果某个4*4的周边块超出当前最大编码单元的范围,则将该4*4的周边块clip到当前最大编码单元的范围内,具体clip方式与将周边块clip到当前图像边界内类似,在此不再赘述。
[0223]
继续参见图4c所示,可以先确定当前块所在当前帧对应的参考帧,并从参考帧中选取与当前块对应的参考块,对此确定过程不做限制。示例性的,参考块的宽度为w,参考块的高度为h,令m的大小为w/4,n的大小为h/4,参考块内部左上角的像素点为(x’,y’),(x’+w,y’)所在的块记为a0’
,a0’
的大小为4*4。从a0’
到a
m+n’的顺序对这些块进行遍历,每一个4*4的块分别记为a1’
、a2’
、...、a
m+n’,a
m+n’是像素点(x’,y’+h)所在的块。
[0224]
综上所述,参考帧中的a0’
是当前帧中的周边匹配块a0对应的参考匹配块,即,根据a0’
的运动信息确定a0的运动信息。参考帧中的a1’
是当前帧中的周边匹配块a1对应的参考匹配块,即,根据a1’
的运动信息确定a1的运动信息。以此类推,参考帧中的a
m+n’是当前帧中的周边匹配块a
m+n
对应的参考匹配块,即,根据a
m+n’的运动信息确定a
m+n
的运动信息。
[0225]
示例性的,根据参考匹配块的运动信息确定周边匹配块的运动信息,包括但不限于:
[0226]
方式1、若参考匹配块的前向运动信息可用,则基于当前帧与当前帧的list0(即前向参考帧列表)中的第一目标帧(如list0中第p1帧,p1可以为正整数,如list0中的第一帧)的位置关系,参考帧与参考帧的list0中的第二目标帧(即参考匹配块的前向运动信息指向的目标帧)的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的前向运动信息。若参考匹配块的前向运动信息不可用,则周边匹配块的前向运动信息不可用。若参
考匹配块的后向运动信息可用,则基于当前帧与当前帧的list1(即后向参考帧列表)中的第三目标帧(如list1中第p2帧,p2可以为正整数,如list1中的第一帧)的位置关系,参考帧与参考帧的list1中的第四目标帧(即参考匹配块的后向运动信息指向的目标帧)的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的后向运动信息。若参考匹配块的后向运动信息不可用,则周边匹配块的后向运动信息不可用。
[0227]
方式2、若参考匹配块的前向运动信息可用,则基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的前向运动信息。以及,基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的后向运动信息。若参考匹配块的前向运动信息不可用,则周边匹配块的前向运动信息和后向运动信息均不可用。
[0228]
方式3、若参考匹配块的前向运动信息可用,则基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的前向运动信息。若参考匹配块的前向运动信息不可用,则周边匹配块的前向运动信息不可用。周边匹配块的后向运动信息不可用,即,无论参考匹配块的前向运动信息是否可用,周边匹配块的后向运动信息均不可用。
[0229]
方式4、若参考匹配块的后向运动信息可用,则基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的前向运动信息,以及,基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的后向运动信息。若参考匹配块的后向运动信息不可用,则周边匹配块的前向运动信息和后向运动信息均不可用。
[0230]
方式5、若参考匹配块的后向运动信息可用,则基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的前向运动信息。若参考匹配块的后向运动信息不可用,则周边匹配块的前向运动信息不可用。周边匹配块的后向运动信息不可用,即无论参考匹配块的后向运动信息是否可用,周边匹配块的后向运动信息均不可用。
[0231]
方式6、若参考匹配块的前向运动信息可用,则基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的后向运动信息;若参考匹配块的前向运动信息不可用,则周边匹配块的后向运动信息不可用。周边匹配块的前向运动信息不可用,即无论参考匹配块的前向运动信息是否可用,周边匹配块的前向运动信息均不可用。
[0232]
方式7、若参考匹配块的后向运动信息可用,则基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的后向运动信息;若参考匹配块的后向运动信息不可用,则周边匹配块的后向运动信息不可用。周边匹配块的前向运动信息不可用,即无论参考匹配块的后向运动信息是否可用,周边匹配块的前向运动信息均不可用。
[0233]
综上所述,针对周边匹配块来说,若周边匹配块的前向运动信息可用,周边匹配块的后向运动信息可用,则周边匹配块的运动信息可用,周边匹配块的运动信息是双向运动
信息,周边匹配块的运动信息包括前向运动信息和后向运动信息。若周边匹配块的前向运动信息可用,周边匹配块的后向运动信息不可用,则周边匹配块的运动信息可用,周边匹配块的运动信息是单向运动信息,周边匹配块的运动信息包括前向运动信息。若周边匹配块的前向运动信息不可用,周边匹配块的后向运动信息可用,则周边匹配块的运动信息可用,周边匹配块的运动信息是单向运动信息,周边匹配块的运动信息包括后向运动信息。若周边匹配块的前向运动信息不可用,周边匹配块的后向运动信息不可用,则周边匹配块的运动信息不可用。
[0234]
在上述各方式中,参考匹配块的前向运动信息可以包括参考匹配块的第一运动矢量,参考帧(即参考匹配块所在帧)的list0中的目标帧(如目标帧索引),将参考帧的list0中的目标帧记为第二目标帧等,参考匹配块的后向运动信息可以包括参考匹配块的第二运动矢量,参考帧的list1中的目标帧,将参考帧的list1中的目标帧记为第四目标帧,在此基础上:
[0235]
基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的前向运动信息,可以包括:基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的第一运动矢量进行伸缩,得到伸缩后的运动矢量,对此伸缩方式不做限制。根据伸缩后的运动矢量确定周边匹配块的前向运动信息,周边匹配块的前向运动信息可以包括当前帧的list0中的第一目标帧和伸缩后的运动矢量。
[0236]
基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的后向运动信息,可以包括:基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的第二运动矢量进行伸缩,得到伸缩后的运动矢量。根据伸缩后的运动矢量确定周边匹配块的后向运动信息,周边匹配块的后向运动信息可以包括当前帧的list1中的第三目标帧和伸缩后的运动矢量。
[0237]
基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的前向运动信息进行伸缩,得到周边匹配块的后向运动信息,可以包括:基于当前帧与当前帧的list1中的第三目标帧的位置关系,参考帧与参考帧的list0中的第二目标帧的位置关系,对参考匹配块的第一运动矢量进行伸缩,得到伸缩后的运动矢量。根据伸缩后的运动矢量确定周边匹配块的后向运动信息,周边匹配块的后向运动信息可以包括当前帧的list1中的第三目标帧和伸缩后的运动矢量。
[0238]
基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的后向运动信息进行伸缩,得到周边匹配块的前向运动信息,可以包括:基于当前帧与当前帧的list0中的第一目标帧的位置关系,参考帧与参考帧的list1中的第四目标帧的位置关系,对参考匹配块的第二运动矢量进行伸缩,得到伸缩后的运动矢量。根据伸缩后的运动矢量确定周边匹配块的后向运动信息,周边匹配块的后向运动信息可以包括list0中的第一目标帧和伸缩后的运动矢量。
[0239]
以下结合几个具体应用场景,对水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式的加入过程进行说明,关于各运动信
息角度预测模式在运动信息预测模式候选列表中的顺序,根据需要进行设定,对此不做限制。
[0240]
应用场景1:参见图4c所示,针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从所有周边块中选择该预配置角度指向的多个周边匹配块,并从多个周边匹配块中选择待遍历的周边匹配块(如选择待遍历的第一周边匹配块和第二周边匹配块;或者,选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块)。
[0241]
若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0242]
若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,继续比较第二周边匹配块和第三周边匹配块。若第二周边匹配块和第三周边匹配块都存在可用运动信息,第二周边匹配块和第三周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第二周边匹配块和第三周边匹配块都存在可用运动信息,第二周边匹配块和第三周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0243]
例如,对于水平向右运动信息角度预测模式,可以将a0作为第一周边匹配块,将a
h/8
作为第二周边匹配块,利用上述比较方法判断a0和a
h/8
的比较结果是否相同。如果相同,则禁止将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表。如果不同,则将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表。
[0244]
对于垂直向下运动信息角度预测模式,可以将a
m+1
作为第一周边匹配块,将a
m+1+w/8
作为第二周边匹配块,利用上述比较方法判断a
m+1
和a
m+1+w/8
的比较结果是否相同。如果相同,则禁止将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表。如果不同,则将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0245]
对于斜向右下运动信息角度预测模式,可以将a
m-1
作为第一周边匹配块,将a
m
作为第二周边匹配块,将a
m+1
作为第三周边匹配块,利用上述比较方法判断a
m
和a
m-1
的比较结果是否相同。如果不同,则将斜向右下运动信息角度预测模式添加到运动信息预测模式候选列表。如果相同,则继续利用上述比较方法判断a
m
和a
m+1
的比较结果是否相同。若不同,则将斜向右下运动信息角度预测模式添加到运动信息预测模式候选列表。若相同,则禁止将斜向右下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0246]
应用场景2:应用场景2的比较方法与应用场景1的比较方法相同,在当前块处于右边界,不处于下边界时,对于垂直向下运动信息角度预测模式,将a
m+1
作为第一周边匹配块,将a
m+1+w/8
作为第二周边匹配块,利用上述比较方法判断a
m+1
和a
m+1+w/8
的比较结果是否相同。如果相同,禁止将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表。如果不同,将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表。在当前块
处于下边界,不处于右边界时,对于水平向右运动信息角度预测模式,将a0作为第一周边匹配块,将a
h/8
作为第二周边匹配块,利用上述比较方法判断a0和a
h/8
的比较结果是否相同。如果相同,禁止将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表。如果不同,将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表。在当前块不处于下边界和右边界时,对于水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式的处理方式,参见应用场景1,在此不再赘述。
[0247]
应用场景3:针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从周边块中选择该预配置角度指向的多个周边匹配块,从多个周边匹配块中选择至少一个第一周边匹配块(如一个或多个);针对每个第一周边匹配块,从多个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。将每个第一周边匹配块和第二周边匹配块的组合记为匹配块组。例如,从多个周边匹配块中选择a1和a5作为第一周边匹配块,从多个周边匹配块中选择a2作为a1对应的第二周边匹配块,从多个周边匹配块中选择a6作为a5对应的第二周边匹配块,匹配块组1包括a1和a2,匹配块组2包括a5和a6。针对每个匹配块组,若匹配块组中的两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息不同,匹配块组的比较结果为不同。若匹配块组中的两个周边匹配块都存在可用运动信息,且这两个周边匹配块的运动信息相同,匹配块组的比较结果为相同。若所有匹配块组的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;若任一匹配块组的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0248]
例如,对于水平向右运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[0,m-1])的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表;若任一比较结果为不同,则将水平向右运动信息角度预测模式添加到运动信息预测模式候选列表。
[0249]
对于垂直向下运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[m+1,m+n])的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表;若任一比较结果为不同,则将垂直向下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0250]
对于斜向右下运动信息角度预测模式,利用上述比较方法判断至少一匹配块组a
i
和a
j
(i和j的取值范围为[0,m+n])的比较结果。如果所有匹配块组的比较结果都相同,则禁止将斜向右下运动信息角度预测模式添加到运动信息预测模式候选列表;若任一比较结果为不同,则将斜向右下运动信息角度预测模式添加到运动信息预测模式候选列表。
[0251]
应用场景4:应用场景4的比较方法与应用场景3的比较方法相同,在当前块处于右边界,不处于下边界时,对于垂直向下运动信息角度预测模式进行处理,处理方式参见应用场景3,在此不再赘述。在当前块处于下边界,不处于右边界时,对于水平向右运动信息角度预测模式进行处理,处理方式参见应用场景3,在此不再赘述。在当前块不处于下边界和右边界时,对于水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式的处理方式,参见应用场景3,在此不再赘述。
[0252]
实施例8:在实施例1-实施例5中,涉及编码端/解码端对周边块中不可用的运动信
息进行填充,关于如何对周边块中不可用的运动信息进行填充,在一种可能的实施方式中,针对解码端来说,从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式之后,若目标运动信息预测模式为目标运动信息角度预测模式,且该目标运动信息角度预测模式的预配置角度指向的多个周边匹配块包括不存在可用运动信息的周边块,则对当前块的周边块中不可用的运动信息进行填充。针对编码端来说,针对运动信息预测模式候选列表中的每个运动信息角度预测模式,若该运动信息角度预测模式的预配置角度指向的多个周边匹配块包括不存在可用运动信息的周边块,则对当前块的周边块中不可用的运动信息进行填充。
[0253]
示例性的,针对编码端和解码端来说,针对不存在可用运动信息的周边块,将该周边块的邻近块的可用运动信息,填充为该周边块的运动信息;或,将该周边块在时域参考帧中对应位置的参考块的可用运动信息,填充为该周边块的运动信息;或,将默认运动信息填充为该周边块的运动信息。当然,上述只是几个填充示例,对此不做限制。
[0254]
在另一种可能的实施方式中,针对水平向左运动信息角度预测模式,垂直向上运动信息角度预测模式,水平向上运动信息角度预测模式,水平向下运动信息角度预测模式,垂直向右运动信息角度预测模式等运动信息角度预测模式,当前块的周边块可以为当前块的左边周边块和/或当前块的上边周边块,在此情况下,可以采用如下方式对周边块中不可用的运动信息进行填充:针对编码端和解码端来说,对当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历(或者按照从当前块的上边周边块到左边周边块的遍历顺序进行遍历),遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0255]
示例性的,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,可以包括:如果当前块不存在左边周边块,则对当前块的上边周边块进行遍历;如果当前块不存在上边周边块,则对当前块的左边周边块进行遍历。左边周边块可以包括与当前块左侧相邻的块和不相邻的块。上边周边块可以包括与当前块上侧相邻的块和不相邻的块。第一周边块的数量可以为一个或者多个,是遍历出的首个存在可用运动信息的周边块之前的所有周边块。第一周边块可以是未编码块,或者帧内块,或者预测模式是帧内块拷贝模式的周边块;第二周边块可以是未编码块,或者帧内块,或者预测模式是帧内块拷贝模式的周边块。
[0256]
以下结合几个具体应用场景,对运动信息的填充过程进行说明。
[0257]
应用场景1:当前块的周边块存在,表示该周边块位于当前块所在图像之内,当前块的周边块不存在,表示该周边块位于当前块所在图像之外。若周边块不存在,或周边块尚未解码(即周边块是未编码块),或周边块是帧内块,或周边块的预测模式为帧内块拷贝模式,则说明周边块不存在可用运动信息。若周边块存在,且周边块不是未编码块,且周边块不是帧内块,且周边块的预测模式不是帧内块拷贝模式,则说明周边块存在可用运动信息。
[0258]
参见图4a所示,当前块的宽度为w,当前块的高度为h,令m的大小为w/4,n的大小为h/4,当前块内部左上角的像素点为(x,y),(x-1,y+h+w-1)所在周边块为a0,a0的大小可以为4*4。按照从a0到a2m+2n的顺序对这些周边块进行遍历,每一个4*4的周边块分别记为a1、a2、...、a
2m+2n
,a
2m+2n
是像素点(x+w+h-1,y-1)所在的周边块。
[0259]
例如,当前块的左边相邻块存在,上边相邻块不存在,则填充过程如下:从a0到a
m+n-1
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。若i大于0,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于m+n-1,如果是,则填充结束,退出填充过程;否则,从a
i+1
到a
m+n-1
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0260]
参见图4a所示,假设a
i
是a4,则可以将a
i
之前遍历的周边块(如a0、a1、a2、a3)的运动信息,全部用a4的运动信息进行填充。假设遍历到a5时,发现a5不存在可用运动信息,则使用a5最相邻的前一个周边块a4的运动信息进行填充,假设遍历到a6时,发现a6不存在可用运动信息,则使用a6最相邻的前一个周边块a5的运动信息进行填充,以此类推。
[0261]
当前块的左边相邻块不存在,上边相邻块存在,填充过程如下:从a
m+n+1
到a
2m+2n
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。若i大于m+n+1,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从a
i+1
到a
2m+2n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0262]
当前块的左边相邻块和上边相邻块均存在,填充过程如下:从a0到a
2m+2n
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。如果i大于0,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从a
i+1
到a
2m+2n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0263]
应用场景2:与应用场景1的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在,比如说,无论当前块的左边相邻块是否存在,当前块的上边相邻块是否存在,均采用如下方式处理:从a0到a
2m+2n
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。如果i大于0,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从a
i+1
到a
2m+2n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0264]
应用场景3:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它实现过程参见应用场景1,在此不再赘述。
[0265]
应用场景4:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它实现过程参见应用场景1,在此不再赘述。
[0266]
应用场景5:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在,或周边块尚未解码(即周边块是未编码块),或周边块是帧内块,或周边块的预测模式为帧内块拷贝模式,则说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是
帧内块、且周边块的预测模式不是帧内块拷贝模式,则说明周边块存在可用运动信息。
[0267]
当前块的左边相邻块存在,上边相邻块不存在,则填充过程如下:从a0到a
m+n-1
进行顺序遍历,如果遍历的周边块的运动信息不可用,则可以利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。当前块的左边相邻块不存在,上边相邻块存在,则填充过程如下:从a
m+n+1
到a
2m+2n
进行顺序遍历,如果遍历的周边块的运动信息不可用,则可以利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。当前块的左边相邻块存在,上边相邻块存在,则填充过程如下:从a0到a
2m+2n
进行顺序遍历,如果遍历的周边块的运动信息不可用,则可以利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。
[0268]
应用场景6:与应用场景5的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在,无论当前块的左边相邻块和上边相邻块是否存在,均从a0到a
2m+2n
进行顺序遍历,如果遍历的周边块的运动信息不可用,则利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。
[0269]
应用场景7:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它实现过程参见应用场景5,在此不再赘述。
[0270]
应用场景8:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它实现过程参见应用场景5,在此不再赘述。
[0271]
应用场景9-应用场景16:与应用场景1-应用场景8的实现方式类似,不同之处在于:当前块的宽度为w,当前块的高度为h,令m的大小为w/8,n的大小为h/8,周边块a0的大小为8*8,每一个8*8的周边块分别记为a1、a2、...、a
2m+2n
,即,每个周边块的大小从4*4变更为8*8,其它实现过程可以参见应用场景1-应用场景8,在此不再重复赘述。
[0272]
应用场景17:参见图4f所示,当前块的宽和高都为16,周边块的运动信息按照4*4的最小单位进行保存。假设a
14
、a
15
、a
16
和a
17
为未编码块,则对这些未编码块进行填充,其填充方法可以为以下任意一种:采用邻近块的可用运动信息进行填充;采用默认运动信息进行填充;采用时域参考帧对应位置块的可用运动信息进行填充。当然,上述方式只是示例,对此不做限制。若当前块的尺寸为其它大小,也可以采用上述方式填充,在此不再赘述。
[0273]
应用场景18:参见图4g所示,当前块的宽和高都为16,周围块的运动信息按照4*4的最小单位进行保存。假设a7为帧内块,则需要对帧内块进行填充,其填充方法可以为以下任意一种:采用邻近块的可用运动信息进行填充;采用默认运动信息进行填充;采用时域参考帧对应位置块的可用运动信息进行填充。当然,上述方式只是示例,对此不做限制。
[0274]
应用场景19:参见图4a所示,当前块的宽度为w,当前块的高度为h,令m的大小为w/4,n的大小为h/4,当前块内部左上角的像素点为(x,y),(x-1,y+h+w-1)所在周边块为a0,a0的大小为4*4。按照从a0到a
2m+2n
的顺序对这些周边块进行遍历,每一个4*4的周边块分别记
为a1、a2、...、a
2m+2n
,a
2m+2n
是像素点(x+w+h-1,y-1)所在的周边块。
[0275]
如果运动信息角度预测模式为水平向下运动信息角度预测模式,遍历范围为a0到a
m+n-2
,从a0到a
m+n-2
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。若i大于0,将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于m+n-2,如果是,填充结束,退出填充过程;否则从a
i+1
到a
m+n-2
进行遍历,如果遍历的周边块的运动信息不可用,使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0276]
如果运动信息角度预测模式为水平向左运动信息角度预测模式,则遍历的范围为a
m
到a
m+n-1
,从a
m
到a
m+n-1
进行顺序遍历。如果运动信息角度预测模式为水平向上运动信息角度预测模式,则遍历的范围为a
m+1
到a
2m+n-1
,从a
m+1
到a
2m+n-1
进行顺序遍历。如果运动信息角度预测模式为垂直向上运动信息角度预测模式,则遍历的范围为a
m+n+1
到a
2m+n
,从a
m+n+1
到a
2m+n
进行顺序遍历。如果运动信息角度预测模式为垂直向右运动信息角度预测模式,则遍历的范围为a
m+n+2
到a
2m+2n
,从a
m+n+2
到a
2m+2n
进行顺序遍历。
[0277]
应用场景20:参见图4h所示,需要对周围块的帧内块,或未编码块,或预测模式为帧内块拷贝模式的周围块进行运动信息填充,填充方法采用类似于帧内参考像素的填充方法。
[0278]
实施例9:在实施例1-实施例5中,涉及编码端/解码端对当前块的周边块中不可用的运动信息进行填充,针对水平向右运动信息角度预测模式,垂直向下运动信息角度预测模式,斜向右下运动信息角度预测模式等运动信息角度预测模式,当前块的周边块可以为当前块的右边周边块和/或当前块的下边周边块,在此情况下,关于如何对当前块的周边块中不可用的运动信息进行填充,在一种可能的实施方式中,可以采用如下方式进行填充:
[0279]
对当前块的周边块,按照从当前块的右边周边块到下边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。或者,对当前块的周边块,按照从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0280]
在另一种可能的实施方式中,对当前块的周边块,按照从当前块的右边周边块到下边周边块的遍历顺序进行遍历,遍历出首个周边块;若首个周边块不存在可用运动信息,则为首个周边块填充运动信息;继续遍历首个周边块之后的周边块,若首个周边块之后的周边块中包括不存在可用运动信息的第三周边块,则将遍历过的第三周边块的上一个周边块的运动信息填充给第三周边块。或者,按照从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个周边块;若首个周边块不存在可用运动信息,则为首个周边块填充运动信息;继续遍历首个周边块之后的周边块,若首个周边块之后的周边块中包括不存在可用运动信息的第三周边块,则将遍历过的第三周边块的上一个周边块的运动信息填充给第三周边块。
[0281]
示例性的,按照从当前块的右边周边块到下边周边块的遍历顺序进行遍历,可以包括:如果当前块不存在右边周边块,则对当前块的下边周边块进行遍历;如果当前块不存在下边周边块,则对当前块的右边周边块进行遍历。按照从当前块的下边周边块到右边周边块的遍历顺序进行遍历,可以包括:如果当前块不存在右边周边块,则对当前块的下边周边块进行遍历;如果当前块不存在下边周边块,则对当前块的右边周边块进行遍历。
[0282]
示例性的,右边周边块可以包括与当前块右侧相邻的块和不相邻的块。下边周边块可以包括与当前块下侧相邻的块和不相邻的块。第一周边块的数量可以为一个或者多个,第一周边块是遍历出的首个存在可用运动信息的周边块之前的所有周边块。第二周边块的数量可以为一个或者多个。第三周边块的数量可以为一个或者多个。
[0283]
示例性的,若首个周边块不存在可用运动信息,为首个周边块填充运动信息,可以包括但不限于:为首个周边块填充零运动信息;或者,为首个周边块填充历史运动信息列表中的运动信息;或者,为首个周边块填充与首个周边块相邻的周边块的运动信息。
[0284]
以下结合几个具体应用场景,对运动信息的填充过程进行说明。
[0285]
应用场景1:参见图4i所示,当前块的宽度为w,高度为h,令m为w/4,n为h/4,当前块内部左上角的像素点为(x,y),(x+w,y)所在的周边块记为a0,按照从a0到a
m+n
的顺序方向进行遍历,每个周边块分别记为a1、a2、...、a
m+n
,a
m+n
是像素点(x,y+h)所在的周边块。如果某个周边块超出当前图像边界,则将该周边块clip到当前图像边界内,或者,如果某个周边块超出当前最大编码单元的范围,则将该周边块clip到当前最大编码单元的范围内。示例性的,将周边块clip到当前图像边界内是指:若周边块超出当前图像的右边界,则对周边块向左平移,以使周边块位于当前图像边界内,若周边块超出当前图像的下边界,则对周边块向上平移,以使周边块位于当前图像边界内。
[0286]
示例性的,参见实施例7的几种方式,可以根据参考匹配块的运动信息确定周边匹配块的运动信息,即获知周边匹配块的运动信息可用,或者,获知周边匹配块的运动信息不可用。在周边匹配块的运动信息可用时,可以获知周边匹配块的运动信息(如前向运动信息和/或后向运动信息)。在此基础上,采用如下方式对周边块中不可用的运动信息进行填充:从a0到a
m+n
进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。若i大于0,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于m+n,如果是,填充结束,退出填充过程;否则,从a
i+1
到a
m+n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0287]
应用场景2:参见图4i所示,采用如下方式对周边块中不可用的运动信息进行填充:从a
m+n
到a0进行顺序遍历,找到第一个存在可用运动信息的周边块,记为a
i
。如果i小于m+n,则将a
i
之前遍历的周边块的运动信息,全部用a
i
的运动信息进行填充。判断i是否等于0,如果是,填充结束,退出填充过程;否则,从a
i+1
到a0进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0288]
应用场景3:参见图4j所示,采用如下方式对周边块中不可用的运动信息进行填充:先判断a0的运动信息是否可用,如果a0的运动信息不可用,则可以使用零运动信息对a0的运动信息进行填充。然后,从a1到a
m+n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0289]
应用场景4:参见图4j所示,采用如下方式对周边块中不可用的运动信息进行填
充:先判断a
m+n
的运动信息是否可用,如果a
m+n
的运动信息不可用,则可以使用零运动信息对a
m+n
的运动信息进行填充。然后,从a
m+n-1
到a0进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0290]
应用场景5:参见图4j所示,采用如下方式对周边块中不可用的运动信息进行填充:先判断a0的运动信息是否可用,如果a0的运动信息不可用,则可以使用历史运动信息列表(即hmvp列表)中的运动信息(如历史运动信息列表中的任意一个运动信息)对a0的运动信息进行填充。然后,从a1到a
m+n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0291]
应用场景6:参见图4j所示,采用如下方式对周边块中不可用的运动信息进行填充:判断a
m+n
的运动信息是否可用,如果a
m+n
的运动信息不可用,则使用历史运动信息列表中的运动信息对a
m+n
的运动信息进行填充。从a
m+n-1
到a0进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0292]
应用场景7:参见图4k所示,采用如下方式对周边块中不可用的运动信息进行填充:先判断a0的运动信息是否可用,如果a0的运动信息不可用,则可以使用与a0相邻的周边块的运动信息对a0的运动信息进行填充,与a0相邻的周边块可以是位于a0上侧的周边块,即位于当前块右上角的周边块,如图4k中的a0’
,在实施例8的填充过程中,已经完成a0’
的填充,即a0’
已经存在运动信息,因此,可以使用a0’
的运动信息对a0的运动信息进行填充。然后,从a1到a
m+n
进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0293]
应用场景8:参见图4k所示,采用如下方式对周边块中不可用的运动信息进行填充:先判断a
m+n
的运动信息是否可用,如果a
m+n
的运动信息不可用,则可以使用与a
m+n
相邻的周边块的运动信息对a
m+n
的运动信息进行填充,与a
m+n
相邻的周边块可以是位于a
m+n
左侧的周边块,即位于当前块左下角的周边块,如图4k中的am+
n’,在实施例8的填充过程中,已经完成a
m+n’的填充,即a
m+n’已经存在运动信息,因此,可以使用a
m+n’的运动信息对a
m+n
的运动信息进行填充。然后,从a
m+n-1

a0进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0294]
实施例10:在实施例1-实施例5中,涉及利用运动信息角度预测模式进行运动补偿,比如说,根据运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定当前块的每个子区域的运动信息,针对每个子区域,根据该子区域的运动信息确定该子区域的目标预测值。以下结合具体应用场景,对每个子区域的运动补偿过程进行说明。
[0295]
应用场景1:基于运动信息角度预测模式对应的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。将当前块划分为至少一个子区域,对此划分方式不做限制。针对当前块的每个子区域,从所述多个周边匹配块中选择与该子区域对应的周边匹配块,并根据选择的周边匹配块的运动信息确定该子区域的运动信息。然后,针对每个子区域,根据该子区域的运动信息确定该子区域的目标预测值,对此确定过程不做限制。
[0296]
示例性的,可以将选择的周边匹配块的运动信息作为该子区域的运动信息。例如,假设该周边匹配块的运动信息是单向运动信息,则可以将该单向运动信息作为该子区域的运动信息。假设该周边匹配块的运动信息是双向运动信息,则可以将该双向运动信息作为该子区域的运动信息,或者,将该双向运动信息中的一个运动信息作为该子区域的运动信
息,或者,将该双向运动信息中的另一个运动信息作为该子区域的运动信息。
[0297]
示例性的,子区域划分信息可以与运动信息角度预测模式无关,如根据当前块的尺寸确定当前块的子区域划分信息,根据该子区域划分信息将当前块划分为至少一个子区域。例如,若当前块的尺寸满足:宽大于或等于预设尺寸参数(根据经验配置,如8),高大于或等于预设尺寸参数,则子区域的大小为8*8,即按照8*8的方式将当前块划分为至少一个子区域。
[0298]
示例性的,子区域划分信息可以与运动信息角度预测模式有关,针对水平向上运动信息角度预测模式,水平向下运动信息角度预测模式或垂直向右运动信息角度预测模式,若当前块的宽大于或等于预设尺寸参数,当前块的高大于或等于预设尺寸参数,子区域的大小为8*8;若当前块的宽小于预设尺寸参数,或,当前块的高小于预设尺寸参数,子区域的大小为4*4。
[0299]
针对水平向左运动信息角度预测模式,若当前块的宽大于预设尺寸参数,子区域的大小为当前块的宽*4,或大小为4*4;若当前块的宽等于预设尺寸参数,当前块的高大于或等于预设尺寸参数,子区域的大小为8*8;若当前块的宽小于预设尺寸参数,子区域的大小为4*4。
[0300]
针对垂直向上运动信息角度预测模式,若当前块的高大于预设尺寸参数,子区域的大小为4*当前块的高,或大小为4*4;若当前块的高等于预设尺寸参数,当前块的宽大于或等于预设尺寸参数,子区域的大小为8*8;若当前块的高小于预设尺寸参数,子区域的大小为4*4。
[0301]
针对水平向左运动信息角度预测模式,若当前块的宽大于8,子区域的大小也可以为4*4。针对垂直向上运动信息角度预测模式,若当前块的高大于8,子区域的大小也可以为4*4。
[0302]
当然,上述只是几个示例,对此不做限制,预设尺寸参数可以是8,可以大于8。
[0303]
应用场景2:基于运动信息角度预测模式对应的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。按照8*8的方式将当前块划分为至少一个子区域(即子区域的大小为8*8)。针对当前块的每个子区域,从所述多个周边匹配块中选择与该子区域对应的周边匹配块,并根据选择的周边匹配块的运动信息确定该子区域的运动信息。针对每个子区域,根据该子区域的运动信息确定该子区域的目标预测值,对此确定过程不做限制。
[0304]
应用场景3:参见图5a所示,针对当前块内的每个4*4的子区域,按照一定角度进行运动补偿。若周边匹配块的运动信息为单向运动信息,则将单向运动信息确定为子区域的运动信息。若周边匹配块的运动信息为双向运动信息,则将双向运动信息确定为子区域的运动信息,或者,将双向运动信息中的前向运动信息或者后向运动信息确定为子区域的运动信息。
[0305]
根据图5a,当前块的尺寸为4*8,针对水平向左运动信息角度预测模式,划分两个尺寸一致的子区域,其中一个4*4的子区域对应周边匹配块a1,根据a1的运动信息确定该4*4的子区域的运动信息。另一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。针对垂直向上运动信息角度预测模式,划分两个尺寸一致的子区域,其中一个4*4的子区域对应周边匹配块b1,根据b1的运动信息确定该4*4的子区域的运
动信息。另一个4*4的子区域对应周边匹配块b1,根据b1的运动信息确定该4*4的子区域的运动信息。针对水平向上运动信息角度预测模式,划分两个尺寸一致的子区域,其中一个4*4的子区域对应周边匹配块e,根据e的运动信息确定该4*4的子区域的运动信息。另一个4*4的子区域对应周边匹配块a1,根据a1的运动信息确定该4*4的子区域的运动信息。针对水平向下运动信息角度预测模式,划分两个尺寸一致的子区域,其中一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。另一个4*4的子区域对应周边匹配块a3,根据a3的运动信息确定该4*4的子区域的运动信息。针对水平向下运动信息角度预测模式,划分两个尺寸一致的子区域,其中一个4*4的子区域对应周边匹配块b2,根据b2的运动信息确定该4*4的子区域的运动信息。另一个4*4的子区域对应周边匹配块b3,根据b3的运动信息确定该4*4的子区域的运动信息。
[0306]
应用场景4:参见图5b所示,当前块的宽度w小于8,当前块的高度h大于8,则采用如下方式对当前块内的每个子区域进行运动补偿:针对垂直向上运动信息角度预测模式,将每个4*h的子区域按照垂直角度进行运动补偿。针对垂直向上运动信息角度预测模式之外的其它运动信息角度预测模式,针对当前块内每个4*4的子区域,按照一定角度进行运动补偿。
[0307]
根据图5b,当前块的尺寸为4*16,针对水平向左运动信息角度预测模式,划分4个尺寸为4*4的子区域,其中一个4*4的子区域对应周边匹配块a1,根据a1的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a3,根据a3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a4,根据a4的运动信息确定该4*4的子区域的运动信息。针对垂直向上运动信息角度预测模式,划分4个尺寸为4*4的子区域,每一个4*4的子区域都对应周边匹配块b1,根据b1的运动信息确定每一个4*4的子区域的运动信息,四个子区域的运动信息都相同,所以在该实施例中也可以不对当前块进行子区域划分,该当前块本身作为一个子区域对应一个周边匹配块b1。
[0308]
针对水平向上运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块e,根据e的运动信息确定4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a1,根据a1的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a3,根据a3的运动信息确定该4*4的子区域的运动信息。针对水平向下运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a3,根据a3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a5,根据a4的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a5,根据a5的运动信息确定该4*4的子区域的运动信息。针对水平向下运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块b2,根据b2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b3,根据b3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b4,根据b4的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b5,根据b5的运动信息确定该4*4的子区域的运动信息。
[0309]
应用场景5:参见图5c所示,当前块的宽度w大于8,当前块的高度h小于8,则采用如下方式对当前块内的每个子区域进行运动补偿:针对水平向左运动信息角度预测模式,将每个w*4的子区域按照水平角度进行运动补偿。针对其它类型的运动信息角度预测模式,针对当前块内的每个4*4的子区域,则可以按照一定角度进行运动补偿。
[0310]
根据图5c,当前块的尺寸为16*4,针对水平向左运动信息角度预测模式,划分4个尺寸为4*4的子区域,每一个4*4的子区域都对应周边匹配块a1,根据a1的运动信息,确定每一个4*4的子区域的运动信息,四个子区域的运动信息都相同,所以在该实施例中也可以不对当前块进行子区域划分,该当前块本身作为一个子区域对应一个周边匹配块a1。针对垂直向上运动信息角度预测模式,划分4个尺寸为4*4的子区域,其中一个4*4的子区域对应周边匹配块b1,根据b1的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b2,根据b2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b3,根据b3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b4,根据b4的运动信息确定该4*4的子区域的运动信息。
[0311]
针对水平向上运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块e,根据e的运动信息确定该4*4的子区域的运动信息。一个4*4的子区域对应周边匹配块b1,根据b1的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b2,根据b2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b3,根据b3的运动信息确定该4*4的子区域的运动信息。针对水平向下运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块a2,根据a2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a3,根据a3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a4,根据a4的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块a5,根据a5的运动信息确定该4*4的子区域的运动信息。针对垂直向右运动信息角度预测模式,划分4个尺寸为4*4的子区域,一个4*4的子区域对应周边匹配块b2,根据b2的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b3,根据b3的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b4,根据b4的运动信息确定该4*4的子区域的运动信息。其中一个4*4的子区域对应周边匹配块b5,根据b5的运动信息确定该4*4的子区域的运动信息。
[0312]
应用场景6:当前块的宽度w等于8,当前块的高度h等于8,则对当前块内的每个8*8的子区域(即子区域就是当前块本身),按照一定角度进行运动补偿。若子区域对应多个周边匹配块,针对子区域的运动信息,可以按照对应的角度从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图5d所示,针对水平向左运动信息角度预测模式,可以选择周边匹配块a1的运动信息,也可以选择周边匹配块a2的运动信息。参见图5e所示,针对垂直向上运动信息角度预测模式,可以选择周边匹配块b1的运动信息,也可以选择周边匹配块b2的运动信息。参见图5f所示,针对水平向上运动信息角度预测模式,可以选择周边匹配块e的运动信息,可以选择周边匹配块b1的运动信息,可以选择周边匹配块a1的运动信息。参见图5g所示,针对水平向下运动信息角度预测模式,可以选择周边匹配块a2的运动信息,可以选择周边匹配块a3的运动信息,可以选择周边匹配块a4的运动信息。参见图5h所示,针对垂直向右运动信息角度预测模式,可以选择周边匹配块b2的运动信息,选择
周边匹配块b3的运动信息,可以选择周边匹配块b4的运动信息。
[0313]
根据图5d,针对水平向左运动信息角度预测模式,划分尺寸为8*8的子区域,子区域对应周边匹配块a1,根据a1的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块a2,根据a2的运动信息确定该子区域的运动信息。根据图5e,针对垂直向左运动信息角度预测模式,划分一个尺寸为8*8的子区域,这个子区域对应周边匹配块b1,根据b1的运动信息确定该子区域的运动信息。或者,这个子区域对应周边匹配块b2,根据b2的运动信息确定该子区域的运动信息。根据图5f,针对水平向上运动信息角度预测模式,划分尺寸为8*8的子区域,子区域对应周边匹配块e,根据e的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块b1,根据b1的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块a1,根据a1的运动信息确定该子区域的运动信息。根据图5g,针对水平向下运动信息角度预测模式时,划分尺寸为8*8的子区域,子区域对应周边匹配块a2,根据a2的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块a3,根据a3的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块a4,根据a4的运动信息确定该子区域的运动信息。根据图5h,针对垂直向右运动信息角度预测模式,划分尺寸为8*8的子区域,子区域对应周边匹配块b2,根据b2的运动信息确定该子区域的运动信息。或者,子区域对应周边匹配块b3,根据b3的运动信息确定该子区域的运动信息。或,子区域对应周边匹配块b4,根据b4的运动信息确定该子区域的运动信息。
[0314]
应用场景7:当前块的宽度w大于等于16,当前块的高度h等于8,基于此,采用如下方式对当前块内的每个子区域进行运动补偿:针对水平向左运动信息角度预测模式,将每个w*4的子区域按照水平角度进行运动补偿。针对其它类型的运动信息角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图5i所示,针对水平向左运动信息角度预测模式,针对第一个w*4的子区域,可以选择周边匹配块a1的运动信息,针对第二个w*4的子区域,可以选择周边匹配块a2的运动信息。参见图5j所示,针对垂直向上运动信息角度预测模式,针对第一个8*8的子区域,可以选择周边匹配块b1的运动信息,可以选择周边匹配块b2的运动信息。针对第二个8*8的子区域,可以选择周边匹配块b3的运动信息,可以选择周边匹配块b4的运动信息。其它运动信息角度预测模式类似,在此不再赘述。
[0315]
根据图5i,当前块的尺寸为16*8,针对水平向左运动信息角度预测模式,划分2个尺寸为16*4的子区域,其中一个16*4的子区域对应周边匹配块a1,根据a1的运动信息确定该16*4的子区域的运动信息。另一个16*4的子区域对应周边匹配块a2,根据a2的运动信息确定该16*4的子区域的运动信息。根据图5j,当前块的尺寸为16*8,针对垂直向左运动信息角度预测模式,划分2个尺寸为8*8的子区域,其中一个8*8的子区域对应周边匹配块b1或者b2,根据b1或者b2的运动信息确定该8*8的子区域的运动信息。另一个8*8的子区域对应周边匹配块b3或者b4,根据b3或者b4的运动信息确定该8*8的子区域的运动信息。
[0316]
应用场景8:当前块的宽度w等于8,当前块的高度h大于等于16,基于此,采用如下方式对当前块内的每个子区域进行运动补偿:针对垂直向左运动信息角度预测模式,将每个4*h的子区域按照垂直角度进行运动补偿。针对其它类型的运动信息角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。针对每个8*8的子区域,若子区
域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图5k所示,针对垂直向上运动信息角度预测模式,针对第一个4*h的子区域,可以选择周边匹配块b1的运动信息,针对第二个4*h的子区域,可以选择周边匹配块b2的运动信息。参见图5l所示,针对水平向左运动信息角度预测模式,针对第一个8*8的子区域,可以选择周边匹配块a1的运动信息,可以选择周边匹配块a2的运动信息。针对第二个8*8的子区域,可以选择周边匹配块a1的运动信息,可以选择周边匹配块a2的运动信息。其它运动信息角度预测模式类似,在此不再赘述。
[0317]
根据图5k,当前块的尺寸为8*16,针对垂直向上运动信息角度预测模式,划分2个尺寸为4*16的子区域,一个4*16的子区域对应周边匹配块b1,根据b1的运动信息确定该4*16的子区域的运动信息。另一个4*16的子区域对应周边匹配块b2,根据b2的运动信息确定该4*16的子区域的运动信息。根据图5l,当前块的尺寸为16*8,针对水平向左运动信息角度预测模式,划分2个尺寸为8*8的子区域,一个8*8的子区域对应周边匹配块a1或者a2,根据对应周边匹配块的运动信息确定该8*8的子区域的运动信息。另一个8*8的子区域对应周边匹配块a1或a2,根据对应周边匹配块的运动信息确定该8*8的子区域的运动信息。
[0318]
应用场景9:当前块的宽度w大于等于16,高度h可以大于等于16,采用如下方式对当前块内的每个子区域进行运动补偿:针对垂直向上运动信息角度预测模式,将每个4*h的子区域按照垂直角度进行运动补偿。针对水平向左运动信息角度预测模式,将每个w*4的子区域按照水平角度进行运动补偿。针对其它类型的运动信息角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。
[0319]
参见图5m所示,针对垂直向上运动信息角度预测模式,针对第一个4*h的子区域,选择周边匹配块b1的运动信息,针对第二个4*h的子区域,选择周边匹配块b2的运动信息,针对第三个4*h的子区域以选择周边匹配块b3的运动信息,针对第四个4*h的子区域,选择周边匹配块b4的运动信息。针对水平向左运动信息角度预测模式,针对第一个w*4的子区域,选择周边匹配块a1的运动信息,针对第二个w*4的子区域,选择周边匹配块a2的运动信息,针对第三个w*4的子区域,选择周边匹配块a3的运动信息,针对第四个w*4的子区域,选择周边匹配块a4的运动信息。其它类型的运动信息角度预测模式类似。
[0320]
根据图5m,当前块的尺寸为16*16,针对垂直向上运动信息角度预测模式,划分4个尺寸为4*16的子区域,一个4*16的子区域对应周边匹配块b1,根据b1的运动信息确定4*16的子区域的运动信息。一个4*16的子区域对应周边匹配块b2,根据b2的运动信息确定4*16的子区域的运动信息。一个4*16的子区域对应周边匹配块b3,根据b3的运动信息确定该4*16的子区域的运动信息。一个4*16的子区域对应周边匹配块b4,根据b4的运动信息确定4*16的子区域的运动信息。根据图5m,当前块的尺寸为16*16,针对水平向左运动信息角度预测模式,划分4个尺寸为16*4的子区域,其中一个16*4的子区域对应周边匹配块a1,根据a1的运动信息确定该16*4的子区域的运动信息。其中一个16*4的子区域对应周边匹配块a2,根据a2的运动信息确定该16*4的子区域的运动信息。其中一个16*4的子区域对应周边匹配块a3,根据a3的运动信息确定该16*4的子区域的运动信息。其中一个16*4的子区域对应周边匹配块a4,根据a4的运动信息确定该16*4的子区域的运动信息。
[0321]
应用场景10:当前块的宽度w可以大于等于8,当前块的高度h可以大于等于8,则对
当前块内的每个8*8的子区域进行运动补偿。参见图5n所示,针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。子区域划分尺寸与运动信息角度预测模式无关,无论是哪种运动信息角度预测模式,只要宽大于等于8,高大于等于8,子区域划分尺寸可以为8*8。
[0322]
根据图5n,当前块的尺寸为16*16,针对水平向左运动信息角度预测模式,划分4个尺寸为8*8的子区域,其中一个8*8的子区域对应周边匹配块a1或a2,根据a1或a2的运动信息,确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块a1或a2,根据a1或a2的运动信息,确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块a3或a4,根据a3或a4的运动信息,确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块a3或a4,根据a3或a4的运动信息,确定该8*8的子区域的运动信息。针对水平向左运动信息角度预测模式,划分4个尺寸为8*8的子区域,其中一个8*8的子区域对应周边匹配块b1或b2,根据b1或b2的运动信息,确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块b1或b2,根据b1或b2的运动信息确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块b3或b4,根据b3或b4的运动信息确定该8*8的子区域的运动信息。其中一个8*8的子区域对应周边匹配块b3或b4,根据b3或b4的运动信息确定该8*8的子区域的运动信息。针对水平向上运动信息角度预测模式,可以划分4个尺寸为8*8的子区域。然后,针对每个8*8的子区域,可以确定该8*8的子区域对应的周边匹配块(e、b2或a2),对此确定方式不做限制,并根据周边匹配块的运动信息,确定该8*8的子区域的运动信息。针对水平向下运动信息角度预测模式,划分4个尺寸为8*8的子区域。然后,针对每个8*8的子区域,可以确定该8*8的子区域对应的周边匹配块(a3、a5或a7),对此不做限制,并根据周边匹配块的运动信息确定该8*8的子区域的运动信息。针对垂直向右运动信息角度预测模式,划分4个尺寸为8*8的子区域。然后,针对每个8*8的子区域,可以确定该8*8的子区域对应的周边匹配块(b3、b5或b7),对此不做限制,并根据周边匹配块的运动信息确定该8*8的子区域的运动信息。
[0323]
应用场景11:当前块的宽度w大于等于8,并且,当前块的高度h大于等于8时,则对当前块内每个8*8的子区域进行运动补偿,针对每个子区域来说,按照对应的角度选用周围匹配块的几个运动信息中的任意一个,参见图5n所示,在此不再赘述。
[0324]
应用场景12:当前块的宽度和高度分别为w和h,当前块内部左上角的像素点为(x,y),(x+w,y)所在的周边块记为a0,按照从a0到a
m+n
的顺序进行遍历,每个周边块分别记为a1、a2、...、a
m
+n,a
m+n
是像素点(x,y+h)所在的周边块。将各周边块的运动信息(已经完成填充的运动信息)分别记为neighbormotioninfo[0]、neighbormotioninfo[1]...neighbormotionlnfo[m+n],m和n的大小分别为w/4和h/4。对于当前块,i=0~(w>>2)-1,j=0~(h>>2)-1),(i,j)为当前块内的4*4子区域的索引,curmotioninfo[i][j]为当前块内部子区域的运动信息。
[0325]
针对水平向右运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[(j>>1)<<1]。针对垂直向下运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[(cbwidth>>2)+(cbheight>>2)-((i>>1)<<1)]。针对斜向右下运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[(cbheight>>2)+((j>>1)<<1)-((i>>1)<<1)]。
[0326]
在获取完当前块内部每个子区域的运动信息后,按照各自的运动信息进行运动补偿。
[0327]
以当前块的宽和高都为32为例,当前块内部的每个子区域的运动信息的示意图,参见图5o所示。根据图5o,当前块的尺寸为32*32,针对水平向右运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第1-4个子区域对应周边匹配块a0,根据a0的运动信息确定第1-4个子区域的运动信息。第5-8个子区域对应周边匹配块a2,根据a2的运动信息确定第5-8个子区域的运动信息。第9-12个子区域对应周边匹配块a4,根据a4的运动信息确定第9-12个子区域的运动信息。第13-16个子区域对应周边匹配块a6,根据a6的运动信息确定第13-16个子区域的运动信息。
[0328]
根据图5o,针对垂直向下运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第1,5,9,13个子区域对应周边匹配块a16,根据a16的运动信息确定第1,5,9,13个子区域的运动信息。第2,6,10,14个子区域对应周边匹配块a14,根据a14的运动信息确定第2,6,10,14个子区域的运动信息。第3,7,11,15个子区域对应周边匹配块a12,根据a12的运动信息确定第3,7,11,15个子区域的运动信息。第4,8,12,16个子区域对应周边匹配块a10,根据a10的运动信息确定第4,8,12,16个子区域的运动信息。
[0329]
根据图5o,针对斜向右下运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第1,6,11,16个子区域对应周边匹配块a8,根据a8的运动信息确定第1,6,11,16个子区域的运动信息。第2,7,12个子区域对应周边匹配块a6,根据a6的运动信息确定第2,7,12个子区域的运动信息。第3,8个子区域对应周边匹配块a4,根据a4的运动信息确定第3,8个子区域的运动信息。第4个子区域对应周边匹配块a2,根据a2的运动信息确定第4个子区域的运动信息。第5,10,15个子区域对应周边匹配块a10,根据a10的运动信息确定第5,10,15个子区域的运动信息。第9,14个子区域对应周边匹配块a12,根据a12的运动信息确定第9,14个子区域的运动信息。第13个子区域对应周边匹配块a14,根据a14的运动信息确定第13个子区域的运动信息。
[0330]
应用场景13:当前块的宽度和高度分别为w和h,当前块内部左上角的像素点为(x,y),(x+w,y)所在的周边块记为a0,按照从a0到a
m+n
的顺序进行遍历,每个周边块分别记为a1、a2、...、a
m+n
,a
m+n
是像素点(x,y+h)所在的周边块。将各周边块的运动信息(已经完成填充的运动信息)分别记为neighbormotioninfo[0]、neighbormotioninfo[1]...neighbormotioninfo[m+n],m和n的大小分别为w/4和h/4。对于当前块,i=0~(w>>2)-1,j=0~(h>>2)-1),(i,j)为当前块内的4*4子区域的索引,curmotioninfo[i][j]为当前块内部子区域的运动信息。
[0331]
针对水平向右运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[((j>>1)<<1)+1]。针对垂直向下运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[((cbwidth>>2)+(cbheight>>2)-((i>>1)<<1))-1]。针对斜向右下运动信息角度预测模式,curmotioninfo[i][j]=neighbormotioninfo[(cbheight>>2)+((j>>1)<<1)-((i>>1)<<1)]。
[0332]
在获取完当前块内部每个子区域的运动信息后,按照各自的运动信息进行运动补偿。
[0333]
以当前块的宽和高都为32为例,当前块内部的每个子区域的运动信息的示意图,
参见图5p所示。根据图5p,当前块的尺寸为32*32,针对水平向右运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第1-4个子区域对应周边匹配块a1,根据a1的运动信息确定第1-4个子区域的运动信息。第5-8个子区域对应周边匹配块a3,根据a3的运动信息确定第5-8个子区域的运动信息。第9-12个子区域对应周边匹配块a5,根据a5的运动信息确定第9-12个子区域的运动信息。第13-16个子区域对应周边匹配块a7,根据a7的运动信息确定第13-16个子区域的运动信息。
[0334]
根据图5p,针对垂直向下运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第l,5,9,13个子区域对应周边匹配块a15,根据a15的运动信息确定第1,5,9,13个子区域的运动信息。第2,6,10,14个子区域对应周边匹配块a13,根据a13的运动信息确定第2,6,10,14个子区域的运动信息。第3,7,11,15个子区域对应周边匹配块a11,根据a11的运动信息确定第3,7,11,15个子区域的运动信息。第4,8,12,16个子区域对应周边匹配块a9,根据a9的运动信息确定第4,8,12,16个子区域的运动信息。
[0335]
根据图5p,针对斜向右下运动信息角度预测模式,划分16个尺寸一致的子区域,这些子区域的大小为8*8。第1,6,11,16个子区域对应周边匹配块a8,根据a8的运动信息确定第1,6,11,16个子区域的运动信息。第2,7,12个子区域对应周边匹配块a6,根据a6的运动信息确定第2,7,12个子区域的运动信息。第3,8个子区域对应周边匹配块a4,根据a4的运动信息确定第3,8个子区域的运动信息。第4个子区域对应周边匹配块a2,根据a2的运动信息确定第4个子区域的运动信息。第5,10,15个子区域对应周边匹配块a10,根据a10的运动信息确定第5,10,15个子区域的运动信息。第9,14个子区域对应周边匹配块a12,根据a12的运动信息确定第9,14个子区域的运动信息。第13个子区域对应周边匹配块a14,根据a14的运动信息确定第13个子区域的运动信息。
[0336]
实施例11:在上述实施例1-实施例5中,针对编码端和解码端来说,可以根据子区域的运动信息确定该子区域的目标预测值,在一种可能的实施方式中,可以直接根据子区域的运动信息确定该子区域的目标预测值。在另一个可能的实施方式中,可以根据该子区域的运动信息确定该子区域的运动补偿值。若该子区域满足使用双向光流的条件,则获取该子区域的双向光流偏移值,并根据该子区域的运动补偿值中的前向运动补偿值,该子区域的运动补偿值中的后向运动补偿值和该子区域的双向光流偏移值确定该子区域的目标预测值。
[0337]
示例性的,针对当前块的每个子区域,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧之间,则该子区域满足使用双向光流的条件。双向运动信息中的一个运动信息为前向运动信息,且前向运动信息对应的参考帧为前向参考帧,双向运动信息中的另一个运动信息为后向运动信息,且后向运动信息对应的参考帧为后向参考帧。该子区域所在当前帧在时间顺序上位于前向参考帧与后向参考帧之间。
[0338]
在根据该子区域的运动信息,确定该子区域的运动补偿值时,可以基于双向运动信息中的前向运动信息对应的前向参考帧,确定该子区域的前向运动补偿值,可以基于双向运动信息中的后向运动信息对应的后向参考帧,确定该子区域的后向运动补偿值,而该子区域的前向运动补偿值和后向运动补偿值,就可以组成该子区域的运动补偿值。
[0339]
在确定该子区域的目标预测值时,可以根据该子区域的前向运动补偿值,该子区
域的后向运动补偿值和该子区域的双向光流偏移值,确定该子区域的目标预测值。
[0340]
示例性的,针对当前块的每个子区域,若该子区域的运动信息为单向运动信息,则该子区域不满足使用双向光流的条件。若该子区域不满足使用双向光流的条件,则根据该子区域的运动补偿值确定该子区域的目标预测值,而不需要参考双向光流偏移值。在确定该子区域的目标预测值时,将该子区域的运动补偿值确定为该子区域的目标预测值。
[0341]
示例性的,针对当前块的每个子区域,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域不满足使用双向光流的条件。若该子区域不满足使用双向光流的条件,则可以根据该子区域的运动补偿值确定该子区域的目标预测值,而不需要参考双向光流偏移值。为了区分方便,双向运动信息中的一个运动信息记为第一运动信息,且第一运动信息对应的参考帧记为第一参考帧,双向运动信息中的另一个运动信息记为第二运动信息,且第二运动信息对应的参考帧记为第二参考帧。由于子区域所在当前帧在时间顺序上不位于两个参考帧之间,因此,第一参考帧和第二参考帧都是该子区域的前向参考帧,或者,第一参考帧和第二参考帧都是该子区域的后向参考帧。
[0342]
在根据该子区域的运动信息,确定该子区域的运动补偿值时,可以基于双向运动信息中的第一运动信息对应的第一参考帧,确定该子区域的第一运动补偿值,可以基于双向运动信息中的第二运动信息对应的第二参考帧,确定该子区域的第二运动补偿值,而该子区域的第一运动补偿值和第二运动补偿值,就组成该子区域的运动补偿值。
[0343]
在确定该子区域的目标预测值时,可以根据该子区域的第一运动补偿值和该子区域的第二运动补偿值,确定该子区域的目标预测值,而不需要参考双向光流偏移值。
[0344]
示例性的,获取该子区域的双向光流偏移值,可以包括但不限于:根据该子区域的运动信息确定第一像素值和第二像素值;第一像素值是该子区域的前向运动补偿值和前向扩展值,前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;第二像素值是该子区域的后向运动补偿值和后向扩展值,后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;前向参考帧和后向参考帧根据子区域的运动信息确定。然后,根据第一像素值和第二像素值确定子区域的双向光流偏移值。
[0345]
实施例12:在上述实施例11中,涉及对当前块的子区域进行双向光流处理,即,在得到每个子区域的运动补偿值后,对当前块内部每个满足使用双向光流的条件的子区域,使用双向光流技术(bio)对该子区域的运动补偿值叠加双向光流偏移值。比如说,针对当前块的每个子区域,若该子区域满足使用双向光流的条件,则确定该子区域的前向运动补偿值和后向运动补偿值,根据该前向运动补偿值,该后向运动补偿值和该子区域的双向光流偏移值,确定该子区域的目标预测值。获取子区域的双向光流偏移值,可以通过如下过程实现:
[0346]
步骤e1、根据子区域的运动信息确定第一像素值和第二像素值。
[0347]
步骤e2、根据第一像素值和第二像素值确定水平方向梯度和的自相关系数s1、水平方向梯度和与垂直方向梯度和的互相关系数s2、时域预测值差值与水平方向梯度和的互相关系数s3、垂直方向梯度和的自相关系数s5、时域预测值差值与垂直方向梯度和的互相关系数s6。
[0348]
例如,可以采用如下公式计算梯度和s1、s2、s3、s5、s6。
[0349][0350][0351][0352][0353][0354]
示例性的,ψ
x
(i,j)、ψ
y
(i,j)和θ(i,j)的计算方式可以如下所示:
[0355][0356][0357]
θ(i,j)=i
(1)
(i,j)-i
(0)
(f,j)
[0358]
i0(x,y)为第一像素值,且i0(x,y)为子区域的前向运动补偿值及其前向扩展值,i
(1)
(x,y)为第二像素值,且i
(1)
(x,y)为子区域的后向运动补偿值及其后向扩展值。示例性的,前向扩展值可以是从前向运动补偿值拷贝,或者,也可以是从前向参考帧的参考像素位置获取。后向扩展值可以是从后向运动补偿值拷贝,或者,也可以是从后向参考帧的参考像素位置获取。前向参考帧和后向参考帧根据子区域的运动信息确定。
[0359]
ψ
x
(i,j)为像素点在前向参考帧的水平和垂直分量的变化率,ψ
x
(i,j)表示水平方向梯度和,ψ
y
(i,j)为像素点在后向参考帧的水平和垂直分量的变化率,ψ
y
(i,j)表示垂直方向梯度和,θ(i,j)表示前向参考帧和后向参考帧对应位置的像素差值,即θ(i,j)表示时域预测值差值。
[0360]
步骤e3、根据所述自相关系数s1和所述互相关系数s3确定水平方向速率v
x
(水平方向速率v
x
也可以称为改善运动矢量v
x
);根据所述互相关系数s2、所述自相关系数s5和所述互相关系数s6确定垂直方向速率v
y
(垂直方向速率v
y
也可以称为改善运动矢量和v
y
)。
[0361]
例如,可以采用如下公式计算水平方向速率v
x
和垂直方向速率v
y

[0362]
v
x
=(s1+r)>m?clip3(-th
bio
,th
bio
,(s3<<5)/(s1+r)):0
[0363]
v
y
=(s5+r)>m?clip3(-th
bio
,th
bio
,((s6<<6)-v
x
s2)/((s5+r)<<1)):0
[0364]
在上述公式中,m和th
bio
均为阈值,可以根据经验配置,r为正则项,避免除0操作。clip3表示的是将v
x
的值保证在-th
bio
和th
bio
之间,并将v
y
的值保证在-th
bio
和th
bio
之间。
[0365]
示例性的,若(s1+r)>m?成立,则v
x
=clip3(-th
bio
,th
bio
,(s3<<5)/(s1+r))。若(s1+r)>m?不成立,则v
x
=0。th

bio
用于将v
x
限制在-th

bio
与th

bio
之间,即v
x
大于或等于-th

bio
,v
x
小于或等于th

bio
。对于v
x
来说,clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,-th

bio
为a,th

bio
为b,(s3<<5)/(s1+r)为x,综上所述,
若(s3<<5)/(s1+r)大于-th

bio
,且小于th

bio
,则v
x
为(s3<<5)/(s1+r)。
[0366]
若(s5+r)>m成立,则v
y
=clip3(-th
bio
,th
bio
,((s6<<6)-v
x
s2)/((s5+r)<<1)。若(s5+r)>m不成立,则v
y
=0。th

bio
用于将v
y
限制在-th

bio
与th

bio
之间,即v
y
大于或等于-th

bio
,v
y
小于或等于th

bio
。对于v
y
来说,clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,-th

bio
为a,th

bio
为b,((s6<<6)-v
x
s2)/((s5+r)<<1)为x,综上所述,若,((s6<<6)-v
x
s2)/((s5+r)<<1)大于-th

bio
,且小于th

bio
,则v
y
为((s6<<6)-v
x
s2)/((s5+r)<<1)。
[0367]
当然,上述只是计算v
x
和v
y
的示例,还可以采用其它方式计算v
x
和v
y
,对此不做限制。
[0368]
步骤e4、根据水平方向速率和垂直方向速率获取子区域的双向光流偏移值b。
[0369]
例如,根据水平方向速率、垂直方向速率、第一像素值和第二像素值计算子区域的双向光流偏移值b,参见如下公式,为计算双向光流偏移值b的一个示例:
[0370][0371]
在上述公式中,(x,y)为当前块内部每个像素的坐标,当然,上述公式只是获取双向光流偏移值b的一个示例,还可以采用其它方式计算双向光流偏移值b,对此不做限制。i0(x,y)为第一像素值,且i0(x,y)为前向运动补偿值及其前向扩展值,i
(1)
(x,y)为第二像素值,且i
(1)
(x,y)为后向运动补偿值及其后向扩展值。
[0372]
步骤e5、根据子区域的运动补偿值和双向光流偏移值确定该子区域的目标预测值。
[0373]
示例性的,在确定该子区域的前向运动补偿值,后向运动补偿值和双向光流偏移值后,就可以根据该前向运动补偿值,该后向运动补偿值和该双向光流偏移值,确定该子区域的目标预测值。例如,基于如下公式,确定该子区域内的像素点(x,y)的目标预测值pred
bio
(x,y):pred
bio
(x,y)=(i
(0)
(x,y)+i
(1)
(x,y)+b+1)>>1。在上述公式中,i0(x,y)为像素点(x,y)的前向运动补偿值,i
(1)
(x,y)像素点(x,y)的后向运动补偿值。
[0374]
实施例13:当前块可以使用运动信息角度预测模式(也可以称为运动矢量角度预测模式),即基于运动信息角度预测模式确定当前块的每个子区域的运动补偿值,具体确定方式参见上述实施例。若当前块使用运动信息角度预测模式,则当前块关闭解码端运动矢量调整(dmvr)技术;或者,若当前块使用运动信息角度预测模式,则当前块启动解码端运动矢量调整技术。若当前块使用运动信息角度预测模式,则当前块关闭双向光流技术(bio);或者,若当前块使用运动信息角度预测模式,则当前块启动双向光流技术。示例性的,双向光流技术是利用前向和后向参考帧中像素值的梯度信息来对当前块叠加光流补偿值。解码端运动矢量调整技术的原理是利用前向和后向的参考像素值之间的匹配准则来调整运动矢量。以下结合具体场景,对运动信息角度预测模式、解码端运动矢量调整技术、双向光流技术的结合进行说明。
[0375]
应用场景1:若当前块使用运动信息角度预测模式,则当前块可以启动双向光流技术,且当前块可以关闭解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的运动补偿值。然后,基于双向光流技术,根据当前块的每个子区域的运动补偿值确定该子区域的目标预测值,例如,若子区域满足使用双向光流的
条件,则根据子区域的运动补偿值和双向光流偏移值确定子区域的目标预测值,若子区域不满足使用双向光流的条件,则根据子区域的运动补偿值确定子区域的目标预测值,具体方式参见上述实施例。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0376]
应用场景2:若当前块使用运动信息角度预测模式,则当前块可以启动双向光流技术,且当前块可以启动解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的原始运动信息(为了区分方便,将基于运动信息角度预测模式确定的运动信息称为原始运动信息)。然后,基于解码端运动矢量调整技术,根据当前块的每个子区域的原始运动信息确定该子区域的目标运动信息,例如,若子区域满足使用解码端运动矢量调整的条件,则对该子区域的原始运动信息进行调整,得到调整后的目标运动信息,若该子区域不满足使用解码端运动矢量调整的条件,则将该子区域的原始运动信息作为目标运动信息。然后,根据每个子区域的目标运动信息确定该子区域的运动补偿值。然后,基于双向光流技术,根据当前块的每个子区域的运动补偿值确定该子区域的目标预测值,例如,若子区域满足使用双向光流的条件,则根据子区域的运动补偿值和双向光流偏移值确定子区域的目标预测值,若子区域不满足使用双向光流的条件,则根据子区域的运动补偿值确定子区域的目标预测值。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0377]
应用场景3:若当前块使用运动信息角度预测模式,则当前块可以关闭双向光流技术,且当前块可以启动解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的原始运动信息。然后,基于解码端运动矢量调整技术,根据当前块的每个子区域的原始运动信息确定该子区域的目标运动信息,例如,若子区域满足使用解码端运动矢量调整的条件,则对该子区域的原始运动信息进行调整,得到调整后的目标运动信息,若该子区域不满足使用解码端运动矢量调整的条件,则将该子区域的原始运动信息作为目标运动信息。然后,根据每个子区域的目标运动信息确定该子区域的目标预测值,该过程不需要考虑双向光流技术。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0378]
应用场景4:若当前块使用运动信息角度预测模式,则当前块可以关闭双向光流技术,且当前块可以关闭解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的运动信息,并根据每个子区域的运动信息确定该子区域的目标预测值,并根据每个子区域的目标预测值确定当前块的预测值。在上述过程中,不需要考虑解码端运动矢量调整技术,也不需要考虑双向光流技术。
[0379]
在应用场景2和应用场景3中,针对当前块的每个子区域,可以对符合使用解码端运动矢量调整技术条件的子区域使用dmvr。示例性的,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧(即前向参考帧和后向参考帧)之间,且当前帧与前向参考帧之间的距离和后向参考帧与当前帧之间的距离相同,则该子区域满足使用解码端运动矢量调整的条件。若该子区域的运动信息为单向运动信息,则该子区域不满足使用解码端运动矢量调整的条件。若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域不满足使用解码端运动矢量调整的条件。若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧(即前向参考帧和后向参考帧)之间,且当前帧与前向参考帧
之间的距离和后向参考帧与当前帧之间的距离不同,则该子区域不满足使用解码端运动矢量调整的条件。
[0380]
在应用场景2和应用场景3中,需要启动解码端运动矢量调整技术,解码端运动矢量调整技术是根据前向和后向的参考像素值的匹配准则来调整运动矢量,解码端运动矢量调整技术可以应用于直接模式或者跳过模式,解码端运动矢量调整技术的实现过程,可以如下所示:
[0381]
a)、利用初始的运动矢量获取预测块和搜索区域内所需的参考像素。
[0382]
b)、获取最优整像素位置。示例性的,将当前块的亮度图像块划分为不重叠且位置相邻的子区域,所有子区域的初始运动矢量均为mv0和mv1。对于每个子区域,以初始mv0和初始mv1所对应的位置为中心,开始寻找附近一定范围内模板匹配失真最小的位置。模板匹配失真的计算方式为:计算前向搜索区域中以中心位置开始的子区域宽度乘以子区域高度的块,和后向搜索区域中以中心位置开始的子区域宽度乘以子区域高度的块之间的sad值。
[0383]
c)、获取最优亚像素位置。亚像素位置的确认使用整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,估计整数位置最优位置附近的二次失真平面,计算得到失真平面中失真最小的位置作为亚像素位置。例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,参见如下公式,为计算水平亚像素位置和垂直亚像素位置的一个示例:
[0384]
水平亚像素位置=(sad_left-sad_right)*n/((sad_right+sad_left-2*sad_mid)*2)
[0385]
垂直亚像素位置=(sad_btm-sad_top)*n/((sad_top+sad_btm-2*sad_mid)*2)
[0386]
示例性的,sad_mid、sad_left、sad_right、sad_top和sad_btm分别是整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,n是精度。
[0387]
当然,上述只是计算水平亚像素位置和垂直亚像素位置的示例,还可以采用其它方式计算水平亚像素位置和垂直亚像素位置,例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,对此不做限制,只要参考这些参数计算水平亚像素位置和垂直亚像素位置即可。
[0388]
d)、根据最优mv计算得到最终预测值。
[0389]
示例性的,实施例1-实施例13可以单独实现,也可以组合实现。例如,实施例1和实施例4组合实现;实施例1和实施例5组合实现;实施例1和实施例6组合实现;实施例1和实施例7组合实现;实施例1和实施例8组合实现;实施例1和实施例9组合实现;实施例1和实施例10组合实现;实施例1和实施例11组合实现;实施例1和实施例12组合实现;实施例1和实施例13组合实现。又例如,实施例2和实施例3组合实现;实施例2和实施例5组合实现;实施例2和实施例6组合实现;实施例2和实施例7组合实现;实施例2和实施例8组合实现;实施例2和实施例9组合实现;实施例2和实施例10组合实现;实施例2和实施例11组合实现;实施例2和实施例12组合实现;实施例2和实施例13组合实现。实施例5-实施例13之间的实施例可以任意组合等。当然,上述只是示例,对组合方式不做限制。
[0390]
基于与上述方法同样的申请构思,本技术实施例提出一种解码装置,应用于解码端,如图6a所示,为所述装置的结构图,所述装置包括:
[0391]
构建模块611,用于构建当前块的运动信息预测模式候选列表;在构建当前块的运
动信息预测模式候选列表时,针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表;选择模块612,用于从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;填充模块613,用于若所述目标运动信息预测模式为目标运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充;确定模块614,用于根据所述目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定所述当前块的运动信息,并根据所述当前块的运动信息确定所述当前块的预测值;
[0392]
其中,所述当前块的运动信息角度预测模式包括以下至少一种:水平向左运动信息角度预测模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。
[0393]
在一种可能的实施方式中,构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,则禁止将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0394]
在一种可能的实施方式中,构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息相同,则禁止将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0395]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息相同,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,当所述第二周边匹配块和所述第三周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0396]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息相同,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,当所述第二周边匹配块和所述第三周边匹配块的运动信息相同时,禁止将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0397]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,
将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0398]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,当所述第二周边匹配块和所述第三周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0399]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,当所述第二周边匹配块和所述第三周边匹配块的运动信息相同时,禁止将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0400]
所述至少两个周边匹配块至少包括待依次遍历的第一周边匹配块,第二周边匹配块和第三周边匹配块;构建模块611具体用于:若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,则继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块中的至少一个不存在可用运动信息,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表,或者,禁止将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表。
[0401]
构建模块611判断任意一个周边匹配块是否存在可用运动信息时具体用于:
[0402]
若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息;
[0403]
若周边匹配块的预测模式是帧内块拷贝模式,则确定该周边匹配块不存在可用运动信息;
[0404]
若周边匹配块是位于当前块所在图像之外或者周边匹配块是位于当前块所在图像片之外,则确定该周边匹配块不存在可用运动信息;
[0405]
若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息。
[0406]
若周边匹配块位于所述当前块外部的右侧或者下侧,构建模块611采用如下方式确定所述周边匹配块的运动信息:确定所述当前块所在当前帧对应的参考帧;从所述参考帧中选取与所述周边匹配块位置对应的参考匹配块;根据所述参考匹配块的运动信息确定所述周边匹配块的运动信息。
[0407]
填充模块613具体用于:对所述当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给所述第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给所述第二周边块。
[0408]
填充模块613具体用于:对所述当前块的周边块,按照从当前块的右边周边块到下边周边块,或者从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将
该周边块的运动信息填充给所述第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给所述第二周边块。
[0409]
填充模块613具体用于:对所述当前块的周边块,按照从当前块的右边周边块到下边周边块,或者从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个周边块;若所述首个周边块不存在可用运动信息,则为所述首个周边块填充运动信息;继续遍历所述首个周边块之后的周边块,若所述首个周边块之后的周边块中包括不存在可用运动信息的第三周边块,则将遍历过的所述第三周边块的上一个周边块的运动信息填充给所述第三周边块。
[0410]
基于与上述方法同样的申请构思,本技术实施例提出一种编码装置,应用于编码端,如图6b所示,为所述装置的结构图,所述装置包括:
[0411]
构建模块621,用于构建当前块的运动信息预测模式候选列表;在构建当前块的运动信息预测模式候选列表时,针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表;填充模块622,用于若所述运动信息预测模式候选列表中存在运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充;确定模块623,用于针对所述运动信息预测模式候选列表中的每个运动信息角度预测模式,根据所述运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定所述当前块的运动信息;根据所述当前块的运动信息确定所述当前块的预测值;
[0412]
其中,所述当前块的运动信息角度预测模式包括以下至少一种:水平向左运动信息角度预测模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。
[0413]
若周边匹配块位于所述当前块外部的右侧或者下侧,构建模块621具体用于采用如下方式确定所述周边匹配块的运动信息:确定所述当前块所在当前帧对应的参考帧;从所述参考帧中选取与所述周边匹配块位置对应的参考匹配块;根据所述参考匹配块的运动信息确定所述周边匹配块的运动信息。
[0414]
填充模块622具体用于:对所述当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给所述第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给所述第二周边块。
[0415]
填充模块622具体用于:对所述当前块的周边块,按照从当前块的右边周边块到下边周边块,或者从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将
该周边块的运动信息填充给所述第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给所述第二周边块。
[0416]
填充模块622具体用于:对所述当前块的周边块,按照从当前块的右边周边块到下边周边块,或者从当前块的下边周边块到右边周边块的遍历顺序进行遍历,遍历出首个周边块;若所述首个周边块不存在可用运动信息,则为所述首个周边块填充运动信息;继续遍历所述首个周边块之后的周边块,若所述首个周边块之后的周边块中包括不存在可用运动信息的第三周边块,则将遍历过的所述第三周边块的上一个周边块的运动信息填充给所述第三周边块。
[0417]
本技术实施例提供的解码端设备(如视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图6c所示。包括:处理器631和机器可读存储介质632,所述机器可读存储介质632存储有能够被所述处理器631执行的机器可执行指令;所述处理器631用于执行机器可执行指令,以实现本技术上述示例公开的方法。
[0418]
例如,所述处理器631用于执行机器可执行指令,以实现如下步骤:
[0419]
构建当前块的运动信息预测模式候选列表;在构建当前块的运动信息预测模式候选列表时,针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表;
[0420]
从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;
[0421]
若所述目标运动信息预测模式为目标运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充;
[0422]
根据所述目标运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定所述当前块的运动信息,并根据所述当前块的运动信息确定所述当前块的预测值;
[0423]
其中,所述当前块的运动信息角度预测模式包括以下至少一种:水平向左运动信息角度预测模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。
[0424]
本技术实施例提供的编码端设备(如视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图6d所示。包括:处理器641和机器可读存储介质642,所述机器可读存储介质642存储有能够被所述处理器641执行的机器可执行指令;所述处理器641用于执行机器可执行指令,以实现本技术上述示例公开的方法。
[0425]
例如,所述处理器641用于执行机器可执行指令,以实现如下步骤:
[0426]
构建当前块的运动信息预测模式候选列表;在构建当前块的运动信息预测模式候选列表时,针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的至少两个周边匹配块,所述至少两个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;若所
述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,将所述运动信息角度预测模式添加到所述运动信息预测模式候选列表;
[0427]
若所述运动信息预测模式候选列表中存在运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充;
[0428]
针对所述运动信息预测模式候选列表中的每个运动信息角度预测模式,根据所述运动信息角度预测模式的预配置角度指向的周边匹配块的运动信息,确定所述当前块的运动信息;
[0429]
根据所述当前块的运动信息确定所述当前块的预测值;
[0430]
其中,所述当前块的运动信息角度预测模式包括以下至少一种:水平向左运动信息角度预测模式;垂直向上运动信息角度预测模式;水平向上运动信息角度预测模式;水平向下运动信息角度预测模式;垂直向右运动信息角度预测模式;水平向右运动信息角度预测模式;垂直向下运动信息角度预测模式;斜向右下运动信息角度预测模式。
[0431]
基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的编解码方法。示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0432]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0433]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方
框或者多个方框中指定的功能。
[0434]
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1