一种编解码方法、装置及其设备转让专利

申请号 : CN202111153142.8

文献号 : CN113709487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 方树清陈方栋王莉

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请提供一种编解码方法、装置及其设备,该方法包括:若当前块的目标运动信息预测模式为运动信息角度预测模式,将当前块划分为至少一个子区域;针对当前块的每个子区域,根据运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定子区域的运动信息;根据子区域的运动信息确定子区域的运动补偿值;若子区域满足使用双向光流的条件,则获取子区域的双向光流偏移值;根据子区域的运动补偿值中的前向运动补偿值,所述运动补偿值中的后向运动补偿值和子区域的双向光流偏移值,确定子区域的目标预测值;根据每个子区域的目标预测值确定当前块的预测值。通过本申请的方案,可以提高编码性能。

权利要求 :

1.一种解码方法,其特征在于,应用于解码端,所述方法包括:

若当前块的目标运动信息预测模式为运动信息角度预测模式,则

将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;

根据所述子区域的运动信息,确定所述子区域的运动补偿值;

若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;若所述子区域不满足使用双向光流的条件,则根据所述子区域的运动补偿值确定所述子区域的目标预测值;

根据每个子区域的目标预测值,确定所述当前块的预测值。

2.根据权利要求1所述的方法,其特征在于,

若所述子区域的运动信息为单向运动信息,则所述子区域不满足使用双向光流的条件;或者,若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上不位于两个参考帧之间,则所述子区域不满足使用双向光流的条件;

若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上位于两个参考帧之间,则所述子区域满足使用双向光流的条件。

3.根据权利要求1所述的方法,其特征在于,获取所述子区域的双向光流偏移值,包括:根据所述子区域的运动信息确定第一像素值和第二像素值;所述第一像素值是所述子区域的前向运动补偿值和前向扩展值,所述前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;所述第二像素值是所述子区域的后向运动补偿值和后向扩展值,所述后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;所述前向参考帧和所述后向参考帧根据所述子区域的运动信息确定;

根据所述第一像素值和所述第二像素值确定所述子区域的双向光流偏移值。

4.根据权利要求1所述的方法,其特征在于,

在确定当前块的目标运动信息预测模式为运动信息角度预测模式之前,所述方法还包括:获取第一指示信息,所述第一指示信息位于序列参数集级中;当所述第一指示信息的取值为第一取值时,所述第一指示信息用于指示开启运动信息角度预测技术;当所述第一指示信息的取值为第二取值时,所述第一指示信息用于指示关闭运动信息角度预测技术。

5.根据权利要求1所述的方法,其特征在于,

在确定当前块的目标运动信息预测模式为运动信息角度预测模式之前,所述方法还包括:构建当前块的运动信息预测模式候选列表;

从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;

其中,所述构建当前块的运动信息预测模式候选列表,包括:

针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的多个周边匹配块;所述多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;

针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。

6.根据权利要求5所述的方法,其特征在于,

所述从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式之后,所述方法还包括:若所述目标运动信息预测模式为运动信息角度预测模式,则对所述当前块的周边块的运动信息进行填充。

7.一种编码方法,其特征在于,应用于编码端,所述方法包括:

若当前块的目标运动信息预测模式为运动信息角度预测模式,则

将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;

根据所述子区域的运动信息,确定所述子区域的运动补偿值;

若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;若所述子区域不满足使用双向光流的条件,则根据所述子区域的运动补偿值确定所述子区域的目标预测值;

根据每个子区域的目标预测值,确定所述当前块的预测值。

8.根据权利要求7所述的方法,其特征在于,

若所述子区域的运动信息为单向运动信息,则所述子区域不满足使用双向光流的条件;或者,若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上不位于两个参考帧之间,则所述子区域不满足使用双向光流的条件;

若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上位于两个参考帧之间,则所述子区域满足使用双向光流的条件。

9.根据权利要求7所述的方法,其特征在于,获取所述子区域的双向光流偏移值,包括:根据所述子区域的运动信息确定第一像素值和第二像素值;所述第一像素值是所述子区域的前向运动补偿值和前向扩展值,所述前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;所述第二像素值是所述子区域的后向运动补偿值和后向扩展值,所述后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;所述前向参考帧和所述后向参考帧根据所述子区域的运动信息确定;

根据所述第一像素值和所述第二像素值确定所述子区域的双向光流偏移值。

10.根据权利要求7所述的方法,其特征在于,

在确定当前块的目标运动信息预测模式为运动信息角度预测模式之前,所述方法还包括:获取第一指示信息,所述第一指示信息位于序列参数集级中;当所述第一指示信息的取值为第一取值时,所述第一指示信息用于指示开启运动信息角度预测技术;当所述第一指示信息的取值为第二取值时,所述第一指示信息用于指示关闭运动信息角度预测技术。

11.根据权利要求7所述的方法,其特征在于,

在确定当前块的目标运动信息预测模式为运动信息角度预测模式之前,所述方法还包括:构建当前块的运动信息预测模式候选列表;

从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;

其中,所述构建当前块的运动信息预测模式候选列表,包括:

针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的多个周边匹配块;所述多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;

针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。

12.根据权利要求11所述的方法,其特征在于,

所述构建当前块的运动信息预测模式候选列表之后,所述方法还包括:

若所述运动信息预测模式候选列表中存在运动信息角度预测模式,则对所述当前块的周边块的运动信息进行填充。

13.一种解码装置,其特征在于,应用于解码端,所述解码装置包括:

第一确定模块,用于若当前块的目标运动信息预测模式为运动信息角度预测模式,则将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;

第二确定模块,用于根据所述子区域的运动信息,确定所述子区域的运动补偿值;

获取模块,用于若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;若所述子区域不满足使用双向光流的条件,则根据所述子区域的运动补偿值确定所述子区域的目标预测值;

第三确定模块,用于根据每个子区域的目标预测值,确定所述当前块的预测值。

14.根据权利要求13所述的装置,其特征在于,

若所述子区域的运动信息为单向运动信息,则所述子区域不满足使用双向光流的条件;或者,若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上不位于两个参考帧之间,则所述子区域不满足使用双向光流的条件;

若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上位于两个参考帧之间,则所述子区域满足使用双向光流的条件。

15.根据权利要求13所述的装置,其特征在于,

所述获取模块获取所述子区域的双向光流偏移值时具体用于:

根据所述子区域的运动信息确定第一像素值和第二像素值;所述第一像素值是所述子区域的前向运动补偿值和前向扩展值,所述前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;所述第二像素值是所述子区域的后向运动补偿值和后向扩展值,所述后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;所述前向参考帧和所述后向参考帧根据所述子区域的运动信息确定;

根据所述第一像素值和所述第二像素值确定所述子区域的双向光流偏移值。

16.根据权利要求13所述的装置,其特征在于,所述获取模块还用于:获取第一指示信息,所述第一指示信息位于序列参数集级中;当所述第一指示信息的取值为第一取值时,所述第一指示信息用于指示开启运动信息角度预测技术;当所述第一指示信息的取值为第二取值时,所述第一指示信息用于指示关闭运动信息角度预测技术。

17.根据权利要求13所述的装置,其特征在于,所述装置还包括:

构建模块,用于构建当前块的运动信息预测模式候选列表;从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;

其中,所述构建模块构建当前块的运动信息预测模式候选列表时具体用于:针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的多个周边匹配块;所述多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;

针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。

18.根据权利要求17所述的装置,其特征在于,所述装置还包括:

填充模块,用于在所述构建模块从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式之后,若所述目标运动信息预测模式为运动信息角度预测模式,则对所述当前块的周边块的运动信息进行填充。

19.一种编码装置,其特征在于,应用于编码端,所述编码装置包括:

第一确定模块,用于若当前块的目标运动信息预测模式为运动信息角度预测模式,则将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;

第二确定模块,用于根据所述子区域的运动信息,确定所述子区域的运动补偿值;

获取模块,用于若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;若所述子区域不满足使用双向光流的条件,则根据所述子区域的运动补偿值确定所述子区域的目标预测值;

第三确定模块,用于根据每个子区域的目标预测值,确定所述当前块的预测值。

20.根据权利要求19所述的装置,其特征在于,

若所述子区域的运动信息为单向运动信息,则所述子区域不满足使用双向光流的条件;或者,若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上不位于两个参考帧之间,则所述子区域不满足使用双向光流的条件;

若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上位于两个参考帧之间,则所述子区域满足使用双向光流的条件。

21.根据权利要求19所述的装置,其特征在于,

所述获取模块获取所述子区域的双向光流偏移值时具体用于:

根据所述子区域的运动信息确定第一像素值和第二像素值;所述第一像素值是所述子区域的前向运动补偿值和前向扩展值,所述前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;所述第二像素值是所述子区域的后向运动补偿值和后向扩展值,所述后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;所述前向参考帧和所述后向参考帧根据所述子区域的运动信息确定;

根据所述第一像素值和所述第二像素值确定所述子区域的双向光流偏移值。

22.根据权利要求19所述的装置,其特征在于,所述获取模块还用于:获取第一指示信息,所述第一指示信息位于序列参数集级中;当所述第一指示信息的取值为第一取值时,所述第一指示信息用于指示开启运动信息角度预测技术;当所述第一指示信息的取值为第二取值时,所述第一指示信息用于指示关闭运动信息角度预测技术。

23.根据权利要求19所述的装置,其特征在于,所述装置还包括:

构建模块,用于构建当前块的运动信息预测模式候选列表;从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;

其中,所述构建模块构建当前块的运动信息预测模式候选列表时具体用于:针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的多个周边匹配块;所述多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;

针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。

24.根据权利要求23所述的装置,其特征在于,所述装置还包括:

填充模块,用于在所述构建模块构建当前块的运动信息预测模式候选列表之后,若所述运动信息预测模式候选列表中存在运动信息角度预测模式,则对所述当前块的周边块的运动信息进行填充。

25.一种解码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求1‑6中任一项所述的方法。

26.一种编码设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求7‑12中任一项所述的方法。

27.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令;其中,所述处理器用于执行所述机器可执行指令,以实现权利要求

1‑6中任一项所述的方法,或者,实现权利要求7‑12中任一项所述的方法。

说明书 :

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

技术领域

[0001] 本申请涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。

背景技术

[0002] 为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。预测编码包括帧内编码和帧间编码,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。在帧间编码中,使用运动矢量表示当前帧视频图像的当前图像块与参考帧视频图像的参考图像块之间的相对位移。例如,当前帧的视频图像A与参考帧的视频图像B存在很强的时域相关性,在需要传输视频图像A的图像块A1(当前块)时,则可以在视频图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(即参考块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。
[0003] 现有技术中,不需要对当前编码单元进行块划分,而是直接通过指示运动信息索引或差值信息索引,只能为当前编码单元确定出一个运动信息。由于当前编码单元内部的所有子块均共享一个运动信息,因此,对于一些运动目标较小,需要对编码单元进行块划分后,才能获取最佳的运动信息。但是,如果当前编码单元划分成多个子块,又会产生额外的比特开销。

发明内容

[0004] 本申请提供一种编解码方法、装置及其设备,可以提高编码性能。
[0005] 本申请提供一种编解码方法,所述方法包括:
[0006] 若当前块的目标运动信息预测模式为运动信息角度预测模式,则
[0007] 将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0008] 根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0009] 若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0010] 根据每个子区域的目标预测值,确定所述当前块的预测值。
[0011] 本申请提供一种编解码装置,所述装置包括:
[0012] 第一确定模块,用于若当前块的目标运动信息预测模式为运动信息角度预测模式,则将当前块划分为至少一个子区域;针对所述当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0013] 第二确定模块,用于根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0014] 获取模块,用于若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0015] 第三确定模块,用于根据每个子区域的目标预测值,确定所述当前块的预测值。
[0016] 本申请提供一种解码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
[0017] 所述处理器用于执行机器可执行指令,以实现如下步骤:
[0018] 若当前块的目标运动信息预测模式为运动信息角度预测模式,则
[0019] 将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0020] 根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0021] 若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0022] 根据每个子区域的目标预测值,确定所述当前块的预测值。
[0023] 本申请提供一种编码端设备,其特征在于,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
[0024] 若当前块的目标运动信息预测模式为运动信息角度预测模式,则
[0025] 将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0026] 根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0027] 若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0028] 根据每个子区域的目标预测值,确定所述当前块的预测值。
[0029] 由以上技术方案可见,本申请实施例中,不需要对当前块进行划分,能够有效解决子块划分带来的比特开销,比如说,在不对当前块进行子块划分的基础上,为当前块的每个子区域提供运动信息,且当前块的不同子区域可以对应相同或者不同的运动信息,从而带来编码性能的提高,解决了传输大量运动信息的问题,可以节约大量比特。

附图说明

[0030] 图1是本申请一种实施方式中的视频编码框架的示意图;
[0031] 图2A‑图2B是本申请一种实施方式中的当前块的划分示意图;
[0032] 图3是本申请一种实施方式中的几个子区域的示意图;
[0033] 图4是本申请一种实施方式中的编解码方法的流程图;
[0034] 图5A和图5B是本申请实施方式中的运动信息角度预测模式的示意图;
[0035] 图6是本申请一种实施方式中的编解码方法的流程图;
[0036] 图7是本申请一种实施方式中的编解码方法的流程图;
[0037] 图8A‑图8C是本申请一种实施方式中的当前块的周边块的示意图;
[0038] 图9A‑图9N是本申请一种实施方式中的运动补偿的示意图;
[0039] 图10是本申请一种实施方式中的编解码装置的结构图;
[0040] 图11A是本申请一种实施方式中的解码端设备的硬件结构图;
[0041] 图11B是本申请一种实施方式中的编码端设备的硬件结构图。

具体实施方式

