视频信号编码/解码方法及其设备转让专利

申请号 : CN202110444343.7

文献号 : CN113395517B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李培根

申请人 : OPPO广东移动通信有限公司

摘要 :

根据本发明的视频解码方法包括以下步骤:生成针对第一块的合并候选列表;选择在所述合并候选列表中包括的合并候选中的任一个;以及基于所选择的合并候选的运动信息来对所述第一块执行运动补偿。此时,基于在所述合并候选列表中包括的空间合并候选和时间合并候选的数量,可以将在帧间运动信息列表中包括的帧间合并候选添加到所述合并候选列表。

权利要求 :

1.一种视频解码方法,其特征在于,所述方法包括:

生成针对第一块的合并候选列表;

选择在所述合并候选列表中包括的合并候选中的一个;以及基于所选择的合并候选的运动信息来对所述第一块执行运动补偿,其中,所述方法还包括:基于在所述合并候选列表中包括的空间合并候选和时间合并候选的数量,将在帧间运动信息列表中包括的帧间合并候选添加到所述合并候选列表;

基于对在所述帧间运动信息列表中包括的一个帧间合并候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,确定是否将该帧间合并候选添加到所述合并候选列表;其中,通过比较索引值小于或等于阈值的至少一个合并候选与所述一个帧间合并候选来执行所述判定。

2.根据权利要求1所述的视频解码方法,其特征在于,所述帧间运动信息列表包括:基于在所述第一块之前解码的块的运动信息来导出的帧间合并候选。

3.根据权利要求1所述的视频解码方法,其特征在于,当所述第一块包括在合并处理区域中时,将基于所述第一块的运动信息导出的临时合并候选添加到临时运动信息列表,在完成了对在所述合并处理区域中包括的所有块的解码时,将所述临时合并候选更新到所述帧间运动信息列表中。

4.根据权利要求1所述的视频解码方法,其特征在于,当确定所述合并候选列表中存在与所述一个帧间合并候选相同的合并候选时,不将所述一个帧间合并候选添加到所述合并候选列表,基于对在所述帧间运动信息列表中包括的另一帧间合并候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,确定是否将所述另一帧间合并候选添加到所述合并候选列表,不执行对所述另一帧间合并候选同与所述一个帧间合并候选相同的合并候选是否相同的判定。

5.根据权利要求1所述的视频解码方法,其特征在于,当所述合并候选列表中存在与所述第一块的运动信息相同的帧间合并候选时,将在所述帧间运动信息列表中分配给所述帧间合并候选的索引更新为最大值。

6.根据权利要求1所述的视频解码方法,其特征在于,通过比较从特定位置的块中导出的合并候选与所述一个帧间合并候选来执行所述判定,其中所述特定位置包括所述第一块的右上相邻块或左下相邻块中的至少一个。

7.根据权利要求1所述的视频解码方法,其特征在于,对所述第一块执行运动补偿包括:使用多个合并候选来对所述第一块进行运动补偿预测。

8.根据权利要求7所述的视频解码方法,其特征在于,所述多个合并候选包括第一合并候选和第二合并候选,所述第一合并候选和所述第二合并候选包括在针对第一块的所述合并候选列表中;

使用所述第一合并候选来生成第一预测块,使用第二合并候选来生成第二预测块,以及基于所述第一预测块和所述第二预测块生成第三预测块。

9.根据权利要求8所述的视频解码方法,其特征在于,基于所述第一预测块和所述第二预测块的加权和运算来生成所述第三预测块。

10.根据权利要求8所述的视频解码方法,其特征在于,通过解析比特流获得所述第一合并候选的索引信息merge_idx和所述第二合并候选的索引信息merge_2nd_idx。

11.根据权利要求10所述的视频解码方法,其中,

当索引信息merge_2nd_idx的值等于或大于索引信息merge_idx的值时,所述第二合并候选的索引的值通过将索引信息merge_2nd_idx的值加1获得。

12.一种视频编码方法,其特征在于,所述方法包括:生成针对第一块的合并候选列表;

选择在所述合并候选列表中包括的合并候选中的一个;以及基于所选择的合并候选的运动信息来对所述第一块执行运动补偿,其中,所述方法还包括:基于在所述合并候选列表中包括的空间合并候选和时间合并候选的数量,将在帧间运动信息列表中包括的帧间合并候选添加到所述合并候选列表;

基于对在所述帧间运动信息列表中包括的一个帧间合并候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,确定是否将该帧间合并候选添加到所述合并候选列表;其中,通过比较索引值小于或等于阈值的至少一个合并候选与所述一个帧间合并候选来执行所述判定。

13.根据权利要求12所述的视频编码方法,其特征在于,所述帧间运动信息列表包括基于在所述第一块之前编码的块的运动信息来导出的帧间合并候选。

14.根据权利要求12所述的视频编码方法,其特征在于,当所述第一块包括在合并处理区域中时,将基于所述第一块的运动信息导出的临时合并候选添加到临时运动信息列表,在完成了对在所述合并处理区域中包括的所有块的编码时,将所述临时合并候选更新在所述帧间运动信息列表中。

15.根据权利要求12所述的视频编码方法,其特征在于,当确定所述合并候选列表中存在与所述一个帧间合并候选相同的合并候选时,不将所述一个帧间合并候选添加到所述合并候选列表,基于对在所述帧间运动信息列表中包括的另一帧间合并候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,确定是否将所述另一帧间合并候选添加到所述合并候选列表,不执行对所述另一帧间合并候选同与所述一个帧间合并候选相同的合并候选是否相同的判定。

16.根据权利要求12所述的视频编码方法,其特征在于,当所述合并候选列表中存在与所述第一块的运动信息相同的帧间合并候选时,将在所述帧间运动信息列表中分配给所述帧间合并候选的索引更新为最大值。

17.根据权利要求12所述的视频编码方法,其特征在于,通过比较从特定位置的块中导出的合并候选与所述一个帧间合并候选来执行所述判定,其中所述特定位置包括所述第一块的右上相邻块或左下相邻块中的至少一个。

18.根据权利要求12所述的视频编码方法,其特征在于,对所述第一块执行运动补偿包括:使用多个合并候选来对所述第一块进行运动补偿预测。

19.根据权利要求18所述的视频编码方法,其特征在于,所述多个合并候选包括第一合并候选和第二合并候选,所述第一合并候选和所述第二合并候选包括在针对第一块的所述合并候选列表中;

使用所述第一合并候选来生成第一预测块,使用第二合并候选来生成第二预测块,以及基于所述第一预测块和所述第二预测块生成第三预测块。

20.根据权利要求19所述的视频编码方法,其特征在于,基于所述第一预测块和所述第二预测块的加权和运算来生成所述第三预测块。

21.根据权利要求19所述的视频编码方法,其特征在于,通过比特流分别用信号发送用于指定所述第一合并候选的索引信息merge_idx和所述第二合并候选的索引信息merge_

2nd_idx的信息。

22.根据权利要求21所述的视频编码方法,其特征在于,当索引信息merge_2nd_idx的值等于或大于索引信息merge_idx的值时,所述第二合并候选的索引的值通过将索引信息merge_2nd_idx的值加1获得。

23.一种视频解码装置,包括:存储器和处理器;其特征在于,所述存储器用于存储能够在所述处理器上运行的计算机程序;

所述处理器用于在运行所述计算机程序时,执行根据权利要求1至11中任一项所述方法的步骤。

24.一种视频编码装置,包括:存储器和处理器;其特征在于,所述存储器用于存储能够在所述处理器上运行的计算机程序;

所述处理器用于在运行所述计算机程序时,执行根据权利要求12至22中任一项所述方法的步骤。

说明书 :

视频信号编码/解码方法及其设备

[0001] 本申请是申请日为2019年9月20日的PCT国际专利申请PCT/KR2019/012292进入中国国家阶段的中国 专利申请号201980059801.6、发明名称为“视频信号编码/解码方法及其设备”的分案申请。
[0002] 相关申请的交叉引用
[0003] 本申请基于申请号为10‑2018‑0114348、申请日为2018年9月21日的韩国专利申请提出,并要求该 韩国专利申请的优先权,该韩国专利申请的全部内容在此引入本申请作为参考。
[0004] 本申请基于申请号为10‑2018‑0114349、申请日为2018年9月21日的韩国专利申请提出,并要求该 韩国专利申请的优先权,该韩国专利申请的全部内容在此引入本申请作为参考。
[0005] 本申请基于申请号为10‑2018‑0148858、申请日为2018年11月27日的韩国专利申请提出,并要求 该韩国专利申请的优先权,该韩国专利申请的全部内容在此引入本申请作为参考。

技术领域

[0006] 本发明涉及视频信号编码/解码方法及其设备。

背景技术

[0007] 随着显示面板越来越大的趋势,逐渐需要画质更高的视频服务。高清视频服务的最大问题在于数据 量大幅增加,为了解决这种问题,正在积极进行用于提高视频压缩率的研究。作为代表性示例,在2009 年,运动图像专家组(Motion Picture Experts Group,MPEG)和国际电信联盟‑电信(International Telecommunication Union‑Telecommunication,ITU‑T)旗下的视频编码专家组(Video Coding Experts Group,VCEG)建立了视频编码联合协作团队JCT‑VC(Joint Collaborative Team on Video Coding)。 JCT‑VC提出了视频压缩标准HEVC(高效视频编码,High Efficiency Video Coding)并于
2013年1月 25日获得批准,其压缩性能约是H.264/AVC的2倍。随着高清视频服务的急剧发展,HEVC的性能也逐 渐暴露出其局限性。

发明内容

[0008] 要解决的技术问题
[0009] 本发明的目的在于提供一种在编码/解码视频信号时导出除了从与当前块相邻的候选块中导出的合并 候选之外的合并候选的方法以及一种用于执行所述方法的设备。
[0010] 本发明的目的在于提供一种在对视频信号进行编码/解码时使用帧间运动信息列表导出合并候选的方 法及一种用于执行所述方法的设备。
[0011] 本发明的目的在于提供一种在编码/解码视频信号时导出在合并处理区域中包括的块的合并候选的方 法以及一种用于执行所述方法的设备。
[0012] 本发明要实现的技术问题不限于以上提及的技术问题,并且本发明所属技术领域的普通技术人员将 通过以下描述清楚理解未提到的其他技术问题。
[0013] 技术方案
[0014] 根据本发明的视频信号解码/编码方法包括以下步骤:生成针对第一块的合并候选列表;选择在所述 合并候选列表中包括的合并候选中的任一个;以及基于所选择的合并候选的运动信息来对所述第一块执 行运动补偿。此时,基于在所述合并候选列表中包括的空间合并候选和时间合并候选的数量,可以将在 帧间运动信息列表中包括的帧间合并候选添加到所述合并候选列表。
[0015] 在根据本发明的视频信号解码/编码方法中,所述帧间运动信息列表可以包括基于在所述第一块之前 解码的块的运动信息来导出的帧间合并候选。此时,所述帧间运动信息列表可以不基于在与所述第一块 相同的合并处理区域中包括的第二块的运动信息进行更新。
[0016] 在根据本发明的视频信号解码/编码方法中,当所述第一块包括在合并处理区域中时,将基于所述第 一块的运动信息导出的临时合并候选添加到临时运动信息列表,并且当完成了对在所述合并处理区域中 包括的所有块的解码时,将所述临时合并候选更新到所述帧间运动信息列表中。
[0017] 在根据本发明的视频信号解码/编码方法中,基于对在所述帧间运动信息列表中包括的第一帧间合并 候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,可以确定是否将所述第一 帧间合并候选添加到所述合并候选列表。
[0018] 在根据本发明的视频信号解码/编码方法中,可以通过比较索引值小于或等于阈值的至少一个合并候 选与所述第一帧间合并候选来执行所述判定。
[0019] 在根据本发明的视频信号解码/编码方法中,当确定存在与所述第一帧间合并候选相同的合并候选时, 不将所述第一帧间合并候选添加到所述合并候选列表,并且基于对在所述帧间运动信息列表中包括的第 一帧间合并候选与在所述合并候选列表中包括的至少一个合并候选是否相同的判定结果,可以确定是否 将所述第二帧间合并候选添加到所述合并候选列表。此时,可以跳过关于所述第二帧间合并候选同与所 述第一帧间合并候选相同的合并候选是否相同的判定。
[0020] 以上对本发明简要概述的特征仅是稍后将描述的本发明的详细说明的示例性实施方式,并不限定本 发明的范围。
[0021] 发明效果
[0022] 根据本发明,可以通过提供一种导出除了从与当前块相邻的候选块中导出的合并候选之外的合并候 选的方法来提高帧间预测效率。
[0023] 根据本发明,可以通过提供使用帧间运动信息列表导出合并候选的方法来提高帧间预测效率。
[0024] 根据本发明,可以通过提供一种导出合并处理区域中包括的块的合并候选的方法来提高帧间预测效 率。
[0025] 在本发明中可获得的效果不限于上述效果,并且本发明所属技术领域的普通技术人员将通过以下描 述清楚理解未提到的其他效果。

附图说明

[0026] 图1是本发明实施例的视频编码器(encoder)的框图。
[0027] 图2是本发明实施例的视频解码器(decoder)的框图。
[0028] 图3是示出本发明实施例的基本编码树单元的图。
[0029] 图4是示出编码块的多种划分类型的图。
[0030] 图5是示出编码树单元的划分模式的图。
[0031] 图6是本发明实施例的帧间预测方法的流程图。
[0032] 图7是示出对象的非线性运动的图。
[0033] 图8是展示了根据本发明实施例的基于仿射运动的帧间预测方法的流程图。
[0034] 图9是示出每个仿射运动模型的仿射种子向量的示例的图。
[0035] 图10是示出在4参数运动模型下的子块的仿射向量的示例的图。
[0036] 图11是在合并模式下导出当前块的运动信息的过程的流程图。
[0037] 图12是示出了用于导出合并候选的候选块的示例的图。
[0038] 图13是示出了参考样本的位置的图。
[0039] 图14是示出了用于导出合并候选的候选块的示例的图。
[0040] 图15是示出了改变参考样本的位置的示例的图。
[0041] 图16是示出改变参考样本的位置的示例的图。
[0042] 图17是展示了帧间运动信息列表的更新状态的流程图。
[0043] 图18是示出了更新帧间合并候选列表的实施例的图。
[0044] 图19是示出了更新已存储的帧间合并候选的索引的示例的图。
[0045] 图20是示出了代表性子块的位置的图。
[0046] 图21是示出了针对每个帧间预测模式生成帧间运动信息列表的示例的图。
[0047] 图22是示出了将长期运动信息列表中包括的帧间合并候选添加到合并候选列表的示例的图。
[0048] 图23是示出了仅对合并候选中的一部分执行冗余检测的示例的图。
[0049] 图24是示出了跳过对特定合并候选的冗余检测的示例的图。
[0050] 图25是示出了将在与当前块相同的合并处理区域中包括的候选块设置为不可用作合并候选的示例 的图。
[0051] 图26是示出了临时运动信息列表的图。
[0052] 图27是示出了将帧间运动信息列表和临时运动信息列表合并的示例的图。
[0053] 图28是根据本发明的实施例的帧内预测方法的流程图。
[0054] 图29是示出了在各参考样本线中包括的参考样本的图。
[0055] 图30是示出了帧内预测模式的图。
[0056] 图31和图32是示出了将参考样本排列成一行的一维阵列的示例的图。
[0057] 图33是示出了角度帧内预测模式与平行于x轴的直线形成的角度的图。
[0058] 图34是示出了在当前块为非正方形的情况下获得预测样本的图。
[0059] 图35是示出了广角帧内预测模式的图。
[0060] 图36是示出了应用PDPC的图。
[0061] 图37是示出了通过考虑候选块的搜索顺序来指定第二合并候选的示例。
[0062] 图38是示出了从非相邻块中导出的合并候选之中选择第一合并候选和第二合并候选的示例。
[0063] 图39是示出了基于候选块的形状来确定应用于预测块的加权值的示例的图。
[0064] 图40是示出了将非仿射合并候选而非仿射合并候选设置为第二合并候选的示例的图。
[0065] 图41是示出了替换合并候选的示例的图。
[0066] 图42是示出了确定块强度的过程的流程图。
[0067] 图43是示出了预定义的滤波器候选的图。

具体实施方式