[0042] 本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0043] 本申请实施例中提出一种编解码方法、装置及其设备,可以涉及如下概念:
[0044] 运动矢量(Motion Vector,MV):在帧间编码中,使用运动矢量表示当前帧图像的当前块与参考帧图像的参考块之间的相对位移,例如,当前帧的图像A与参考帧的图像B存在很强的时域相关性,在传输图像A的图像块A1(当前块)时,可以在图像B中进行运动搜索,找到与图像块A1最匹配的图像块B1(参考块),并确定图像块A1与图像块B1之间的相对位移,该相对位移也就是图像块A1的运动矢量。每个划分的图像块都有相应的运动矢量传送到解码端,如果对每个图像块的运动矢量进行独立编码和传输,特别是划分成小尺寸的大量图像块,则消耗相当多的比特。为降低用于编码运动矢量的比特数,可以利用相邻图像块之间的空间相关性,根据相邻已编码图像块的运动矢量对当前待编码图像块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量编码过程中,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(MVP,Motion Vector Prediction)与运动矢量的真正估值之间的差值(MVD,MotionVector Difference)进行编码,从而有效降低运动矢量的编码比特数。
[0045] 运动信息(Motion Information):为了准确获取参考块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
[0046] 率失真原则(Rate‑Distortion Optimized):评价编码效率的有两大指标:码率和PSNR(Peak Signal to Noise Ratio,峰值信噪比),比特流越小,则压缩率越大,PSNR越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:J(mode)=D+λ*R,示例性的,D表示Distortion(失真),通常可以使用SSE指标来进行衡量,SSE是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
[0047] 帧内预测与帧间预测(intra prediction and inter prediction)技术:帧内预测是指,利用当前块的空域相邻块(即与当前块处于同一帧的图像)的重建像素值进行预测编码。帧间预测是指,利用当前块的时域相邻块(即与当前块处于不同帧的图像)的重建像素值进行预测编码,帧间预测是利用视频时域的相关性,由于视频序列包含较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,达到有效去除视频时域冗余的目的。
[0048] 视频编码框架:参见图1所示,为视频编码框架的示意图,使用视频编码框架实现本申请实施例的编码端处理流程,视频解码框架的示意图与图1类似,在此不再赘述,可以使用视频解码框架实现本申请实施例的解码端处理流程。示例性的,在视频编码框架和视频解码框架中,可以包括帧内预测、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,可以实现编码端处理流程,在解码端,通过这些模块之间的配合,可以实现解码端处理流程。
[0049] 在传统方式中,对于当前块只有一个运动信息,即当前块内部的所有子块共享一个运动信息。对于运动目标较小,需要对当前块进行块划分后,才能获取最佳运动信息的场景,如果未对当前块进行划分,当前块只有一个运动信息,预测精度不高。参见图2A所示,区域C、区域G和区域H是当前块内的区域,并不是当前块内划分的子块。假设当前块使用块F的运动信息,则当前块内的各个区域均使用块F的运动信息。由于当前块内的区域H与块F的距离很远,若区域H也使用块F的运动信息,则区域H的运动信息的预测精度不高。当前块内部子块的运动信息,无法利用当前块周围的已编码运动信息,造成可利用的运动信息减少,运动信息的准确度不高。例如,当前块的子块I,只能利用子块C、子块G、子块H的运动信息,无法利用图像块A、图像块B、图像块F、图像块D、图像块E的运动信息。
[0050] 针对上述发现,本申请实施例中提出一种编解码方法,在不对当前块进行划分的基础上,即不增加子块划分带来的开销的基础上,使当前块对应多个运动信息,从而提高当前块的运动信息的预测精度。由于未对当前块进行划分,因此,避免消耗额外的比特来传输划分方式,节约这部分比特开销。针对当前块的每个区域(这里是当前块内的任意一个区域,该区域的尺寸小于当前块的尺寸,并不是对当前块进行划分得到的子块),可以利用当前块周围的已编码运动信息,来获取当前块的每个区域的运动信息,换句话说,当前块的不同区域可以对应相同或者不同的运动信息,当前块可能会有多个不同的运动信息,从而为当前块的区域提供更多的运动信息,提高运动信息的准确度。参见图2B所示,C为当前块内部的一个子区域,A、B、D、E和F为当前块周围的已编码块,当前子区域C的运动信息可以采用角度的预测方式来直接获取,当前块内部的其它子区域也采用同样的方法获得。这样,对于当前块,不用对当前块进行块划分,就能获得不同的运动信息,节省一部分块划分的比特开销。
[0051] 参见图3所示,当前块包括9个区域(后续称为当前块内的子区域),如子区域f1‑子区域f9,这些是当前块内的子区域,不是对当前块进行划分后的子块。针对子区域f1‑子区域f9中的不同子区域,可以对应相同或不同的运动信息,因此,在不对当前块进行划分的基础上,也可以使当前块对应多个运动信息,如子区域f1对应运动信息1,子区域f2对应运动信息2,以此类推。示例性的,在确定子区域f5的运动信息时,可以利用图像块A1、图像块A2、图像块A3、图像块E、图像块B1、图像块B2、图像块B3的运动信息,即利用当前块周围的已编码块的运动信息,从而为子区域f5提供更多的运动信息。当然,针对当前块的其它子区域的运动信息,也可以利用图像块A1、图像块A2、图像块A3等的运动信息。
[0052] 本申请实施例中,涉及运动信息预测模式候选列表的构建过程,比如说,针对任意一个运动信息角度预测模式,确定将该运动信息角度预测模式添加到运动信息预测模式候选列表或者禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表。涉及运动信息的填充过程,比如说,对当前块的周边块中不可用的运动信息进行填充,以及对周边块中不可用的运动信息进行填充的时机。涉及当前块的运动信息的运动补偿过程,比如说,利用运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定当前块的运动信息,并根据当前块的运动信息确定当前块的运动补偿值。涉及对当前块的子区域进行双向光流处理,比如说,若子区域满足使用双向光流的条件,则对子区域的运动补偿值叠加双向光流偏移值,得到子区域的目标预测值。
[0053] 在一个实施例中,可以实现运动补偿过程、对当前块的子区域进行双向光流处理。在另一个实施例中,可以实现运动信息预测模式候选列表的构建过程、运动补偿过程、对当前块的子区域进行双向光流处理。在另一个实施例中,可以实现运动信息的填充过程、运动补偿过程、对当前块的子区域进行双向光流处理。在另一个实施例中,可以实现运动信息预测模式候选列表的构建过程、运动信息的填充过程、运动补偿过程、对当前块的子区域进行双向光流处理。当然,上述实施例只是本申请的几个示例,对此不做限制。
[0054] 本申请实施例中,在实现运动信息预测模式候选列表的构建过程和运动信息的填充过程时,先对运动信息角度预测模式进行查重处理,后对周边块中不可用的运动信息进行填充,从而降低解码端的复杂度,提高解码性能。例如,针对水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式等,先进行查重处理,将不重复的水平向下角度预测模式和垂直向右角度预测模式添加到运动信息预测模式候选列表中,这样,能够先得到运动信息预测模式候选列表,且还未对周边块中不可用的运动信息进行填充。
[0055] 解码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式后,若目标运动信息预测模式不是运动信息角度预测模式,则解码端不对周边块中不可用的运动信息进行填充,从而使得解码端减少运动信息的填充操作,降低解码端的复杂度,提高解码性能。
[0056] 本申请实施例中,通过对子区域进行双向光流处理,使得子区域的运动补偿值叠加双向光流偏移值,得到子区域的目标预测值,目标预测值的准确性更高,从而提高预测的准确性。
[0057] 以下结合几个具体实施例,对本申请实施例中的编解码方法进行说明。
[0058] 实施例1:参见图4所示,为本申请实施例中提出的编解码方法的流程示意图,该方法可以应用于解码端或者编码端,该方法可以包括以下步骤:
[0059] 步骤401,若当前块的目标运动信息预测模式为运动信息角度预测模式,则将当前块划分为至少一个子区域;针对当前块的每个子区域,根据该运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定该子区域的运动信息。
[0060] 步骤402,根据该子区域的运动信息,确定该子区域的运动补偿值。
[0061] 步骤403,若该子区域满足使用双向光流的条件,则获取该子区域的双向光流偏移值,并根据该子区域的运动补偿值中的前向运动补偿值,该子区域的运动补偿值中的后向运动补偿值和该子区域的双向光流偏移值确定该子区域的目标预测值。
[0062] 示例性的,针对当前块的每个子区域,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧之间,则该子区域满足使用双向光流的条件。双向运动信息中的一个运动信息为前向运动信息,且前向运动信息对应的参考帧为前向参考帧,双向运动信息中的另一个运动信息为后向运动信息,且后向运动信息对应的参考帧为后向参考帧。该子区域所在当前帧在时间顺序上位于前向参考帧与后向参考帧之间。
[0063] 在根据该子区域的运动信息,确定该子区域的运动补偿值时,可以基于双向运动信息中的前向运动信息对应的前向参考帧,确定该子区域的前向运动补偿值,可以基于双向运动信息中的后向运动信息对应的后向参考帧,确定该子区域的后向运动补偿值,而该子区域的前向运动补偿值和后向运动补偿值,就组成该子区域的运动补偿值。
[0064] 在确定该子区域的目标预测值时,可以根据该子区域的前向运动补偿值,该子区域的后向运动补偿值和该子区域的双向光流偏移值,确定该子区域的目标预测值。
[0065] 示例性的,针对当前块的每个子区域,若该子区域的运动信息为单向运动信息,则该子区域不满足使用双向光流的条件。若该子区域不满足使用双向光流的条件,则根据该子区域的运动补偿值确定该子区域的目标预测值,而不需要参考双向光流偏移值。在确定该子区域的目标预测值时,将该子区域的运动补偿值确定为该子区域的目标预测值。
[0066] 示例性的,针对当前块的每个子区域,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域不满足使用双向光流的条件。若该子区域不满足使用双向光流的条件,则可以根据该子区域的运动补偿值确定该子区域的目标预测值,而不需要参考双向光流偏移值。为了区分方便,双向运动信息中的一个运动信息记为第一运动信息,且第一运动信息对应的参考帧记为第一参考帧,双向运动信息中的另一个运动信息记为第二运动信息,且第二运动信息对应的参考帧记为第二参考帧。由于子区域所在当前帧在时间顺序上不位于两个参考帧之间,因此,第一参考帧和第二参考帧都是该子区域的前向参考帧,或者,第一参考帧和第二参考帧都是该子区域的后向参考帧。
[0067] 在根据该子区域的运动信息,确定该子区域的运动补偿值时,可以基于双向运动信息中的第一运动信息对应的第一参考帧,确定该子区域的第一运动补偿值,可以基于双向运动信息中的第二运动信息对应的第二参考帧,确定该子区域的第二运动补偿值,而该子区域的第一运动补偿值和第二运动补偿值,就组成该子区域的运动补偿值。
[0068] 在确定该子区域的目标预测值时,可以根据该子区域的第一运动补偿值和该子区域的第二运动补偿值,确定该子区域的目标预测值,而不需要参考双向光流偏移值。
[0069] 示例性的,获取该子区域的双向光流偏移值,可以包括但不限于:根据该子区域的运动信息确定第一像素值和第二像素值;第一像素值是该子区域的前向运动补偿值和前向扩展值,前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;第二像素值是该子区域的后向运动补偿值和后向扩展值,后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;前向参考帧和后向参考帧根据子区域的运动信息确定。然后,根据第一像素值和第二像素值确定子区域的双向光流偏移值。
[0070] 步骤404,根据每个子区域的目标预测值,确定当前块的预测值。
[0071] 示例性的,在确定当前块的目标运动信息预测模式为运动信息角度预测模式之前,还可以构建当前块的运动信息预测模式候选列表,从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式;针对构建当前块的运动信息预测模式候选列表的过程,可以包括:
[0072] 步骤a1、针对当前块的任意一个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。
[0073] 运动信息角度预测模式用于指示预配置角度,根据预配置角度从当前块的周边块中为当前块的子区域选择周边匹配块,并根据周边匹配块的运动信息确定当前块的一个或多个运动信息,即,针对当前块的每个子区域,根据周边匹配块的运动信息确定所述子区域的运动信息。而且,周边匹配块是按照预配置角度从当前块的周边块中确定出的指定位置处的块。
[0074] 示例性的,周边块可以包括与当前块相邻的块;或者,周边块可以包括与当前块相邻的块和非相邻的块。当然,周边块还可以包括其它块,对此不做限制。
[0075] 示例性的,运动信息角度预测模式可以包括但不限于以下之一或者任意组合:水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式。当然,上述只是运动信息角度预测模式的几个示例,还可以有其它类型的运动信息角度预测模式,运动信息角度预测模式与预配置角度有关,例如,预配置角度还可以为10度、20度等。参见图5A所示,为水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式的示意图,不同运动信息角度预测模式对应不同的预配置角度。
[0076] 综上所述,可以基于运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。例如,参见图5A所示,示出了水平角度预测模式的预配置角度指向的多个周边匹配块、垂直角度预测模式的预配置角度指向的多个周边匹配块、水平向上角度预测模式的预配置角度指向的多个周边匹配块、水平向下角度预测模式的预配置角度指向的多个周边匹配块、垂直向右角度预测模式的预配置角度指向的多个周边匹配块。
[0077] 步骤a2、若多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,当第一周边匹配块和第二周边匹配块的运动信息不同时,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0078] 在一种可能的实施方式中,从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块后,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0079] 在一种可能的实施方式中,从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块后,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0080] 在一种可能的实施方式中,从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块后,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,当第一周边匹配块和第二周边匹配块的运动信息不同时,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0081] 在一种可能的实施方式中,从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块后,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,当第一周边匹配块和第二周边匹配块的运动信息相同时,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0082] 在一种可能的实施方式中,从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块后,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中存在帧内块和/或未编码块,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中存在帧内块和/或未编码块,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或者当前块所在图像片之外,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。或者,若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或者当前块所在图像片之外,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0083] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0084] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息相同,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息不同时,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0085] 在一种可能的实施方式中,从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,第一周边匹配块和第二周边匹配块的运动信息相同,判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息相同时,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0086] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0087] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0088] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,则当第二周边匹配块和第三周边匹配块的运动信息不同时,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0089] 在一种可能的实施方式中,从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,则当第二周边匹配块和第三周边匹配块的运动信息相同时,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0090] 在一种可能的实施方式中,从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,将运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0091] 在一种可能的实施方式中,从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。针对第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0092] 在上述实施例中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块是位于当前块所在图像之外或者周边匹配块是位于当前块所在图像片之外,则确定该周边匹配块不存在可用运动信息。若周边匹配块是未编码块,则确定该周边匹配块不存在可用运动信息。若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息。若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息。
[0093] 一种可能的实施方式中,针对编码端来说,在按照前述实施例构建和查重得到当前块的运动信息预测模式候选列表之后,所述方法还包括:若运动信息预测模式候选列表中存在运动信息角度预测模式,则对当前块的周边块中不可用的运动信息进行填充。针对解码端来说,在按照前述实施例构建和查重得到当前块的运动信息预测模式候选列表,从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式之后,所述方法还包括:若目标运动信息预测模式为运动信息角度预测模式,则对当前块的周边块中不可用的运动信息进行填充。
[0094] 作为示例,针对编码端或者解码端来说,编码端/解码端对当前块的周边块中不可用的运动信息进行填充,包括:对当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0095] 示例性的,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,可以包括:如果当前块不存在左边周边块,则对当前块的上边周边块进行遍历;如果当前块不存在上边周边块,则对当前块的左边周边块进行遍历。左边周边块可以包括与当前块左侧相邻的块和不相邻的块。上边周边块可以包括与当前块上侧相邻的块和不相邻的块。第一周边块的数量可以为一个或者多个,是遍历出的首个存在可用运动信息的周边块之前的所有周边块。第一周边块可以是未编码块或者帧内块;第二周边块可以是未编码块或者帧内块。
[0096] 在另一种可能的实施方式中,针对编码端来说,在按照前述实施例构建和查重得到当前块的运动信息预测模式候选列表之后,针对运动信息预测模式候选列表中的每个运动信息角度预测模式,若该运动信息角度预测模式的预配置角度指向的多个周边匹配块包括不存在可用运动信息的周边块,则对所述当前块的周边块中不可用的运动信息进行填充。针对解码端来说,在按照前述实施例构建和查重得到当前块的运动信息预测模式候选列表,从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式之后,若目标运动信息预测模式为运动信息角度预测模式,且所述运动信息角度预测模式的预配置角度指向的多个周边匹配块包括不存在可用运动信息的周边块,则对所述当前块的周边块中不可用的运动信息进行填充。
[0097] 例如,针对不存在可用运动信息的周边块,将该周边块的邻近块的可用运动信息,填充为该周边块的运动信息;或,将该周边块在时域参考帧中对应位置的参考块的可用运动信息,填充为该周边块的运动信息;或,将默认运动信息填充为该周边块的运动信息。
[0098] 再例如,对当前块的周边块进行填充时,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0099] 由以上技术方案可见,本申请实施例中,不需要对当前块进行子块的划分,可以基于运动信息角度预测模式来确定当前块的每个子区域的划分信息,能够有效解决子块划分带来的比特开销,比如说,在不对当前块进行子块划分的基础上,为当前块的每个子区域提供运动信息,且当前块的不同子区域可以对应相同或者不同的运动信息,从而带来编码性能的提高,解决了传输大量运动信息的问题,可以节约大量编码比特的开销。通过将运动信息不完全相同的运动信息角度预测模式添加到运动信息预测模式候选列表中,从而去除只具有单一运动信息的运动信息角度预测模式,减少运动信息预测模式候选列表中的运动信息角度预测模式的数量,能够降低编码多个运动信息的比特数,进一步提高编码性能。
[0100] 参见图5B所示,为水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式的示意图。从图5B可以看出,有些运动信息角度预测模式,会使得当前块内部的每个子区域的运动信息相同,例如,水平角度预测模式、垂直角度预测模式、水平向上角度预测模式,这样的运动信息角度预测模式需要剔除。有些运动信息角度预测模式,会使得当前块内部的每个子区域的运动信息不同,例如,水平向下角度预测模式、垂直向右角度预测模式,这样的运动信息角度预测模式需要保留,即可以添加到运动信息预测模式候选列表中。
[0101] 显然,若将水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式均添加到运动信息预测模式候选列表中,在编码水平向下角度预测模式的索引时,由于前面存在水平角度预测模式、垂直角度预测模式、水平向上角度预测模式(每个运动信息角度预测模式的顺序不固定,这里只是示例),则可能需要编码0001来表示。
[0102] 但是,本申请实施例中,只将水平向下角度预测模式和垂直向右角度预测模式添加到运动信息预测模式候选列表中,而禁止将水平角度预测模式、垂直角度预测模式、水平向上角度预测模式添加到运动信息预测模式候选列表中,即水平向下角度预测模式前面不存在水平角度预测模式、垂直角度预测模式和水平向上角度预测模式,因此,在编码水平向下角度预测模式的索引时,可能只需要编码0来表示即可。综上所述,上述方式能够减少编码运动信息角度预测模式的索引信息带来的比特开销,在节省比特开销的同时降低硬件复杂度,避免单个运动信息的运动信息角度预测模式所带来的低性能增益问题,降低编码多个运动信息角度预测模式的比特数。
[0103] 本申请实施例中,先对运动信息角度预测模式进行查重处理,后对周边块中不可用的运动信息进行填充,从而降低解码端的复杂度,提高解码性能。例如,针对水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式等,先进行查重处理,将不重复的水平向下角度预测模式和垂直向右角度预测模式添加到运动信息预测模式候选列表中,这样,能够先得到运动信息预测模式候选列表,此时,还未对周边块中不可用的运动信息进行填充。
[0104] 解码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式后,若目标运动信息预测模式为水平向下角度预测模式和垂直向右角度预测模式之外的其它模式,则不需要对周边块中不可用的运动信息进行填充,从而使得解码端能够减少运动信息的填充操作。
[0105] 实施例2:基于与上述方法同样的申请构思,参见图6所示,为本申请实施例中提出的编解码方法的流程示意图,该方法可以应用于编码端,该方法可以包括:
[0106] 步骤601,编码端构建当前块的运动信息预测模式候选列表,该运动信息预测模式候选列表可以包括至少一个运动信息角度预测模式。当然,该运动信息预测模式候选列表也可以包括其它类型的运动信息预测模式(即不是运动信息角度预测模式),对此不做限制。
[0107] 示例性的,可以为当前块构建一个运动信息预测模式候选列表,即当前块内的所有子区域,可以对应相同的运动信息预测模式候选列表;或者,可以为当前块构建多个运动信息预测模式候选列表,即当前块内的所有子区域,可以对应相同或不同的运动信息预测模式候选列表。为了方便描述,以为当前块构建一个运动信息预测模式候选列表为例。
[0108] 运动信息角度预测模式可以是预测运动信息的角度预测模式,即用于帧间编码,而不是应用于帧内编码,运动信息角度预测模式选择的是匹配块,而不是匹配的像素点。
[0109] 其中,运动信息预测模式候选列表的构建方式可以采用传统方式,也可以采用实施例1的运动信息预测模式候选列表构建方式,对此构建方式不做限制。
[0110] 步骤602,若运动信息预测模式候选列表中存在运动信息角度预测模式,则编码端对当前块的周边块中不可用的运动信息进行填充。例如,对当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0111] 步骤603,编码端依次遍历运动信息预测模式候选列表中的每个运动信息角度预测模式。针对当前遍历的运动信息角度预测模式,将当前块划分为至少一个子区域;针对每个子区域,根据该运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定该子区域的运动信息。例如,从该运动信息角度预测模式的预配置角度指向的多个周边匹配块中选择该子区域对应的周边匹配块;根据选择的周边匹配块的运动信息确定该子区域的运动信息。
[0112] 需要说明的是,由于步骤602对当前块周边块中不存在可用运动信息的周边块进行了填充,步骤603中的根据该运动信息角度预测模式的预配置角度指向的多个周边匹配块都是存在可用运动信息的,可以利用周边匹配块的可用运动信息确定子区域的运动信息。
[0113] 步骤604,针对每个子区域,编码端根据该子区域的运动信息,确定该子区域的运动补偿值。若该子区域满足使用双向光流的条件,则编码端获取该子区域的双向光流偏移值,并根据该子区域的运动补偿值(即该子区域的前向运动补偿值和该子区域的后向运动补偿值)和该双向光流偏移值确定该子区域的目标预测值。若该子区域不满足使用双向光流的条件,则编码端根据该子区域的运动补偿值确定该子区域的目标预测值。
[0114] 步骤605,编码端根据每个子区域的目标预测值,确定当前块的预测值。
[0115] 步骤606,编码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式,该目标运动信息预测模式为运动信息角度预测模式,或其它类型的运动信息预测模式。
[0116] 例如,针对运动信息预测模式候选列表中的每个运动信息角度预测模式(如水平向下角度预测模式等)执行步骤603‑步骤605后,可以得到当前块的目的预测值。基于当前块的目的预测值,编码端采用率失真原则确定该运动信息角度预测模式的率失真代价值,对此确定方式不做限制。针对运动信息预测模式候选列表中的其它类型的运动信息预测模式R(采用传统方式得到),根据运动信息预测模式R确定当前块的运动信息,并根据当前块的运动信息确定当前块的目标预测值,继而确定运动信息预测模式R的率失真代价值,对此不做限制。
[0117] 然后,将最小的率失真代价对应的运动信息预测模式确定为目标运动信息预测模式,该目标运动信息预测模式可以为运动信息角度预测模式,或其它类型的运动信息预测模式R。
[0118] 实施例3:基于与上述方法同样的申请构思,参见图7所示,为本申请实施例中提出的编解码方法的流程示意图,该方法可以应用于解码端,该方法可以包括:
[0119] 步骤701,解码端构建当前块的运动信息预测模式候选列表,该运动信息预测模式候选列表可以包括至少一个运动信息角度预测模式。当然,该运动信息预测模式候选列表也可以包括其它类型的运动信息预测模式(即不是运动信息角度预测模式),对此不做限制。
[0120] 步骤702,解码端从运动信息预测模式候选列表中选择当前块的目标运动信息预测模式,该目标运动信息预测模式可以为运动信息角度预测模式,或其它类型的运动信息预测模式。
[0121] 解码端选择目标运动信息预测模式的过程,可以包括:在接收到编码比特流后,从编码比特流中获取指示信息,该指示信息用于指示目标运动信息预测模式在运动信息预测模式候选列表中的索引信息。例如,编码端在向解码端发送编码比特流时,该编码比特流携带指示信息,该指示信息用于指示目标运动信息预测模式在运动信息预测模式候选列表的索引信息。假设运动信息预测模式候选列表依次包括:水平向下角度预测模式、垂直向右角度预测模式、运动信息预测模式R,且指示信息用于指示索引信息1,索引信息1表示运动信息预测模式候选列表中的第一个运动信息预测模式。基于此,解码端从编码比特流中获取索引信息1。
[0122] 解码端从运动信息预测模式候选列表中选择与该索引信息对应的运动信息预测模式,并将选择的运动信息预测模式确定为当前块的目标运动信息预测模式。例如,当指示信息用于指示索引信息1时,则解码端可以将运动信息预测模式候选列表中的第1个运动信息预测模式,确定为当前块的目标运动信息预测模式。
[0123] 步骤703,若目标运动信息预测模式为运动信息角度预测模式,则解码端对当前块的周边块中不可用的运动信息进行填充。例如,对当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,将该周边块的运动信息填充给第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,将遍历过的第二周边块的上一个周边块的运动信息填充给第二周边块。
[0124] 在一种可能的实现方式中,若目标运动信息预测模式不是运动信息角度预测模式,则不需要当前块的周边块中不可用的运动信息进行填充,使得解码端能够减少运动信息的填充操作。
[0125] 步骤704,解码端将当前块划分为至少一个子区域;针对每个子区域,根据该运动信息角度预测模式(即选取的目标运动信息预测模式)的预配置角度指向的多个周边匹配块的运动信息,确定该子区域的运动信息。例如,从该运动信息角度预测模式的预配置角度指向的多个周边匹配块中选择该子区域对应的周边匹配块;根据选择的周边匹配块的运动信息确定该子区域的运动信息。需要说明的是,由于步骤703对当前块周边块中不存在可用运动信息的周边块进行了填充,因此,步骤704中的根据该运动信息角度预测模式的预配置角度指向的多个周边匹配块都是存在可用运动信息的,可根据可用运动信息确定子区域的运动信息。
[0126] 步骤705,针对每个子区域,解码端根据该子区域的运动信息,确定该子区域的运动补偿值。若该子区域满足使用双向光流的条件,则解码端获取该子区域的双向光流偏移值,并根据该子区域的运动补偿值(即该子区域的前向运动补偿值和该子区域的后向运动补偿值)和该双向光流偏移值确定该子区域的目标预测值。若该子区域不满足使用双向光流的条件,则解码端根据该子区域的运动补偿值确定该子区域的目标预测值。
[0127] 步骤706,解码端根据每个子区域的目标预测值,确定当前块的预测值。
[0128] 实施例4:在上述实施例中,涉及运动信息预测模式候选列表的构建过程,即,针对任意一个运动信息角度预测模式,确定将该运动信息角度预测模式添加到运动信息预测模式候选列表或者禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表,该过程包括:
[0129] 步骤b1、获取当前块的至少一个运动信息角度预测模式。
[0130] 例如,可以获取如下运动信息角度预测模式:水平角度预测模式、垂直角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式。当然,上述方式只是示例,对此不做限制,预配置角度可以是0‑360度之间的任意角度,可以将子区域的中心点向右的水平方向定位为0度,这样,从0度逆时针旋转的任意角度均可以为预配置角度,或者,将子区域的中心点向其他方向定位为0度。在实际应用中,预配置角度可以是分数角度,如22.5度等。
[0131] 步骤b2、针对当前块的任意一个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。
[0132] 步骤b3、基于所述多个周边匹配块是否存在可用运动信息、所述多个周边匹配块的可用运动信息是否相同等特征,将该运动信息角度预测模式添加到运动信息预测模式候选列表中,或者,禁止将该运动信息角度预测模式添加到运动信息预测模式候选列表中。
[0133] 以下结合几个具体情况,对步骤b3的确定过程进行说明。
[0134] 情况一、从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0135] 从所述多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0136] 例如,若第一周边匹配块和第二周边匹配块中存在帧内块和/或未编码块,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0137] 若第一周边匹配块和第二周边匹配块中存在帧内块和/或未编码块,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0138] 若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或者当前块所在图像片之外,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0139] 若第一周边匹配块和第二周边匹配块中有至少一个位于当前块所在图像之外或当前块所在图像片之外,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0140] 情况二、从多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,当第一周边匹配块和第二周边匹配块的运动信息不同时,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0141] 从多个周边匹配块中选择待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块都存在可用运动信息,当第一周边匹配块和第二周边匹配块的运动信息相同时,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0142] 情况三、从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息不同,则将运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0143] 从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,则当第二周边匹配块和第三周边匹配块的运动信息不同时,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0144] 从多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块都存在可用运动信息,且第一周边匹配块和第二周边匹配块的运动信息相同,则继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息。若第二周边匹配块和第三周边匹配块都存在可用运动信息,则当第二周边匹配块和第三周边匹配块的运动信息相同时,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0145] 情况四、从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0146] 从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0147] 从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息不同时,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0148] 从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块都存在可用运动信息,当第二周边匹配块和第三周边匹配块的运动信息相同时,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0149] 从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0150] 从所述多个周边匹配块中选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,继续判断第二周边匹配块和第三周边匹配块是否都存在可用运动信息;若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0151] 情况五、若所述多个周边匹配块均存在可用运动信息,且所述多个周边匹配块的运动信息不完全相同,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0152] 若所述多个周边匹配块均存在可用运动信息,且所述多个周边匹配块的运动信息完全相同,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0153] 情况六、若所述多个周边匹配块中的至少一个不存在可用运动信息,则可以将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0154] 若所述多个周边匹配块中的至少一个不存在可用运动信息,则可以禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0155] 若多个周边匹配块中的至少一个不存在可用运动信息,且所述多个周边匹配块的运动信息不完全相同,则将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0156] 若多个周边匹配块中的至少一个不存在可用运动信息,且所述多个周边匹配块的运动信息完全相同,则禁止将该运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0157] 针对情况五和情况六,多个周边匹配块的运动信息不完全相同/完全相同的确定方式,可以包括但不限于:从多个周边匹配块中选择至少一个第一周边匹配块(如所有周边匹配块的全部或部分);针对每个第一周边匹配块,从多个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。若该第一周边匹配块的运动信息与该第二周边匹配块的运动信息不同,则确定二者的运动信息不同;若该第一周边匹配块的运动信息与该第二周边匹配块的运动信息相同,则确定二者的运动信息相同。基于此,若任意一对待比较周边匹配块的运动信息不同,则确定所述多个周边匹配块的运动信息不完全相同。若所有待比较周边匹配块的运动信息均相同,则确定所述多个周边匹配块的运动信息完全相同。
[0158] 针对情况五和情况六,多个周边匹配块中的至少一个不存在可用运动信息的确定方式,可以包括但不限于:从多个周边匹配块中选择至少一个第一周边匹配块;针对每个第一周边匹配块,从多个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。若任意一对待比较周边匹配块(即第一周边匹配块和第二周边匹配块)中的至少一个不存在可用运动信息,则确定所述多个周边匹配块中的至少一个不存在可用运动信息。若所有待比较周边匹配块均存在可用运动信息,则确定所述多个周边匹配块均存在可用运动信息。
[0159] 在上述各种情况中,从所述多个周边匹配块中选择第一周边匹配块,可以包括:将所述多个周边匹配块中的任意一个作为第一周边匹配块;或者,将所述多个周边匹配块中指定的一个作为第一周边匹配块。从所述多个周边匹配块中选择第二周边匹配块,可以包括:根据遍历步长和第一周边匹配块的位置,从所述多个周边匹配块中选择第一周边匹配块对应的第二周边匹配块;该遍历步长可以是该第一周边匹配块与该第二周边匹配块之间的块间隔。
[0160] 针对情况三和情况四,从所述多个周边匹配块中选择第三周边匹配块,可以包括:根据遍历步长和第二周边匹配块的位置,从所述多个周边匹配块中选择第二周边匹配块对应的第三周边匹配块;该遍历步长可以是该第二周边匹配块与该第三周边匹配块之间的块间隔。
[0161] 例如,针对按照顺序依次排列的周边匹配块A1、周边匹配块A2、周边匹配块A3、周边匹配块A4和周边匹配块A5,则针对不同的情况,各周边匹配块的示例如下所示:
[0162] 针对情况一和情况二,假设将周边匹配块A1作为第一周边匹配块,且遍历步长是2,则周边匹配块A1对应的第二周边匹配块是周边匹配块A3。针对情况三和情况四,假设将周边匹配块A1作为第一周边匹配块,且遍历步长是2,则周边匹配块A1对应的第二周边匹配块是周边匹配块A3。周边匹配块A3对应的第三周边匹配块是周边匹配块A5。
[0163] 针对情况五和情况六,假设将周边匹配块A1和周边匹配块A3均作为第一周边匹配块,且遍历步长是2,在周边匹配块A1作为第一周边匹配块时,则第二周边匹配块是周边匹配块A3。在周边匹配块A3作为第一周边匹配块时,则第二周边匹配块是周边匹配块A5。
[0164] 示例性的,从所述多个周边匹配块中选择周边匹配块之前,还可以基于当前块的尺寸,确定所述遍历步长。通过所述遍历步长控制运动信息的比较次数。例如,假设周边匹配块的尺寸为4*4,当前块的尺寸为16*16,针对水平角度预测模式,当前块对应4个周边匹配块。为了控制运动信息的比较次数为1,遍历步长可以为2或者3,若遍历步长为2,则第一周边匹配块为第1个周边匹配块,第二周边匹配块为第3个周边匹配块;或者,第一周边匹配块为第2个周边匹配块,第二周边匹配块为第4个周边匹配块。若遍历步长为3,则第一周边匹配块为第1个周边匹配块,第二周边匹配块为第4个周边匹配块。又例如,为了控制运动信息的比较次数为2,遍历步长可以为1,第一周边匹配块为第1个周边匹配块和第3个周边匹配块,第1个周边匹配块对应的第二周边匹配块为第2个周边匹配块,第3个周边匹配块对应的第二周边匹配块为第4个周边匹配块。当然,上述只是针对水平角度预测模式的示例,还可以采用其它方式确定遍历步长,对此不做限制。而且,针对水平角度预测模式之外的其它运动信息角度预测模式,确定遍历步长的方式参见水平角度预测模式,在此不再重复赘述。
[0165] 在上述各种情况中,判断任意一个周边匹配块是否存在可用运动信息的过程,可以包括但不限于:若周边匹配块是位于当前块所在图像之外或者周边匹配块是位于当前块所在图像片之外,则确定该周边匹配块不存在可用运动信息。若周边匹配块是未编码块,则确定该周边匹配块不存在可用运动信息。若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息。若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息。
[0166] 实施例5:在上述实施例中,涉及运动信息预测模式候选列表的构建过程,以下结合几个具体应用场景,对运动信息预测模式候选列表的构建过程进行说明。
[0167] 应用场景1:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在、或周边块尚未解码(即周边块是未编码块)、或周边块是帧内块,则说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,则说明周边块存在可用运动信息。
[0168] 参见图8A所示,当前块的宽度为W,当前块的高度为H,令m的大小为W/4,n的大小为H/4,当前块内部左上角的像素点为(x,y),(x‑1,y+H+W‑1)所在周边块为A0,A0的大小为4*4。按照顺时针方向对这些周边块进行遍历,每一个4*4的周边块分别记为A1、A2、…、A2m+2n,A2m+2n是像素点(x+W+H‑1,y‑1)所在的周边块。针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从上述周边块中选择该预配置角度指向的多个周边匹配块,并从多个周边匹配块中选择待遍历的周边匹配块(如选择待遍历的第一周边匹配块和第二周边匹配块;或者,选择待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块)。若第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0169] 若第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,继续比较第二周边匹配块和第三周边匹配块。
[0170] 若第二周边匹配块和第三周边匹配块都存在可用运动信息、且第二周边匹配块和第三周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,或者,第二周边匹配块和第三周边匹配块都存在可用运动信息、且第二周边匹配块和第三周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0171] 例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平角度预测模式,将Am‑1+H/8作为第一周边匹配块,将Am+n‑1作为第二周边匹配块,当然,Am‑1+H/8和Am+n‑1只是一个示例,还可以将水平角度预测模式的预配置角度指向的其它周边匹配块作为第一周边匹配块或者第二周边匹配块,其实现方式类似,后续不再赘述。利用上述比较方法判断Am‑1+H/8和Am+n‑1的比较结果是否相同。如果相同,则禁止将水平角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,则将水平角度预测模式添加到当前块的运动信息预测模式候选列表。
[0172] 对于水平向下角度预测模式,将AW/8‑1作为第一周边匹配块,将Am‑1作为第二周边匹配块,将Am‑1+H/8作为第三周边匹配块,当然,上述只是一个示例,还可以将水平向下角度预测模式的预配置角度指向的其它周边匹配块作为第一周边匹配块、第二周边匹配块或者第三周边匹配块,其实现方式类似,后续不再赘述。利用上述比较方法判断AW/8‑1和Am‑1的比较结果是否相同。如果不同,将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,利用上述比较方法判断Am‑1和Am‑1+H/8的比较结果是否相同。若Am‑1和Am‑1+H/8的比较结果为不同,将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。若Am‑1和Am‑1+H/8的比较结果为相同,禁止将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。
[0173] 例如,若当前块的左边相邻块不存在,上边相邻块存在,对于垂直角度预测模式,将Am+n+1+W/8作为第一周边匹配块,将Am+n+1作为第二周边匹配块,当然,上述只是一个示例,对此第一周边匹配块和第二周边匹配块不做限制。利用上述比较方法判断Am+n+1+W/8和Am+n+1的比较结果是否相同。如果相同,则禁止将垂直角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,将垂直角度预测模式添加到当前块的运动信息预测模式候选列表。
[0174] 对于垂直向右角度预测模式,将Am+n+1+W/8作为第一周边匹配块,将A2m+n+1作为第二周边匹配块,将A2m+n+1+H/8作为第三周边匹配块,当然,上述只是示例,对此第一周边匹配块、第二周边匹配块和第三周边匹配块不做限制。利用上述比较方法判断Am+n+1+W/8和A2m+n+1的比较结果是否相同。若不同,则将垂直向右角度预测模式添加到运动信息预测模式候选列表。若相同,利用上述比较方法判断A2m+n+1和A2m+n+1+H/8的比较结果是否相同。若A2m+n+1和A2m+n+1+H/8的比较结果为不同,将垂直向右角度预测模式添加到运动信息预测模式候选列表。若A2m+n+1和A2m+n+1+H/8的比较结果为相同,禁止将垂直向右角度预测模式添加到运动信息预测模式候选列表。
[0175] 例如,若当前块的左边相邻块存在,当前块的上边相邻块也存在,对于水平向下角度预测模式,将AW/8‑1作为第一周边匹配块,将Am‑1作为第二周边匹配块,将Am‑1+H/8作为第三周边匹配块,当然,上述只是示例,对此第一周边匹配块、第二周边匹配块和第三周边匹配块不做限制。利用上述比较方法判断AW/8‑1和Am‑1的比较结果是否相同。如果不同,则可以将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,则利用上述比较方法判断Am‑1和Am‑1+H/8的比较结果是否相同。若Am‑1和Am‑1+H/8的比较结果为不同,将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。若Am‑1和Am‑1+H/8的比较结果为相同,则禁止将水平向下角度预测模式添加到当前块的运动信息预测模式候选列表。
[0176] 对于水平角度预测模式,将Am‑1+H/8作为第一周边匹配块,将Am+n‑1作为第二周边匹配块,当然,上述只是一个示例,对此第一周边匹配块和第二周边匹配块不做限制。利用上述比较方法判断Am‑1+H/8和Am+n‑1的比较结果是否相同。若相同,不将水平角度预测模式添加到运动信息预测模式候选列表。若不同,将水平角度预测模式添加到运动信息预测模式候选列表。
[0177] 对于水平向上角度预测模式,将Am+n‑1作为第一周边匹配块,将Am+n作为第二周边匹配块,将Am+n+1作为第三周边匹配块,当然,上述只是示例,对此第一周边匹配块、第二周边匹配块和第三周边匹配块不做限制。利用上述比较方法判断Am+n‑1和Am+n的比较结果是否相同。如果不同,则将水平向上角度预测模式添加到当前块的运动信息预测模式候选列表。如果相同,则利用上述比较方法判断Am+n和Am+n+1的比较结果是否相同。若Am+n和Am+n+1的比较结果为不同,则将水平向上角度预测模式添加到运动信息预测模式候选列表。若Am+n和Am+n+1的比较结果为相同,禁止将水平向上角度预测模式添加到运动信息预测模式候选列表。
[0178] 对于垂直角度预测模式,将Am+n+1+W/8作为第一周边匹配块,将Am+n+1作为第二周边匹配块,当然,上述只是一个示例,对此第一周边匹配块和第二周边匹配块。利用上述比较方法判断Am+n+1+W/8和Am+n+1的比较结果是否相同。如果相同,则可以禁止将垂直角度预测模式添加到当前块的运动信息预测模式候选列表。如果不同,则可以将垂直角度预测模式添加到当前块的运动信息预测模式候选列表。
[0179] 对于垂直向右角度预测模式,将Am+n+1+W/8作为第一周边匹配块,将A2m+n+1作为第二周边匹配块,将A2m+n+1+H/8作为第三周边匹配块,当然,上述只是示例,对此第一周边匹配块、第二周边匹配块和第三周边匹配块不做限制。利用上述比较方法判断Am+n+1+W/8和A2m+n+1的比较结果是否相同。若不同,则将垂直向右角度预测模式添加到运动信息预测模式候选列表。若相同,利用上述比较方法判断A2m+n+1和A2m+n+1+H/8的比较结果是否相同。若A2m+n+1和A2m+n+1+H/8的比较结果为不同,将垂直向右角度预测模式添加到运动信息预测模式候选列表。若A2m+n+1和A2m+n+1+H/8的比较结果为相同,禁止将垂直向右角度预测模式添加到运动信息预测模式候选列表。
[0180] 应用场景2:与应用场景1的实现方式类似,不同之处在于:应用场景2中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。比如说,无论当前块的左边相邻块是否存在、当前块的上边相邻块是否存在,均采用上述方式处理。
[0181] 应用场景3:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它过程与应用场景1类似,在此不再赘述。
[0182] 应用场景4:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它过程与应用场景1类似,在此不再赘述。
[0183] 应用场景5:当前块的周边块存在表示该周边块位于当前块所在图像之内、且周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或周边块位于当前块所在图像之内,但周边块位于当前块所在图像片之外。若周边块不存在、或周边块是未编码块、或周边块是帧内块,说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,说明周边块存在可用运动信息。
[0184] 参见图8A所示,当前块的宽度为W,当前块的高度为H,令m的大小为W/4,n的大小为H/4,当前块内部左上角的像素点为(x,y),(x‑1,y+H+W‑1)所在周边块为A0,A0的大小为4*4。按照顺时针方向对这些周边块进行遍历,每一个4*4的周边块分别记为A1、A2、…、A2m+2n,A2m+2n是像素点(x+W+H‑1,y‑1)所在的周边块。
[0185] 针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从上述周边块中选择该预配置角度指向的多个周边匹配块,并从多个周边匹配块中选择待遍历的周边匹配块。与应用场景1不同的是,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,或者,第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0186] 若第一周边匹配块和第二周边匹配块都存在可用运动信息、且第一周边匹配块和第二周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;或,继续比较第二周边匹配块和第三周边匹配块。
[0187] 若第二周边匹配块和第三周边匹配块中的至少一个不存在可用运动信息,或者,第二周边匹配块和第三周边匹配块都存在可用运动信息、且第二周边匹配块和第三周边匹配块的运动信息不同,则这两个周边匹配块的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。或者,若第二周边匹配块和第三周边匹配块都存在可用运动信息、且第二周边匹配块和第三周边匹配块的运动信息相同,则这两个周边匹配块的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0188] 基于上述比较方法,相应的处理流程参见应用场景1,例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平角度预测模式,利用上述比较方法判断Am‑1+H/8和Am+n‑1的比较结果是否相同。如果相同,禁止将水平角度预测模式添加到运动信息预测模式候选列表。如果不同,将水平角度预测模式添加到运动信息预测模式候选列表。
[0189] 对于水平向下角度预测模式,利用上述比较方法判断AW/8‑1和Am‑1的比较结果是否相同。如果不同,将水平向下角度预测模式添加到运动信息预测模式候选列表。如果相同,利用上述比较方法判断Am‑1和Am‑1+H/8的比较结果是否相同。若Am‑1和Am‑1+H/8的比较结果为不同,则可以将水平向下角度预测模式添加到运动信息预测模式候选列表。若Am‑1和Am‑1+H/8的比较结果为相同,则可以禁止将水平向下角度预测模式添加到运动信息预测模式候选列表。
[0190] 应用场景6:与应用场景5的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。比如说,无论当前块的左边相邻块是否存在、当前块的上边相邻块是否存在,均采用应用场景5的方式进行处理。
[0191] 应用场景7:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。其它处理过程与应用场景5类似,在此不再重复赘述。
[0192] 应用场景8:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。应用场景8中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它处理过程与应用场景5类似,在此不再重复赘述。
[0193] 应用场景9:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在、或周边块是未编码块、或周边块是帧内块,说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,说明周边块存在可用运动信息。针对每个运动信息角度预测模式,基于该运动信息角度预测模式的预配置角度,从周边块中选择该预配置角度指向的多个周边匹配块,从多个周边匹配块中选择至少一个第一周边匹配块(如一个或者多个);针对每个第一周边匹配块,从所述多个周边匹配块中选择该第一周边匹配块对应的第二周边匹配块。
[0194] 将每个第一周边匹配块和第二周边匹配块的组合记为匹配块组,例如,从多个周边匹配块中选择A1、A3、A5作为第一周边匹配块,从多个周边匹配块中选择A2作为A1对应的第二周边匹配块,从多个周边匹配块中选择A4作为A3对应的第二周边匹配块,从多个周边匹配块中选择A6作为A5对应的第二周边匹配块,则匹配块组1包括A1和A2,匹配块组2包括A3和A4,匹配块组3包括A5和A6。上述A1、A2、A3、A4、A5和A6是所述多个周边匹配块中的任意周边匹配块,其选择方式可以根据经验配置,对此不做限制。
[0195] 针对每个匹配块组,若该匹配块组中的两个周边匹配块都存在可用运动信息、且这两个周边匹配块的运动信息不同,则该匹配块组的比较结果为不同。若该匹配块组中的两个周边匹配块中的至少一个不存在可用运动信息,或者,这两个周边匹配块都存在可用运动信息、且这两个周边匹配块的运动信息相同,则该匹配块组的比较结果为相同。若所有匹配块组的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;若任一匹配块组的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0196] 例如,若当前块的左边相邻块存在,上边相邻块不存在,对于水平角度预测模式,利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m,m+n‑1],且i和j不相同,i和j可以任意选取,位于该取值范围即可)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平角度预测模式添加到运动信息预测模式候选列表。否则,将水平角度预测模式添加到当前块的运动信息预测模式候选列表。对于水平向下角度预测模式,利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[0,m+n‑2],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向下角度预测模式添加到运动信息预测模式候选列表。否则,将水平向下角度预测模式添加到运动信息预测模式候选列表。例如,若当前块的左边相邻块不存在,上边相邻块存在,对于垂直角度预测模式,利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m+n+1,2m+n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直角度预测模式添加到运动信息预测模式候选列表。否则,将垂直角度预测模式添加到运动信息预测模式候选列表。对于垂直向右角度预测模式,利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m+n+2,2m+2n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向右角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向右角度预测模式添加到运动信息预测模式候选列表。
[0197] 例如,若当前块的左边相邻块存在,当前块的上边相邻块也存在,对于水平向下角度预测模式,则利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[0,m+n‑2],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向下角度预测模式添加到运动信息预测模式候选列表。否则,将水平向下角度预测模式添加到运动信息预测模式候选列表。对于水平角度预测模式,则利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m,m+n‑1],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平角度预测模式添加到运动信息预测模式候选列表。否则,将水平角度预测模式添加到当前块的运动信息预测模式候选列表。对于水平向上角度预测模式,则利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m+1,2m+n‑
1],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将水平向上角度预测模式添加到运动信息预测模式候选列表。否则,将水平向上角度预测模式添加到运动信息预测模式候选列表。对于垂直角度预测模式,则利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m+n+1,2m+n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直角度预测模式添加到运动信息预测模式候选列表。
否则,将垂直角度预测模式添加到运动信息预测模式候选列表。对于垂直向右角度预测模式,则利用上述比较方法判断至少一匹配块组Ai和Aj(i和j的取值范围为[m+n+2,2m+2n],且i和j不相同)的比较结果。如果所有匹配块组的比较结果都相同,则禁止将垂直向右角度预测模式添加到运动信息预测模式候选列表。否则,将垂直向右角度预测模式添加到运动信息预测模式候选列表。
[0198] 应用场景10:与应用场景9的实现方式类似,不同之处在于:应用场景10中,不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。
[0199] 应用场景11:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它过程与应用场景9类似,在此不再赘述。
[0200] 应用场景12:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它过程与应用场景9类似,在此不再赘述。
[0201] 应用场景13:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。与应用场景9不同的是,比较方式可以为:
[0202] 针对每个匹配块组,若该匹配块组中的两个周边匹配块中的至少一个不存在可用运动信息,或者,这两个周边匹配块都存在可用运动信息、且这两个周边匹配块的运动信息不同,则该匹配块组的比较结果为不同。若该匹配块组中的两个周边匹配块都存在可用运动信息、且这两个周边匹配块的运动信息相同,则该匹配块组的比较结果为相同。若所有匹配块组的比较结果为相同,禁止将运动信息角度预测模式添加到运动信息预测模式候选列表;若任一匹配块组的比较结果为不同,将运动信息角度预测模式添加到运动信息预测模式候选列表。
[0203] 基于上述比较方式,其它过程与应用场景9类似,在此不再重复赘述。
[0204] 应用场景14:与应用场景9的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。与应用场景9的比较方式不同,其比较方式可以参见应用场景10。基于上述比较方式,其它过程与应用场景9类似,在此不再重复赘述。
[0205] 应用场景15:与应用场景9的实现方式类似,不同之处在于:与应用场景9的比较方式不同,其比较方式可以参见应用场景10。其它过程与应用场景9类似,在此不再重复赘述。
[0206] 应用场景16:与应用场景9的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。与应用场景9的比较方式不同,其比较方式可以参见应用场景10。其它过程与应用场景9类似,在此不再重复赘述。
[0207] 实施例6:在上述实施例中,涉及对周边块中不可用的运动信息进行填充,关于如何对周边块中不可用的运动信息进行填充,以下结合几个具体应用场景,对运动信息的填充过程进行说明。
[0208] 应用场景1:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在、或周边块尚未解码(即周边块是未编码块)、或周边块是帧内块,则说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,则说明周边块存在可用运动信息。
[0209] 参见图8A所示,当前块的宽度为W,当前块的高度为H,令m的大小为W/4,n的大小为H/4,当前块内部左上角的像素点为(x,y),(x‑1,y+H+W‑1)所在周边块为A0,A0的大小为4*4。按照顺时针方向对这些周边块进行遍历,每一个4*4的周边块分别记为A1、A2、…、A2m+2n,A2m+2n是像素点(x+W+H‑1,y‑1)所在的周边块。
[0210] 例如,当前块的左边相邻块存在,上边相邻块不存在,则填充过程如下:从A0到Am+n‑1进行顺序遍历,找到第一个存在可用运动信息的周边块,记为Ai。若i大于0,则将Ai之前遍历的周边块的运动信息,全部用Ai的运动信息进行填充。判断i是否等于m+n‑1,如果是,则填充结束,退出填充过程;否则,从Ai+1到Am+n‑1进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0211] 参见图8A所示,假设Ai是A4,则可以将Ai之前遍历的周边块(如A0、A1、A2、A3)的运动信息,全部用A4的运动信息进行填充。假设遍历到A5时,发现A5不存在可用运动信息,则使用A5最相邻的前一个周边块A4的运动信息进行填充,假设遍历到A6时,发现A6不存在可用运动信息,则使用A6最相邻的前一个周边块A5的运动信息进行填充,以此类推。
[0212] 当前块的左边相邻块不存在,上边相邻块存在,填充过程如下:从Am+n+1到A2m+2n进行顺序遍历,找到第一个存在可用运动信息的周边块,记为Ai。若i大于m+n+1,则将Ai之前遍历的周边块的运动信息,全部用Ai的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从Ai+1到A2m+2n进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0213] 当前块的左边相邻块和上边相邻块均存在,填充过程如下:从A0到A2m+2n进行顺序遍历,找到第一个存在可用运动信息的周边块,记为Ai。如果i大于0,则将Ai之前遍历的周边块的运动信息,全部用Ai的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从Ai+1到A2m+2n进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0214] 在上述实施例中,不存在可用运动信息的周边块,可以是未编码块,也可以是帧内块。
[0215] 应用场景2:与应用场景1的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在,比如说,无论当前块的左边相邻块是否存在、当前块的上边相邻块是否存在,均采用如下方式处理:从A0到A2m+2n进行顺序遍历,找到第一个存在可用运动信息的周边块,记为Ai。如果i大于0,则将Ai之前遍历的周边块的运动信息,全部用Ai的运动信息进行填充。判断i是否等于2m+2n,如果是,则填充结束,退出填充过程;否则,从Ai+1到A2m+2n进行遍历,如果遍历的周边块的运动信息不可用,则使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0216] 应用场景3:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它实现过程参见应用场景1,在此不再赘述。
[0217] 应用场景4:与应用场景1的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它实现过程参见应用场景1,在此不再赘述。
[0218] 应用场景5:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在、或周边块尚未解码(即周边块是未编码块)、或周边块是帧内块,则说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,则说明周边块存在可用运动信息。
[0219] 当前块的左边相邻块存在,上边相邻块不存在,则填充过程如下:从A0到Am+n‑1进行顺序遍历,如果遍历的周边块的运动信息不可用,则利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。当前块的左边相邻块不存在,上边相邻块存在,则填充过程如下:从A m+n+1到A2m+2n进行顺序遍历,如果遍历的周边块的运动信息不可用,则利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。当前块的左边相邻块存在,上边相邻块存在,则填充过程如下:从A0到A2m+2n进行顺序遍历,如果遍历的周边块的运动信息不可用,则利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。
[0220] 应用场景6:与应用场景5的实现方式类似,不同之处在于:不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在,无论当前块的左边相邻块和上边相邻块是否存在,均从A0到A2m+2n进行顺序遍历,如果遍历的周边块的运动信息不可用,则利用零运动信息或者该周边块的时域对应位置的运动信息,对该周边块的运动信息进行填充。
[0221] 应用场景7:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。其它实现过程参见应用场景5,在此不再赘述。
[0222] 应用场景8:与应用场景5的实现方式类似,不同之处在于:当前块的周边块存在表示该周边块位于当前块所在图像之内、且该周边块位于当前块所在图像片之内;当前块的周边块不存在表示该周边块位于当前块所在图像之外,或该周边块位于当前块所在图像之内,但该周边块位于当前块所在图像片之外。不用区分当前块的左边相邻块是否存在,也不用区分当前块的上边相邻块是否存在。其它实现过程参见应用场景5,在此不再赘述。
[0223] 应用场景9‑应用场景16:与应用场景1‑应用场景8的实现方式类似,不同之处在于:当前块的宽度为W,当前块的高度为H,令m的大小为W/8,n的大小为H/8,周边块A0的大小为8*8,每一个8*8的周边块分别记为A1、A2、…、A2m+2n,即,每个周边块的大小从4*4变更为8*8,其它实现过程可以参见上述应用场景,在此不再重复赘述。
[0224] 应用场景17:参见图8B所示,当前块的宽和高都为16,周边块的运动信息按照4*4的最小单位进行保存。假设A14、A15、A16和A17为未编码块,则对这些未编码块进行填充,其填充方法可以为以下任意一种:采用邻近块的可用运动信息进行填充;采用默认运动信息进行填充;采用时域参考帧对应位置块的可用运动信息进行填充。当然,上述方式只是示例,对此不做限制。若当前块的尺寸为其它大小,也可以采用上述方式填充,在此不再赘述[0225] 应用场景18:参见图8C所示,当前块的宽和高都为16,周围块的运动信息按照4*4的最小单位进行保存。假设A7为帧内块,则需要对帧内块进行填充,其填充方法可以为以下任意一种:采用邻近块的可用运动信息进行填充;采用默认运动信息进行填充;采用时域参考帧对应位置块的可用运动信息进行填充。当然,上述方式只是示例,对此不做限制。若当前块的尺寸为其它大小,也可以采用上述方式填充,在此不再赘述。
[0226] 应用场景19:当前块的周边块存在表示该周边块位于当前块所在图像之内,当前块的周边块不存在表示该周边块位于当前块所在图像之外。若周边块不存在、或周边块尚未解码(即周边块是未编码块)、或周边块是帧内块,则说明周边块不存在可用运动信息。若周边块存在、且周边块不是未编码块、且周边块不是帧内块,则说明周边块存在可用运动信息。
[0227] 参见图8A所示,当前块的宽度为W,当前块的高度为H,令m的大小为W/4,n的大小为H/4,当前块内部左上角的像素点为(x,y),(x‑1,y+H+W‑1)所在周边块为A0,A0的大小为4*4。按照顺时针方向对这些周边块进行遍历,每一个4*4的周边块分别记为A1、A2、…、A2m+2n,A2m+2n是像素点(x+W+H‑1,y‑1)所在的周边块。
[0228] 如果运动信息角度预测模式为水平向下角度预测模式,则遍历范围为A0到Am+n‑2,从A0到Am+n‑2进行顺序遍历,找到第一个存在可用运动信息的周边块,记为Ai。若i大于0,将Ai之前遍历的周边块的运动信息,全部用Ai的运动信息进行填充。判断i是否等于m+n‑2,如果是,填充结束,退出填充过程;否则从Ai+1到Am+n‑2进行遍历,如果遍历的周边块的运动信息不可用,使用与该周边块最相邻的前一个周边块的运动信息进行填充,直至遍历结束。
[0229] 如果运动信息角度预测模式为水平角度预测模式,则遍历的范围为Am到Am+n‑1,从Am到Am+n‑1进行顺序遍历,具体填充过程参见上述实施例,在此不再重复赘述。
[0230] 如果运动信息角度预测模式为水平向上角度预测模式,则遍历的范围为Am+1到A2m+n‑1,从Am+1到A2m+n‑1进行顺序遍历,具体填充过程参见上述实施例,在此不再重复赘述。
[0231] 如果运动信息角度预测模式为垂直角度预测模式,则遍历的范围为Am+n+1到A2m+n,从Am+n+1到A2m+n进行顺序遍历,具体填充过程参见上述实施例,在此不再重复赘述。
[0232] 如果运动信息角度预测模式为垂直向右角度预测模式,则遍历的范围为Am+n+2到A2m+2n,从Am+n+2到A2m+2n进行顺序遍历,具体填充过程参见上述实施例,在此不再重复赘述。
[0233] 实施例7:在上述实施例中,涉及利用运动信息角度预测模式进行运动补偿,比如说,根据运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定当前块的每个子区域的运动信息,针对每个子区域,根据该子区域的运动信息确定该子区域的运动补偿值。以下结合具体应用场景,对确定每个子区域的运动补偿值进行说明。
[0234] 应用场景1:基于运动信息角度预测模式对应的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。将当前块划分为至少一个子区域,对此划分方式不做限制。针对当前块的每个子区域,从所述多个周边匹配块中选择与该子区域对应的周边匹配块,并根据选择的周边匹配块的运动信息确定该子区域的运动信息。然后,针对每个子区域,根据该子区域的运动信息确定该子区域的运动补偿值,对此确定过程不做限制。
[0235] 示例性的,可以将选择的周边匹配块的运动信息作为该子区域的运动信息。假设该周边匹配块的运动信息是单向运动信息,则可以将该单向运动信息作为该子区域的运动信息;假设该周边匹配块的运动信息是双向运动信息,则可以将该双向运动信息作为该子区域的运动信息,或者,将该双向运动信息中的一个运动信息作为该子区域的运动信息,或者,将该双向运动信息中的另一个运动信息作为该子区域的运动信息。
[0236] 示例性的,子区域划分信息可以与运动信息角度预测模式无关,如根据当前块的尺寸确定当前块的子区域划分信息,根据该子区域划分信息将当前块划分为至少一个子区域。例如,若当前块的尺寸满足:宽大于或等于预设尺寸参数(根据经验配置,如8),高大于或等于预设尺寸参数,则子区域的大小为8*8,即按照8*8的方式将当前块划分为至少一个子区域。
[0237] 示例性的,子区域划分信息可以与运动信息角度预测模式有关,例如,当运动信息角度预测模式为水平向上角度预测模式、水平向下角度预测模式或垂直向右角度预测模式时,若当前块的宽大于或等于预设尺寸参数,当前块的高大于或等于预设尺寸参数,则子区域的大小为8*8;若当前块的宽小于预设尺寸参数,或,当前块的高小于预设尺寸参数,则子区域的大小为4*4。当运动信息角度预测模式为水平角度预测模式时,若当前块的宽大于预设尺寸参数,则子区域的大小为当前块的宽*4,或者,子区域的大小为4*4;若当前块的宽等于预设尺寸参数,且当前块的高大于或等于预设尺寸参数,则子区域的大小为8*8;若当前块的宽小于预设尺寸参数,则子区域的大小为4*4。当运动信息角度预测模式为垂直角度预测模式时,若当前块的高大于预设尺寸参数,则子区域的大小为4*当前块的高,或者,子区域的大小为4*4;若当前块的高等于预设尺寸参数,且当前块的宽大于或等于预设尺寸参数,则子区域的大小为8*8;若当前块的高小于预设尺寸参数,则子区域的大小为4*4。当运动信息角度预测模式为水平角度预测模式时,若当前块的宽大于8,则子区域的大小也可以为4*4。当运动信息角度预测模式为垂直角度预测模式时,若当前块的高大于8,则子区域的大小也可以为4*4。当然,上述只是几个示例,对此不做限制,预设尺寸参数可以是8,可以大于8。
[0238] 应用场景2:基于运动信息角度预测模式对应的预配置角度,从当前块的周边块中选择该预配置角度指向的多个周边匹配块。按照8*8的方式将当前块划分为至少一个子区域(即子区域的大小为8*8)。针对当前块的每个子区域,从所述多个周边匹配块中选择与该子区域对应的周边匹配块,并根据选择的周边匹配块的运动信息确定该子区域的运动信息。针对每个子区域,根据该子区域的运动信息确定该子区域的运动补偿值,对此确定过程不做限制。
[0239] 应用场景3:参见图9A所示,针对当前块内的每个4*4的子区域,按照一定角度进行运动补偿。若周边匹配块的运动信息为单向运动信息,则将单向运动信息确定为子区域的运动信息。若周边匹配块的运动信息为双向运动信息,则将双向运动信息确定为子区域的运动信息,或者,将双向运动信息中的前向运动信息或者后向运动信息确定为子区域的运动信息。
[0240] 根据图9A,当前块的尺寸为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的子区域的运动信息。
[0241] 应用场景4:参见图9B所示,当前块的宽度W小于8,当前块的高度H大于8,则可以采用如下方式对当前块内的每个子区域进行运动补偿:如果角度预测模式为针对垂直角度预测模式,将每个4*H的子区域按照垂直角度进行运动补偿。如果角度预测模式为其它角度预测模式(如水平角度预测模式、水平向上角度预测模式、水平向下角度预测模式、垂直向右角度预测模式等),则针对当前块内的每个4*4的子区域,可以按照一定角度进行运动补偿。
[0242] 根据图9B,当前块的尺寸为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,根据B1的运动信息,确定当前块的运动信息。
[0243] 当前块的目标运动信息预测模式为水平向上模式时,划分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的子区域的运动信息。
[0244] 应用场景5:参见图9C所示,当前块的宽度W大于8,当前块的高度H小于8,则可以采用如下方式对当前块内的每个子区域进行运动补偿:如果角度预测模式为水平角度预测模式,将每个W*4的子区域按照水平角度进行运动补偿。如果角度预测模式为其它角度预测模式,针对当前块内的每个4*4的子区域,则可以按照一定角度进行运动补偿。
[0245] 根据图9C,当前块的尺寸为16*4,当前块的目标运动信息预测模式为水平模式时,可以划分4个尺寸为4*4的子区域,每一个4*4的子区域都对应周边匹配块A1,根据A1的运动信息,确定每一个4*4的子区域的运动信息。四个子区域的运动信息都相同,所以在该实施例中也可以不对当前块进行子区域划分,该当前块本身作为一个子区域对应一个周边匹配块A1,根据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的子区域的运动信息。
[0246] 当前块的目标运动信息预测模式为水平向上模式时,划分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的子区域的运动信息。
[0247] 应用场景6:当前块的宽度W等于8,当前块的高度H等于8,则对当前块内的每个8*8的子区域(即子区域就是当前块本身),按照一定角度进行运动补偿。若子区域对应多个周边匹配块,针对子区域的运动信息,可以按照对应的角度,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图9D所示,针对水平角度预测模式,可以选择周边匹配块A1的运动信息,也可以选择周边匹配块A2的运动信息。参见图9E所示,针对垂直角度预测模式,可以选择周边匹配块B1的运动信息,也可以选择周边匹配块B2的运动信息。参见图9F所示,针对水平向上角度预测模式,可以选择周边匹配块E的运动信息,选择周边匹配块B1的运动信息,可以选择周边匹配块A1的运动信息。参见图9G所示,针对水平向下角度预测模式,可以选择周边匹配块A2的运动信息,选择周边匹配块A3的运动信息,可以选择周边匹配块A4的运动信息。参见图9H所示,针对垂直向右角度预测模式,可以选择周边匹配块B2的运动信息,选择周边匹配块B3的运动信息,可以选择周边匹配块B4的运动信息。
[0248] 根据图9D,当前块的尺寸为8*8,当前块的目标运动信息预测模式为水平模式时,划分尺寸为8*8的子区域,子区域对应周边匹配块A1,根据A1的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块A2,根据A2的运动信息,确定该子区域的运动信息。根据图9E,当前块的尺寸为8*8,当前块的目标运动信息预测模式为垂直模式时,划分一个尺寸为8*8的子区域,这个子区域对应周边匹配块B1,根据B1的运动信息,确定该子区域的运动信息。或者,这个子区域对应周边匹配块B2,根据B2的运动信息,确定该子区域的运动信息。根据图9F,当前块的尺寸为8*8,当前块的目标运动信息预测模式为水平向上模式时,划分尺寸为8*8的子区域,子区域对应周边匹配块E,根据E的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块B1,根据B1的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块A1,根据A1的运动信息,确定该子区域的运动信息。根据图9G,当前块的尺寸为8*8,当前块的目标运动信息预测模式为水平向下模式时,划分尺寸为8*8的子区域,子区域对应周边匹配块A2,根据A2的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块A3,根据A3的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块A4,根据A4的运动信息,确定该子区域的运动信息。根据图9H,当前块的尺寸为
8*8,当前块的目标运动信息预测模式为垂直向右模式时,划分尺寸为8*8的子区域,子区域对应周边匹配块B2,根据B2的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块B3,根据B3的运动信息,确定该子区域的运动信息。或者,子区域对应周边匹配块B4,根据B4的运动信息,确定该子区域的运动信息。
[0249] 应用场景7:当前块的宽度W大于等于16,当前块的高度H等于8,基于此,可以采用如下方式对当前块内的每个子区域进行运动补偿:如果角度预测模式为水平角度预测模式,将每个W*4的子区域按照水平角度进行运动补偿。如果角度预测模式为其它角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图9I所示,针对水平角度预测模式,针对第一个W*4的子区域,可以选择周边匹配块A1的运动信息,针对第二个W*4的子区域,可以选择周边匹配块A2的运动信息。参见图9J所示,针对垂直角度预测模式,针对第一个8*8的子区域,可以选择周边匹配块B1的运动信息,可以选择周边匹配块B2的运动信息。针对第二个8*8的子区域,可以选择周边匹配块B3的运动信息,可以选择周边匹配块B4的运动信息。其它角度预测模式类似,在此不再赘述。根据图9I,当前块的尺寸为16*8,当前块的目标运动信息预测模式为水平模式时,划分2个尺寸为16*4的子区域,其中一个16*4的子区域对应周边匹配块A1,根据A1的运动信息,确定该16*4的子区域的运动信息。另一个16*4的子区域对应周边匹配块A2,根据A2的运动信息,确定该16*4的子区域的运动信息。
[0250] 根据图9J,当前块的尺寸为16*8,目标运动信息预测模式为垂直模式时,划分2个尺寸为8*8的子区域,其中一个8*8的子区域对应周边匹配块B1或者B2,根据B1或者B2的运动信息,确定该8*8的子区域的运动信息。另一个8*8的子区域对应周边匹配块B3或者B4,根据B3或者B4的运动信息,确定该8*8的子区域的运动信息。
[0251] 应用场景8:当前块的宽度W等于8,当前块的高度H大于等于16,基于此,可以采用如下方式对当前块内的每个子区域进行运动补偿:如果角度预测模式为垂直角度预测模式,将每个4*H的子区域按照垂直角度进行运动补偿。如果角度预测模式为其它角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。例如,参见图9K所示,针对垂直角度预测模式,针对第一个4*H的子区域,可以选择周边匹配块B1的运动信息,针对第二个4*H的子区域,可以选择周边匹配块B2的运动信息。参见图9L所示,针对水平角度预测模式,针对第一个8*8的子区域,可以选择周边匹配块A1的运动信息,可以选择周边匹配块A2的运动信息。针对第二个8*8的子区域,可以选择周边匹配块A1的运动信息,可以选择周边匹配块A2的运动信息。其它角度预测模式类似,在此不再赘述。根据图9K,当前块的尺寸为8*16,当前块的目标运动信息预测模式为垂直模式时,划分2个尺寸为4*16的子区域,其中一个4*16的子区域对应周边匹配块B1,根据B1的运动信息,确定该4*16的子区域的运动信息。另一个4*16的子区域对应周边匹配块B2,根据B2的运动信息,确定该4*16的子区域的运动信息。
[0252] 根据图9L,当前块的尺寸为16*8,目标运动信息预测模式为水平模式时,划分2个尺寸为8*8的子区域,一个8*8的子区域对应周边匹配块A1或者A2,根据对应周边匹配块的运动信息,确定该8*8的子区域的运动信息。另一个8*8的子区域对应周边匹配块A1或A2,根据对应周边匹配块的运动信息,确定该8*8的子区域的运动信息。
[0253] 应用场景9:当前块的宽度W可以大于等于16,当前块的高度H可以大于等于16,基于此,可以采用如下方式对当前块内的每个子区域进行运动补偿:如果角度预测模式为垂直角度预测模式,将每个4*H的子区域按照垂直角度进行运动补偿。如果角度预测模式为水平角度预测模式,将每个W*4的子区域按照水平角度进行运动补偿。如果角度预测模式为其它角度预测模式,针对当前块内的每个8*8的子区域,按照一定角度进行运动补偿。针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。
[0254] 参见图9M所示,针对垂直角度预测模式,针对第一个4*H的子区域,可以选择周边匹配块B1的运动信息,针对第二个4*H的子区域,可以选择周边匹配块B2的运动信息,针对第三个4*H的子区域,可以选择周边匹配块B3的运动信息,针对第四个4*H的子区域,可以选择周边匹配块B4的运动信息。针对水平角度预测模式,针对第一个W*4的子区域,选择周边匹配块A1的运动信息,针对第二个W*4的子区域,选择周边匹配块A2的运动信息,针对第三个W*4的子区域,选择周边匹配块A3的运动信息,针对第四个W*4的子区域,选择周边匹配块A4的运动信息。其它角度预测模式类似,在此不再赘述。
[0255] 根据图9M,当前块的尺寸为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的子区域的运动信息。
[0256] 根据图9M,当前块的尺寸为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的子区域的运动信息。
[0257] 应用场景10:当前块的宽度W可以大于等于8,当前块的高度H可以大于等于8,则对当前块内的每个8*8的子区域进行运动补偿。参见图9N所示,针对每个8*8的子区域,若子区域对应多个周边匹配块,针对子区域的运动信息,从多个周边匹配块的运动信息中选用任意一个周边匹配块的运动信息。子区域划分尺寸与运动信息角度预测模式无关,无论是哪种运动信息角度预测模式,只要宽大于等于8,高大于等于8,子区域划分尺寸可以为8*8。
[0258] 根据图9N,当前块的尺寸为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的子区域的运动信息。
[0259] 应用场景11:当前块的宽度W大于等于8,并且,当前块的高度H大于等于8时,则对当前块内每个8*8的子区域进行运动补偿,针对每个子区域来说,按照对应的角度选用周围匹配块的几个运动信息中的任意一个,参见图9N所示,在此不再赘述。
[0260] 基于上述各应用场景,针对当前块的每个子区域,可以根据周边匹配块的运动信息确定该子区域的运动信息,并根据该子区域的运动信息确定该子区域的运动补偿值,对此运动补偿值的确定方式不做限制。参见上述实施例1,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧之间,则该子区域的运动补偿值包括前向运动补偿值和后向运动补偿值;若该子区域的运动信息为单向运动信息,则该子区域对应一个运动补偿值。若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域的运动补偿值包括第一运动补偿值和第二运动补偿值。
[0261] 实施例8:在上述实施例中,涉及对当前块的子区域进行双向光流处理,即,在得到每个子区域的运动补偿值后,对当前块内部每个满足使用双向光流的条件的子区域,使用双向光流技术(BIO)对该子区域的运动补偿值叠加双向光流偏移值。比如说,针对当前块的每个子区域,若该子区域满足使用双向光流的条件,则确定该子区域的前向运动补偿值和后向运动补偿值,根据该前向运动补偿值,该后向运动补偿值和该子区域的双向光流偏移值,确定该子区域的目标预测值。若该子区域不满足使用双向光流的条件,则确定该子区域的运动补偿值后,根据该运动补偿值确定该子区域的目标预测值。
[0262] 示例性的,获取子区域的双向光流偏移值,可以包括但不限于:根据该子区域的运动信息确定第一像素值和第二像素值;第一像素值是该子区域的前向运动补偿值和前向扩展值,前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;第二像素值是该子区域的后向运动补偿值和后向扩展值,后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;前向参考帧和后向参考帧根据子区域的运动信息确定。然后,根据该第一像素值和该第二像素值确定子区域的双向光流偏移值。
[0263] 示例性的,获取子区域的双向光流偏移值,可以通过如下过程实现:
[0264] 步骤c1、根据子区域的运动信息确定第一像素值和第二像素值。
[0265] 步骤c2、根据第一像素值和第二像素值确定水平方向梯度和的自相关系数S1、水平方向梯度和与垂直方向梯度和的互相关系数S2、时域预测值差值与水平方向梯度和的互相关系数S3、垂直方向梯度和的自相关系数S5、时域预测值差值与垂直方向梯度和的互相关系数S6。
[0266] 例如,可以采用如下公式计算梯度和S1、S2、S3、S5、S6。
[0267]
[0268]
[0269]
[0270]
[0271]
[0272] 示例性的,ψx(i,j)、ψy(i,j)和θ(i,j)的计算方式可以如下所示:
[0273]
[0274]
[0275] θ(i,j)=I(1)(i,j)‑I(0)(i,j)
[0276] I0(x,y)为第一像素值,且I0(x,y)为子区域的前向运动补偿值及其前向扩展值,I(1) (1)(x,y)为第二像素值,且I (x,y)为子区域的后向运动补偿值及其后向扩展值。示例性的,前向扩展值可以是从前向运动补偿值拷贝,或者,也可以是从前向参考帧的参考像素位置获取。后向扩展值可以是从后向运动补偿值拷贝,或者,也可以是从后向参考帧的参考像素位置获取。前向参考帧和后向参考帧根据子区域的运动信息确定。
[0277] ψx(i,j)为像素点在前向参考帧的水平和垂直分量的变化率,ψx(i,j)表示水平方向梯度和,ψy(i,j)为像素点在后向参考帧的水平和垂直分量的变化率,ψy(i,j)表示垂直方向梯度和,θ(i,j)表示前向参考帧和后向参考帧对应位置的像素差值,即θ(i,j)表示时域预测值差值。
[0278] 步骤c3、根据所述自相关系数S1和所述互相关系数S3确定水平方向速率vx(水平方向速率vx也可以称为改善运动矢量vx);根据所述互相关系数S2、所述自相关系数S5和所述互相关系数S6确定垂直方向速率vy(垂直方向速率vy也可以称为改善运动矢量和vy)。
[0279] 例如,可以采用如下公式计算水平方向速率vx和垂直方向速率vy:
[0280] vx=(S1+r)>m?clip3(‑thBIO,thBIO,(S3<<5)/(S1+r)):0
[0281] vy=(S5+r)>m?clip3(‑thBIO,thBIO,((S6<<6)‑vxS2)/((S5+r)<<1)):0[0282] 在上述公式中,m和thBIO均为阈值,可以根据经验配置,r为正则项,避免除0操作。clip3表示的是将vx的值保证在‑thBIO和thBIO之间,并将vy的值保证在‑thBIO和thBIO之间。
[0283] 示例性的,若(S1+r)>m?成立,则vx=clip3(‑thBIO,thBIO,(S3<<5)/(S1+r))。若(S1+r)>m?不成立,则vx=0。th′BIO用于将vx限制在‑th′BIO与th′BIO之间,即vx大于或等于‑th′BIO,vx小于或等于th′BIO。对于vx来说,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,则vx为(S3<<5)/(S1+r)。
[0284] 若(S5+r)>m成立,则vy=clip3(‑thBIO,thBIO,((S6<<6)‑vxS2)/((S5+r)<<1)。若(S5+r)>m不成立,则vy=0。th′BIO用于将vy限制在‑th′BIO与th′BIO之间,即vy大于或等于‑th′BIO,vy小于或等于th′BIO。对于vy来说,Clip3(a,b,x)表示,若x小于a,则x=a;若x大于b,则x=b;否则x不变,在上述公式中,‑th′BIO为a,th′BIO为b,((S6<<6)‑vxS2)/((S5+r)<<
1)为x,综上所述,若,((S6<<6)‑vxS2)/((S5+r)<<1)大于‑th′BIO,且小于th′BIO,则vy为((S6<<6)‑vxS2)/((S5+r)<<1)。
[0285] 当然,上述只是计算vx和vy的示例,还可以采用其它方式计算vx和vy,对此不做限制。
[0286] 步骤c4、根据水平方向速率和垂直方向速率获取子区域的双向光流偏移值b。
[0287] 例如,根据水平方向速率、垂直方向速率、第一像素值和第二像素值计算子区域的双向光流偏移值b,参见如下公式,为计算双向光流偏移值b的一个示例:
[0288]
[0289] 在上述公式中,(x,y)为当前块内部每个像素的坐标,当然,上述公式只是获取双0
向光流偏移值b的一个示例,还可以采用其它方式计算双向光流偏移值b,对此不做限制。I
0 1
(x,y)为第一像素值,且I (x,y)为前向运动补偿值及其前向扩展值,I()(x,y)为第二像素
1
值,且I()(x,y)为后向运动补偿值及其后向扩展值。
[0290] 步骤c5、根据子区域的运动补偿值和双向光流偏移值确定该子区域的目标预测值。
[0291] 示例性的,在确定该子区域的前向运动补偿值,后向运动补偿值和双向光流偏移值后,就可以根据该前向运动补偿值,该后向运动补偿值和该双向光流偏移值,确定该子区域的目标预测值。例如,基于如下公式,确定该子区域内的像素点(x,y)的目标预测值(0) (1) 0predBIO(x,y):predBIO(x,y)=(I (x,y)+I (x,y)+b+1)>>1。在上述公式中,I (x,y)为(1)
像素点(x,y)的前向运动补偿值,I (x,y)像素点(x,y)的后向运动补偿值。
[0292] 实施例9:本实施例中,可以决策是否开启运动矢量角度预测技术(Motion Vector Angel Prediction,MVAP),运动矢量角度预测技术也可以称为运动信息角度预测技术,后续以运动信息角度预测技术为例进行说明。当开启运动信息角度预测技术时,可以采用本申请实施例的技术方案,即采用上述实施例1‑实施例8的实现流程。
[0293] 以下结合具体应用场景,对决策是否开启运动信息角度预测技术的过程进行说明。
[0294] 应用场景1:可以利用序列参数集(SPS)级语法来开启或者关闭运动信息角度预测技术,比如说,增加SPS级语法来控制运动信息角度预测技术的开启或者关闭。
[0295] 示例性的,获取第一指示信息,第一指示信息位于SPS级中。当该第一指示信息的取值为第一取值时,该第一指示信息用于指示开启运动信息角度预测技术;当该第一指示信息的取值为第二取值时,该第一指示信息用于指示关闭运动信息角度预测技术。
[0296] 编码端可以选择是否开启运动信息角度预测技术。若开启运动信息角度预测技术,则编码端向解码端发送编码比特流时,该编码比特流可以携带第一指示信息,且第一指示信息的取值为第一取值,解码端在接收到该编码比特流后,从该编码比特流中获取第一指示信息,由于第一指示信息的取值为第一取值,因此,解码端确定开启运动信息角度预测技术。
[0297] 编码端可以选择是否开启运动信息角度预测技术。若关闭运动信息角度预测技术,则编码端向解码端发送编码比特流时,该编码比特流可以携带第一指示信息,且第一指示信息的取值为第二取值,解码端在接收到该编码比特流后,从该编码比特流中获取第一指示信息,由于第一指示信息的取值为第二取值,因此,解码端确定关闭运动信息角度预测技术。
[0298] 示例性的,上述第一指示信息位于SPS级中,在开启运动信息角度预测技术时,可以对SPS级对应的图像均开启运动信息角度预测技术,在关闭运动信息角度预测技术时,可以对SPS级对应的图像均关闭运动信息角度预测技术。
[0299] 示例性的,编码端将第一指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,u(n)或u(v)表示读进连续n个bit,且解码后为无符号数,ue(n)或ue(v)表示无符号指数的Golomb熵编码。针对u(n)和ue(n),括号内的参数为n,表示语法元素是定长编码;针对u(v)和ue(v),括号内的参数为v,表示语法元素是变长编码。本应用场景并不限定编码方式,如采用u(1)进行编码,则仅需要一个bit表示是否开启运动信息角度预测技术。
[0300] 应用场景2:可以利用SPS级语法来控制使用运动信息角度预测技术的最大尺寸,比如说,增加SPS级语法来控制可以使用运动信息角度预测技术的最大尺寸,如最大尺寸为32*32。
[0301] 示例性的,获取第二指示信息,该第二指示信息位于SPS中,且该第二指示信息用于指示最大尺寸。若当前块的尺寸不大于该最大尺寸,则当前块开启运动信息角度预测技术;若当前块的尺寸大于该最大尺寸,则当前块关闭运动信息角度预测技术。
[0302] 编码端向解码端发送编码比特流时,编码比特流可以携带第二指示信息,第二指示信息用于指示可以使用运动信息角度预测技术的最大尺寸,如32*32。解码端接收到编码比特流后,从该编码比特流中获取第二指示信息,由于第二指示信息用于指示最大尺寸,因此,解码端对当前块进行解码时,若当前块的尺寸不大于该最大尺寸,则为当前块开启运动信息角度预测技术;若当前块的尺寸大于该最大尺寸,则为当前块关闭运动信息角度预测技术。
[0303] 示例性的,第二指示信息位于SPS级中,在对SPS级对应的图像中的每个当前块进行解码时,均需要根据该当前块的尺寸,确定是否为当前块开启运动信息角度预测技术。
[0304] 示例性的,编码端将第二指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,本应用场景并不限定编码方式,如可以采用ue(v)进行编码。
[0305] 应用场景3:可以利用SPS级语法来控制使用运动信息角度预测技术的最小尺寸,比如说,增加SPS级语法来控制可以使用运动信息角度预测技术的最小尺寸,如最小尺寸为8*8。
[0306] 示例性的,获取第三指示信息,该第三指示信息位于SPS中,且该第三指示信息用于指示最小尺寸。若当前块的尺寸不小于该最小尺寸,则当前块开启运动信息角度预测技术;若当前块的尺寸小于该最小尺寸,则当前块关闭运动信息角度预测技术。
[0307] 编码端向解码端发送编码比特流时,编码比特流可以携带第三指示信息,第三指示信息用于指示可以使用运动信息角度预测技术的最小尺寸,如8*8。解码端接收到编码比特流后,从该编码比特流中获取第三指示信息,由于第三指示信息用于指示最小尺寸,因此,解码端对当前块进行解码时,若当前块的尺寸不小于该最小尺寸,则为当前块开启运动信息角度预测技术;若当前块的尺寸小于该最小尺寸,则为当前块关闭运动信息角度预测技术。
[0308] 示例性的,上述第三指示信息位于SPS级中,在对SPS级对应的图像中的每个当前块进行解码时,均需要根据该当前块的尺寸,确定是否为当前块开启运动信息角度预测技术。
[0309] 示例性的,编码端将第三指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,本应用场景并不限定编码方式,如可以采用ue(v)进行编码。
[0310] 示例性的,编码端向解码端发送编码比特流时,编码比特流可以只携带第二指示信息,也可以只携带第三指示信息,还可以同时携带第二指示信息和第三指示信息。
[0311] 应用场景4:可以利用片(Slice)级语法来开启或者关闭运动信息角度预测技术,比如说,增加Slice级语法来控制运动信息角度预测技术的开启或者关闭。
[0312] 示例性的,获取第四指示信息,第四指示信息位于Slice级中。当该第四指示信息的取值为第一取值时,该第四指示信息用于指示开启运动信息角度预测技术;当该第四指示信息的取值为第二取值时,该第四指示信息用于指示关闭运动信息角度预测技术。
[0313] 编码端可以选择是否开启运动信息角度预测技术。若开启运动信息角度预测技术,则编码端向解码端发送编码比特流时,该编码比特流可以携带第四指示信息,且第四指示信息的取值为第一取值,解码端在接收到该编码比特流后,从该编码比特流中获取第四指示信息,由于第四指示信息的取值为第一取值,因此,解码端确定开启运动信息角度预测技术。
[0314] 编码端可以选择是否开启运动信息角度预测技术。若关闭运动信息角度预测技术,则编码端向解码端发送编码比特流时,该编码比特流可以携带第四指示信息,且第四指示信息的取值为第二取值,解码端在接收到该编码比特流后,从该编码比特流中获取第四指示信息,由于第四指示信息的取值为第二取值,因此,解码端确定关闭运动信息角度预测技术。
[0315] 示例性的,上述第四指示信息位于Slice级中,在开启运动信息角度预测技术时,可以对Slice级对应的图像开启运动信息角度预测技术,在关闭运动信息角度预测技术时,可以对Slice级对应的图像关闭运动信息角度预测技术。
[0316] 示例性的,编码端将第四指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,本应用场景并不限定编码方式,如可以采用u(1)进行编码。
[0317] 应用场景5:可以利用Slice级语法来控制使用运动信息角度预测技术的最大尺寸,比如说,增加Slice级语法来控制可以使用运动信息角度预测技术的最大尺寸,如最大尺寸为32*32。
[0318] 示例性的,获取第五指示信息,该第五指示信息位于Slice中,且该第五指示信息用于指示最大尺寸。若当前块的尺寸不大于该最大尺寸,则当前块开启运动信息角度预测技术;若当前块的尺寸大于该最大尺寸,则当前块关闭运动信息角度预测技术。
[0319] 编码端向解码端发送编码比特流时,编码比特流可以携带第五指示信息,第五指示信息用于指示可以使用运动信息角度预测技术的最大尺寸,如32*32。解码端接收到编码比特流后,从该编码比特流中获取第五指示信息,由于第五指示信息用于指示最大尺寸,因此,解码端对当前块进行解码时,若当前块的尺寸不大于该最大尺寸,则为当前块开启运动信息角度预测技术;若当前块的尺寸大于该最大尺寸,则为当前块关闭运动信息角度预测技术。
[0320] 示例性的,上述第五指示信息位于Slice级中,在对Slice级对应的图像中的每个当前块进行解码时,均需要根据该当前块的尺寸,确定是否为当前块开启运动信息角度预测技术。
[0321] 示例性的,编码端将第五指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,本应用场景并不限定编码方式,如可以采用ue(v)进行编码。
[0322] 应用场景6:可以利用Slice级语法来控制使用运动信息角度预测技术的最小尺寸,比如说,增加Slice级语法来控制可以使用运动信息角度预测技术的最小尺寸,如最小尺寸为8*8。
[0323] 示例性的,获取第六指示信息,该第六指示信息位于Slice中,且该第六指示信息用于指示最小尺寸。若当前块的尺寸不小于该最小尺寸,则当前块开启运动信息角度预测技术;若当前块的尺寸小于该最小尺寸,则当前块关闭运动信息角度预测技术。
[0324] 编码端向解码端发送编码比特流时,编码比特流可以携带第六指示信息,第六指示信息用于指示可以使用运动信息角度预测技术的最小尺寸,如8*8。解码端接收到编码比特流后,从该编码比特流中获取第六指示信息,由于第六指示信息用于指示最小尺寸,因此,解码端对当前块进行解码时,若当前块的尺寸不小于该最小尺寸,则为当前块开启运动信息角度预测技术;若当前块的尺寸小于该最小尺寸,则为当前块关闭运动信息角度预测技术。
[0325] 示例性的,上述第六指示信息位于Slice级中,在对Slice级对应的图像中的每个当前块进行解码时,均需要根据该当前块的尺寸,确定是否为当前块开启运动信息角度预测技术。
[0326] 示例性的,编码端将第六指示信息编入比特流时,可选用u(n),或u(v),或ue(n),或ue(v)等方式进行编码,本应用场景并不限定编码方式,如可以采用ue(v)进行编码。
[0327] 示例性的,编码端向解码端发送编码比特流时,编码比特流可以只携带第五指示信息,也可以只携带第六指示信息,还可以同时携带第五指示信息和第六指示信息。
[0328] 实施例10:当前块可以使用运动信息角度预测模式,即基于运动信息角度预测模式确定当前块的每个子区域的运动补偿值,具体确定方式参见上述实施例。若当前块使用运动信息角度预测模式,则当前块可以关闭解码端运动矢量调整(DMVR)技术;或者,若当前块使用运动信息角度预测模式,则当前块可以启动解码端运动矢量调整技术。若当前块使用运动信息角度预测模式,则当前块可以关闭双向光流技术(BIO);或者,若当前块使用运动信息角度预测模式,则当前块可以启动双向光流技术。示例性的,双向光流技术是利用前向和后向参考帧中像素值的梯度信息来对当前块叠加光流补偿值。解码端运动矢量调整技术的原理是利用前向和后向的参考像素值之间的匹配准则来调整运动矢量。以下结合具体应用场景,对运动信息角度预测模式、解码端运动矢量调整技术、双向光流技术之间的结合进行说明。
[0329] 应用场景1:若当前块使用运动信息角度预测模式,则当前块可以启动双向光流技术,且当前块可以关闭解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的运动补偿值。然后,基于双向光流技术,根据当前块的每个子区域的运动补偿值确定该子区域的目标预测值,例如,若子区域满足使用双向光流的条件,则根据子区域的运动补偿值和双向光流偏移值确定子区域的目标预测值,若子区域不满足使用双向光流的条件,则根据子区域的运动补偿值确定子区域的目标预测值,具体方式参见上述实施例。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0330] 应用场景2:若当前块使用运动信息角度预测模式,则当前块可以启动双向光流技术,且当前块可以启动解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的原始运动信息(为了区分方便,将基于运动信息角度预测模式确定的运动信息称为原始运动信息)。然后,基于解码端运动矢量调整技术,根据当前块的每个子区域的原始运动信息确定该子区域的目标运动信息,例如,若子区域满足使用解码端运动矢量调整的条件,则对该子区域的原始运动信息进行调整,得到调整后的目标运动信息,若该子区域不满足使用解码端运动矢量调整的条件,则将该子区域的原始运动信息作为目标运动信息。然后,根据每个子区域的目标运动信息确定该子区域的运动补偿值。然后,基于双向光流技术,根据当前块的每个子区域的运动补偿值确定该子区域的目标预测值,例如,若子区域满足使用双向光流的条件,则根据子区域的运动补偿值和双向光流偏移值确定子区域的目标预测值,若子区域不满足使用双向光流的条件,则根据子区域的运动补偿值确定子区域的目标预测值。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0331] 应用场景3:若当前块使用运动信息角度预测模式,则当前块可以关闭双向光流技术,且当前块可以启动解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的原始运动信息。然后,基于解码端运动矢量调整技术,根据当前块的每个子区域的原始运动信息确定该子区域的目标运动信息,例如,若子区域满足使用解码端运动矢量调整的条件,则对该子区域的原始运动信息进行调整,得到调整后的目标运动信息,若该子区域不满足使用解码端运动矢量调整的条件,则将该子区域的原始运动信息作为目标运动信息。然后,根据每个子区域的目标运动信息确定该子区域的目标预测值,该过程不需要考虑双向光流技术。然后,根据每个子区域的目标预测值确定当前块的预测值。
[0332] 应用场景4:若当前块使用运动信息角度预测模式,则当前块可以关闭双向光流技术,且当前块可以关闭解码端运动矢量调整技术。在这种应用场景下,基于运动信息角度预测模式确定当前块的每个子区域的运动信息,并根据每个子区域的运动信息确定该子区域的目标预测值,并根据每个子区域的目标预测值确定当前块的预测值。在上述过程中,不需要考虑解码端运动矢量调整技术,也不需要考虑双向光流技术。
[0333] 在应用场景2和应用场景3中,针对当前块的每个子区域,可以对符合使用解码端运动矢量调整技术条件的子区域使用DMVR。示例性的,若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧(即前向参考帧和后向参考帧)之间,且当前帧与前向参考帧之间的距离和后向参考帧与当前帧之间的距离相同,则该子区域满足使用解码端运动矢量调整的条件。若该子区域的运动信息为单向运动信息,则该子区域不满足使用解码端运动矢量调整的条件。若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上不位于两个参考帧之间,则该子区域不满足使用解码端运动矢量调整的条件。若该子区域的运动信息为双向运动信息,且该子区域所在当前帧在时间顺序上位于两个参考帧(即前向参考帧和后向参考帧)之间,且当前帧与前向参考帧之间的距离和后向参考帧与当前帧之间的距离不同,则该子区域不满足使用解码端运动矢量调整的条件。
[0334] 在应用场景2和应用场景3中,需要启动解码端运动矢量调整技术,解码端运动矢量调整技术是根据前向和后向的参考像素值的匹配准则来调整运动矢量,解码端运动矢量调整技术可以应用于直接模式或者跳过模式,解码端运动矢量调整技术的实现过程,可以如下所示:
[0335] a)、利用初始的运动矢量获取预测块和搜索区域内所需的参考像素。
[0336] b)、获取最优整像素位置。示例性的,将当前块的亮度图像块划分为不重叠且位置相邻的子区域,所有子区域的初始运动矢量均为MV0和MV1。对于每个子区域,以初始MV0和初始MV1所对应的位置为中心,开始寻找附近一定范围内模板匹配失真最小的位置。模板匹配失真的计算方式为:计算前向搜索区域中以中心位置开始的子区域宽度乘以子区域高度的块,和后向搜索区域中以中心位置开始的子区域宽度乘以子区域高度的块之间的SAD值。
[0337] c)、获取最优亚像素位置。亚像素位置的确认使用整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,估计整数位置最优位置附近的二次失真平面,计算得到失真平面中失真最小的位置作为亚像素位置。例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,参见如下公式,为计算水平亚像素位置和垂直亚像素位置的一个示例:
[0338] 水平亚像素位置=(sad_left‑sad_right)*N/((sad_right+sad_left‑2*sad_mid)*2)
[0339] 垂直亚像素位置=(sad_btm‑sad_top)*N/((sad_top+sad_btm‑2*sad_mid)*2)[0340] 示例性的,sad_mid、sad_left、sad_right、sad_top和sad_btm分别是整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,N是精度。
[0341] 当然,上述只是计算水平亚像素位置和垂直亚像素位置的示例,还可以采用其它方式计算水平亚像素位置和垂直亚像素位置,例如,根据整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值计算水平亚像素位置和垂直亚像素位置,对此不做限制,只要参考这些参数计算水平亚像素位置和垂直亚像素位置即可。
[0342] d)、根据最优MV计算得到最终预测值。
[0343] 基于与上述方法同样的申请构思,本申请实施例提出一种编解码装置,应用于解码端或编码端,如图10所示,为所述装置的结构图,所述装置包括:
[0344] 第一确定模块1001,用于若当前块的目标运动信息预测模式为运动信息角度预测模式,则将当前块划分为至少一个子区域;针对所述当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0345] 第二确定模块1002,用于根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0346] 获取模块1003,用于若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0347] 第三确定模块1004,用于根据每个子区域的目标预测值,确定所述当前块的预测值。
[0348] 所述获取模块1003还用于:若所述子区域不满足使用双向光流的条件,则根据所述子区域的运动补偿值确定所述子区域的目标预测值;其中,若所述子区域的运动信息为单向运动信息,则所述子区域不满足使用双向光流的条件;或者,若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上不位于两个参考帧之间,则所述子区域不满足使用双向光流的条件。
[0349] 若所述子区域的运动信息为双向运动信息,且所述子区域所在当前帧在时间顺序上位于两个参考帧之间,则所述子区域满足使用双向光流的条件。
[0350] 所述获取模块1003获取所述子区域的双向光流偏移值时具体用于:
[0351] 根据所述子区域的运动信息确定第一像素值和第二像素值;第一像素值是所述子区域的前向运动补偿值和前向扩展值,所述前向扩展值是从前向运动补偿值拷贝,或者,从前向参考帧的参考像素位置获取;第二像素值是所述子区域的后向运动补偿值和后向扩展值,所述后向扩展值是从后向运动补偿值拷贝,或者,从后向参考帧的参考像素位置获取;所述前向参考帧和所述后向参考帧根据所述子区域的运动信息确定;
[0352] 根据所述第一像素值和所述第二像素值确定所述子区域的双向光流偏移值。
[0353] 所述获取模块1003还用于:获取第一指示信息,第一指示信息位于序列参数集级中;当第一指示信息的取值为第一取值时,所一指示信息用于指示开启运动信息角度预测技术;当第一指示信息的取值为第二取值时,第一指示信息用于指示关闭运动信息角度预测技术。
[0354] 所述获取模块1003还用于:获取第二指示信息,第二指示信息位于序列参数集级中,第二指示信息用于指示最大尺寸;若所述当前块的尺寸不大于所述最大尺寸,则当前块开启运动信息角度预测技术;若所述当前块的尺寸大于所述最大尺寸,则当前块关闭运动信息角度预测技术;和/或,获取第三指示信息,第三指示信息位于序列参数集级中,且第三指示信息用于指示最小尺寸;若所述当前块的尺寸不小于所述最小尺寸,则当前块开启运动信息角度预测技术;若所述当前块的尺寸小于所述最小尺寸,则当前块关闭运动信息角度预测技术。
[0355] 所述获取模块1003还用于:获取第四指示信息,第四指示信息位于片级中;当第四指示信息的取值为第一取值时,所述第四指示信息用于指示开启运动信息角度预测技术;当第四指示信息的取值为第二取值时,所述第四指示信息用于指示关闭运动信息角度预测技术。
[0356] 所述获取模块1003还用于:获取第五指示信息,所述第五指示信息位于片级中,所述第五指示信息用于指示最大尺寸;若所述当前块的尺寸不大于所述最大尺寸,则当前块开启运动信息角度预测技术;若所述当前块的尺寸大于所述最大尺寸,则当前块关闭运动信息角度预测技术;和/或,获取第六指示信息,所述第六指示信息位于片级中,且所述第六指示信息用于指示最小尺寸;若所述当前块的尺寸不小于所述最小尺寸,则当前块开启运动信息角度预测技术;若所述当前块的尺寸小于所述最小尺寸,则当前块关闭运动信息角度预测技术。
[0357] 所述装置还包括:构建模块,用于构建当前块的运动信息预测模式候选列表;从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式;
[0358] 所述构建模块具体用于:针对当前块的任意一个运动信息角度预测模式,基于所述运动信息角度预测模式的预配置角度,从所述当前块的周边块中选择所述预配置角度指向的多个周边匹配块;所述多个周边匹配块至少包括待遍历的第一周边匹配块和第二周边匹配块;
[0359] 针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0360] 所述构建模块具体用于:若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则将所述运动信息角度预测模式添加到所述当前块的运动信息预测模式候选列表。
[0361] 所述构建模块具体用于:若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,则禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0362] 所述构建模块具体用于:若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,当所述第一周边匹配块和所述第二周边匹配块的运动信息相同时,禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0363] 所述构建模块具体用于:若所述第一周边匹配块和所述第二周边匹配块中存在帧内块和/或未编码块,则将所述运动信息角度预测模式添加到所述当前块的运动信息预测模式候选列表;或者,若所述第一周边匹配块和所述第二周边匹配块中存在帧内块和/或未编码块,则禁止将所述运动信息角度预测模式添加到所述当前块的运动信息预测模式候选列表;或者,若所述第一周边匹配块和所述第二周边匹配块中有至少一个位于当前块所在图像之外或者位于当前块所在图像片之外,则禁止将所述运动信息角度预测模式添加到所述当前块的运动信息预测模式候选列表。
[0364] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,所述第一周边匹配块和所述第二周边匹配块的运动信息相同,则继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,则当所述第二周边匹配块和所述第三周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0365] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,所述第一周边匹配块和所述第二周边匹配块的运动信息相同,则继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,则当所述第二周边匹配块和所述第三周边匹配块的运动信息相同时,禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0366] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块都存在可用运动信息,且所述第一周边匹配块和所述第二周边匹配块的运动信息不同,则将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0367] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,则将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表;或者,禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0368] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,当所述第二周边匹配块和所述第三周边匹配块的运动信息不同时,将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0369] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若第一周边匹配块和第二周边匹配块中的至少一个不存在可用运动信息,继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;若所述第二周边匹配块和所述第三周边匹配块都存在可用运动信息,则当所述第二周边匹配块和所述第三周边匹配块的运动信息相同时,禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0370] 所述构建模块具体用于:若所述多个周边匹配块至少包括待依次遍历的第一周边匹配块、第二周边匹配块和第三周边匹配块,针对待遍历的第一周边匹配块和第二周边匹配块,若所述第一周边匹配块和所述第二周边匹配块中的至少一个不存在可用运动信息,则继续判断所述第二周边匹配块和所述第三周边匹配块是否都存在可用运动信息;
[0371] 若所述第二周边匹配块和所述第三周边匹配块中的至少一个不存在可用运动信息,则将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表,或者,禁止将所述运动信息角度预测模式添加到当前块的运动信息预测模式候选列表。
[0372] 所述构建模块具体用于:若周边匹配块是位于当前块所在图像之外或者周边匹配块是位于当前块所在图像片之外,则确定该周边匹配块不存在可用运动信息;
[0373] 若周边匹配块是未编码块,则确定该周边匹配块不存在可用运动信息;
[0374] 若周边匹配块是帧内块,则确定该周边匹配块不存在可用运动信息;
[0375] 若周边匹配块是帧间已编码块,则确定该周边匹配块存在可用运动信息。
[0376] 所述装置还包括:填充模块,用于在所述装置应用于编码端时,在构建当前块的运动信息预测模式候选列表之后,若所述运动信息预测模式候选列表中存在运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充;在所述装置应用于编码端时,从所述运动信息预测模式候选列表中选择所述当前块的目标运动信息预测模式后,若所述目标运动信息预测模式为运动信息角度预测模式,则对所述当前块的周边块中不可用的运动信息进行填充。
[0377] 所述填充模块具体用于:对所述当前块的周边块,按照从当前块的左边周边块到上边周边块的遍历顺序进行遍历,遍历出首个存在可用运动信息的周边块;若该周边块之前包括不存在可用运动信息的第一周边块,则将该周边块的运动信息填充给所述第一周边块;继续遍历该周边块之后的周边块,若该周边块之后的周边块中包括不存在可用运动信息的第二周边块,则将遍历过的第二周边块的上一个周边块的运动信息填充给所述第二周边块。
[0378] 本申请实施例提供的解码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图11A所示。包括:处理器111和机器可读存储介质112,所述机器可读存储介质112存储有能够被所述处理器111执行的机器可执行指令;所述处理器111用于执行机器可执行指令,以实现本申请上述示例公开的方法。
[0379] 例如,所述处理器111用于执行机器可执行指令,以实现如下步骤:
[0380] 若当前块的目标运动信息预测模式为运动信息角度预测模式,则
[0381] 将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0382] 根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0383] 若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0384] 根据每个子区域的目标预测值,确定所述当前块的预测值。
[0385] 本申请实施例提供的编码端设备,从硬件层面而言,其硬件架构示意图具体可以参见图11B所示。包括:处理器113和机器可读存储介质114,所述机器可读存储介质114存储有能够被所述处理器113执行的机器可执行指令;所述处理器113用于执行机器可执行指令,以实现本申请上述示例公开的方法。
[0386] 例如,所述处理器113用于执行机器可执行指令,以实现如下步骤:
[0387] 若当前块的目标运动信息预测模式为运动信息角度预测模式,则
[0388] 将当前块划分为至少一个子区域;针对当前块的每个子区域,根据所述运动信息角度预测模式的预配置角度指向的多个周边匹配块的运动信息,确定所述子区域的运动信息;
[0389] 根据所述子区域的运动信息,确定所述子区域的运动补偿值;
[0390] 若所述子区域满足使用双向光流的条件,则获取所述子区域的双向光流偏移值;根据所述子区域的运动补偿值中的前向运动补偿值,所述子区域的运动补偿值中的后向运动补偿值和所述子区域的双向光流偏移值,确定所述子区域的目标预测值;
[0391] 根据每个子区域的目标预测值,确定所述当前块的预测值。
[0392] 基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本申请上述示例公开的编解码方法。示例性的,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0393] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0394] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
[0395] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。