[0068] 以下,参照附图详细说明本发明的实施例。
[0069] 视频的编码及解码以块为单位来执行。例如,可以对编码块、变换块或预测块执行变换、量化、预 测、环内滤波或重建等编码/解码处理。
[0070] 以下,将要编码/解码的块称为“当前块”。例如,根据当前编码/解码处理步骤,当前块可以表示编码 块、变换块或预测块。
[0071] 另外,本说明书中使用的术语“单元”表示用于执行特定编码/解码过程的基本单元,并且“块”可以被 理解为表示预定大小的样本阵列。除非另有说明,“块”和“单元”可互换使用。例如,在稍后描述的实施 例中,编码块和编码单元可被理解为具有相同的含义。
[0072] 图1是本发明实施例的视频编码器(encoder)的框图。
[0073] 参照图1,视频编码设备100可以包括图像划分部110、预测部120、125、变换部130、量化部135、 重排部160、熵编码部165、逆量化部140、逆变换部145、滤波器部150及存储器155。
[0074] 图1所示的各部件单独示出以便表示视频编码设备中相互不同的特征性功能,并不表示各部件由分 离的硬件或单一软件组件构成。即,对于各部件而言,为了便于说明,以排列各个部件的方式使得各部 件中的至少两个部件合并成一个部件或者使得一个部件划分成多个部件,并由此执行功能,只要不脱离 本发明的本质,这种整合各部件的实施例及使得各部件分离的实施例也属于本发明的权利范围。
[0075] 而且,部分结构要素并不是在本发明中执行本质功能的必要结构要素,而是仅用于提高性能的可选 结构要素。本发明可以通过仅包括除了仅用于提高性能的结构要素之外的实现本发明的本质所需的部件 来实施,并且仅包括除了仅用于提高性能的选择性结构要素之外的必要结构要素的结构也属于本发明的 权利范围。
[0076] 图像划分部110可以将输入的图像划分为至少一个处理单元。在这种情况下,处理单元可以是预测 单元(Prediction Unit:PU),也可以是变换单元(Transform Unit:TU),还可以是编码单元(Coding Unit:CU)。图像划分部110将一个图像划分为多个编码单元、预测单元及变换单元的组合,可以基于 预定标准(例如,成本函数)选择一个编码单元、预测单元及变换单元组合来对图像进行编码。
[0077] 例如,可以将一个图像划分为多个编码单元。为了将图像划分为编码单元,可以使用如四叉树结构 (Quad Tree Structure)的递归树状结构,可以将一个视频或最大编码单元(largest coding unit)作为根 而将编码单元划分为另外的编码单元,所述编码单元可以具有与所划分的编码单元数量一样多的子节点。 根据某些限制不再被划分的编码单元将成为叶节点。即,当假设一个编码单元只能实现正方形划分时, 一个编码单元可最多被划分为4个其他编码单元。
[0078] 以下,在本发明的实施例中,编码单元可意味着执行编码的单元,还可意味着执行解码的单元。
[0079] 可以将一个编码单元内的预测单元分割为相同大小的正方形或矩形中的至少一个等形状,也可以将 一个编码单元内的一个预测单元中分割为具有与另一个预测单元不同的形状和/或大小。
[0080] 当基于编码单元执行帧内预测的预测单元并非是最小编码单元的情况下,可以执行帧内预测,而无 需分割为多个预测单元N×N。
[0081] 预测部120、125可以包括执行帧间预测的帧间预测部120和执行帧内预测的帧内预测部125。可以确 定对于预测单元使用帧间预测还是执行帧内预测,并基于各预测方法确定具体信息(例如,帧内预测模 式、运动向量、参考图像等)。在这种情况下,执行预测的处理单元有可能与确定预测方法及具体内容 的处理单元不同。例如,可以由预测单元确定预测方法和预测模式等,并且可以由变换单元执行预测。 所生成的预测块与原始块之间的残差值(残差块)可以输入到变换部130。并且,可以将用于预测的预 测模式信息、运动向量信息等与残差值一同在熵编码部165中进行编码并传送至解码器。当使用特定的 编码模式时,也可以通过直接对原始块进行编码并传送至解码器,而不通过预测部120、125生成预测块。
[0082] 帧间预测部120可以基于当前图像的上一个图像或下一个图像中的至少一个图像的信息来预测出预 测单元,在一些情况下,还可以基于当前图像内已编码的一部分区域的信息来预测出预测单元。帧间预 测部120可以包括参考图像插值部、运动预测部、运动补偿部。
[0083] 参考图像插值部从存储器155接收参考图像信息,并且可以从参考图像生成整数像素或以下的像素 信息。对于亮度像素而言,为了以1/4像素单元生成整数像素以下的像素信息,可以使用滤波器系数不同  的基于DCT的8阶插值滤波器(DCT‑based Interpolation Filter)。对于色度信号而言,为了以1/8像素单元 生成整数像素以下的像素信息,可以使用滤波器系数不同的基于DCT的4阶插值滤波器(DCT‑based Interpolation Filter)。
[0084] 运动预测部可以基于通过参考图像插值部进行插值的参考图像来执行运动预测。用于计算运动向量 的方法可以使用全搜索块匹配算法(FBMA,Full search‑based Block Matching Algorithm)、三步搜索法 (TSS,Three Step Search)、新三步搜索算法(NTS,New Three‑Step Search Algorithm)等多种方法。 运动向量可以基于插值的像素来具有以1/2像素或1/4像素为单位的运动向量值。可以在运动预测部中通 过采取不同的运动预测方法来预测当前预测单元。运动预测方法可以使用跳过(Skip)方法、合并 (Merge)方法、高级运动向量预测(AMVP,Advanced Motion Vector Prediction)方法、帧内块拷贝 (Intra Block Copy)方法等多种方法。
[0085] 帧内预测部125可以基于作为当前图像内的像素信息的当前块周边的参考像素信息来生成预测单元。 在当前预测单元的相邻块是已执行帧间预测的块并且在参考像素是已执行帧间预测的像素的情况下,可 以将已执行帧间预测的块中所包括的参考像素用作周边的已执行帧内预测的块的参考像素信息。即,在 参考像素不可用的情况下,可以使用可用的参考像素中的至少一个参考像素来代替不可用的参考像素信 息。
[0086] 在帧内预测中,预测模式可以具有按预测方向使用参考像素信息的角度预测模式和在执行预测时不 使用方向信息的非角度模式。用于预测亮度信息的模式和用于预测色度信息的模式可以不同,为了预测 色度信息,可以应用用于预测亮度信息而使用的帧内预测模式信息或所预测到的亮度信号信息。
[0087] 当执行帧内预测时,若预测单元的大小与变换单元的大小相同,则可以基于存在于预测单元的左侧 的像素、存在于左上方的像素、存在于上方的像素来对预测单元执行帧内预测。但是,当执行帧内预测 时,若预测单元的大小与变换单元的大小不同,则可以使用基于变换单元的参考像素来执行帧内预测。 并且,可以应用仅对最小编码单元使用N×N划分的帧内预测。
[0088] 帧内预测方法可以在根据预测模式来对参考像素应用自适应帧内平滑(AIS,Adaptive Intra Smoothing)滤波器之后生成预测块。用于参考像素的自适应帧内平滑滤波器的类型可能不同。为了执行 帧内预测方法,可以从存在于当前预测单元周边的预测单元的帧内预测模式预测出当前预测单元的帧内 预测模式。在使用从周边预测单元预测到的模式信息来预测当前预测单元的预测模式的情况下,若当前 预测单元与周边预测单元的帧内预测模式相同,则可以使用预定的标志信息来传送表示当前预测单元与 周边预测单元的预测模式相同的信息,若当前预测单元与周边预测单元的预测模式不同,则可以通过执 行熵编码来对当前块的预测模式信息进行编码。
[0089] 并且,可以生成将包括作为基于在预测部120、125中所生成的预测单元来执行预测的预测单元与预 测单元的原始块之间的差值的残差值信息的残差块。可以向变换部130输入所生成的残差块。
[0090] 变换部130可以使用诸如离散余弦变换(DCT)、离散正弦变换(DST)或K‑L变换(KLT)等变换 方法对原始块和包括通过预测部120和125生成的预测单元的残差系数信息的残差块进行变换。对于要应 用DCT还是应用DST又或者应用KLT来对残差块进行变换,可以基于用于生成残差块的预测单元的帧内 预测模式信息来确定。
[0091] 量化部135可以对在变换部130中变换为频域的值进行量化。量化系数可以根据块或视频的重要性而 改变。可以向逆量化部140和重排部160提供在量化部135中计算的值。
[0092] 重排部160可以对量化的残差值执行系数值的重排。
[0093] 重排部160可以通过系数扫描(Coefficient Scanning)方法来将2维的块形状系数变更为1维的向量形 式。例如,重排部160可以使用Z字形扫描(Zig‑Zag Scan)方法扫描DC系数乃至高频域的系数,并将其 改变为1维向量形式。根据变换单元的大小及帧内预测模式,代替Z字形扫描,还可以使用沿着列方向扫 描2维块形状系数的垂直扫描和沿着行方向扫描2维块形状系数的水平扫描。即,可以根据变换单元的大 小及帧内预测模式来确定使用Z字形扫描、垂直方向扫描及水平方向扫描中的哪一种扫描方法。
[0094] 熵编码部165可以基于通过重排部160计算出的值来执行熵编码。例如,熵编码可以使用指数哥伦布 码(Exponential Golomb)、上下文自适应变长编码(CAVLC,Context‑Adaptive Variable Length Coding)、上下文自适应二进制算术编码(CABAC,Context‑Adaptive Binary Arithmetic Coding)等的多 种编码方法。
[0095] 熵编码部165可以对源自重排部160及预测部120、125的编码单元的残差值系数信息及块类型信息、 预测模式信息、划分单元信息、预测单元信息及传送单元信息、运动向量信息、参考帧信息、块的插值 信息、滤波信息等多种信息进行编码。
[0096] 可以在熵编码部165对从重排部160输入的编码单元的系数值进行熵编码。
[0097] 逆量化部140及逆变换部145对在量化部135量化的多个值进行逆量化,并对在变换部130变换的值进 行逆变换。在逆量化部140及逆变换部145中生成的残差值可以通过与由预测部120、125中包括的运动预 测部、运动补偿部及帧内预测部所预测的预测单元合并来生成重建块(Reconstructed Block)。
[0098] 滤波器部150可以包括去块滤波器、偏移校正部(offset correction unit)、自适应环路滤波器(ALF, Adaptive Loop Filter)中的至少一个。
[0099] 去块滤波器可移除因块之间的边界而在重建的图像中生成的块失真。为了判断是否执行去块,能够 基于块中所包括的几个列或行所包括的像素来判断是否对当前块应用去块滤波器。在对块应用去块滤波 器的情况下,可以根据所需的去块滤波强度来应用强滤器(Strong Filter)或弱滤器(Weak Filter)。并 且,在使用去块滤波器的过程中,当执行垂直滤波及水平滤波时,可以同步处理水平方向滤波及垂直方 向滤波。
[0100] 偏移校正部可以按像素单位来对执行去块的视频中的与原本视频之间的偏移进行校正。为了对指定 图像进行偏移校正,可以使用如下方法,即,在将视频中所包括的像素划分为预定数量的区域之后,确 定要执行偏移的区域,并对相应区域应用偏移,或者将各个像素的边缘信息考虑在内来应用偏移。
[0101] 自适应环路滤波(ALF,Adaptive Loop Filtering)可以基于对经过滤波的重建图像和原来的视频进 行比较的值来执行。将视频中包括的像素划分成预定的组之后,可以通过确定要用于相应组的一个滤波 器来对每个组有区别地执行滤波。与是否应用自适应环路滤波相关的信息和亮度信号可按编码单元 (Coding Unit,CU)进行传送,所要应用的自适应环路滤波器的形状及滤波器系数可以根据各个块而不 同。并且,还能够应用相同类型(固定类型)的自适应环路滤波器,而不管被应用的块的特性如何。
[0102] 存储器155可以存储通过滤波器部150计算的重建块或图像,可以在执行帧间预测时向预测部120、 125提供所存储的重建块或图像。
[0103] 图2是本发明实施例的视频解码器(decoder)的框图。
[0104] 参照图2,视频解码器200可以包括熵解码部210、重排部215、逆量化部220、逆变换部225、预测部 230、预测部235、滤波器部240、存储器245。
[0105] 在从视频编码器输入视频比特流时,可以按与视频编码器相反的步骤对所输入的比特流进行解码。
[0106] 熵解码部210可按与视频编码器的熵编码部中执行熵编码的步骤相反的步骤进行熵解码。例如,与  视频编码器中执行的方法相对应地,可以应用指数哥伦布码(Exponential Golomb)、上下文自适应变长 编码(CAVLC,Context‑Adaptive Variable Length Coding)、上下文自适应二进制算术编码(CABAC, Context‑Adaptive Binary Arithmetic Coding)等多种方法。
[0107] 熵解码部210可以对与编码器执行的帧内预测及帧间预测相关的信息进行解码。
[0108] 重排部215能够基于在编码部中对借助熵解码部210进行熵解码的比特流进行重排的方法来执行重排。 可以将由1维向量形式表示的多个系数重建成2维的块形状的系数来进行重排。重排部215接收与在编码 部执行的系数扫描相关的信息,可以通过基于在相应编码部执行的扫描顺序来进行逆向扫描的方法执行 重排。
[0109] 逆量化部220可以基于编码器所提供的量化参数和重排的块的系数值来执行逆量化。
[0110] 针对由视频编码器执行的量化结果,逆变换部225可以针对变换部执行的变换即DCT、DST以及KLT 来执行逆变换,即逆DCT、逆DST及逆KLT。逆变换可以基于在视频编码器中确定的传送单元来执行。 在视频解码器的逆变换部225中,可以根据预测方法、当前块的大小及预测方向等多项信息来选择性地 执行变换方法(例如,DCT、DST、KLT)。
[0111] 预测部230、235能够基于由熵解码部210提供的与预测块生成相关的信息和由存储器245提供的之前 解码的块或图像信息来生成预测块。
[0112] 如上所述,当以与视频编码器中的操作相同的方式执行帧内预测时,若预测单元的大小与变换单元 的大小相同,则基于存在于预测单元的左侧的像素、存在于左上方的像素、存在于上方的像素来对预测 单元执行帧内预测,若执行帧内预测时的预测单元的大小与变换单元的大小不同,则可以使用基于变换 单元的参考像素来执行帧内预测。并且,还可以应用仅对最小编码单元使用N×N划分的帧内预测。
[0113] 预测部230、235可以包括预测单元判定部、帧间预测部及帧内预测部。预测单元判定部接收从熵解 码部210输入的预测单元信息、帧内预测方法的预测模式信息、帧间预测方法的运动预测相关信息等多 种信息,根据当前编码单元对预测单元进行分类,可确定预测单元是在执行帧间预测还是在执行帧内预 测。帧间预测部230可以使用由视频编码器提供的当前预测单元的帧间预测所需的信息,并基于当前预 测单元所属的当前图像的上一个图像或下一个图像中的至少一个图像中所包括的信息来对当前预测单元 执行帧间预测。可替代地,还可以基于在当前预测单元所属的当前图像内已重建的一部分区域的信息来 执行帧间预测。
[0114] 为了执行帧间预测,能够基于编码单元来判断相应编码单元中所包括的预测单元的运动预测方法是 跳过模式(Skip Mode)、合并模式(Merge Mode)、高级运动向量预测模式(AMVP Mode)、帧内块 拷贝模式中的哪种模式。
[0115] 帧内预测部235可以基于当前图像内的像素信息来生成预测块。当预测单元为已执行帧内预测的预 测单元时,能够基于由视频编码器提供的预测单元的帧内预测模式信息来执行帧内预测。帧内预测部 235可以包括自适应帧内平滑(AIS,Adaptive Intra Smoothing)滤波器、参考像素插值部、DC滤波器。 自适应帧内平滑滤波器是对当前块的参考像素执行滤波的部分,并且可以根据当前预测单元的预测模式 确定是否应用滤波器。可以使用由视频编码器提供的预测单元的预测模式及自适应帧内平滑滤波器信息 来对当前块的参考像素执行自适应帧内平滑滤波。若当前块的预测模式为不执行自适应帧内平滑滤波的 模式,则可以不应用自适应帧内平滑滤波器。
[0116] 对于参考像素插值部而言,若预测单元的预测模式为基于对参考像素进行插值的像素值来执行帧内 预测的预测单元,则可以通过对参考像素进行插值来生成整数值或以下的像素单位的参考像素。若当前 预测单元的预测模式为以不对参考像素进行插值的方式生成预测块的预测模式,则可不对参考像素进行 插值。若当前块的预测模式为DC模式,则DC滤波器可以通过滤波来生成预测块。
[0117] 可以向滤波器部240提供重建的块或图像。滤波器部240可以包括去块滤波器、偏移校正部、ALF。
[0118] 可以从视频编码器接收与是否对相应块或图像应用去块滤波器相关的信息及与在应用去块滤波器时 应用强滤器还是弱滤器相关的信息。从视频解码器的去块滤波器接收由视频编码器提供的与去块滤波器 相关的信息,并且可以在视频解码器对相应块执行去块滤波。
[0119] 偏移校正部能够基于编码时用于视频的偏移校正的类型及偏移量信息等来对已重建的视频执行偏移 校正。
[0120] 可以基于由编码器提供的与是否应用ALF相关的信息、ALF系数信息等来将ALF应用于编码单元。 这种ALF信息可以通过被包括在特定的参数集中来提供。
[0121] 存储器245存储已重建的图像或块,使得所述图像或块可用作参考图像或参考块,并且可以向输出 部提供已重建的图像。
[0122] 图3是示出本发明实施例的基本编码树单元的图。
[0123] 可以将大小最大的编码块定义为编码树块。一个图像可被划分为多个编码树单元(Coding Tree Unit, CTU)。编码树单元是大小最大的编码单元,还可被称为最大编码单元(LCU,Largest Coding Unit)。 图3示出了将一个图像划分为多个编码树单元的示例。
[0124] 编码树单元的大小可以以图像级或序列级定义。为此,可以通过图像参数集或序列参数集来用信号 发送表示编码树单元的大小的信息。
[0125] 例如,序列内整个图像的编码树单元的大小可以设置为128×128。可替代地,可以将图像级的 128×128或256×256中的任一个确定为编码树单元的大小。例如,可以将第一图像中编码树单元的大小设 置为128×128,并且可以将第二图像中编码树单元的大小设置为256×256。
[0126] 可以通过划分编码树单元来生成编码块。编码块表示用于进行编码/解码处理的基本单元。例如,可 按不同编码块执行预测或者变换,或者可按不同编码块确定预测编码模式。其中,预测编码模式表示生 成预测图像的方法。例如,预测编码模式可以包括画面内预测(Intra Prediction,帧内预测)、画面间预 测(Inter Prediction,帧间预测)、当前图像参考(Current Picture Referencing,CPR,或帧内块拷贝 (Intra Block Copy,IBC))或组合预测(Combined Prediction)。针对编码块,可以使用帧内预测、帧 间预测、当前图像参考或组合预测中的至少一种预测编码模式来生成与编码块相关的预测块。
[0127] 可以通过比特流用信号发送表示当前块的预测编码模式的信息。例如,所述信息可以是指示预测编 码模式为帧内模式还是帧间模式的1比特标志。可仅在当前块的预测编码模式被确定为帧间模式的情况 下使用当前图像参考或组合预测。
[0128] 当前图像参考用于将当前图像设置为参考图像,并从当前图像内的已编码/解码的区域获得当前块的 预测块。其中,当前图像意味着包括当前块的图像。可以通过比特流用信号发送表示是否对当前块应用 当前图像参考的信息。例如,所述信息可以是1比特标志。当所述标志为真时,可以将当前块的预测编 码模式确定为当前图像参考,当所述标志为假时,可以将当前块的预测模式确定为帧间预测。
[0129] 可替代地,可以基于参考图像索引确定当前块的预测编码模式。例如,当参考图像索引指向当前图 像时,可以将当前块的预测编码模式确定为当前图像参考。当参考图像索引指向其他图像而不是当前图 像时,可以将当前块的预测编码模式确定为帧间预测。即,当前图像参考是使用当前图像内已编码/解码 的区域的信息的预测方法,并且帧间预测是使用已编码/解码的其他图像的信息的预测方法。
[0130] 组合预测表示由帧内预测、帧间预测及当前图像参考中的两种以上组合而成的编码模式。例如,在 应用组合预测的情况下,可以基于帧内预测、帧间预测或当前图像参考中的一种来生成第一预测块,并 且可以基于另一种来生成第二预测块。若生成第一预测块和第二预测块,则可以通过第一预测块和第二 预测块的平均运算或加权和运算来生成最终预测块。可以通过比特流用信号发送表示是否应用组合预测 的信息。所述信息可以是1比特标志。
[0131] 图4是示出编码块的多种划分类型的图。
[0132] 可以基于四叉树划分、二叉树划分或三叉树划分将编码块划分为多个编码块。还可以基于四叉树划 分、二叉树划分或三叉树划分将所划分的编码块再次划分为多个编码块。
[0133] 四叉树划分是指将当前块划分为4个块的划分技术。作为四叉树划分的结果,可以将当前块划分为4 个正方形分区(参考图4中的“SPLIT_QT”)。
[0134] 二叉树划分是指将当前块划分为2个块的划分技术。可以将沿着垂直方向(即,使用横穿当前块的 垂直线)将当前块划分为两个块的过程称为垂直方向二叉树划分,可以将沿着水平方向(即,使用横穿 当前块的水平线)将当前块划分为两个块的过程称为水平方向二叉树划分。可以在经过二叉树划分后将 当前块划分为2个非正方形分区。图4中的“SPLIT_BT_VER”表示垂直方向二叉树划分结果,并且图4中的 “SPLIT_BT_HOR”表示水平方向二叉树划分结果。
[0135] 三叉树划分是指将当前块划分为3个块的划分技术。可以将沿着垂直方向(即,使用横穿当前块的 两个垂直线)将当前块划分为三个块的过程称为垂直方向三叉树划分,可以将沿着水平方向(即,使用 横穿当前块的两个水平线)将当前块划分为三个块的过程称为水平方向三叉树划分。可以在经过三叉树 划分后将当前块划分为3个非正方形分区。在这种情况下,位于当前块的中心的分区的宽度/高度可以是 其他分区的宽度/高度的2倍。图4中的“SPLIT_TT_VER”表示垂直方向三叉树划分结果,并且图4中的 “SPLIT_TT_HOR”表示水平方向三叉树划分结果。
[0136] 可以将编码树单元的划分次数定义为划分深度(Partitioning Depth)。可以以序列或图像级确定编码 树单元的最大划分深度。由此,编码树单元的最大划分深度可根据不同序列或图像而变得不同。
[0137] 可替代地,可单独确定对于多个划分技术的每一个的最大划分深度。例如,允许四叉树划分的最大 划分深度可以与允许二叉树划分和/或三叉树划分的最大划分深度不同。
[0138] 编码器可以通过比特流用信号发送表示当前块的划分形状或划分深度中的至少一个的信息。解码器 可以基于从比特流中解析的信息来确定编码树单元的划分形状及划分深度。
[0139] 图5是示出编码树单元的划分模式的图。
[0140] 可以将使用四叉树划分、二叉树划分和/或三叉树划分等划分技术来划分编码块的过程称为多叉树划 分(Multi Tree Partitioning)。
[0141] 可以将通过对编码块应用多叉树划分而生成的编码块称为多个下游编码块。当编码块的划分深度为 k时,多个下游编码块的划分深度设置为k+1。
[0142] 另一方面,针对划分深度为k+1的多个编码块,可以将划分深度为k的编码块称为上游编码块。
[0143] 可以基于上游编码块的划分形状或相邻编码块的划分类型中的至少一个来确定当前编码块的划分类 型。其中,相邻编码块与当前编码块相邻,其可以包括当前编码块的上相邻块、左相邻块或与左上角相 邻的相邻块中的至少一个。其中,划分类型可以包括是否划分四叉树、是否划分二叉树、二叉树划分方 向、是否划分三叉树或三叉树划分方向中的至少一个。
[0144] 为了确定编码块的划分形状,可以通过比特流用信号发送表示编码块是否被划分的信息。所述信息 为1比特标志“split_cu_flag”,当所述标志为真时,表示通过多叉树划分技术来划分编码块。
[0145] 当“split_cu_flag”为真时,可以通过比特流用信号发送表示编码块是否被四叉树划分的信息。所述信 息为1比特标志“split_qt_flag”,当所述标志为真时,编码块可被划分为4个块。
[0146] 例如,在图5所示的示例中图示了随着编码树单元被四叉树划分来生成划分深度为1的4个编码块。 并且,图示了对作为四叉树划分的结果而生成的4个编码块中的第一个编码块及第四个编码块再次应用 四叉树划分。最终,可以生成划分深度为2的4个编码块。
[0147] 并且,可以通过对划分深度为2的编码块再次应用四叉树划分来生成划分深度为3的编码块。
[0148] 在未对编码块应用四叉树划分时,可以通过考虑编码块的大小、编码块是否位于图像边界处、最大 划分深度或相邻块的划分形状中的至少一个来确定对所述编码块执行二叉树划分还是三叉树划分。当确 定对所述编码块执行二叉树划分或三叉树划分时,可以通过比特流用信号发送表示划分方向的信息。所 述信息可以是1比特标志“mtt_split_cu_vertical_flag”。可以基于所述标志来确定划分方向是垂直方向还是 水平方向。另外,可以通过比特流用信号发送表示对所述编码块应用二叉树划分或三叉树划分中的哪一 个的信息。所述信息可以是1比特标志“mtt_split_cu_binary_flag”。可以基于所述标志来确定对所述编码 块应用二叉树划分还是三叉树划分。
[0149] 例如,在图5所示的示例中图示了对划分深度为1的编码块应用垂直方向二叉树划分,对作为所述划 分结果而生成的编码块中的左侧编码块应用垂直方向三叉树划分,对右侧编码块应用垂直方向二叉树划 分。
[0150] 帧间预测是指使用前一图像的信息来预测当前块的预测编码模式。例如,可以将前一图像内与当前 块相同位置的块(以下称为同位置块,Collocated block)设置为当前块的预测块。以下,将基于位置与 当前块相同的块生成的预测块称为同位置预测块(Collocated Prediction Block)。
[0151] 另一方面,若存在于前一图像中的对象已经移动至当前图像中的其他位置,则可以使用对象的运动 来有效预测当前块。例如,若可以通过比较前一图像和当前图像来知晓对象的移动方向及大小,则可以 考虑对象的运动信息来生成当前块的预测块(或预测图像)。以下,可以将使用运动信息生成的预测块 称为运动预测块。
[0152] 可以通过从当前块减去预测块来生成残差块(residual block)。在这种情况下,当存在对象的运动 时,可以通过使用运动预测块来代替同位置预测块,由此减少残差块的能量,从而可提高残差块的压缩 性能。
[0153] 如上所述,可以将使用运动信息生成预测块的过程称为运动补偿预测。在大部分的帧间预测中,可 以基于运动补偿预测来生成预测块。
[0154] 运动信息可以包括运动向量、参考图像索引、预测方向或双向加权值索引中的至少一个。运动向量 表示对象的移动方向及大小。参考图像索引指定参考图像列表中包括的多个参考图像中的当前块的参考 图像。预测方向是指单向L0预测、单向L1预测或双向预测(L0预测及L1预测)中的任一个。可以根据当 前块的预测方向来使用L0方向的运动信息或L1方向的运动信息中的至少一个。双向加权值索引指定用于 L0预测块的加权值及应用于L1预测块的加权值。
[0155] 图6是本发明实施例的帧间预测方法的流程图。
[0156] 参考图6,帧间预测方法包括如下的步骤:确定当前块的帧间预测模式(S601);根据所确定的帧 间预测模式来获得当前块的运动信息(S602);以及基于所获得的运动信息来对当前块执行运动补偿预 测(S603)。
[0157] 其中,帧间预测模式表示用于确定当前块的运动信息的多种技术,可以包括使用平移(Translation) 运动信息的帧间预测模式和使用仿射(Affine)运动信息的帧间预测模式。例如,使用平移运动信息的 帧间预测模式可以包括合并模式及高级运动向量预测模式,使用仿射运动信息的帧间预测模式可以包括 仿射合并模式及仿射运动向量预测模式。根据帧间预测模式,可以基于与当前块相邻的相邻块或从比特 流中解析的信息来确定当前块的运动信息。
[0158] 以下,详细说明使用仿射运动信息的帧间预测方法。
[0159] 图7是示出了对象的非线性运动的图。
[0160] 视频内对象的运动有可能是非线性运动。例如,如图7所示的示例,可能发生摄像机放大(Zoom‑ in)、缩小(Zoom‑out)、旋转(Rotation)或仿射变换等对象的非线性运动。当发生对象的非线性运动 时,无法通过平移运动向量来有效表示对象的运动。由此,在发生对象的非线性运动的部分,可以通过 使用仿射运动来代替平移运动,由此提高编码效率。
[0161] 图8是展示了根据本发明实施例的基于仿射运动的帧间预测方法的流程图。
[0162] 可以基于从比特流解析的信息来确定是否对当前块应用基于仿射运动的帧间预测技术。具体地,可 以基于表示是否对当前块应用仿射合并模式的标志或表示是否对当前块应用仿射运动向量预测模式的标 志中的至少一个来确定是否对当前块应用基于仿射运动的帧间预测技术。
[0163] 当将基于仿射运动的帧间预测技术应用于当前块时,可以确定当前块的仿射运动模型(S801)。仿 射运动模型可以由6参数仿射运动模型或4参数仿射运动模型中的至少一个来确定。6参数仿射运动模型 使用6个参数来表示仿射运动,4参数仿射运动模型使用4个参数来表示仿射运动。
[0164] 公式1为使用6个参数表示仿射运动的情况。仿射运动表示与通过仿射种子向量确定的预定区域的平 移运动。
[0165] 【公式1】
[0166] vx=ax‑by+e
[0167] vy=cx+dy+f
[0168] 当使用6个参数表示仿射运动时,可以表示复杂的运动,但是对各个参数进行编码时所需的比特数 增加,这会降低编码效率。由此,还可以使用4个参数表示仿射运动。公式2为使用4个参数表示仿射运 动的情况。
[0169] 【公式2】
[0170] vx=ax‑by+e
[0171] vy=bx+ay+f
[0172] 可以对用于确定当前块的仿射运动模型的信息进行编码并且可以通过比特流用信号发送。例如,所 述信息可以是1比特标志“affine_type_flag”。所述标志的值为0表示应用4参数仿射运动模型,所述标志的 值为1表示应用6参数仿射运动模型。所述标志可以以片(slice)、瓦片(tile)或块(例如,编码块或编 码树单元)为单位进行编码。当以片级用信号发送标志时,可以对所述片中所属的所有块应用以所述片 级确定的仿射运动模型。
[0173] 可替代地,可以基于当前块的仿射帧间预测模式来确定当前块的仿射运动模型。例如,当应用仿射 合并模式时,可以将当前块的仿射运动模型确定为4参数运动模型。另一方面,当应用仿射运动向量预 测模式时,可以对用于确定当前块的仿射运动模型的信息进行编码并且可以通过比特流用信号发送。例 如,在对当前块应用仿射运动向量预测模式时,可以基于1比特标志“affine_type_flag”来确定当前块的仿 射运动模型。
[0174] 接下来,可以导出当前块的仿射种子向量(S802)。当选择4参数仿射运动模型时,可以导出当前 块的两个控制点上的运动向量。另一方面,当选择6参数仿射运动模型时,可以导出当前块的三个控制 点上的运动向量。可以将控制点上的运动向量称为仿射种子向量。控制点可以包括当前块的左上角、右 上角或左下角中的至少一个。
[0175] 图9是示出每个仿射运动模型的仿射种子向量的示例的图。
[0176] 在4参数仿射运动模型中,可以导出与左上角、右上角或左下角中的两个相关的仿射种子向量。例 如,如图9(a)部分所示的示例,当选择4参数仿射运动模型时,可以通过使用与当前块的左上角(例如, 左上样本(x0,y0))相关的仿射种子向量sv0和与当前块的右上角(例如,右上样本(x1,y1))相关 的仿射种子向量sv1来导出仿射向量。还可以使用与左下角相关的仿射种子向量来代替与左上角相关的仿 射种子向量,或者还可以使用与左下角相关的仿射种子向量来代替与右上角相关的仿射种子向量。
[0177] 在6参数仿射运动模型中,可以导出与左上角、右上角及左下角相关的仿射种子向量。例如,如图9 (b)部分所示的示例,当选择6参数仿射运动模型时,可以通过使用与当前块的左上角(例如,左上样 本(x0,y0))相关的仿射种子向量sv0、与当前块的右上角(例如,右上样本(x1,y1))相关的仿射 种子向量sv1及与当前块的左上角(例如,左上样本(x2,y2))相关的仿射种子向量sv2来导出仿射向量。
[0178] 在稍后所述的实施例中,在4参数仿射运动模型下,将左上控制点及右上控制点的仿射种子向量分 别称为第一仿射种子向量及第二仿射种子向量。在稍后所述的使用第一仿射种子向量及第二仿射种子向 量的实施例中,第一仿射种子向量及第二仿射种子向量中的至少一个可替换为左下控制点的仿射种子向 量(第三仿射种子向量)或右下控制点的仿射种子向量(第四仿射种子向量)。
[0179] 并且,在6参数仿射运动模型下,将左上控制点、右上控制点及左下控制点的仿射种子向量分别称 为第一仿射种子向量、第二仿射种子向量及第三仿射种子向量。在稍后所述的使用第一仿射种子向量、 第二仿射种子向量及第三仿射种子向量的实施例中,第一仿射种子向量、第二仿射种子向量及第三仿射 种子向量中的至少一个可替换为右下控制点的仿射种子向量(第四仿射种子向量)。
[0180] 可以使用仿射种子向量来按不同子块导出仿射向量(S803)。其中,仿射向量表示基于仿射种子向 量导出的平移运动向量。可以将子块的仿射向量称为仿射子块运动向量或子块运动向量。
[0181] 图10是示出在4参数运动模型下的子块的仿射向量的示例的图。
[0182] 可以基于控制点的位置、子块的位置及仿射种子向量而导出子块的仿射向量。例如,公式3表示导 出仿射子块向量的示例。
[0183] 【公式3】
[0184]
[0185]
[0186] 在所述公式3中,(x,y)表示子块的位置。其中,子块的位置表示子块中所包括的参考样本的位 置。参考样本可以是位于子块的左上角的样本,或者是x轴或y轴坐标中的至少一个位于中心位置的样本。 (x0,y0)表示第一控制点的位置,并且(sv0x,sv0y)表示第一仿射种子向量。另外,(x1,y1)表示第 二控制点的位置,并且(sv1x,sv1y)表示第二仿射种子向量。
[0187] 当第一控制点及第二控制点分别与当前块的左上角及右上角相对应时,可以将x1‑x0设置为与当前块 的宽度相同的值。
[0188] 之后,可以使用各个子块的仿射向量来对各个子块执行运动补偿预测(S804)。在执行运动补偿预 测后,可以生成与各个子块相关的预测块。可以将子块的预测块设置为当前块的预测块。
[0189] 接下来,详细说明使用平移运动信息的帧间预测方法。
[0190] 可从当前块的其他块的运动信息中导出当前块的运动信息。其中,其他块可以是比起当前块更优先 地以帧间预测进行编码/解码的块。可以将当前块的运动信息设置为与其他块的运动信息相同的情况定义 为合并模式。并且,可以将其他块的运动向量设置为当前块的运动向量的预测值情况定义为运动向量预 测模式。
[0191] 图11是在合并模式下导出当前块的运动信息的过程的流程图。
[0192] 可以导出当前块的合并候选(merge candidate)(S1101)。当前块的合并候选可从在当前块之前以 帧间预测进行编码/解码的块导出。
[0193] 图12是示出了用于导出合并候选的候选块的示例的图。
[0194] 候选块可以包括包含与当前块相邻的样本的相邻块或包含不与当前块相邻的样本的非相邻块中的至 少一者。在下文中,将用于确定候选块的样本指定为参考样本。另外,将与当前块相邻的参考样本称为 相邻参考样本,将不与当前块相邻的参考样本称为非相邻参考样本。
[0195] 相邻参考样本可以包括在当前块的最左侧列的相邻列中、或当前块的最上方行的相邻行中。例如, 若当前块的左上样本的坐标为(0,0),则包括(‑1,H‑1)位置上的参考样本的块、包括(W‑1,‑1) 位置上的参考样本的块、包括(W,‑1)位置上的参考样本的块、包括(‑1,H)位置上的参考样本的块 或包括(‑1,‑1)位置上的参考样本的块中的至少一个可用作候选块。参考附图,可以将索引为0至4的 相邻块用作候选块。
[0196] 非相邻参考样本表示与当前块相邻的参考样本之间的x轴距离或y轴距离中的至少一者具有预定义的 值的样本。例如,可以将包含与左侧参考样本之间的x轴距离为预定义的值的参考样本的块、包含与上 方参考样本之间的y轴距离为预定义的值的非相邻样本的块、或包含与左上参考样本之间的x轴距离及y 轴距离为预定义的值的非相邻样本的块中的至少一者用作候选块。预定义的值可以是4、8、12、16等整 数。参考附图,可以将索引为5至26的块中的至少一个用作候选块。
[0197] 可以将与相邻参考样本不在同一垂直线、水平线或对角线上的样本设置为非相邻参考样本。
[0198] 图13是示出了参考样本的位置的图。
[0199] 如图13所示的示例,可以将上非相邻参考样本的x坐标与上相邻参考样本的x坐标设置为不同。例如, 当上相邻参考样本的位置为(W‑1,‑1)时,可以将沿y轴与上相邻参考样本相隔N的上非相邻参考样本 的位置设置为((W/2)‑1,‑1‑N),并且可以将沿y轴与上相邻参考样本相隔2N的上非相邻参考样本的 位置设置为(0,‑1‑2N)。即,非相邻参考样本的位置可以基于相邻参考样本的位置和与相邻参考样本 之间的距离来确定。
[0200] 在下文中,将候选块中的包含相邻参考样本的候选块称为相邻块,包含非相邻参考样本的块称为非 相邻块。
[0201] 在当前块与候选块之间的距离大于或等于阈值时,可以将所述候选块设置为不可用作合并候选。所 述阈值可以基于编码树单元的大小来确定。例如,可以将所述阈值设置为编码树单元的高度 (ctu_height)、或在编码树单元的高度加上或减去偏移值而得的值(例如,ctu_height±N)。偏移值N 为编码器及解码器中预定义的值,可以设置为4、8、16、32或ctu_height。
[0202] 在当前块的y轴坐标与候选块中包括的样本的y轴坐标之间的差值大于阈值时,可以将候选块确定为 不可用作合并候选。
[0203] 可替代地,可以将不属于与当前块相同的编码树单元的候选块设置为不可用作合并候选。例如,在 参考样本超出当前块所属的编码树单元的上边界时,可以将包括参考样本的候选块设置为不可用作合并 候选。
[0204] 如果,在当前块的上边界与编码树单元的上边界相邻时,多个候选块被确定为不可用作合并候选, 由此会降低当前块的编码/解码效率。为了解除如上问题,可以设置候选块,以使位于当前块的上方的候 选块的数量多于位于当前块的左侧的候选块的数量。
[0205] 图14是示出了用于导出合并候选的候选块的示例的图。
[0206] 如图14所示的示例,可以将属于当前块的上方N个块列的上方块和属于当前块的左侧M个块列的左 侧块设置为候选块。此时,通过将M设置为大于N,可以将左侧候选块的数量设置为大于上方候选块的 数量。
[0207] 例如,可以将当前块内参考样本的y轴坐标与可用作候选块的上方块的y轴坐标之间的差值设置为不 超过当前块的高度的N倍。另外,可以将当前块内参考样本的x轴坐标和可用作候选块的左侧块的x轴坐 标之间的差值设置为不超过当前块的宽度的M倍。
[0208] 例如,如图14所示的示例中,示出了将属于当前块的上方两个块列的块和属于当前块的左侧五个块 列的块设置为候选块。
[0209] 作为另一例,当候选块不属于与当前块相同的编码树单元时,可以代替所述候选块而利用属于与当 前块相同的编码树单元的块、或包含与所述编码树单元的边界相邻的参考样本的块来导出合并候选。
[0210] 图15是示出了改变参考样本的位置的示例的图。
[0211] 当参考样本包括在与当前块不同的编码树单元,并且所述参考样本与所述编码树单元的边界不相邻 时,可以代替所述参考样本而利用与所述编码树单元的边界相邻的参考样本来确定候选块参考样本。
[0212] 例如,在图15(a)和图15(b)所示的示例中,在当前块的上边界与编码树单元的上边界彼此接触 时,当前块上方的参考样本属于与当前块不同的编码树单元。可以用与编码树单元的上边界相邻的样本 来替换属于与当前块不同的编码树单元的参考样本中不与编码树单元的上边界相邻的参考样本。
[0213] 例如,如图15(a)的示例所示,位置6处的参考样本被替换为位于编码树单元的上边界的位置6'处 的样本,如图15(b)的示例所示,位置15处的参考样本被替换为位于编码树单元的上边界的位置15'处 的样本。此时,替换样本的y坐标可以改变为编码树单元的相邻位置,替换样本的x坐标可以设置为与参 考样本相同。例如,6'位置的样本可以具有与6位置的样本相同的x坐标,15'位置的样本可以具有与15位 置的样本相同的x坐标。
[0214] 可替代地,可以将在参考样本的x坐标中加上或减去偏移值而得到的值设置为替换样本的x坐标。例 如,当位于当前块的上方的相邻参考样本和非相邻参考样本的x坐标相同时,可以将在参考样本的x坐标 中加上或减去偏移值而得到的值设置为替换样本的x坐标。这是为了防止用于替换非相邻参考样本的替 换样本与其他非相邻参考样本或相邻参考样本处于相同的位置。
[0215] 图16是示出改变参考样本的位置的示例的图。
[0216] 在用位于编码树单元的边界的样本来替换包括在与当前块不同的编码树单元中且与编码树单元的边 界不相邻的参考样本时,可以将在参考样本的x坐标中加上或减去偏移值而得到的值设置为替换样本的x 坐标。
[0217] 例如,在图16所示的示例中,位置6处的参考样本和位置15处的参考样本可以被分别替换为具有同 与编码树单元的上边界相邻的行相同的y坐标的、位置6'处的样本和位置15'处的样本。此时,6'位置的样 本的x坐标可以设置为与6位置的参考样本的x坐标的差值为W/2的值,15'位置的样本的x坐标可以设置为 与15位置的参考样本的x坐标的差值为W‑1的值。
[0218] 不同于图15和图16所示的示例,位于当前块的最上方行的上方的行的y坐标或编码树单元的上边界 的y坐标还可以被设置为替换样本的y坐标。
[0219] 虽然未图示,但是还可以基于编码树单元的左边界来确定代替参考样本的样本。例如,当参考样本 不包括在与当前块相同的编码树单元中,并且不与编码树单元的左边界相邻时,可以将所述参考样本替 换为与编码树单元的左边界相邻的样本。此时,替换样本可以具有与参考样本相同的y坐标,或者可以 具有在参考样本的y坐标中加上或差值偏移值而获取的y坐标。
[0220] 之后,可以将包含替换样本的块设置为候选块,并基于所述候选块导出当前块的合并候选。
[0221] 还可从与当前块不同的图像中所包括的时间相邻块导出合并候选。例如,可从同位置图像中所包括 的同位置块导出合并候选。
[0222] 可以将合并候选的运动信息设置为与候选块的运动信息相同。例如,可以将候选块的运动向量、参 考图像索引、预测方向或双向加权值索引中的至少一个设置为合并候选的运动信息。
[0223] 可以生成包括合并候选的合并候选列表(S1102)。所述合并候选可以分类为从与当前块相邻的相 邻块中导出的相邻合并候选、以及从非相邻块中导出的非相邻合并候选。
[0224] 可按照预定顺序分配合并候选列表内的多个合并候选的索引。例如,分配给相邻合并候选的索引可 以具有比分配给非相邻合并候选的索引更小的值。可替代地,基于图12或图14所示的每个块的索引,可 以将索引分配给每个合并候选。
[0225] 当合并候选列表中包括多个合并候选时,可以选择所述多个合并候选中的至少一个(S1103)。此 时,可以通过比特流用信号发送指示当前块的运动信息是否是从相邻合并候选中导出的信息。所述信息 可以是1比特标志。例如,可以通过比特流用信号发送指示当前块的运动信息是否是从相邻合并候选中 导出的语法元素isAdjancentMergeFlag。当语法元素isAdjancentMergeFlag的值为1时,当前块的运动信息 可以基于相邻合并候选来导出。另一方面,当语法元素isAdjancentMergeFlag的值为0时,当前块的运动 信息可以基于非相邻合并候选来导出。
[0226] 表1示出了包括语法元素isAdjancentMergeFlag的语法表。
[0227] 【表1】
[0228]
[0229] 可以通过比特流用信号发送用于指定多个合并候选中的任一个的信息。例如,可以通过比特流用信 号发送指示合并候选列表中包括的合并候选中的任一个索引的信息。
[0230] 当isAdjacentMergeflag为1时,可以用信号发送用于确定相邻合并候选中的任一个的语法元素 merge_idx。可以将语法元素merge_idx的最大值设置为与相邻合并候选的数量的差值为1的值。
[0231] 当isAdjacentMergeflag为0时,可以用信号发送用于确定非相邻合并候选中的任一个的语法元素 NA_merge_idx。语法元素NA_merge_idx指示将非相邻合并候选的索引与相邻合并候选的数量求差而获得 的值。解码器可以通过将根据NA_merge_idx确定的索引加上相邻合并候选的数量来选择非相邻合并候选。
[0232] 在合并候选列表所包括的合并候选的数量小于阈值时,可以将帧间运动信息列表中所包括的合并候 选添加到合并候选列表中。其中,阈值可以是从合并候选列表可以包括的最大合并候选的数量或最大合 并候选的数量减去偏移量的值。偏移量可以是1或2等整数。帧间运动信息列表可以包括基于在当前块之 前进行编码/解码的块来导出的合并候选。
[0233] 帧间运动信息列表包括从于当前图像内基帧间预测进行编码/解码的块导出的合并候选。例如,帧间 运动信息列表中包括的合并候选的运动信息可以设置为与基于帧间预测进行编码/解码的块的运动信息相 同。其中,运动信息可以包括运动向量、参考图像索引、预测方向或双向加权值索引中的至少一个。
[0234] 为了便于说明,将帧间运动信息列表中包括的合并候选称为帧间合并候选。
[0235] 可以在编码器及解码器中预定义帧间运动信息列表可以包括的最大合并候选的数量。例如,帧间运 动信息列表可以包括的最大合并候选的数量可以是1、2、3、4、5、6、7、8或更大(例如,16)。
[0236] 可替代地,可以通过比特流用信号发送表示帧间运动信息列表的最大合并候选的数量的信息。所述 信息以序列级、图像级或片级用信号发送。
[0237] 可替代地,可以根据图像的大小、片的大小或编码树单元的大小来确定帧间运动信息列表的最大合 并候选数量。
[0238] 帧间运动信息列表可以以图像、片、瓦片、砖块、编码树单元或编码树单元行(line)(行或列) 为单位实现初始化。例如,在片初始化时,帧间运动信息列表也被初始化,帧间运动信息列表有可能不 包括任何的合并候选。
[0239] 可替代地,还可以通过比特流用信号发送表示是否初始化帧间运动信息列表的信息。所述信息可以 以片级、瓦片级、砖块级或块级用信号发送。在所述信息指示对帧间运动信息列表进行初始化之前,可 以使用已配置的帧间运动信息列表。
[0240] 可替代地,可以通过图像参数集或片头用信号发送与帧间合并候选相关的信息。即使片被初始化, 帧间运动信息列表也可以包括初始帧间合并候选。由此,可以将帧间合并候选用于片内首次被编码/解码 的块。
[0241] 根据编码/解码顺序,对块进行编码/解码,并且可以根据编码/解码顺序来将基于帧间预测进行编码/ 解码的多个块依次设置为帧间合并候选。
[0242] 图17是展示了帧间运动信息列表的更新状态的流程图。
[0243] 在对当前块执行帧间预测时(S1701),可以基于当前块来导出帧间合并候选(S1702)。帧间合并 候选的运动信息可以设置为与当前块的运动信息相同。
[0244] 在帧间运动信息列表为空时(S1703),可以将基于当前块导出的帧间合并候选添加到帧间运动信 息列表(S1704)。
[0245] 在帧间运动信息列表已经包括所述帧间合并候选时(S1703),可以对当前块的运动信息(或基于 当前块导出的帧间合并候选)进行冗余检测(S1705)。冗余检测用于确定帧间运动信息列表中已存储 的帧间合并候选的运动信息和当前块的运动信息是否相同。可以将帧间运动信息列表中已存储的所有帧 间合并候选作为对象执行冗余检测。可替代地,可以将帧间运动信息列表中已存储的帧间合并候选中的 索引为阈值以上或阈值以下的帧间合并候选作为对象可执行冗余检测。
[0246] 在不包括具有与当前块的运动信息相同的运动信息的帧间预测合并候选时,可以将基于当前块导出 的帧间合并候选添加到帧间运动信息列表(S1708)。可以基于帧间合并候选的运动信息(例如,运动 向量和/或参考图像索引等)是否相同来确定帧间合并候选是否相同。
[0247] 此时,在帧间运动信息列表中已经存储了最大数量的帧间合并候选时(S1706),删除最早的帧间 合并候选(S1707),并且可以将基于当前块导出的帧间合并候选添加到帧间运动信息列表(S1708)。
[0248] 可以根据各个索引来识别多个帧间合并候选。在将从当前块导出的帧间合并候选添加到帧间运动信 息列表时,向所述帧间合并候选分配最低的索引(例如,0),可以将已存储的帧间合并候选的索引分 别增加1。在这种情况下,当帧间运动信息列表中已存储最大数量的帧间合并候选时,移除索引最大的 帧间合并候选。
[0249] 可替代地,在将从当前块导出的帧间合并候选添加到帧间运动信息列表时,可向所述帧间合并候选 分配最大的索引。例如,在帧间运动信息列表中已存储的帧间合并候选的数量小于最大值时,可向所述 帧间合并候选分配值与已存储的帧间合并候选的数量相同的索引。可替代地,在帧间运动信息列表中已 存储的帧间合并候选的数量等于最大值时,可向所述帧间合并候选分配从最大值减去1的索引。并且, 移除索引最小的帧间合并候选,并将剩余的已存储的多个帧间合并候选的索引将分别减小1。
[0250] 图18是示出了更新帧间合并候选表的实施例的图。
[0251] 假设将从当前块导出的帧间合并候选添加到帧间合并候选列表,并且向所述帧间合并候选分配最大 的索引。并且,假设帧间合并候选列表中已存储了最大数量的帧间合并候选。
[0252] 在将从当前块中导出的帧间合并候选HmvpCand[n+1]添加到帧间合并候选列表HmvpCandList时,从 已存储的帧间合并候选中删除索引最小的帧间合并候选HmvpCand[0],并分别从多个剩余帧间合并候选 的索引减小1。另外,可以将从当前块中导出的帧间合并候选HmvpCand[n+1]的索引设置为最大值(在图 18所示的示例中为n)。
[0253] 在已存储与基于当前块导出的帧间合并候选相同的帧间合并候选时(S1705),可以不将基于当前 块导出的帧间合并候选添加到帧间运动信息列表(S1709)。
[0254] 可替代地,随着将基于当前块导出的帧间合并候选添加到帧间运动信息列表,还可移除与所述帧间 合并候选相同的已存储的帧间合并候选。在这种情况下,会引起已存储的帧间合并候选的索引被更新的 效果。
[0255] 图19是示出了更新已存储的帧间合并候选的索引的示例的图。
[0256] 与基于当前块导出的帧间合并候选mvCand相同的已存储的帧间合并候选的索引为hIdx时,删除所述 已存储的帧间合并候选,可以将索引大于hIdx的帧间合并候选的索引各减小1。例如,在图19所示的示例 中,示出了将与mvCand相同的HmvpCand[2]从帧间运动信息列表HvmpCandList中删除,并且 HmvpCand[3]至HmvpCand[n]的索引各减少1。
[0257] 并且,将基于当前块导出的帧间合并候选mvCand可添加到帧间运动信息列表的最后。
[0258] 可替代地,可以更新被分配给与基于当前块导出的帧间合并候选相同的已存储的帧间合并候选的索 引。例如,已存储的帧间合并候选的索引可更改为最小值或最大值。
[0259] 可以将预定区域中包括的块的运动信息设置为不能添加到帧间运动信息列表中。例如,基于合并处 理区域中包括的块的运动信息导出的帧间合并候选不能添加到帧间运动信息列表。由于未定义合并处理 区域中包括的块的编码/解码顺序,因此将这些块中任一个的运动信息用于其他块的帧间预测是不合适的。 由此,基于合并处理区域中包括的块导出的帧间合并候选有可能不添加到帧间运动信息列表。
[0260] 借助子块单元执行运动补偿预测时,当前块中包括的多个子块可以基于代表性子块的运动信息来导 出帧间合并候选。例如,针对当前块使用子块合并候选时,可以基于子块中的代表性子块的运动信息来 导出帧间合并候选。
[0261] 子块的运动向量可按以下顺序导出。首先,可以选择当前块的合并候选列表所包括的合并候选中的 任一个,并且可以基于选择的合并候选的运动向量来导出初始移位向量(shVector)。并且,通过将编 码块内各个子块的参考样本(例如,左上样本或中间位置样本)的位置(xSb,ySb)加上初始移位向量, 可以导出参考样本的位置为(xColSb,yColSb)的移位子块。以下公式4示出了用于导出移位子块的公 式。
[0262] 【公式4】
[0263] (xColSb,yColSb)=(xSb+shVector[0]>>4,ySb+shVector[1]>>4)[0264] 接下来,将与包括(xColSb,yColSb)的子块中心位置相对应的同位置块的运动向量设置为包括 (xSb,ySb)的子块的运动向量。
[0265] 代表性子块可意味着包括当前块的左上样本或中心样本的子块。
[0266] 图20是示出了代表性子块的位置的图。
[0267] 图20(a)示出了将位于当前块的左上方的子块设置为代表性子块的示例,图20(b)示出了将位于 当前块的中心的子块设置为代表性子块的示例。当以子块为单位执行运动补偿预测时,基于包括当前块 的左上样本的子块或包括当前块的中心样本的子块的运动向量,可以导出当前块的帧间合并候选。
[0268] 基于当前块的帧间预测模式,还可以确定是否将当前块用作帧间合并候选。例如,可以将基于仿射 运动模型进行编码/解码的块设置为不可用作帧间合并候选。由此,即使当前块通过帧间预测进行编码/ 解码,当前块的帧间预测模式为仿射预测模式时,也不会基于当前块更新帧间预测运动信息列表。
[0269] 可替代地,还可以基于仿射运动模型进行编码/解码的块中包括的子块中至少一个子块向量来导出帧 间合并候选。例如,可以使用位于当前块左上方的子块、位于中心的子块或位于右上方的子块来导出帧 间合并候选。可替代地,还可以将多个子块的子块向量的平均值设置为帧间合并候选的运动向量。
[0270] 可替代地,还可以基于仿射运动模型进行编码/解码的块的仿射种子向量的平均值来导出帧间合并候 选。例如,将当前块的第一仿射种子向量、第二仿射种子向量或第三仿射种子向量中的至少一个的平均 值设置为帧间合并候选的运动向量。
[0271] 可替代地,可以针对不同的帧间预测模式来配置帧间运动信息列表。例如,可定义用于通过帧内块 拷贝进行编码/解码的块的帧间运动信息列表、用于基于平移运动模型进行编码/解码的块的帧间运动信 息列表或用于基于仿射运动模型进行编码/解码的块的帧间运动信息列表中的至少一个。根据当前块的帧 间预测模式,可选择多个帧间运动信息列表中的任一个。
[0272] 图21是示出了针对每个帧间预测模式生成帧间运动信息列表的示例的图。
[0273] 当基于非仿射运动模型对块进行编码/解码时,可以将基于所述块导出的帧间合并候选mvCand添加 到帧间非仿射运动信息列表HmvpCandList。另一方面,当基于仿射运动模型对块进行编码/解码时,可以 将基于所述块导出的帧间合并候选mvAfCand添加到帧间仿射运动信息列表HmvpAfCandList。
[0274] 块的仿射种子向量可以存储在从基于仿射运动模型进行编码/解码的块导出的帧间合并候选中。由此, 可以将所述帧间合并候选用作用于导出当前块的仿射种子向量的合并候选。
[0275] 除了描述的帧间运动信息列表以外,还可定义另外的帧间运动信息列表。除了所描述的帧间运动信 息列表(以下称为第一帧间运动信息列表)以外,还可定义长期运动信息列表(以下称为第二帧间运动 信息列表)。其中,长期运动信息列表包括长期合并候选。
[0276] 当第一帧间运动信息列表及第二帧间运动信息列表均为空状态时,首先可以将帧间合并候选添加到 第二帧间运动信息列表。在第二帧间运动信息列表中可用的帧间合并候选的数量达到最大数量之后,才 能在第一帧间运动信息列表添加帧间合并候选。
[0277] 可替代地,还可以将一个帧间合并候选添加到第二帧间运动信息列表及第一帧间运动信息列表两者。
[0278] 在这种情况下,可能不再更新已完成配置的第二帧间运动信息列表。可替代地,当解码区域为片的 预定比率以上时,可更新第二帧间运动信息列表。可替代地,可以每N个编码树单元行更新第二帧间运 动信息列表。
[0279] 另一方面,每当产生以帧间预测进行编码/解码的块时,可以更新第一帧间运动信息列表。但是,还 可以将添加到第二帧间运动信息列表的帧间合并候选设置为不用于更新第一帧间运动信息列表。
[0280] 可以通过比特流用信号发送用于选择第一帧间运动信息列表或第二帧间运动信息列表中的任一个的 信息。当合并候选列表所包括的合并候选的数量小于阈值时,可以将所述信息指示的帧间运动信息列表 中包括的合并候选添加到合并候选列表。
[0281] 可替代地,还可以基于当前块的大小、形状、帧间预测模式、双向预测与否、运动向量细化与否或 三角形划分与否来选择帧间运动信息列表。
[0282] 可替代地,即使在添加了第一帧间运动信息列表中包括的帧间合并候选时,合并候选列表所包括的 合并候选的数量还是小于最大合并数量,则可以将第二帧间运动信息列表中包括的帧间合并候选添加到 合并候选列表。
[0283] 图22是示出了将长期运动信息列表中包括的帧间合并候选添加到合并候选列表的示例的图。
[0284] 当合并候选列表所包括的合并候选的数量小于最大数量时,可以将第一帧间运动信息列表 HmvpCandList中包括的帧间合并候选添加到合并候选列表。即使在将第一帧间运动信息列表中包括的帧 间合并候选添加到合并候选列表时,合并候选列表所包括的合并候选的数量还是小于最大数量,则可以 将长期运动信息列表HmvpLTCandList中包括的帧间合并候选添加到合并候选列表。
[0285] 表2示出了将在长期运动信息列表中包括的帧间合并候选添加到合并候选列表的过程。
[0286] 【表2】
[0287]
[0288] 可以将帧间合并候选设置为除了运动信息以外还包括附加信息。例如,可以在帧间合并候选中添加 存储块的大小、形状或块的分区信息。在构造当前块的合并候选列表时,在帧间合并候选中仅使用大小、 形状或分区信息与当前块相同或类似的帧间合并候选,或者可以将大小、形状或分区信息与当前块相同 或类似的帧间合并候选优先添加到合并候选列表。
[0289] 可替代地,可以针对不同的块大小、形状或分区信息生成帧间运动信息列表。可以使用多个帧间运 动信息列表中与当前块的形状、大小或分区信息相对应的帧间运动信息列表来生成当前块的合并候选列 表。
[0290] 当前块的合并候选列表所包括的合并候选的数量小于阈值时,可以将帧间运动信息列表中包括的帧 间合并候选添加到合并候选列表。所述添加过程按索引的升序或降序执行。例如,可以将索引最大的帧 间合并候选中添加到合并候选列表。
[0291] 在要将帧间运动信息列表中包括的帧间合并候选添加到合并候选列表时,可以执行帧间合并候选与 已存储于合并候选列表的多个合并候选之间的冗余检测。
[0292] 例如,表3示出了将帧间合并候选添加到合并候选列表的过程。
[0293] 【表3】
[0294]
[0295] 还可以仅对帧间运动信息列表所包括的帧间合并候选中的一些执行冗余检测。例如,可仅对索引为 阈值以上或阈值以下的帧间合并候选执行冗余检测。可替代地,可仅对索引最大的N个合并候选或索引 最小的N个合并候选执行冗余检测。
[0296] 可替代地,可仅对合并候选列表中已存储的合并候选中的一些执行冗余检测。例如,可仅对索引为 阈值以上或阈值以下的合并候选或从特定位置的块中导出的合并候选执行冗余检测。其中,特定位置可 以包括当前块的左相邻块、上相邻块、右上相邻块或左下相邻块中的至少一个。
[0297] 图23是示出了仅对合并候选中的一部分执行冗余检测的示例的图。
[0298] 在要将帧间合并候选HmvpCand[j]添加到合并候选列表时,可以执行帧间合并候选与索引为最大的2 个合并候选mergeCandList[NumMerge‑2]和mergeCandList[NumMerge‑1]之间的冗余检测。其中, NumMerge可以表示可用的空间合并候选及时间合并候选的数量。
[0299] 与图中所示的示例不同的是,在要将帧间合并候选HmvpCand[j]添加到合并候选列表时,还可以执 行帧间合并候选与索引为最小的2个合并候选之间的冗余检测。例如,可确认mergeCandList[0]及 mergeCandList[1]是否与HmvpCand[j]相同。可替代地,可以仅对从特定位置导出的合并候选执行冗余检 测。例如,可以仅对从位于当前块左侧的相邻块导出的合并候选或从位于当前块上方的相邻块导出的合 并候选中的至少一个执行冗余检测。当合并候选列表中不存在从特定位置导出的合并候选时,可以在不 进行冗余检测的情况下将帧间合并候选添加到合并候选列表。
[0300] 在发现与第一帧间合并候选相同的合并候选的情况下,在对第二帧间合并候选执行冗余检测时,可 跳过与所述第一帧间合并候选相同的合并候选的冗余检测。
[0301] 图24是示出了跳过对特定合并候选的冗余检测的示例的图。
[0302] 在要将索引为i的帧间合并候选HmvpCand[i]添加到合并候选列表时,可执行所述帧间合并候选与合 并候选列表中已存储的合并候选之间的冗余检测。在这种情况下,在发现与帧间合并候选HmvpCand[i] 相同的合并候选mergeCandList[j]的情况下,帧间合并候选HmvpCand[i]将不添加到合并候选列表,并且  可执行索引为i‑1的帧间合并候选HmvpCand[i‑1]与合并候选之间的冗余检测。在这种情况下,可跳过帧 间合并候选HmvpCand[i‑1]与合并候选mergeCandList[j]之间的冗余检测。
[0303] 例如,在图24所示的示例中,确定HmvpCand[i]与mergeCandList[2]相同。由此,HmvpCand[i]不添加 到合并候选列表,可以对HmvpCand[i‑1]执行冗余检测。在这种情况下,可跳过HvmpCand[i‑1]与 mergeCandList[2]之间的冗余检测。
[0304] 当前块的合并候选列表所包括的合并候选的数量小于阈值时,除了帧间合并候选以外,还可以包括 成对合并候选或零合并候选中的至少一个。成对合并候选是指将两个以上合并候选的运动向量的平均值 作为运动向量的合并候选,零合并候选是指运动向量为0的合并候选。
[0305] 当前块的合并候选列表可按以下顺序添加合并候选。
[0306] 空间合并候选‑时间合并候选‑帧间合并候选‑(帧间仿射合并候选)‑成对合并候选‑零合并候选
[0307] 空间合并候选是指从相邻块或非相邻块中的至少一个导出的合并候选,时间合并候选是指从前一参 考图像导出的合并候选。帧间仿射合并候选列表示从以仿射运动模型进行编码/解码的块中导出的帧间合 并候选。
[0308] 在高级运动向量预测模式中也可以使用帧间运动信息列表。例如,当前块的运动向量预测候选列表 所包括的运动向量预测候选的数量小于阈值时,将帧间运动信息列表中包括的帧间合并候选设置为与当 前块相关的运动向量预测候选。具体地,将帧间合并候选的运动向量设置为运动向量预测候选。
[0309] 若选择当前块的运动向量预测候选列表所包括的运动向量预测候选中的任一个,则将选择的候选设 置为当前块的运动向量预测值。之后,对当前块的运动向量残差值进行解码之后,可以通过将运动向量 预测值和运动向量残差值相加来获得当前块的运动向量。
[0310] 当前块的运动向量预测候选列表可按以下顺序构造。
[0311] 空间运动向量预测候选‑时间运动向量预测候选‑帧间解码区域合并候选‑(帧间解码区域仿射合并候 选)‑零运动向量预测候选
[0312] 空间运动向量预测候选是指从相邻块或非相邻块中的至少一个导出的运动向量预测候选,时间运动 向量预测候选是指从前一参考图像中导出的运动向量预测候选。帧间仿射合并候选列表示从以仿射运动 模型进行编码/解码的块中导出的帧间运动向量预测候选。零运动向量预测候选表示运动向量的值为0的 候选。
[0313] 可以指定大小大于编码块的合并处理区域。合并处理区域中包括的编码块不依次编码/解码,而也可 以并行处理。其中,不依次编码/解码是指未指定编码/解码顺序。由此,可以独立地处理合并处理区域 中包括的块的编码/解码过程。可替代地,合并处理区域中包括的块可以共享合并候选。其中,合并候选 可以基于合并处理区域来导出。
[0314] 根据所述特征,还可以将合并处理区域称为并行处理区域、合并共享区域(Shared Merge Region, SMR)或合并估计区域(MER,Merge Estimation Region)。
[0315] 当前块的合并候选可以基于编码块来导出。然而,在当前块被包括在大小大于当前块的合并处理区 域中时,可以将被包括在与当前块相同的合并处理区域中的候选块设置为不可用作合并候选。
[0316] 图25是示出了将在与当前块相同的合并处理区域中包括的候选块设置为不可用作合并候选的示例的 图。
[0317] 在图25的左侧图所示的示例中,在对CU5进行编码/解码时,可以将包括与CU5相邻的参考样本的块 设置为候选块。此时,可以将在与CU5相同的合并处理区域中包括的候选块X3和X4设置为不可用作CU5 的合并候选。另一方面,可以将在与CU5相同的合并处理区域中不包括的候选块X0、X1和X2设置为可 用作合并候选。
[0318] 在图25的右侧图所示的示例中,在对CU8进行编码/解码时,可以将包括与CU8相邻的参考样本的块 设置为候选块。此时,可以将在与CU8相同的合并处理区域中包括的候选块X6、X7和X8设置为不可用 作合并候选。另一方面,可以将在与CU8相同的并行合并区域中不包括的候选块X5和X9设置为可用作合 并候选。
[0319] 合并处理区域可以是正方形或非正方形。可以通过比特流来用信号发送用于确定合并处理区域的信 息。所述信息可以包括示出了指示合并处理区域的形状的信息和指示合并处理区域的大小的信息中的至 少一者。在合并处理区域为非正方形时,可以通过比特流用信号发送指示合并处理区域的大小的信息、 指示合并处理区域的宽度和/或高度的信息以及指示合并处理区域的宽度与高度之比的信息中的至少一者。
[0320] 合并处理区域的大小可以基于通过比特流用信号发送的信息、图像分辨率、片(slice)的大小或瓦 片(tile)大小中的至少一者来确定。
[0321] 在对合并处理区域中包括的块执行运动补偿预测时,可以将基于已经执行信息列表过运动补偿预测 的块的运动信息导出的帧间合并候选添加到帧间运动。
[0322] 然而,在将从合并处理区域中包括的块中导出的帧间合并候选添加到帧间运动信息列表的情况下, 当对在合并处理区域中的、实际上会在所述块被编码/解码之后被编码/解码的另外块进行编码/解码时, 可能存在使用从所述块中导出的帧间合并候选的情况。即,虽然在对合并处理区域中包括的块进行编码/ 解码时应当排除块之间的依赖性,但是可能存在使用在合并处理区域中包括的另外块的运动信息来执行 运动预测补偿的情况。
为了解决所述问题,即使对合并处理区域中包括的块进行的编码/解码完成了,也 可以不将编码/解码后的块的运动信息添加到帧间运动信息列表。
[0323] 可替代地,在对合并处理区域中包括的块执行运动补偿预测时,可以按预定义的顺序将从所述块中 导出的帧间合并候选添加到帧间运动信息列表。在此,预定义的顺序可以根据在合并处理区域或编码树 单元中编码块的扫描顺序来确定。所述扫描顺序可以是光栅扫描、水平扫描、垂直扫描或Z字形扫描中 的至少一种。可替代地,预定义的顺序可以基于具有各块的运动信息或相同运动信息的块的数量来确定。
[0324] 可替代地,可以将包含单向运动信息的帧间合并候选在包含双向运动信息的帧间合并候选之前添加 到帧间区域合并行表。与此相反,还可以将包含双向运动信息的帧间合并候选在包含单向运动信息的帧 间合并候选之前添加到帧间合并候选列表。
[0325] 可替代地,可以根据合并处理区域或编码树单元内的高使用频率或低使用频率的顺序来将帧间合并 候选添加到帧间运动信息列表。
[0326] 在合并处理区域中包括当前块,并且当前块的合并候选列表中包括的合并候选的数量小于最大数量 时,可以将帧间运动信息列表中包括的帧间合并候选添加到合并候选列表。此时,可以设置为不将从与 当前块相同的合并处理区域中包括的块中导出的帧间合并候选添加到当前块的合并候选列表。
[0327] 可替代地,在合并处理区域中包括当前块时,可以设置为不使用在帧间运动信息列表中包括的帧间 合并候选。即,即使在当前块的合并候选列表中包括的合并候选的数量小于最大数量,也可以不将在帧 间运动信息列表中包括的帧间合并候选添加到合并候选列表。
[0328] 可以配置针对合并处理区域或编码树单元的帧间运动信息列表。所述帧间运动信息列表起到临时存 储在合并处理区域中包括的块的运动信息的作用。为了区分一般帧间运动信息列表和针对合并处理区域 或编码树单元的帧间运动信息列表,将针对合并处理区域或编码树单元的帧间运动信息列表称为临时运 动信息列表。另外,将存储在临时运动信息列表中的帧间合并候选称为临时合并候选。
[0329] 图26是示出了临时运动信息列表的图。
[0330] 可以配置用于编码树单元或合并处理区域的临时运动信息列表。在已经对编码树单元或合并处理区 域中包括的当前块执行过运动补偿预测时,可以不将所述块的运动信息添加到帧间预测运动信息列表 HmvpCandList。反而,可以将从所述块中导出的临时合并候选添加到临时运动信息列表 HmvpMERCandList。即,可以不将添加到临时运动信息列表的临时合并候选添加到帧间运动信息列表。 由此,帧间运动信息列表可能不包括基于在编码树单元或合并处理区域中包括的块的运动信息导出的帧 间合并候选。
[0331] 可以将临时运动信息列表可以包括的合并候选的最大数量设置为与帧间运动信息列表可以包括的合 并候选的最大数量相同。可替代地,临时运动信息列表可以包括的合并候选的最大数量可以根据编码树 单元或合并处理区域的大小来确定。
[0332] 可以将在编码树单元或合并处理区域中包括的当前块设置为不使用针对所述编码树单元或所述合并 处理区域的临时运动信息列表。即,在当前块的合并候选列表中包括的合并候选的数量小于阈值时,将 帧间运动信息列表中包括的帧间合并候选添加到合并候选列表,并且可以不将在临时运动信息列表中包 括的临时合并候选添加到合并候选列表。由此,可以不将在与当前块相同的编码树单元或合并处理区域 中包括的另外块的运动信息用于对当前块的运动补偿预测。
[0333] 在完成了对编码树单元或合并处理区域中包括的所有块的编码/解码时,可以将帧间运动信息列表和 临时运动信息列表合并。
[0334] 图27是示出了将帧间运动信息列表和临时运动信息列表合并的示例的图。
[0335] 在完成了对在编码树单元或合并处理区域中包括的所有块的编码/解码时,如图27的示例所示,可以 用临时运动信息列表中包括的临时合并候选来更新帧间运动信息列表。
[0336] 此时,可以以插入到临时运动信息列表中的顺序(即,以索引值的升序或降序)将在临时运动信息 列表中包括的临时合并候选添加到帧间运动信息列表。
[0337] 作为另一示例,可以以预定义的顺序将在临时运动信息列表中包括的临时合并候选添加到帧间运动 信息列表。
[0338] 在此,预定义的顺序可以根据在合并处理区域或编码树单元中编码块的扫描顺序来确定。所述扫描 顺序可以是光栅扫描、水平扫描、垂直扫描或Z字形扫描中的至少一种。可替代地,预定义的顺序可以 基于具有各块的运动信息或相同运动信息的块的数量来确定。
[0339] 可替代地,可以在包括双向运动信息的临时合并候选之前将包括单向运动信息的临时合并候选添加 到帧间合并列表。另一方面,可以在包括单向运动信息的临时合并候选之前将包括双向运动信息的临时 合并候选添加到帧间合并候选列表。
[0340] 可替代地,可以根据合并处理区域或编码树单元内的高使用频率或低使用频率的顺序来将临时合并 候选添加到帧间运动信息列表。
[0341] 当将临时运动信息列表中包括的临时合并候选添加到帧间运动信息列表时,可以对临时合并候选执 行冗余检测。例如,当已在帧间运动信息列表中存储了与在临时运动信息列表中包括的临时合并候选相 同的帧间合并候选时,可以不将临时合并候选添加到帧间运动信息列表。此时,可以对在帧间运动信息 列表中包括的一些帧间合并候选执行冗余检测。例如,可以对索引大于或等于阈值的帧间预测合并候选 执行冗余检测。例如,当临时合并候选与索引大于或等于预定义的值的帧间合并候选相同时,可以不将 临时合并候选添加到帧间运动信息列表。
[0342] 帧内预测是使用当前块周边已编码/解码的重建样本来预测当前块。在这种情况下,当前块的帧内预 测可以使用应用环内滤波器之前的重建样本。
[0343] 帧内预测技术包括基于矩阵(Matrix)的帧内预测及考虑与周边重建样本的方向性的一般帧内预测。 可以通过比特流用信号发送指示当前块的帧内预测技术的信息。所述信息可以是1比特标志。可替代地, 基于当前块的位置、大小、形状或相邻块的帧内预测技术中的至少一个,可以确定当前块的帧内预测技 术。例如,当当前块跨过图像边界存在时,当前块设置为不应用基于矩阵的帧内预测。
[0344] 基于矩阵的帧内预测是基于编码器及解码器中已存储的矩阵与当前块周边的重建样本之间的矩阵乘 法来获得当前块的预测块的方法。可以通过比特流用信号发送用于指定已存储的多个矩阵中的任一个的 信息。解码器可以基于所述信息及当前块的大小来确定用于当前块的帧内预测的矩阵。
[0345] 一般帧内预测是基于非角度帧内预测模式或角度帧内预测模式来获得与当前块相关的预测块的方法。 以下,参考附图更详细地描述基于一般帧内预测执行帧内预测的过程。
[0346] 图28是根据本发明的实施例的帧内预测方法的流程图。
[0347] 可以确定当前块的参考样本线(S2801)。参考样本线(reference sample line)是指从当前块的上方 和/或左侧偏离第K个行或列中包括的参考样本的集合。可以从当前块周边已编码/解码的重建样本导出参 考样本。
[0348] 可以通过比特流用信号发送标识多个参考样本线中的当前块的参考样本线的索引信息。多个参考样 本线可以包括在当前块上方和/或左侧第一行/列、第二行/列、第三行/列或第四行/列中的至少一个。表4 示出了分配给每个参考样本线的索引。在表4中,假设第一行/列、第二行/列和第四行/列被用作参考样本 线候选。
[0349] 【表4】
[0350]索引 参考样本线
0 第一参考样本线
1 第二参考样本线
2 第四参考样本线
[0351] 还可以基于当前块的位置、大小、形状或相邻块的预测编码模式中的至少一个确定当前块的参考样 本线。例如,在当前块与图像、瓦片、片或编码树单元的边界相接时,可以将第一参考样本线确定为当 前块的参考样本线。
[0352] 参考样本线可以包括位于当前块上方的上方参考样本及位于当前块左侧的左侧参考样本。可以从当 前块周边的重建样本导出上方参考样本及左侧参考样本。所述重建样本可以处于应用环内滤波器之前的 状态。
[0353] 图29是示出了在各参考样本线中包括的参考样本的图。
[0354] 根据当前块的帧内预测模式,可以利用属于参考样本线的参考样本中的至少一个来获取预测样本。
[0355] 接着,可以确定当前块的帧内预测模式(S2802)。对于当前块的帧内预测模式而言,可以将非角 度帧内预测模式或角度帧内预测模式中的至少一个确定为当前块的帧内预测模式。非角度帧内预测模式 包括平面(Planer)及DC,并且角度帧内预测模式包括从左下对角线方向至右上对角线方向的33个或65 个模式。
[0356] 图30是示出了帧内预测模式的图。
[0357] 图30(a)示出了35个帧内预测模式,图30(b)示出了67个帧内预测模式。
[0358] 还可以定义相比于图30所示的数量更多或更少数量的帧内预测模式。
[0359] 可以基于与当前块相邻的相邻块的帧内预测模式来设置最可能模式(MPM,Most Probable Mode)。 其中,相邻块可以包括与当前块的左侧相邻的左相邻块及与当前块的上方相邻的上相邻块。在当前块的 左上样本的坐标为(0,0)时,左相邻块可以包括(‑1,0)、(‑1,H‑1)或(‑1,(H‑1)/2)位置的 样本。其中,H表示当前块的高度。上相邻块可以包括(0,‑
1)、(W‑1,‑1)或((W‑1)/2,‑1)位 置的样本。其中,W表示当前块的宽度。
[0360] 当以一般帧内预测对相邻块进行编码时,可以基于相邻块的帧内预测模式导出MPM。具体地,可以 将左相邻块的帧内预测模式设置为变量candIntraPredModeA,将上方相邻块的帧内预测模式设置为变量 candIntraPredModeB。
[0361] 此时,当相邻块不可用时(例如,当相邻块尚未编码/解码或者相邻块的位置偏离图像边界时),在 相邻块以基于矩阵的帧内预测进行编码的情况下、相邻块以帧间预测进行编码的情况下或相邻块包括在 与当前块不同的编码树单元中的情况下,可以将基于相邻块的帧内预测模式导出的变量 candIntraPredModeX(其中,X为A或B)设置为默认模式。其中,默认模式可以包括平面模式、DC模式、 垂直方向模式或水平方向模式中的至少一种。
[0362] 可替代地,当以基于矩阵的帧内预测对相邻块进行编码时,可以将与用于指定矩阵中的任一个的索 引值对应的帧内预测模式设置为candIntraPredModeX。为此,可以将指示用于指定矩阵的索引值和帧内 预测模式的映射关系的查找表预先存储在编码器及解码器中。
[0363] 可以基于变量candIntraPredModeA及变量candIntraPredModeB来导出MPM。可以在编码器及解码器 中预定义MPM列表所包括的MPM的数量。例如,MPM的数量可以是3个、4个、5个或6个。可替代地, 可以通过比特流用信号发送表示MPM的数量的信息。可替代地,可以基于相邻块的预测编码模式、当前 块的大小或形状中的至少一个来确定MPM的数量。
[0364] 在稍后描述的实施例中,假设MPM的数量为3个,这3个MPM将被称为MPM[0]、MPM[1]及MPM[2]。 当MPM的数量多于3个时,MPM可以包括稍后描述的实施例中说明的3个MPM。
[0365] 当candIntraPredA与candIntraPredB相同且candIntraPredA为平面模式或DC模式时,可以分别将 MPM[0]及MPM[1]设置为平面模式及DC模式。可以将MPM[2]设置为垂直帧内预测模式、水平帧内预测 模式或对角线帧内预测模式。对角线帧内预测模式可以是左下对角线帧内预测模式、左上帧内预测模式 或右上帧内预测模式。
[0366] 当candIntraPredA与candIntraPredB相同且candIntraPredA为帧内预测模式时,可以将MPM[0]与candIntraPredA设置为相同。可以将MPM[1]及MPM[2]设置为与candIntraPredA类似的帧内预测模式。与 candIntraPredA类似的帧内预测模式可以是与candIntraPredA的索引差值为±1或±2的帧内预测模式。可以 利用模运算(%)和偏移量来导出与candIntraPredA类似的帧内预测模式。
[0367] 当candIntraPredA与candIntraPredB不同时,可以将MPM[0]与candIntraPredA设置为相同,MPM[1]与 candIntraPredB为相同。此时,当candIntraPredA和candIntraPredB均为非角度帧内预测模式时,可以将 MPM[2]设置为垂直帧内预测模式、水平帧内预测模式或对角线帧内预测模式。可替代地,当 candIntraPredA和candIntraPredB中的至少一个为角度帧内预测模式时,可以将MPM[2]设置为对具有平面、 DC、或candIntraPredA或candIntraPredB中的更大值加上或减去偏移值来导出的帧内预测模式。其中,偏 移值可以是1或2。
[0368] 可以生成包括多个MPM的MPM列表,并且可以通过比特流用信号发送表示与当前块的帧内预测模 式相同的MPM是否包括在MPM列表中的信息。所述信息为1比特标志,可称为MPM标志。当MPM标志 指示与当前块相同的MPM包括在MPM列表中时,可以通过比特流用信号发送标识MPM之一的索引信息。 可以将由所述索引信息指定的MPM设置为当前块的帧内预测模式。当MPM标志指示与当前块相同的 MPM不包括在MPM列表中时,可以通过比特流用信号发送指示除了MPM以外的残差帧内预测模式中的 任一个的残差模式信息。残差模式信息表示当向除了MPM以外的残差帧内预测模式重新分配索引时与当 前块的帧内预测模式相对应的索引值。解码器可以按升序排列MPM,并且通过将残差模式信息与MPM 进行比较来确定当前块的帧内预测模式。例如,当残差模式信息与MPM相同或者更小时,可以通过将残 差模式信息加上1来导出当前块的帧内预测模式。
[0369] 代替将默认模式设置为MPM的操作,可以通过比特流用信号发送表示当前块的帧内预测模式是否为 默认模式的信息。所述信息为1比特标志,并且所述标志可称为默认模式标志。可仅当MPM标志指示与 当前块相同的MPM包括在MPM列表中时才用信号发送默认模式标志。如上所述,默认模式可以包括平 面、DC、垂直方向模式或水平方向模式中的至少一个。例如,当平面设置为默认模式时,默认模式标志 可指示当前块的帧内预测模式是否为平面。当默认模式标志指示当前块的帧内预测模式并不是默认模式 时,可以将借助索引信息指示的MPM之一设置为当前块的帧内预测模式。
[0370] 当将多个帧内预测模式设置为默认模式时,可以进一步用信号发送指示默认模式中的任一个的索引 信息。可以将当前块的帧内预测模式设置为所述索引信息所指的默认模式。
[0371] 当当前块的参考样本线的索引不是0时,设置为不使用默认模式。由此,当参考样本线的索引不是0 时,不用信号发送默认模式标志,并且可以将所述默认模式标志的值设置为预定义的值(即,假)。
[0372] 当确定当前块的帧内预测模式时,可以基于所确定的帧内预测模式来获得当前块的预测样本 (S2803)。
[0373] 当选择DC模式时,可以基于参考样本的平均值生成与当前块相关的预测样本。具体地,可以基于参 考样本的平均值生成预测块内整体样本的值。可以使用位于当前块上方的上方参考样本及位于当前块左 侧的左侧参考样本中的至少一个来导出平均值。
[0374] 根据当前块的形状,导出平均值时使用的参考样本的数量或范围会不同。例如,当当前块为宽度大 于高度的非正方形块时,可以仅使用上方参考样本来计算平均值。另一方面,当当前块为宽度小于高度 的非正方形块时,可以仅使用左侧参考样本来计算平均值。即,当前块的宽度及高度不同时,可以仅使 用与长度更长一侧相邻的参考样本来计算平均值。可替代地,可以基于当前块的宽度和高度比率来确定 是否仅使用上方参考样本来计算平均值或者仅使用左侧参考样本来计算平均值。
[0375] 当选择平面模式时,可使用水平方向预测样本和垂直方向预测样本来获得预测样本。其中,基于位 于与预测样本相同的水平线上的左侧参考样本及右侧参考样本获得水平方向预测样本,并且基于位于与 预测样本相同的垂直线上的上方参考样本及下方参考样本获得垂直方向预测样本。其中,可以通过复制 与当前块的右上角相邻的参考样本而生成右侧参考样本,可以通过复制与当前块的左下角相邻的参考样 本而生成下方参考样本。可以基于左侧参考样本及右侧参考样本的加权和运算获得水平方向预测样本, 并且可以基于上方参考样本及下方参考样本的加权和运算获得垂直方向预测样本。在这种情况下,可以 根据预测样本的位置来确定赋予于各参考样本的加权值。可以基于水平方向预测样本及垂直方向预测样 本的平均运算或加权和运算获得预测样本。当执行加权和运算时,可以基于预测样本的位置来确定赋予 于水平方向预测样本及垂直方向预测样本的加权值。
[0376] 当选择角度预测模式时,可以确定表示所选的角度预测模式的预测方向(或预测角度)的参数。下 表5示出了每种帧内预测模式的帧内预测参数intraPredAng。
[0377] 【表5】
[0378]
[0379] 表5示出了当定义了35个帧内预测模式时具有2至34中任一个的索引的每个帧内预测模式的帧内方向 参数。当定义了超过33种角度帧内预测模式时,表5进一步细分为设置每个角度帧内预测模式的帧内方 向参数。
[0380] 在将当前块的上方参考样本及左侧参考样本排列成一列之后,可以基于帧内方向参数的值获得预测 样本。在这种情况下,当帧内方向参数的值为负数时,可以将左侧参考样本和上方参考样本排列成一列。
[0381] 图31和图32是示出了将参考样本排列成一行的一维阵列的示例的图。
[0382] 图31示出了在垂直方向上布置参考样本的垂直方向一维阵列的示例,并且图32示出了在水平方向上 排列参考样本的水平方向一维阵列的示例。将在定义35个帧内预测模式的假设下描述图31和图32的实施 例。
[0383] 当帧内预测模式索引为11至18中的任一个时,可以应用以逆时针方向旋转上方参考样本的水平方向 一维排列,当帧内预测模式索引为19至25中的任一个时,可以应用以顺时针方向旋转左侧参考样本的垂 直方向一维排列。将参考样本排列成一列时,可以考虑帧内预测模式角度。
[0384] 基于帧内方向参数可以确定参考样本确定参数。参考样本确定参数可以包括用于指定参考样本的参 考样本索引及用于确定应用于参考样本的加权值的加权值参数。
[0385] 参考样本索引iIdx和权重参数ifact可以分别通过以下公式5和公式6获得。
[0386] 【公式5】
[0387] iIdx=(y+1)*Pang/32
[0388] 【公式6】
[0389] ifact=[(y+1)*Pang]&31
[0390] 在公式5和6中,Pang表示帧内方向参数。根据参考样本索引iIdx指定的参考样本相当于整数像素 (Integer pel)。
[0391] 为了导出预测样本,可以指定一个以上的参考样本。具体地,考虑预测模式的斜率,可以指定导出 预测样本时使用的参考样本的位置。例如,使用参考样本索引iIdx,可以指定导出预测样本时使用的参 考样本。
[0392] 在这种情况下,当帧内预测模式的斜率不由一个参考样本表示时,可以通过对多个参考样本进行插 值来生成预测样本。例如,当帧内预测模式的斜率为预测样本与第一参考样本之间的斜率及预测样本与 第二参考样本之间的斜率之间的值时,可以对第一参考样本及第二参考样本进行插值来获得预测样本。 即,当跟随帧内预测角度的角线(Angular Line)不经过位于整数像素的参考样本时,可以对与所述角线 经过的位置的左右或上下相邻的参考样本进行插值来获得预测样本。
[0393] 以下公式7示出了基于参考样本获得预测样本的示例。
[0394] 【公式7】
[0395] P(x,y)=((32‑ifact)/32)*Ref_1D(x+iIdx+1)+(ifact/32)*Ref_1D(x+iIdx+2)[0396] 在公式7中,P表示预测样本,并且Ref_1D表示一维排列的参考样本中的任何一个。在这种情况下, 可以根据预测样本的位置(x,y)及参考样本索引iIdx确定参考样本的位置。
[0397] 当帧内预测模式的斜率可表示为一个参考样本时,可以将加权值参数ifact设置为0。因此,公式7可以 简化为如以下公式8所示。
[0398] 【公式8】
[0399] P(x,y)=Ref_1D(x+iIdx+1)
[0400] 还可以基于多个帧内预测模式对当前块执行帧内预测。例如,可以针对不同预测样本导出帧内预测 模式,并且可以基于分配到各个预测样本的帧内预测模式来导出预测样本。
[0401] 可替代地,可以针对不同区域导出帧内预测模式,并且可以基于分配到各个区域的帧内预测模式对 各区域执行帧内预测。其中,所述区域可以包括至少一个样本。可以基于当前块的大小、形状或帧内预 测模式中的至少一个自适应地确定所述区域的大小或形状中的至少一个。可替代地,在编码器及解码器 中,有可能预定义区域的大小或形状中的至少一个,而与当前块的大小或形状无关。
[0402] 可替代地,可以分别基于多个帧内预测执行帧内预测,并且可以基于通过多次的帧内预测获得的多 个预测样本的平均运算或加权和运算导出最终预测样本。例如,可以基于第一帧内预测模式执行帧内预 测来获得第一预测样本,并且可以基于第二帧内预测模式执行帧内预测来获得第二预测样本。之后,基 于第一预测样本及第二预测样本之间的平均运算或加权和运算,可获得的最终预测样本。在这种情况下, 可以考虑第一帧内预测模式是否为非角度/角度预测模式、第二帧内预测模式是否为非角度/角度预测模 式或相邻块的帧内预测模式中的至少一个来确定分别分配于第一预测样本及第二预测样本的加权值。
[0403] 多个帧内预测模式可以是非角度帧内预测模式和角度预测模式的组合、角度预测模式的组合或非角 度预测模式的组合。
[0404] 图33是示出了角度帧内预测模式与平行于x轴的直线形成的角度的图。
[0405] 如图33中所示的示例中,角度预测模式可以存在于左下对角线方向与右上对角线方向之间。当被描 述为x轴和角度预测模式形成的角度时,角度预测模式可存在于45度(左下对角线方向)至‑135度(右上 对角线方向)之间。
[0406] 在当前块是非正方形形状的情况下,会发生如下情况,根据当前块的帧内预测模式,使用位于跟随 帧内预测角度的角线上的参考样本中更远离预测样本的参考样本而不是更接近预测样本的参考样本来导 出预测样本。
[0407] 图34是示出了在当前块为非正方形的情况下获得预测样本的图。
[0408] 例如,如在图34(a)中所示的示例中,假设当前块是宽度大于高度的非方形形状,并且当前块的帧 内预测模式是角度在0度至45度之间的角度帧内预测模式。在这种情况下,在导出当前块的右侧列附近 的预测样本A时,会发生使用位于所述角度的角度模式上的参考样本中远离所述预测样本的左侧参考样 本L来代替接近所述预测样本的上方参考样本T的情况。
[0409] 作为另一示例,如在图34(b)中所示的示例中,假设当前块是高度大于宽度的非方形形状,并且 当前块的帧内预测模式是角度在‑90度至‑135度之间的角度帧内预测模式。在上述情况下,在导出当前块 的下方行附近的预测样本A时,会发生使用位于所述角度的角度模式上的参考样本中远离所述预测样本 的上方参考样本T来代替接近所述预测样本的左侧参考样本L的情况。
[0410] 为了解除如上问题,当当前块为非正方形时,可以将当前块的帧内预测模式替换为反方向的帧内预 测模式。因此,对于非方形块,可以使用具有比图24所示的角度预测模式的角度更大或更小的角度的角 度预测模式。这种角度帧内预测模式可被定义为广角帧内预测模式。广角帧内预测模式表示不落入45度 至‑135度范围内的角度帧内预测模式。
[0411] 图35是示出了广角帧内预测模式的图。
[0412] 在图35所示的示例中,索引为‑1至‑14的帧内预测模式和索引为67至80的帧内预测模式表示广角帧内 预测模式。
[0413] 尽管在图35中示出了具有大于45度的角度的14个广角帧内预测模式(‑1至‑14)和具有小于‑135度的 角度的14个广角帧内预测模式(67至80),但可以定义更多或更少数量的广角帧内预测模式。
[0414] 当使用广角帧内预测模式时,上方参考样本的长度设置为2W+1,左侧参考样本的长度设置为2H+1。
[0415] 当使用广角帧内预测模式时,可以使用参考样本T预测图34(a)所示的样本A,并且可以使用参考 样本L预测图34(b)所示的样本A。
[0416] 通过将现有帧内预测模式和N个广角帧内预测模式相加,可以使用总共67+N个帧内预测模式。例 如,表6示出了当定义了20个广角帧内预测模式时帧内预测模式的帧内方向参数。
[0417] 【表6】
[0418]PredModeIntra ‑10 ‑9 ‑8 ‑7 ‑6 ‑5 ‑4 ‑3 ‑2
intraPredAngle 114 93 79 68 60 54 49 45 39
PredModeIntra ‑1 2 3 4 5 6 7 8 9
intraPredAngle 35 32 29 26 23 21 19 17 15
PredModeIntra 10 11 12 13 14 15 16 17 18
intraPredAngle 13 11 9 7 5 3 2 1 0
PredModeIntra 19 20 21 22 23 24 25 26 27
intraPredAngle ‑1 ‑2 ‑3 ‑5 ‑7 ‑9 ‑11 ‑13 ‑15
PredModeIntra 28 29 30 31 32 33 34 35 36
intraPredAngle ‑17 ‑19 ‑21 ‑23 ‑26 ‑29 ‑32 ‑29 ‑26 PredModeIntra 37 38 39 40 41 42 43 44 45
intraPredAngle ‑23 ‑21 ‑19 ‑17 ‑15 ‑13 ‑11 ‑9 ‑7 PredModeIntra 46 47 48 49 50 51 52 53 54
intraPredAngle ‑5 ‑3 ‑2 ‑1 0 1 2 3 5
PredModeIntra 55 56 57 58 59 60 61 62 63
intraPredAngle 7 9 11 13 15 17 19 21 23
PredModeIntra 64 65 66 67 68 69 70 71 72
intraPredAngle 26 29 32 35 39 45 49 54 60
PredModeIntra 73 74 75 76          
intraPredAngle 68 79 93 114          
[0419] 当当前块是非方形的并且在步骤S2802中获取的当前块的帧内预测模式落入变换范围内时,可以将 当前块的帧内预测模式变换为广角帧内预测模式。可以基于当前块的大小、形状或比率中的至少一个来 确定所述变换范围。其中,所述比率可以表示当前块的宽度及高度之间的比率。
[0420] 当当前块为宽度大于高度的非正方形时,可以将变换范围设置为右上对角线方向的帧内预测模式索 引(例如,66)至(右上对角线方向的帧内预测模式的索引‑N)。其中,N可以基于当前块的比率来确 定。当当前块的帧内预测模式落入变换范围内时,可以将所述帧内预测模式变换为广角帧内预测模式。 可以从所述帧内预测模式减去预定义的值来执行所述变换,所述预定义的值可以是除了广角帧内预测模 式之外的帧内预测模式的总数量(例如,67)。
[0421] 根据所述实施例,可以将第66个至第53个之间的帧内预测模式分别变换为第‑1个至第‑14个之间的广 角帧内预测模式。
[0422] 当当前块为高度大于宽度的非正方形时,可以将变换范围设置为从左下对角线方向的帧内预测模式 索引(例如,2)至(左下对角线方向的帧内预测模式的索引+M)。其中,M可以基于当前块的比率来 确定。当当前块的帧内预测模式落入变换范围内时,可以将所述帧内预测模式变换为广角帧内预测模式。 可以在所述帧内预测模式加上预定义的值来执行所述变换,预定义的值可以是除了广角帧内预测模式之 外的角度帧内预测模式的总数量(例如,65)。
[0423] 根据所述实施例,将第2个至第15个之间的帧内预测模式分别变换为第67个至第80个之间的广角帧 内预测模式。
[0424] 以下,将落入变换范围内的帧内预测模式称为广角帧内替换预测模式。
[0425] 变换范围可以基于当前块的比率来确定。例如,表7和表8各自示出当定义了除广角帧内预测模式之 外的35个帧内预测模式和67个帧内预测模式时的变换范围。
[0426] 【表7】
[0427]条件 替换帧内预测模式
W/H=2 模式2,3,4
W/H>2 模式2,3,4,5,6
W/H=1 无
H/W=1/2 模式32,33,34
H/W<1/2 模式30,31,32,33,34
[0428] 【表8】
[0429] 条件 替换帧内预测模式W/H=2 模式2,3,4,5,6,7
W/H>2 模式2,3,4,5,6,7,8,9,10,11
W/H=1 无
H/W=1/2 模式61,62,63,64,65,66
H/W<1/2 模式57,58,59,60,61,62,63,64,65,66
[0430] 如表7和表8中所示的示例,落入变换范围中的广角帧内替换预测模式的数量可以根据当前块的比率 而不同。
[0431] 随着除现有帧内预测模式之外还使用广角帧内预测模式,用于对广角帧内预测模式进行编码所需的 资源会增加,因此可能降低编码效率。由此,代替直接对广角帧内预测模式进行编码,而是对与广角帧 内预测模式相关的替换帧内预测模式进行编码,从而可提高编码效率。
[0432] 例如,当使用第67个广角帧内预测模式对当前块进行编码时,可以将作为第67个广角替换帧内预测 模式的编号2编码为当前块的帧内预测模式。并且,当使用第‑1个广角帧内预测模式对当前块进行编码时, 可以将作为第‑1个广角替换帧内预测模式的编号66编码为当前块的帧内预测模式。
[0433] 解码器可以对当前块的帧内预测模式进行解码,并确定解码的帧内预测模式是否包括在变换范围中。 解码的帧内预测模式为广角替换帧内预测模式时,可以将帧内预测模式变换为广角帧内预测模式。
[0434] 可替代地,当以广角帧内预测模式对当前块进行编码时,还可直接对广角帧内预测模式进行编码。
[0435] 帧内预测模式的编码可以基于所述MPM列表实现。具体地,以广角帧内预测模式对相邻块进行编码 时,可以基于与广角帧内预测模式相对应的广角替换帧内预测模式来设置MPM。例如,当相邻块以广角 帧内预测模式进行编码时,可以将变量candIntraPredX(X为A或B)设置为广角代替帧内预测模式。
[0436] 若通过帧内预测执行结果来生成预测块,则可以基于预测块中包括的每个预测样本的位置来更新预 测样本。如上所述的更新方法可以被称为基于样本位置的帧内加权预测方法(或位置相关的预测组合 (Position Dependent Prediction Combination,PDPC))。
[0437] 可以考虑当前块的帧内预测模式、当前块的参考样本线、当前块的大小或颜色分量来确定是否要使 用PDPC。例如,当前块的帧内预测模式为平面模式、DC模式、垂直方向模式、水平方向模式、索引值 比垂直方向更小的模式或索引值比水平方向更大的模式中的至少一个时,可以使用PDPC。可替代地, 可以仅在当前块的宽度或高度中的至少一个大于4时,才使用PDPC。可替代地,可以仅在当前块的参考 图像线的索引为0时,才使用PDPC。可替代地,可以仅在当前块的参考图像线的索引大于或等于预定义 的值时,才使用PDPC。可替代地,可以仅针对亮度分量才使用PDPC。可替代地,可以根据是否满足所 述列举的条件中的两个以上,确定是否使用PDPC。
[0438] 作为另一例,可以通过比特流用信号发送指示是否应用PDPC的信息。
[0439] 若通过帧内预测样本获取预测样本,则基于获取的预测样本的位置,可以确定用于校正所述预测样 本的参考样本。为了便于说明,在后续的实施例中,将用于校正预测样本的参考样本称为PDPC参考样 本。而且,将通过帧内预测获取的预测样本称为第一预测样本,将校正第一预测样本而获取的预测样本 称为第二预测样本。
[0440] 图36是示出了应用PDPC的图。
[0441] 利用至少一个PDPC参考样本,可以校正第一预测样本。PDPC参考样本可以包括与当前块的左上角 相邻的参考样本、位于当前块上方的上方参考样本或位于当前块左侧的左侧参考样本中的至少一个。
[0442] 可以将属于当前块的参考样本线的参考样本中的至少一个设置为PDPC参考样本。可替代地,与当 前块的参考样本线无关的是,可以将属于索引为0的参考样本线的参考样本中的至少一个设置为PDPC参 考样本。例如,即使利用索引为1或索引为2的参考样本线中包括的参考样本来获取第一预测样本,也可 以利用索引为0的参考样本线中包括的参考样本来获取第二预测样本。
[0443] 可以考虑当前块的帧内预测模式、当前块的大小、当前块的形状或第一预测样本的位置中的至少一 个来确定用于校正第一预测样本的PDPC参考样本的数量或位置。
[0444] 例如,在当前块的帧内预测模式为平面模式或DC模式时,可以利用上方参考样本及左侧参考样本来 获取第二预测样本。此时,上方参考样本可以是与第一预测样本垂直的参考样本(例如,x坐标相同的 参考样本),左侧参考样本可以是与第一预测样本水平的参考样本(例如,y坐标相同的参考样本)。
[0445] 在当前块的帧内预测模式为水平帧内预测模式时,可以利用上方参考样本获取第二预测样本。此时, 上方参考样本可以是与第一预测样本垂直的参考样本。
[0446] 在当前块的帧内预测模式为垂直帧内预测模式时,可以利用左侧参考样本获取第二预测样本。此时, 左侧参考样本可以是与第一预测样本水平的参考样本。
[0447] 在当前块的帧内预测模式为左下对角线帧内预测模式或右上对角线帧内预测模式时,可以基于左上 参考样本、上方参考样本和左侧参考样本来获取第二预测样本。左上参考样本可以是与当前块的左上角 相邻的参考样本(例如,(‑1,‑1)位置的参考样本)。上方参考样本可以是位于第一预测样本的右上 对角线方向的参考样本,左侧参考样本可以是位于第一预测样本的左下对角线方向的参考样本。
[0448] 总之,当第一预测样本的位置为(x,y)时,可以将R(‑1,‑1)设置为左上参考样本,R(x+y+1, ‑1)或R(x,‑1)设置为上方参考样本。另外,可以将R(‑1,x+y+1)或R(‑1,y)设置为左侧参考样 本。
[0449] 作为另一例,可以考虑当前块的形状或是否应用广角帧内模式中的至少一者,确定左侧参考样本或 上方参考样本的位置。
[0450] 具体地,在当前块的帧内预测模式为广角帧内预测模式时,可以将与位于第一预测样本的对角线方 向的参考样本中相隔一定偏移值的参考样本设置为PDPC参考样本。例如,可以将上方参考样本R (x+y+k+1,‑1)和左侧参考样本R(‑1,x+y‑k+1)设置为PDPC参考样本。
[0451] 此时,可以基于广角帧内预测模式来确定偏移值k。公式9和公式10示出了基于广角帧内预测模式导 出偏移值的示例。
[0452] 【公式9】
[0453] k=CurrIntraMode‑66
[0454] if(CurrIntrMode>66)
[0455] 【公式10】
[0456] k=‑CurrIntraMode
[0457] if(CurrIntraMode<0)
[0458] 可以基于第一预测样本与PDPC参考样本之间的加权和运算来确定第二预测样本。例如,可以基于 以下的公式11来获得第二预测样本。
[0459] 【公式11】
[0460] pred(x,y)=(xL*RL+wT*RT‑wTL*RTL+(64‑wL‑wT+wTL)*pred(x,y)+32)>>6[0461] 在公式11中,RL表示左侧参考样本,RT表示上方参考样本,RTL代表左上参考样本。pred(x,y) 表示(x,y)位置的预测样本。wL表示分配给左侧参考样本的加权值,wT表示分配给上方参考样本的 加权值,wTL表示分配给左上参考样本的加权值。分配给第一预测样本的加权值可以通过从最大值中减 去分配给参考样本的加权值来导出。为了便于说明,将分配给PDPC参考样本的加权值称为PDPC加权值。
[0462] 可以基于当前块的帧内预测模式或第一预测样本的位置中的至少一个来确定分配给各参考样本的加 权值。
[0463] 例如,wL、wT或wTL中的至少一个与预测样本的x轴坐标值或y轴坐标值中的至少一个可以处于成 正比例或反比例的关系。可替代地,wL、wT或wTL中的至少一个与当前块的宽度或高度中的至少一个 可以处于成正比例或反比例的关系。
[0464] 在当前块的帧内预测模式为DC模式时,PDPC加权值可以被确定为如公式12所示。
[0465] 【公式12】
[0466] wT=32>>((y<<1)>>shift)
[0467] wL=32>>((x<<1)>>shift)
[0468] wTL=(wL>>4)+(wT>>4)
[0469] 在公式12中,x和y表示第一预测样本的位置。
[0470] 在公式12中,可以基于当前块的宽度或高度来导出移位操作中使用的变量shift。。例如,可以基于 以下公式13或公式14来导出变量shift。
[0471] 【公式13】
[0472] shift=(log2(width)‑2+log2(height)‑2+2)>>2
[0473] 【公式14】
[0474] shift=((Log2(nTbW)+Log2(nTbH)‑2)>>2)
[0475] 可替代地,还可以考虑当前块的帧内方向参数来导出变量shift。
[0476] 可以根据当前块的帧内预测模式不同地确定用于导出变量shift的参数的数量或种类。例如,在当前 块的帧内预测模式为平面模式、DC模式、垂直方向模式或水平方向模式时,如公式13或公式14所示,可 以使用当前块的宽度和高度来导出变量shift。在当前块的帧内预测模式为具有比起垂直方向的帧内预测 模式更大的索引的帧内预测模式时,可以利用当前块的高度和帧内方向参数来导出变量shift。在当前块 的帧内预测模式为具有比起水平方向的帧内预测模式更小的索引的帧内预测模式时,可以利用当前块的 宽度和帧内方向参数来导出变量shift。
[0477] 在当前块的帧内预测模式为平面模式时,可以将wTL的值设置为0。可以基于以下公式15来导出wL 和wT。
[0478] 【公式15】
[0479] wT[y]=32>>((y<<1)>>nScale)
[0480] wL[x]=332>>((x<<1)>>nScale)
[0481] 在当前块的帧内预测模式为水平帧内预测模式时,可以将wT可以设置为0,并且可以将wTL和wL设 置为相同。另一方面,在当前块的帧内预测模式为垂直帧内预测模式时,可以将wL设置为0,并且可以 将wTL和wT设置为相同。
[0482] 在当前块的帧内预测模式为指向右上方向的、索引值大于垂直方向的帧内预测模式的帧内预测模式 时,可以如以下公式16所示地那样导出PDPC加权值。
[0483] 【公式16】
[0484] wT=16>>(y<<1)>>shift)
[0485] wL=16>>((x<<1)>>shift)
[0486] wTL=0
[0487] 另一方面,在当前块的帧内预测模式为指向左下方向的、索引值小于水平方向的帧内预测模式的帧 内预测模式时,可以如以下公式17所示地那样导出PDPC加权值。
[0488] 【公式17】
[0489] wT16>>(y<<1)>>shift)
[0490] wL=16>>((x<<1)>>shift)
[0491] wTL=0
[0492] 如上述的实施例,可以基于预测样本的位置x及y来确定PDPC加权值。
[0493] 作为另一例,还可以以子块为单位确定分配给每个PDPC参考样本的加权值。子块中包括的预测样 本可以共享相同的PDPC加权值。
[0494] 可以在编码器及解码器中预定义作为用于确定加权值的基本单位的子块的大小。例如,可以针对大 小为2×2或4×4的各个子块确定加权值。
[0495] 可替代地,可以根据当前块的大小或形状来确定子块的大小、形状或数量。例如,不论编码块的大 小如何,都可以将编码块划分为4个子块。可替代地,根据编码块的大小,可以将编码块划分为4个或16 个子块。
[0496] 可替代地,还可以基于当前块的帧内预测模式来确定子块的大小、形状或数量。例如,在当前块的 帧内预测模式为水平方向模式时,可以将N个列(或N个行)设置为一个子块,相反,当前块的帧内预测 模式为垂直方向模式时,可以将N个行(或N个列)设置为一个子块。
[0497] 公式18至20示出了确定2×2大小的子块的PDPC加权值的示例。公式18示出了当前块的帧内预测模式 为DC模式的情示例。
[0498] 【公式18】
[0499] wT=32>>(((y<<log2K)>>log2K)<<1)>>shift)
[0500] wL=32>>(((x<<log2K))>>log2K))<<1)>>shift)
[0501] wTL=(wL>>4)+(wT>>4)
[0502] 在公式18中,K可以基于子块的大小来确定。
[0503] 公式19示出了当前块的帧内预测模式为指向右上方向的、索引值大于垂直方向的帧内预测模式的帧 内预测模式的示例。
[0504] 【公式19】
[0505] wT=16>>(((y<<log2K))>>log2K))<<1)>>shift)
[0506] wL=16>>(((x<<log2K))>>log2K))<<1)>>shift)
[0507] wTL=0
[0508] 公式20示出了当前块的帧内预测模式为指向左下方向的、索引值小于水平方向的帧内预测模式的帧 内预测模式的示例。
[0509] 【公式20】
[0510] wT=16>>(((y<<log2K))>>log2K))<<1)>>shift)
[0511] wL=16>>(((x<<log2K))>>log2K))<<1)>>shift)
[0512] wTL=0
[0513] 在公式18至20中,x和y表示子块内参考样本的位置。参考样本可以是位于子块的左上方的样本、位 于子块的中心的样本或者位于子块的右下方的样本中的任一个。
[0514] 公式21至23示出了确定4×4大小的子块的PDPC加权值的示例。公式21示出了当前块的帧内预测模式 为DC模式的示例。
[0515] 【公式21】
[0516] wT=32>>(((y<<2)>>2)<<1)>>shift)
[0517] wL=32>>(((x<<2)>>2)<<1)>>shift)
[0518] wTL=(wL>>4)+(wT>>4)
[0519] 公式22示出了当前块的帧内预测模式为指向右上方向的、索引值大于垂直方向的帧内预测模式的帧 内预测模式的示例。
[0520] 【公式22】
[0521] wT=16>>(((y<<2)>>2)<<1)>>shift)
[0522] wL=16>>(((x<<2)>>2)<<1)>>shift)
[0523] wTL=0
[0524] 公式23示出了当前块的帧内预测模式为指向左下方向的、索引值小于水平方向的帧内预测模式的帧 内预测模式的示例。
[0525] 【公式23】
[0526] wT=16>>(((y<<2)>>2)<<1)>>shift)
[0527] wL=16>>(((x<<2)>>2)<<1)>>shift)
[0528] wTL=0
[0529] 在上述实施例中说明了考虑第一预测样本或子块中包括的预测样本的位置来确定PDPC加权值。还 可以进一步考虑当前块的形状来确定PDPC加权值。
[0530] 例如,对于DC模式而言,根据当前块是宽度大于高度的非正方形还是高度大于宽度的非正方形, PDPC加权值的导出方法会不同。
[0531] 公式24示出了在当前块为宽度大于高度的非正方形的情况下导出PDPC加权值的示例,并且公式25 示出了在当前块为高度大于宽度的非正方形的情况下导出PDPC加权值的示例。
[0532] 【公式24】
[0533] wT=32>>((y<<1)>>shift)
[0534] wL=32>>(x>>shift)
[0535] wTL=(wL>>4)+(wT>>4)
[0536] 【公式25】
[0537] wT>>(y>>shift)
[0538] wL=32>>((x<<1)>>shift)
[0539] wTL=(xL>>4)+(wT>>4)
[0540] 在当前块为非正方形时,可以利用广角帧内预测模式预测当前块。以这种方式,在应用广角帧内预 测模式时,也可以应用PDPC来更新第一预测样本。
[0541] 在当前块应用广角帧内预测时,可以考虑编码块的形状来确定PDPC加权值。
[0542] 例如,在当前块为宽度大于高度的非正方形时,根据第一预测样本的位置,会发生相比于位于第一 预测样本的左下方的左侧参考样本,位于第一预测样本右上方的上方参考样本更接近于第一预测样本的 情况。由此,在校正第一预测样本时,可以将应用于上方参考样本的加权值设置为具有比应用于左侧参 考样本的加权值更大的值。
[0543] 另一方面,在当前块为高度大于宽度的非正方形时,根据第一预测样本的位置,会发生相比于位于 第一预测样本右上方的上方参考样本,位于第一预测样本的左下方的左侧参考样本更接近于第一预测样 本的情况。由此,在校正第一预测样本时,可以将应用于左侧参考样本的加权值设置为具有比应用于上 方参考样本的加权值更大的值。
[0544] 公式26示出了在当前块的帧内预测模式为索引大于66的广角帧内预测模式的情况下导出PDPC加权 值的示例。
[0545] 【公式26】
[0546] wT=16>>(y>>shift)
[0547] wL=16>>((x<<1)>>shift)
[0548] wTL=0
[0549] 公式27示出了在当前块的帧内预测模式为索引小于0的广角帧内预测模式的情况下导出PDPC加权值 的示例。
[0550] 【公式27】
[0551] wL=16>>((y<<1)>>shift)
[0552] wL=16>>(x>>shift)
[0553] wTL=0
[0554] 还可以基于当前块的比率来确定PDPC加权值。当前块的比率示出了当前块的宽度与高度之比,并 且可以被定义为如以下公式28所示。
[0555] 【公式28】
[0556] whRatio=CUwidth/CUheight
[0557] 可以根据当前块的帧内预测模式可变地确定导出PDPC加权值的方法。
[0558] 例如,公式29和公式30示出了在当前块的帧内预测模式为DC模式的情况下导出PDPC加权值的示例。 具体地,公式29是当前块为宽度大于高度的非正方形的情况下的示例,并且公式30是当前块为高度大于 宽度的非正方形的情况下的示例。
[0559] 【公式29】
[0560] wT=32>>((y<<1)>>shift
[0561] wL=32>>(((x<<1)>>whRatio)>>shift)
[0562] wTL=(wL>>4)+(wT>>4)
[0563] 【公式30】
[0564] wT=32>>(((y<<1)>>1/whRatio)>>shift)
[0565] wL=32>>((x<<1)>>shift)
[0566] wTL=(wL>>4)+(wT>>4)
[0567] 公式31示出了当前块的帧内预测模式为索引大于66的广角帧内预测模式时,导出PDPC加权值的示 例。
[0568] 【公式31】
[0569] wT=16>>((y<<1)>>1/whRatio)>>shift) wL=16>>((x<<1)>>shift)[0570] wTL=0
[0571] 公式32示出了在当前块的帧内预测模式为索引小于0的广角帧内预测模式的情况下导出PDPC加权值 的示例。
[0572] 【公式32】
[0573] wT=16>>((y<<1)>>shift)
[0574] wL=16>>((x<<1)>>whRatio)>>shift
[0575] wTL=0
[0576] 可以多次对当前块应用一种预测模式,或者可以重复地对当前块应用多种预测模式。如此,可以将 使用同种或异种预测模式的预测方法称为组合预测模式(或多假设预测模式,Multi‑hypothesis Prediction Mode)。
[0577] 可以通过比特流用信号发送指示是否向当前块应用了组合预测模式的信息。例如,所述信息可以是 1比特标志。
[0578] 在组合预测模式中,可以基于第一预测模式来生成第一预测块,并且可以基于第二预测模式来生成 第二预测块。然后,可以基于第一预测块和第二预测块的加权和运算来生成第三预测块。可以将第三预 测块设置为当前块的最终预测块。
[0579] 组合预测模式可以包括以下各项中的至少一项:组合了合并模式和合并模式的模式、组合了帧间预 测和帧内预测的模式、组合了合并模式和高级运动向量预测模式的模式、以及组合了合并模式和帧内预 测的模式。
[0580] 在组合了合并模式和合并模式的模式中,可以使用多个合并候选来进行运动补偿预测。具体地,可 以使用第一合并候选来生成第一预测块,并且可以使用第二合并候选来生成第二预测块。可以基于第一 预测块和第二预测块的加权和运算来生成第三预测块。
[0581] 可以通过比特流分别用信号发送用于指定第一合并候选的信息和第二合并候选的信息。例如,可以 通过比特流用信号发送用于指定第一合并候选的索引信息merge_idx和用于指定第二合并候选的索引信息 merge_2nd_idx。可以基于索引信息merge_2nd_idx和索引信息merge_idx来确定第二合并候选。
[0582] 索引信息merge_idx指定在合并候选列表中包括的合并候选中的任一个。
[0583] 索引信息merge_2nd_idx可以指定除了由merge_idx指定的合并候选之外的剩余合并候选中的任一个。 因此,当merge_2nd_idx的值小于merge_idx的值时,可以将索引为merge_2nd_idx的值的合并候选设置为 第二合并候选。当merge_2nd_idx的值等于或大于merge_idx的值时,可以将索引值为merge_2nd_idx的值 加上1的合并候选设置为第二合并候选。
[0584] 可替代地,可以考虑候选块的搜索顺序来指定第二合并候选。
[0585] 图37是示出了通过考虑候选块的搜索顺序来指定第二合并候选的示例。
[0586] 在图37所示的示例中,标记在相邻样本和非相邻样本上的索引指示了候选块的搜索顺序。例如,可 从A0位置到A14位置依次搜索候选块。
[0587] 当将块A4选择为第一合并候选时,可以将从搜索顺序在A4之后的候选块中导出的合并候选指定为第 二合并候选。例如,可以将从A5中导出的合并候选选择为第二合并候选。在位置A5处的候选块无法用作 合并候选时,可以将从下一候选块中导出的合并候选选择为第二合并候选。
[0588] 还可以在从非相邻块中导出的合并候选中选择第一合并候选和第二合并候选。
[0589] 图38是示出了从非相邻块中导出的合并候选中选择第一合并候选和第二合并候选的示例。
[0590] 如图38所示的示例,可以分别将从不与当前块相邻的第一候选块和第二候选块中导出的合并候选选 择为第一合并候选和第二合并候选。此时,第一候选块所属的块线和第二候选块所属的块线可以不同。 例如,第一合并候选可以从A5至A10中的任一个候选块中导出,并且第二合并候选可以从A11至A15中的 任一个候选块中导出。
[0591] 可替代地,可以设置为使得第一候选块和第二候选块不包括在相同的线(例如,行或列)中。
[0592] 作为另一示例,可以基于第一合并候选来指定第二合并候选。此时,第一合并候选可以由从比特流 用信号发送的索引信息merge_idx来指定。例如,可以将与第一合并候选相邻的合并候选指定为第二合并 候选。在此,与第一合并候选相邻的合并候选可以意指与第一合并候选的索引差值为1的合并候选。例 如,可以将索引值为merge_idx+1的合并候选设置为第二合并候选。此时,当merge_idx+1的值大于最大 索引值时(或当第一合并候选的索引值为最大索引时),可以将索引值为merge_idx‑1的合并候选或者索 引值为预定义的值(例如,0)的合并候选设置为第二合并候选。
[0593] 可替代地,与第一合并候选相邻的合并候选可以意指从在空间上与用于导出第一合并候选的候选块 相邻的候选块中导出的合并候选。在此,候选块的相邻候选块可以意指候选块的左侧、右侧、上方、下 方或在对角线方向上相邻的块。
[0594] 作为另一示例,可以基于第一合并候选的运动信息来指定第二合并候选。例如,可以将具有与第一 合并候选相同的参考图像的合并候选选择为第二合并候选。当存在多个具有与第一合并候选相同的合并 候选的参考图像时,可以将所述多个合并候选中的索引最小的合并候选、或与第一合并候选的索引差值 最小的合并候选选择为第二合并候选。可替代地,可以基于指定多个合并候选中的任一个的索引信息来 选择第二合并候选。
[0595] 可替代地,当第一合并候选为第一方向的单向预测时,可以将包括第二方向上的运动信息的合并候 选设置为第二合并候选。例如,当第一合并候选具有方向L0的运动信息时,可以将具有方向L1的运动信 息的合并候选设置为第二合并候选。当存在多个具有方向L1的运动信息的合并候选时,将所述多个合并 候选中的索引最小的合并候选或与第一合并候选的索引差值最小的合并候选设置为第二合并候选。可替 代地,可以基于指定多个合并候选中的任一个的索引信息来选择第二合并候选。
[0596] 作为另一示例,可以将从与当前块相邻的相邻块中导出的合并候选中的一个设置为第一合并候选, 并且可以将从不与当前块相邻的非相邻块中导出的合并候选中的一个设置为第二合并候选。
[0597] 作为另一示例,可以将从位于当前块的上方的候选块中导出的合并候选中的一个设置为第一合并候 选,并且可以将从位于左侧的候选块中导出的合并候选中的一个设置为第二合并候选。
[0598] 可以通过从第一合并候选中导出的第一预测块和基于第二合并候选导出的第二预测块的加权和运算 来获得组合预测块。此时,可以将应用于第一预测块的加权值设置为比应用于第二预测块的加权值更大 的值。
[0599] 可替代地,可以基于第一合并候选的运动信息和第二合并候选的运动信息来确定加权值。例如,可 以基于参考图像与当前图像的输出顺序的差异来确定应用于第一预测块和第二预测块的加权值。具体地, 参考图像和当前图像的输出顺序的差异越大,可以将应用于预测块的加权值设置得越小。
[0600] 可替代地,可以考虑用于导出第一合并候选的候选块(下文中称为第一候选块)和用于导出第二合 并候选的候选块(下文中称为第二候选块)的大小或形状来确定应用于第一预测块和第二预测块的加权 值。例如,可以将应用于从第一候选块或第二候选块中形状与当前块相似的候选块中导出的预测块的加 权值设置为较大值。另一方面,可以将应用于从第一候选块或第二候选块中形状不与当前块相似的候选 块中导出的预测块的加权值设置为较小值。
[0601] 图39是示出了基于候选块的形状来确定应用于预测块的加权值的示例的图。
[0602] 假设当前块为宽度大于高度的非正方形。
[0603] 可以基于第一合并候选和第二合并候选来导出第一预测块和第二预测块,并且可以基于第一预测块 和第二预测块的加权和运算来生成组合预测块。此时,可基于第一候选块和第二候选块的形状来确定应 用于第一预测块和第二预测块的加权值。
[0604] 例如,在图39所示的示例中,第一候选块为正方形,第二候选块为宽度大于高度的非正方形。由于 第二候选块的形状与当前块相同,因此可以将应用于第二预测块的加权值设置为大于应用于第一预测块 的加权值。例如,可以将5/8的加权值应用于第二预测块,并且可以将3/8的加权值应用于第一预测块。 公式33示出了基于第一预测块和第二预测块的加权和运算来导出组合预测块的示例。
[0605] 【公式33】
[0606] P(x,y)=(3*P1(x,y)+5*P2(x,y))>>3
[0607] P(x,y)表示组合预测块,P1(x,y)表示第一预测块,P2(x,y)表示第二预测块。
[0608] 作为另一示例,可以基于当前块的形状来确定应用于第一预测块和第二预测块的加权值。例如,在 当前块为宽度大于高度的非正方形时,可以向基于从第一合并候选和第二合并候选中位于当前块的上方 的候选块导出的合并候选来生成的预测块应用更大的加权值。当第一合并候选和第二合并候选均为从位 于当前块上方的候选块中导出时,可以将应用于第一预测块和第二预测块的加权值设置为相同。另一方 面,当前块为高度大于宽度的非正方形时,可以向基于从第一合并候选和第二合并候选中位于当前块的 左侧的候选块中导出的合并候选来生成的预测块应用更大的加权值。当第一合并候选和第二合并候选均 为从位于当前块左侧的候选块中导出时,可以将应用于第一预测块和第二预测块的加权值设置为相同。 当前块为正方形时,可以将应用于第一预测块和第二预测块的加权值设置为相同。
[0609] 作为另一示例,可以基于当前块与候选块之间的距离来确定应用于每个预测块的加权值。在此,距 离可基于与当前块的x轴坐标差值、y轴坐标差值或者这两者中的最小值来导出。可以将应用于从距当前 块较小距离的合并候选中导出的预测块的加权值设置为具有比应用于从距当前块较大距离的合并候选中 导出的预测块的加权值更大的值。例如,在图37所示的示例中,第一合并候选从与当前块相邻的相邻块 中导出,第二合并候选从不与当前块相邻的非相邻块中导出。在这种情况下,由于第一候选块与当前块 之间的x轴距离小于第二候选块与当前块之间的x轴距离,因此可以将应用于第一预测块的加权值设置为 具有比应用于第二预测块的加权值更大的值。
[0610] 可替代地,当第一合并候选和第二合并候选均从非相邻块中导出时,可以向从所述非相邻块中的距 当前块的距离更近的非相邻块中导出的预测块分配更大的加权值。例如,在图38所示的示例中,由于第 一候选块与当前块的y轴距离小于第二候选块与当前块的y轴距离,因此可以将应用于第一预测块的加权 值设置为具有比应用于第二预测块的加权值更大的值。
[0611] 在上述组合了合并模式和合并模式的组合预测模式中,所述合并模式可以意指基于平移运动模型的 合并模式(下文中称为平移合并模式)或者基于仿射运动模型的合并模式(下文中称为仿射合并模式)。 即,可以通过组合平移合并模式和平移合并模式,或者通过组合仿射合并模式和仿射合并模式来执行运 动补偿预测。
[0612] 例如,当第一合并候选为仿射合并候选时,第二合并候选可以也设置为仿射合并候选。在此,仿射 合并候选指示包括标准候选的块的运动向量为仿射运动向量的情况。第二合并候选可以通过上述多种实 施例来指定。例如,第二合并候选可以被设置为第一合并候选的相邻合并候选。此时,当与第一合并候 选相邻的合并候选未使用仿射运动模型编码时,可以将使用仿射运动模型编码的合并候选而不是所述相 邻合并候选设置为第二合并候选。
[0613] 另一方面,当第一合并候选为非仿射合并候选时,也可以将第二合并候选设置为非仿射合并候选。 此时,当与第一合并候选相邻的合并候选使用仿射运动模型编码时,可以将使用平移运动模型编码的合 并候选而不是所述相邻合并候选设置为第二合并候选。
[0614] 图40是示出了将非仿射合并候选而不是仿射合并候选设置为第二合并候选的示例的图。
[0615] 在通过merge_idx将位置A1处的合并候选指定为第一合并候选时,可以将索引值比第一合并候选大1 的合并候选A2选择为第二合并候选。此时,在第一合并候选为非仿射合并候选并且第二合并候选为仿射 合并候选的情况下,可以重新设置第二合并候选。例如,在索引大于merge_idx+1的合并候选中,可以将 与merge_idx+1的差值最小的非仿射合并候选重新设置为第二合并候选。例如,在图18所示的示例中,示 出了将索引为merge_idx+2的合并候选A3设置为第二合并候选。
[0616] 作为另一示例,可以通过将平移合并模式与仿射合并模式组合来执行运动补偿预测。即,第一合并 候选或第二合并候选中的任一个可以是仿射合并候选,而另一个可以是非仿射合并候选。
[0617] 可以基于第一合并候选和第二合并候选来导出整合后的运动信息,并且可以基于整合后的运动信息 来对当前块执行运动补偿预测。例如,可以基于第一合并候选的运动向量和第二合并候选的运动向量的 平均运算或加权和运算来导出当前块的运动向量。此时,应用于第一合并候选的运动向量的加权值和应 用于第二合并候选的运动向量的加权值可以通过上述实施例来确定。
[0618] 在第一合并候选为非仿射合并候选并且第二仿射合并候选为仿射合并候选的情况下,可以通过缩放 第二合并候选的运动向量来导出当前块的运动向量。公式34示出了导出当前块的运动向量的示例。
[0619] 【公式34】
[0620] (mvX,mvY)=(mvOx,mvOy)+((mv1x,mv1y)>>M)
[0621] 在公式34中,(mvX,mvY)表示当前块的运动向量,(mv0x,mv0y)表示第一合并候选的运动向量, (mv1x,mv1y)表示第二合并候选的运动向量。M表示缩放参数。M可以在编码器和解码器中预定义。可 替代地,可以根据当前块或候选块的大小来确定缩放参数M的值。例如,当第二候选块的宽度或高度大 于32时,可以将M设置为3,否则可以将M设置为2。
[0622] 在组合了合并模式和高级运动向量预测模式的预测模式中,可使用从合并候选中导出的运动信息来 生成第一预测块,并且可以使用从运动向量预测候选中导出的运动向量来生成第二预测块。
[0623] 在高级运动向量预测模式中,可以从与当前块相邻的相邻块或同位置图像内的同位置块中导出运动 向量预测候选。然后,可以指定多个运动向量预测候选中的任一个,并且可以将所指定的运动向量预测 候选设置为当前块的运动向量预测结果。然后,可以通过将当前块的运动向量预测结果与运动向量差值 相加来导出当前块的运动向量。
[0624] 在组合了合并模式和高级运动向量预测模式的预测模式中,可以从同一候选块中导出合并候选和运 动向量预测候选。例如,如果通过merge_idx来指定合并候选,则可以将用于导出所指定的合并候选的候 选块的运动向量设置为运动向量预测结果。可替代地,如果通过mvp_flag来指定运动向量预测候选,则 可以选择从用于导出所指定的合并候选的候选块中导出的合并候选。
[0625] 可替代地,用于导出合并候选的候选块和用于导出运动向量预测候选的候选块可以不同。例如,如 果选择从位于当前块的上方的候选块中导出的合并候选,则可以设置为选择从位于当前块的左侧的候选 块中导出的运动向量预测候选。
[0626] 可替代地,当通过索引信息选择的合并候选和通过索引信息选择的运动向量预测候选为从同一候选 块中导出时,可以用从与所述候选块相邻的相邻候选块中导出的运动向量预测候选来替换所述运动向量 预测候选,或者可以用从与所述候选块相邻的候选块中导出的合并候选来替换所述合并候选。
[0627] 图41是示出了替换合并候选的示例的图。
[0628] 在上述实施例中说明了考虑第一预测样本或子块中包括的预测样本的位置来确定PDPC加权值。还 可以进一步考虑当前块的形状来确定PDPC加权值。
[0629] 例如,对于DC模式而言,根据当前块是宽度大于高度的非正方形还是高度大于宽度的非正方形, PDPC加权值的导出方法会不同。
[0630] 可以通过将原始图像与预测图像相减来导出所导出的残差图像。在这种情况下,将残差图像变更为 频域时,即使移除频率分量中的高频率分量,也不会大幅降低视频的主观画质。由此,若将高频率分量 的值变小或者将高频率分量的值设置为0,则具有在不引起明显视觉失真的情况下提高压缩效率的效果。 反映以上特性,可以对当前块进行变换以将残差图像分解为2维频率分量。可以使用离散余弦变换  (DCT,Discrete Cosine Transform)或离散正弦变换(DST,Discrete Sine Transform)等变换技术来执 行所述变换。
[0631] DCT使用余弦变换将残差图像分解(或变换)为2维频率分量,而DST使用正弦变换将残差图像分解 (或变换)为2维频率分量。作为残差图像的变换结果,频率分量可表示为2
基本图像。例如,对大小为 N×N的块执行DCT变换时,可获得N 个基本图案分量。可以通过变换获得大小为N×N的块中包括的各个 基本图案分量的大小。根据使用的变换技术,可以将基本图案分量的大小称为DCT系数或DST系数。
[0632] 变换技术DCT主要用于对非0的低频率分量分布较多的图像进行变换。变换技术DST主要用于高频率 分量分布较多的图像。
[0633] 还可以使用DCT或DST以外的变换技术来变换残差图像。
[0634] 以下,将残差图像变换为2维频率分量的过程称为2维图像变换。而且,将通过变换结果获得的基本 图案分量的大小称为变换系数。例如,变换系数可指DCT系数或DST系数。当同时应用稍后要描述的第 一变换及第二变换时,变换系数可以表示通过第二变换的结果生成的基本图案分量的大小。
[0635] 可以以块为单位确定变换技术。可以基于当前块的预测编码模式、当前块的大小或当前块的形状中 的至少一个来确定变换技术。例如,当以帧内预测模式对当前块进行编码并且当前块的大小小于N×N时, 可以使用变换技术DST执行变换。另一方面,在不能满足所述条件时,可以使用变换技术DCT执行变换。
[0636] 在残差图像中,还可以对一部分块不进行2维图像变换。不执行2维图像变换可称为变换跳过 (Transform Skip)。当应用变换跳过时,可以将量化应用于未执行变换的残差值。
[0637] 使用DCT或DST变换当前块之后,可以再次对变换的当前块进行变换。在这种情况下,基于DCT或 DST的变换可定义为第一变换,再次对应用第一变换的块进行变换的过程可称为第二变换。
[0638] 第一变换可以使用多个变换核候选中的任一个来执行。例如,可以使用DCT2、DCT8或DCT7中的 任一个来执行第一变换。
[0639] 针对水平方向及垂直方向还可以使用不同的变换核。还可以通过比特流用信号发送表示水平方向的 变换核及垂直方向的变换核的组合的信息。
[0640] 第一变换及第二变换的执行单元会不同。例如,可以对8×8块执行第一变换,并且可以对变换的8×8 块中的大小为4×4的子块执行第二变换。在这种情况下,还可以将不执行第二变换的剩余区域的变换系 数设置为0。
[0641] 可替代地,可以对4×4块执行第一变换,并且可以对包括变换的4×4块的大小为8×8的区域可执行第 二变换。
[0642] 可以通过比特流用信号发送表示是否执行第二变换的信息。
[0643] 在解码器中可执行第二变换的逆变换(第二逆变换),并且可以对其结果执行第一变换的逆变换 (第一逆变换)。作为第二逆变换及第一逆变换的执行结果,可以获得当前块的残差信号。
[0644] 量化用于减少块的能量,并且量化过程包括将变换系数除以特定常数的过程。所述常数可由量化参 数来导出,并且量化参数可定义为1至63之间的值。
[0645] 若在编码器中执行变换及量化,则解码器可以通过逆量化及逆变换来获得残差块。在解码器中将预 测块和残差块加起来,可以获得当前块的重建块。
[0646] 若获得当前块的重建块,则可以通过环内滤波(In‑loop filtering)来减少在量化及编码过程中产生的  信息丢失。环内滤波器可以包括去块滤波器(Deblocking filter)、样本自适应偏移滤波器(Sample Adaptive Offset filter,SAO)或自适应环路滤波器(Adaptive Loop Filter,ALF)中的至少一个。以下, 将应用环内滤波器之前的重建块称为第一重建块,将应用环内滤波器之后的重建块称为第二重建块。
[0647] 可以对第一重建块应用去块滤波器、SAO或ALF中的至少一个来获得第二重建块。在这种情况下, 可以在应用去块滤波器之后应用SAO或ALF。
[0648] 去块滤波器用于缓解通过以块为单位执行量化时在块的边界中产生的画质劣化(块效应,Blocking Artifact)。为了应用去块滤波器,可以确定第一重建块与相邻重建块之间的块强度(Blocking Strength, BS)。
[0649] 图42是示出了确定块强度的过程的流程图。
[0650] 在图30所示的示例中,P表示第一重建块,Q表示相邻的重建块。其中,相邻重建块可以与当前块的 左侧或上方相邻。
[0651] 在图42所示的示例中,示出了考虑P和Q的预测编码模式、是否包括非零变换系数、是否使用相同的 参考图片执行帧间预测、以及运动向量的差值是否大于或等于阈值来确定块强度。
[0652] 基于块强度,可以确定是否应用了去块滤波器。例如,块强度为0时有可能不执行滤波。
[0653] SAO用于缓解在频域中执行量化时产生的振铃效应(Ringing Artifact)。可以通过加上或减去考虑 第一重建图像的图案而确定的偏移量来执行SAO。偏移量的确定方法包括边偏移(Edge Offset,EO)或 边带偏移(Band Offset)。EO表示根据周边像素的图案来确定当前样本的偏移的方法。BO表示对区域 内具有类似的亮度值的像素的集合应用共同的偏移的方法。具体地,将像素亮度区分为32个均等的区间, 将具有类似的亮度值的像素设置为一个集合。例如,将32个带中相邻的4个带设置为一组,在4个带中所 属的样本可以应用相同的偏移量。
[0654] ALF是对第一重建图像或应用去块滤波器的重建图像应用预定义的大小/形状的滤波器来生成第二重 建图像的方法。以下公式35表示ALF的适用例。
[0655] 【公式35】
[0656]
[0657] 可以以图像、编码树单元、编码块、预测块或变换块为单位来选择预定义的滤波器候选中的任一个。 各个滤波器候选的大小或形状中的任一个会不同。
[0658] 图43是示出了预定义的滤波器候选的图。
[0659] 如在图43所示的示例中,可以选择5×5、7×7或9×9菱形中的至少一种。
[0660] 针对色度分量只能使用大小为5×5的菱形。
[0661] 将以解码过程或编码过程为中心描述的实施例用于编码过程或解码过程也包括在本发明的范围内。 以与所描述的不同的顺序来改变按预定顺序描述的多个实施例也包括在本发明的范围内。
[0662] 已经基于一系列的步骤或流程图来描述实施例,但这并不限定发明的时间序列顺序,并且根据需要 可同时执行或者按另外顺序执行。并且,在上述实施例中,构成框图的结构要素(例如,单元、模块等) 还可分别实现为硬件设备或软件,并且多个结构要素可以组合实施为单个硬件设备或软件。所述实施例 可以通过程序指令的形式实施,所述程序指令可以由各种计算机部件执行并记录在计算机可读记录介质 中。所述计算机可读记录介质可单独包括或组合包括程序指令、数据文件、数据结构等。计算机可读记 录介质的示例可以包括硬盘、软盘及磁带等磁性介质、CD‑ROM、DVD等光学记录介质、如软式光盘 (floptical disk)的磁‑光介质(magneto‑optical media)及ROM、RAM、闪速存储器等等以存储程序指令 并执行该指令的方式专门配置的硬件设备。所述硬件设备可以被配置为作为一个或多个软件模块进行操 作以执行根据本发明的处理,另一方面亦然。
[0663] 【工业实用性】
[0664] 本发明可以应用于对视频进行编码/解码的电子设备。