1.本发明涉及一种视频编码/解码方法和设备。更具体地,本发明涉及一种用于基于帧内块复制对视频图像进行编码/解码的方法和设备。
背景技术:
2.最近,在各种应用中,对诸如高清晰度(hd)或超高清晰度(uhd)图像的高分辨率和质量图像的需求已经增加。随着图像的分辨率和质量的提高,数据量相应地增加。当通过诸如有线或无线宽带信道的现有传输介质传输图像数据时或当存储图像数据时,这是传输成本和存储成本增加的原因之一。为了解决高分辨率和高质量图像数据的这些问题,需要高效的图像编码/解码技术。
3.存在各种视频压缩技术,诸如从先前画面或后续画面内的像素的值预测当前画面内的像素的值的帧间预测技术、从当前画面的另一区域内的像素的值预测当前画面的一区域内的像素的值的帧内预测技术、压缩残差信号的能量的变换和量化技术、以及将较短码分配给频繁出现的像素值而将较长码分配给较少出现的像素值的熵编码技术。
4.在传统的图像编码/解码方法和设备中,如果亮度分量和色度分量在基于帧内块复制的编码/解码处理中具有不同的块分区结构,则亮度分量的编码信息被限制性地用于色度分量的编码/解码处理。因此,在编码效率提高方面存在限制。
技术实现要素:
5.技术问题
6.在基于帧内块复制的视频编码/解码中,可以通过有效地构建块矢量候选列表并根据帧内块复制模式对重构块执行去块滤波来提高编码效率。
7.技术方案
8.根据本公开的示例性实施例的视频解码方法可以包括:针对当前序列获得指示是否启用帧内块复制模式的帧内块复制模式启用标志;当所述帧内块复制模式启用标志指示针对当前序列启用帧内块复制模式时,获得关于块矢量候选列表的块矢量候选的最大数量的信息;在当前块的预测模式为帧内块复制模式时,根据关于块矢量候选的最大数量的信息,确定包括一个或更多个块矢量候选的当前块的块矢量候选列表;基于当前块的所述块矢量候选列表的一个或更多个块矢量候选确定当前块的块矢量;以及根据所述块矢量确定当前块的预测块。
9.根据实施例,所述帧内块复制模式启用标志和关于块矢量候选的最大数量的信息是从当前序列所参考的序列参数集中获得的。
10.根据实施例,关于块矢量候选的最大数量的信息指示预定正整数与所述块矢量候选列表的块矢量候选的最大数量之间的差。
11.根据实施例,视频解码方法还可以包括:基于所述预测块重构当前块;以及对重构的当前块的块边界进行去块滤波。
12.根据实施例,对重构的当前块的所述块边界进行去块滤波的步骤包括:在当前块的预测模式是帧内块复制模式并且与块边界相邻的邻近块中的至少一个邻近块是帧内块复制模式时,对块边界进行去块滤波。
13.根据实施例,帧内块复制模式可以是块复制跳过模式、块复制合并模式和块复制amvp模式中的至少一个。
14.根据实施例,确定当前块的块矢量候选列表的步骤可以包括:当所述块矢量候选列表中包括的候选块矢量的数量小于所述块矢量候选列表中准许的块矢量候选的最大数量时,将基于历史的块矢量候选列表的至少一个基于历史的块矢量候选添加到所述块矢量候选列表,直到所述块矢量候选列表中包括的候选块矢量的数量变得等于所述块矢量候选列表中准许的块矢量候选的最大数量。
15.根据实施例,将所述基于历史的块矢量候选添加到所述块矢量候选列表的步骤包括:当所述基于历史的块矢量候选不与包括在所述块矢量候选列表中的块矢量候选重复时,将所述基于历史的块矢量候选添加到所述块矢量候选列表。
16.根据实施例,所述视频解码方法可以包括:基于当前块的所述块矢量来更新所述基于历史的块矢量候选列表。
17.根据实施例,更新所述基于历史的块矢量候选列表的步骤可以包括:在当前块的尺寸大于预定尺寸时,更新所述基于历史的块矢量候选列表。
18.根据本公开的示例性实施例的一种视频编码方法可包括:在当前块的预测模式是帧内块复制模式时,根据关于块矢量候选的最大数量的信息确定包括一个或更多个块矢量候选的当前块的块矢量候选列表;基于当前块候选列表的所述一个或更多个块矢量候选确定当前块的块矢量;根据所述块矢量确定当前块的预测块;对针对当前序列的指示是否启用帧内块复制模式的帧内块复制模式启用标志进行熵编码;以及当所述帧内块复制模式启用标志指示针对当前序列启用帧内块复制模式时,对关于所述块矢量候选列表的块矢量候选的最大数量的信息进行熵编码。
19.根据实施例,所述帧内块复制模式启用标志和关于块矢量候选的最大数量的信息被包括在当前序列所参考的序列参数集中。
20.根据实施例,关于块矢量候选的最大数量的信息指示预定正整数与所述块矢量候选列表的块矢量候选的最大数量之间的差。
21.根据实施例,视频编码方法还可以包括:基于预测块重构当前块;以及对重构的当前块的块边界进行去块滤波。
22.根据实施例,对重构的当前块的所述块边界进行去块滤波的步骤包括:在当前块的预测模式是帧内块复制模式并且与块边界相邻的邻近块中的至少一个邻近块是帧内块复制模式时,对所述块边界进行去块滤波。
23.根据实施例,帧内块复制模式可以是块复制跳过模式、块复制合并模式和块复制amvp模式中的至少一个。
24.根据实施例,确定当前块的所述块矢量候选列表的步骤可以包括:当所述块矢量候选列表中包括的候选块矢量的数量小于所述块矢量候选列表中准许的块矢量候选的最大数量时,将基于历史的块矢量候选列表的至少一个基于历史的块矢量候选添加到所述块矢量候选列表,直到所述块矢量候选列表中包括的候选块矢量的数量变得等于所述块矢量
候选列表中准许的块矢量候选的最大数量。
25.根据实施例,将所述基于历史的块矢量候选添加到所述块矢量候选列表的步骤包括:当所述基于历史的块矢量候选不与包括在所述块矢量候选列表中的块矢量候选重复时,将所述基于历史的块矢量候选添加到所述块矢量候选列表。
26.根据实施例,所述视频编码方法可以包括:基于当前块的所述块矢量来更新所述基于历史的块矢量候选列表。
27.根据实施例,更新所述基于历史的块矢量候选列表的步骤可以包括:当当前块的尺寸大于预定尺寸时,更新所述基于历史的块矢量候选列表。
28.本公开提供了一种用于存储通过经由视频编码方法对视频进行编码而生成的比特流的计算机可读记录介质。这里,视频编码方法包括:在当前块的预测模式是帧内块复制模式时,根据关于块矢量候选的最大数量的信息,确定包括一个或更多个块矢量候选的当前块的块矢量候选列表;基于当前块候选列表的所述一个或更多个块矢量候选确定当前块的块矢量;根据所述块矢量确定当前块的预测块;对针对当前序列的指示是否启用帧内块复制模式的帧内块复制模式启用标志进行熵编码;以及当所述帧内块复制模式启用标志指示针对当前序列启用帧内块复制模式时,对关于所述块矢量候选列表的块矢量候选的最大数量的信息进行熵编码。
29.有益效果
30.本发明可提供一种用于通过有效地构造块矢量候选列表并通过根据帧内块复制模式对重构块执行去块滤波来提高基于帧内块复制的视频编码/解码中的编码效率的方法和装置。
附图说明
31.图1是示出根据应用本发明的实施例的编码设备的配置的框图。
32.图2是示出根据应用本发明的实施例的解码设备的配置的框图。
33.图3是示意性地示出当对图像进行编码和解码时图像的分区结构的视图。
34.图4是示出帧内预测过程的视图。
35.图5是示出画面间预测过程的实施例的示图。
36.图6是示出变换和量化过程的示图。
37.图7是示出能够用于帧内预测的参考样点的示图。
38.图8是示出根据本发明的实施例的图像编码方法的流程图。
39.图9是示出根据本发明的实施例的图像解码方法的流程图。
40.图10是示出根据本发明的实施例的当前块和预测块之间的关系的视图。
41.图11是示出根据本发明的实施例的与当前块相邻的邻近块的视图。
42.图12是示出根据本发明的实施例的当预定阈值是32时被分区的当前块的视图。
43.图13是示出根据本发明实施例的共享和使用在上级块中构造的块矢量候选列表的过程的视图。
44.图14是示出根据本发明的实施例的当前块和参考预测块之间的关系的视图。
45.图15是示出根据本发明的实施例的帧内块复制模式下的当前块的参考预测块的视图。
46.图16是示出根据本发明的实施例的帧内块复制模式下的参考区域缓冲器的视图。
47.图17是示出根据本发明的实施例的块矢量的值的范围的视图。
48.图18是示出根据本发明的实施例的在当前块之前编码/解码的区域的视图。
49.图19是示出根据本发明的另一实施例的帧内块复制模式下的参考区缓冲器的示图。
50.图20是示出根据本发明的实施例的色度分量块和亮度分量区域之间的对应关系的视图。
51.图21是示出根据本发明的实施例的亮度分量子块的视图。
52.图22是示出根据本发明的实施例的当前块和预测块之间的关系的视图。
53.图23是示出根据本发明的实施例的与色度分量块对应的亮度分量子块的预测编码模式相同时的视图。
54.图24是示出根据本发明的实施例的与色度分量块对应的亮度分量子块的预测编码模式不同时的视图。
55.图25a至图28是示出根据本发明的实施例的与帧内块分区相关联地发送的编码信息的示图。
56.图29至图32示出根据本发明的实施例的在帧内块模式下与块矢量相关联地编码/解码的编码信息。
57.图33示出根据本发明的实施例的视频解码方法。
58.图34示出根据本发明的实施例的视频编码方法。
具体实施方式
59.可以对本发明进行各种修改,并且存在本发明的各种实施例,现在将参考附图提供并详细描述其示例。然而,本发明不限于此,而是示例性实施例可以被解释为包括本发明的技术概念和技术范围中的所有修改、等同物或替代物。在各个方面,相似的附图标记指代相同或相似的功能。在附图中,为了清楚起见,元件的形状和尺寸可能被夸大。在本发明的以下详细描述中,参考了附图,附图通过图示的方式示出了可以实践本发明的具体实施例。足够详细地描述这些实施例以使本领域技术人员能够实现本公开。应当理解,本公开的各种实施例虽然不同,但不一定是相互排斥的。例如,在不脱离本公开的精神和范围的情况下,本文结合一个实施例描述的具体特征、结构和特性可以在其他实施例内实现。另外,应当理解,在不脱离本公开的精神和范围的情况下,可以修改每个公开的实施例内的各个元件的位置或布置。因此,以下详细描述不应被视为具有限制意义,并且本公开的范围仅由所附权利要求(在适当解释的情况下,还连同权利要求所要求保护的等同物的全部范围)来限定。
60.说明书中使用的术语“第一”、“第二”等可以用于描述各种组件,但是这些组件不应被解释为限于这些术语。这些术语仅用于将一个组件与其他组件区分开。例如,在不脱离本发明的范围的情况下,“第一”组件可以被称为“第二”组件,并且“第二”组件也可以类似地被称为“第一”组件。术语“和/或”包括多个项的组合或多个术语中的任何一个。
61.应当理解,当元件在本说明书中被简单地称为“连接到”或“耦合到”另一个元件而不是“直接连接到”或“直接耦合到”另一个元件时,它可以“直接连接到”或“直接耦合到”另
一个元件,或者在另一元件介于其间的情况下连接到或耦合到另一个元件。相反,应当理解,当元件被称为“直接耦合”或“直接连接”到另一元件时,不存在中间元件。
62.此外,在本发明的实施例中示出的构成部件被独立地示出,以便表示彼此不同的特性功能。因此,这并不意味着每个构成部件以分离的硬件或软件的构成单元来构成。换句话说,为方便起见,每个构成部件包括所列举的构成部件中的每一个。因此,每个构成部件的至少两个构成部件可以组合以形成一个构成部件,或者一个构成部件可以被分成多个构成部件以执行每个功能。在不脱离本发明的实质的情况下,组合每个构成部件的实施例和划分一个构成部件的实施例也被包括在本发明的范围内。
63.本说明书中使用的术语仅用于描述特定实施例,并不旨在限制本发明。以单数使用的表述涵盖复数的表述,除非其在上下文中具有明显不同的含义。在本说明书中,应当理解,诸如“包括”、“具有”等术语旨在指示说明书中公开的特征、数量、步骤、动作、元件、部件或其组合的存在,并且不旨在排除可存在或可添加一个或更多个其他特征、数量、步骤、动作、元件、部件或其组合的可能性。换句话说,当特定元件被称为“被包括”时,不排除除了对应元件之外的元件,而是附加元件可以被包括在本发明的实施例或本发明的范围内。
64.此外,一些组成部分可能不是执行本发明的基本功能的必不可少的组成部分,而是仅改善其性能的选择性的组成部分。除了用于改善性能的组成部分之外,本发明可以通过仅包括用于实现本发明的本质的不可或缺的组成部分来实现。仅包括除了用于仅改善性能的选择性组成部分之外的必不可少的组成部分的结构也被包括在本发明的范围内。
65.在下文中,将参考附图详细描述本发明的实施例。在描述本发明的示例性实施例时,将不详细描述公知的功能或结构,因为它们可能不必要地模糊对本发明的理解。附图中相同的组成元件由相同的附图标记表示,并且将省略相同元件的重复描述。
66.在下文中,图像可以表示构成视频的画面,或者可以表示视频本身。例如,“图像的编码或解码或编码和解码两者”可以表示“运动画面的编码或解码或编码和解码两者”,并且可以表示“运动画面的图像中的一个图像的编码或解码或编码和解码两者”。
67.在下文中,术语“运动画面”和“视频”可以被用作相同的含义并且彼此替换。
68.在下文中,目标图像可以是作为编码目标的编码目标图像和/或作为解码目标的解码目标图像。此外,目标图像可以是输入到编码设备的输入图像和输入到解码设备的输入图像。这里,目标图像可以具有与当前图像相同的含义。
69.在下文中,术语“图像”、“画面”、“帧”和“屏幕”可以作为相同的含义被使用并且彼此替换。
70.在下文中,目标块可以是作为编码目标的编码目标块和/或作为解码目标的解码目标块。此外,目标块可以是作为当前编码和/或解码的目标的当前块。例如,术语“目标块”和“当前块”可以作为相同的含义被使用并且彼此替换。
71.在下文中,术语“块”和“单元”可以作为相同的含义被使用并且彼此替换。或者,“块”可以表示特定单元。
72.在下文中,术语“区域”和“片段”可以彼此替换。
73.在下文中,特定信号可以是表示特定块的信号。例如,原始信号可以是表示目标块的信号。预测信号可以是表示预测块的信号。残差信号可以是表示残差块的信号。
74.在实施例中,特定信息、数据、标志、索引、元素和属性等中的每一个可以具有值。
等于“0”的信息、数据、标志、索引、元素和属性的值可以表示逻辑假或第一预定义值。换句话说,值“0”、假、逻辑假和第一预定义值可以彼此替换。等于“1”的信息、数据、标志、索引、元素和属性的值可以表示逻辑真或第二预定义值。换句话说,值“1”、真、逻辑真和第二预定义值可以彼此替换。
75.当变量i或j用于表示列、行或索引时,i的值可以是等于或大于0的整数或者可以是等于或大于1的整数。也就是说,列、行、索引等可以从0计数或者可以从1计数。
76.术语说明
77.编码器:表示执行编码的设备。即,是指编码设备。
78.解码器:表示执行解码的设备。即,是指解码设备。
79.块:是m
×
n的样点阵列。这里,m和n可以表示正整数,并且块可以表示二维形式的样点阵列。块可以指单元。当前块可以表示在编码时成为目标的编码目标块,或者可以表示在解码时成为目标的解码目标块。另外,当前块可以是编码块、预测块、残差块和变换块中的至少一个。
80.样点:是构成块的基本单元。它可以根据比特深度(bd)被表示为从0到2
bd-1的值。在本发明中,样点可以用作像素的含义。也就是说,样点、pel、像素可以具有彼此相同的含义。
81.单元:可以指编码和解码单元。当对图像进行编码和解码时,该单元可以是通过对单个图像进行分区而生成的区域。另外,当在编码或解码期间将单个图像分区成子划分单元时,该单元可以表示子划分单元。也就是说,可以将图像分区为多个单元。当对图像进行编码和解码时,可以对每个单元执行预定处理。单个单元可以被划分成尺寸小于该单元的尺寸的子单元。根据功能,单元可以表示块、宏块、编码树单元、编码树块、编码单元、编码块、预测单元、预测块、残差单元、残差块、变换单元、变换块等。另外,为了将单元与块区分开,单元可以包括亮度分量块、与亮度分量块相关联的色度分量块以及每个颜色分量块的语法元素。该单元可具有各种尺寸和形式,并且具体地,该单元的形式可以是二维几何图形,诸如正方形形状、矩形形状、梯形形状、三角形形状、五边形形状等。另外,单元信息可包括指示编码单元、预测单元、变换单元等的单元类型、以及单元尺寸、单元深度、单元的编码和解码的序列等中的至少一个。
82.编码树单元:配置有亮度分量y的单个编码树块以及与色度分量cb和cr相关的两个编码树块。另外,编码树单元可表示包括块和每个块的语法元素。可以通过使用四叉树分区方法、二叉树分区方法和三叉树分区方法中的至少一种来对每个编码树单元进行分区,以配置诸如编码单元、预测单元、变换单元等的更低等级单元。编码树单元可被用作用于指定在对作为输入图像的图像进行编码/解码时成为处理单元的样点块的术语。这里,四叉树可以表示四元树。
83.当编码块的尺寸在预定范围内时,可以仅使用四叉树分区进行划分。这里,预定范围可被定义为仅能够使用四叉树分区进行划分的编码块的最大尺寸和最小尺寸中的至少一个。可通过比特流用信号传送指示允许四叉树分区的编码块的最大尺寸/最小尺寸的信息,并且可在序列、画面参数、并行块组或条带(片段)中的至少一个单元中用信号传送所述信息。可选地,编码块的最大尺寸/最小尺寸可以是编码器/解码器中预定的固定尺寸。例如,当编码块的尺寸对应于256
×
256至64
×
64时,可仅使用四叉树分区来进行分区。可选
地,当编码块的尺寸大于最大变换块的尺寸时,可仅使用四叉树分区来进行划分。这里,将被划分的块可以是编码块和变换块中的至少一个。在这种情况下,指示编码块的划分的信息(例如,split_flag)可以是指示是否执行四叉树分区的标志。当编码块的尺寸落在预定范围内时,可仅使用二叉树或三叉树分区来进行划分。在此情况下,四叉树分区的以上描述可以以相同方式应用于二叉树分区或三叉树分区。
84.编码树块:可用作用于指定y编码树块、cb编码树块和cr编码树块中的任一个的术语。
85.邻近块:可以表示与当前块相邻的块。与当前块相邻的块可以表示与当前块的边界接触的块、或者位于距当前块预定距离内的块。邻近块可以表示与当前块的顶点相邻的块。这里,与当前块的顶点相邻的块可以表示与水平相邻于当前块的邻近块垂直相邻的块,或者与垂直相邻于当前块的邻近块水平相邻的块。
86.重构的邻近块:可以表示与当前块相邻并且已经在空间/时间上编码或解码的邻近块。在本文中,重构的邻近块可表示经重构的邻近单元。重构的空间邻近块可以是在当前画面内并且已经通过编码或解码或编码和解码两者重构的块。重构的时间邻近块是在参考图像内的在与当前画面的当前块对应的位置处的块或该块的邻近块。
87.单元深度:可以表示单元的分区程度。在树结构中,最高节点(根节点)可对应于未经分区的第一单元。此外,最高节点可具有最小深度值。在这种情况下,最高节点可以具有等级0的深度。具有等级1的深度的节点可以表示通过对第一单元进行一次分区而生成的单元。具有等级2的深度的节点可以表示通过对第一单元进行两次分区而生成的单元。具有等级n的深度的节点可以表示通过对第一单元进行n次分区而生成的单元。叶节点可以是最低节点和不能被进一步分区的节点。叶节点的深度可以是最大等级。例如,最大等级的预定义值可以是3。根节点的深度可以是最低的,并且叶节点的深度可以是最深的。另外,当单元被表示为树结构时,单元所在的等级可以表示单元深度。
88.比特流:可以表示包括编码图像信息的比特流。
89.参数集:对应于比特流内的配置中的头信息。视频参数集、序列参数集、画面参数集和自适应参数集中的至少一个可被包括在参数集中。另外,参数集可包括条带头、并行块组头和并行块头信息。术语“并行块组”表示一组并行块并且具有与条带相同的含义。
90.自适应参数集可表示可通过在不同的画面、子画面、条带、并行块组、并行块或分块中参考而共享的参数集。另外,可通过参考用于画面内部的子画面、条带、并行块组、并行块或分块的不同自适应参数集来使用自适应参数集中的信息。
91.另外,关于自适应参数集,可以通过使用用于画面内部的子画面、条带、并行块组、并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
92.另外,关于自适应参数集,可以通过使用用于子画面内部的条带、并行块组、并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
93.另外,关于自适应参数集,可以通过使用用于条带内部的并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
94.另外,关于自适应参数集,可以通过使用用于并行块内部的分块的不同自适应参数集的标识符来引用不同的自适应参数集。
95.关于自适应参数集标识符的信息可被包括在子画面的参数集或报头中,并且与自
适应参数集标识符对应的自适应参数集可被用于子画面。
96.关于自适应参数集标识符的信息可被包括在并行块的参数集或报头中,并且与自适应参数集标识符对应的自适应参数集可被用于并行块。
97.关于自适应参数集标识符的信息可被包括在分块的报头中,并且与自适应参数集标识符对应的自适应参数集可被用于分块。
98.画面可被分区为一个或更多个并行块行和一个或更多个并行块列。
99.子画面可被分区为画面内的一个或更多个并行块行和一个或更多个并行块列。子画面可以是画面内的具有矩形/正方形形状的区域,并且可包括一个或更多个ctu。另外,至少一个或更多个并行块/分块/条带可被包括在一个子画面内。
100.并行块可以是画面内的具有矩形/正方形形状的区域,并且可包括一个或更多个ctu。另外,并行块可以被分区为一个或更多个分块。
101.分块可以表示并行块内的一个或更多个ctu行。并行块可以被分区为一个或更多个分块,并且每个分块可以具有至少一个或更多个ctu行。未被分区成两个或更多个的并行块可以表示分块。
102.条带可包括画面内的一个或更多个并行块,并且可包括并行块内的一个或更多个分块。
103.解析:可以表示通过执行熵解码来确定语法元素的值,或者可以表示熵解码本身。
104.符号:可以表示编码/解码目标单元的语法元素、编码参数和变换系数值中的至少一个。另外,符号可表示熵编码目标或熵解码结果。
105.预测模式:可以是指示利用帧内预测被编码/解码的模式或利用帧间预测被编码/解码的模式的信息。
106.预测单元:可表示当执行预测(例如帧间预测、帧内预测、帧间补偿、帧内补偿及运动补偿)时的基本单元。单个预测单元可以被分区为具有更小尺寸的多个分区,或者可以被分区为多个更低等级的预测单元。多个分区可以是执行预测或补偿的基本单元。通过划分预测单元而生成的分区也可以是预测单元。
107.预测单元分区:可以表示通过对预测单元进行分区而获得的形式。
108.参考画面列表可指包括用于帧间预测或运动补偿的一个或更多个参考画面的列表。存在多个类型的可用参考画面列表,包括lc(组合列表)、l0(列表0)、l1(列表1)、l2(列表2)、l3(列表3)。
109.帧间预测指示符可指当前块的帧间预测(单向预测、双向预测等)的方向。可选地,帧间预测指示符可以指用于生成当前块的预测块的参考画面的数量。可选地,帧间预测指示符可以指在对当前块执行帧间预测或运动补偿时使用的预测块的数量。
110.预测列表利用标志指示是否使用特定参考画面列表中的至少一个参考画面来生成预测块。可以使用预测列表利用标志来推导帧间预测指示符,相反地,可以使用帧间预测指示符来推导预测列表利用标志。例如,当预测列表利用标志具有第一值零(0)时,这意味着不使用参考画面列表中的参考画面来生成预测块。另一方面,当预测列表利用标志具有第二值一(1)时,这意味着使用参考画面列表来生成预测块。
111.参考画面索引可指代指示参考画面列表中的特定参考画面的索引。
112.参考画面可以表示为了特定块的帧间预测或运动补偿的目的而由特定块参考的
参考画面。可选地,参考画面可以是包括由当前块参考以用于帧间预测或运动补偿的参考块的画面。在下文中,术语“参考画面”和“参考图像”具有相同的含义并且可以互换。
113.运动矢量可以是用于帧间预测或运动补偿的二维矢量。运动矢量可以表示编码/解码目标块与参考块之间的偏移。例如,(mvx,mvy)可表示运动矢量。此处,mvx可表示水平分量,mvy可表示垂直分量。
114.搜索范围可以是在帧间预测期间被搜索以检索运动矢量的二维区域。例如,搜索范围的大小可以是m
×
n。这里,m和n都是整数。
115.当预测运动矢量时,运动矢量候选可以指预测候选块或预测候选块的运动矢量。另外,运动矢量候选可被包括在运动矢量候选列表中。
116.运动矢量候选列表可表示由一个或更多个运动矢量候选组成的列表。
117.运动矢量候选索引可表示指示运动矢量候选列表中的运动矢量候选的指示符。可选地,运动矢量候选索引可以是运动矢量预测因子的索引。
118.运动信息可表示包含多个项中的至少一项的信息,所述多个项包括运动矢量、参考画面索引、帧间预测指示符、预测列表利用标志、参考画面列表信息、参考画面、运动矢量候选、运动矢量候选索引、合并候选和合并索引。
119.合并候选列表可表示由一个或更多个合并候选组成的列表。
120.合并候选可表示空间合并候选、时间合并候选、组合合并候选、组合双向预测合并候选或零合并候选。合并候选可包括运动信息,例如帧间预测指示符、针对每个列表的参考画面索引、运动矢量、预测列表利用标志和帧间预测指示符。
121.合并索引可表示指示合并候选列表中的合并候选的指示符。可选地,合并索引可指示在空间/时间上与当前块相邻的重构块中的从其推导出合并候选的块。可选地,合并索引可指示合并候选的至少一条运动信息。
122.变换单元:可以表示当执行残差信号的编码/解码(诸如变换、逆变换、量化、反量化、变换系数编码/解码)时的基本单元。单个变换单元可被分区为具有更小尺寸的多个更低等级的变换单元。这里,变换/逆变换可以包括第一变换/第一逆变换和第二变换/第二逆变换中的至少一个。
123.缩放:可以表示将量化等级乘以因子的过程。可以通过对量化等级进行缩放来生成变换系数。缩放也可被称作反量化。
124.量化参数:可以表示在量化期间使用变换系数生成量化等级时使用的值。量化参数还可以表示在反量化期间通过缩放量化等级来生成变换系数时使用的值。量化参数可以是映射到量化步长上的值。
125.增量量化参数:可以表示预测的量化参数与编码/解码目标单元的量化参数之间的差值。
126.扫描:可以表示对单元、块或矩阵内的系数进行排序的方法。例如,将系数的二维矩阵改变为一维矩阵可以被称为扫描,并且将系数的一维矩阵改变为二维矩阵可以被称为扫描或逆扫描。
127.变换系数:可以表示在编码器中执行变换之后生成的系数值。它可以表示在解码器中执行熵解码和反量化中的至少一个之后生成的系数值。通过对变换系数或残差信号进行量化所获得的量化等级或量化变换系数等级也可以落入变换系数的含义内。
128.量化等级:可以表示在编码器中通过对变换系数或残差信号进行量化而生成的值。可选地,量化等级可以表示作为在解码器中进行反量化的反量化目标的值。类似地,作为变换和量化的结果的量化变换系数等级也可以落入量化等级的含义内。
129.非零变换系数:可表示具有非零值的变换系数,或具有非零值的变换系数等级或量化等级。
130.量化矩阵:可以表示在为了改善主观或客观图像质量而执行的量化过程或反量化过程中使用的矩阵。量化矩阵也可被称为缩放列表。
131.量化矩阵系数:可以表示量化矩阵内的每个元素。量化矩阵系数也可被称为矩阵系数。
132.默认矩阵:可以表示在编码器或解码器中预先定义的预定量化矩阵。
133.非默认矩阵:可以表示未在编码器或解码器中预先定义而是由用户用信号传送的量化矩阵。
134.统计值:针对具有可计算的特定值的变量、编码参数、常数值等中的至少一个的统计值可以是对应的特定值的平均值、总和值、加权平均值、加权和值、最小值、最大值、最频繁出现的值、中值、插值中的一个或更多个。
135.图1是示出根据应用本发明的实施例的编码设备的配置的框图。
136.编码设备100可以是编码器、视频编码设备或图像编码设备。视频可以包括至少一个图像。编码设备100可对至少一个图像进行顺序编码。
137.参照图1,编码设备100可包括运动预测单元111、运动补偿单元112、帧内预测单元120、切换器115、减法器125、变换单元130、量化单元140、熵编码单元150、反量化单元160、逆变换单元170、加法器175、滤波器单元180和参考画面缓冲器190。
138.编码设备100可通过使用帧内模式或帧间模式或帧内模式和帧间模式两者来对输入图像执行编码。另外,编码设备100可通过对输入图像进行编码来生成包括编码信息的比特流,并输出所生成的比特流。所生成的比特流可以存储在计算机可读记录介质中,或者可以通过有线/无线传输介质进行流传输。当帧内模式被用作预测模式时,切换器115可以被切换到帧内。可选地,当帧间模式被用作预测模式时,切换器115可被切换到帧间模式。这里,帧内模式可以表示帧内预测模式,帧间模式可以表示帧间预测模式。编码设备100可针对输入图像的输入块生成预测块。另外,编码设备100可在生成预测块之后使用输入块和预测块的残差对残差块进行编码。输入图像可以被称为作为当前编码目标的当前图像。输入块可以被称为作为当前编码目标的当前块,或者被称为编码目标块。
139.当预测模式为帧内模式时,帧内预测单元120可使用已编码/解码且与当前块相邻的块的样点作为参考样点。帧内预测单元120可通过使用参考样点对当前块执行空间预测,或通过执行空间预测产生输入块的预测样点。这里,帧内预测可以表示帧内部的预测。
140.当预测模式是帧间模式时,运动预测单元111可以在执行运动预测时从参考图像中检索与输入块最佳匹配的区域,并通过使用检索到的该区域推断运动矢量。在这种情况下,可将搜索区域用作该区域。参考图像可以存储在参考画面缓冲器190中。这里,当执行了参考图像的编码/解码时,可以将参考图像存储在参考画面缓冲器190中。
141.运动补偿单元112可通过使用运动矢量对当前块执行运动补偿来生成预测块。在本文中,帧间预测可以表示帧间预测或运动补偿。
142.当运动矢量的值不是整数时,运动预测单元111和运动补偿单元112可通过将插值滤波器应用于参考画面的部分区域来产生预测块。为了对编码单元执行画面间预测或运动补偿,可确定跳过模式、合并模式、高级运动矢量预测(amvp)模式和当前画面参考模式中的哪种模式用于包括在相应编码单元中的预测单元的运动预测和运动补偿。然后,可以根据所确定的模式不同地执行画面间预测或运动补偿。
143.减法器125可通过使用输入块和预测块的差来生成残差块。残差块可以被称为残差信号。残差信号可以表示原始信号和预测信号之间的差。另外,残差信号可以是通过对原始信号和预测信号之间的差进行变换或量化或者对原始信号和预测信号之间的差进行变换和量化而生成的信号。残差块可以是块单元的残差信号。
144.变换单元130可通过执行残差块的变换来生成变换系数,并输出所生成的变换系数。这里,变换系数可以是通过执行残差块的变换而生成的系数值。当应用变换跳过模式时,变换单元130可跳过残差块的变换。
145.可以通过将量化应用于变换系数或残差信号来生成量化等级。在下文中,在实施例中,量化等级也可以被称为变换系数。
146.量化单元140可通过根据参数对变换系数或残差信号进行量化来生成量化等级,并输出所生成的量化等级。这里,量化单元140可通过使用量化矩阵对变换系数进行量化。
147.熵编码单元150可通过对由量化单元140计算的值或对在执行编码时计算的编码参数值执行根据概率分布的熵编码来生成比特流,并输出所生成的比特流。熵编码单元150可对图像的样点信息和用于对图像进行解码的信息执行熵编码。例如,用于对图像进行解码的信息可以包括语法元素。
148.当应用熵编码时,符号被表示使得较少数量的比特被分配给具有高生成概率的符号,并且较多数量的比特被分配给具有低生成概率的符号,因此,可以减小用于将被编码的符号的比特流的大小。熵编码单元150可使用用于熵编码的编码方法,诸如指数哥伦布、上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)等。例如,熵编码单元150可通过使用可变长度编码/码(vlc)表来执行熵编码。另外,熵编码单元150可推导目标符号的二值化方法和目标符号/二进制位的概率模型,并通过使用推导出的二值化方法和上下文模型来执行算术编码。
149.为了对变换系数等级(量化等级)进行编码,熵编码单元150可通过使用变换系数扫描方法将二维块形式系数改变为一维矢量形式。
150.编码参数可包含信息(标志、索引等),诸如在编码器中编码且用信号传送到解码器的语法元素以及在执行编码或解码时推导出的信息。编码参数可以表示在对图像进行编码或解码时所需的信息。例如,以下项中的至少一个值或者以下项的组合形式可被包括在比特流中:单元/块尺寸、单元/块深度、单元/块分区信息、单元/块形状、单元/块分区结构、是否进行四叉树形式分区、是否进行二叉树形式分区、二叉树形式的分区方向(水平方向或垂直方向)、二叉树形式的分区形式(对称分区或不对称分区)、当前编码单元是否通过三叉树分区来分区、三叉树分区的方向(水平方向或垂直方向)、预测模式(帧内预测或帧间预测)、亮度帧内预测模式/方向、色度帧内预测模式/方向、帧内分区信息、帧间分区信息、编码块分区标志、预测块分区标志、变换块分区标志、参考样点滤波方法、参考样点滤波器抽头、参考样点滤波器系数、预测块滤波方法、预测块滤波器抽头、预测块滤波器系数、预测块
边界滤波方法、预测块边界滤波器抽头、预测块边界滤波器系数、帧内预测模式、帧间预测模式、运动信息、运动矢量、运动矢量差、参考画面索引、帧间预测角度、帧间预测指示符、预测列表利用标志、参考画面列表、参考画面、运动矢量预测因子索引、运动矢量预测因子候选、运动矢量候选列表、是否使用合并模式、合并索引、合并候选、合并候选列表、是否使用跳过模式、插值滤波器类型、插值滤波器抽头、插值滤波器系数、运动矢量大小、运动矢量的表示精度、变换类型、变换大小、是否使用初级(第一次)变换的信息、是否使用次级变换的信息、初级变换索引、次级变换索引、是否存在残差信号的信息、编码块模式、编码块标志(cbf)、量化参数、量化参数残差、量化矩阵、是否应用环路滤波器、环路滤波器系数、环路滤波器抽头、环路滤波器形状/形式、是否应用去块滤波器、去块滤波器系数、去块滤波器抽头、去块滤波器强度、去块滤波器形状/形式、是否应用自适应样点偏移、自适应样点偏移值、自适应样点偏移类别、自适应样点偏移类型、是否应用自适应环路滤波器、自适应环路滤波器系数、自适应环路滤波器抽头、自适应环路滤波器形状/形式、二值化/逆二值化方法、上下文模型确定方法、上下文模型更新方法、是否执行常规模式、是否执行旁路模式、上下文二进制位、旁路二进制位、有效系数标志、最后有效系数标志、用于系数组的单元的编码标志、最后有效系数的位置、系数的值是否大于1的标志、系数的值是否大于2的标志、系数的值是否大于3的标志、关于剩余系数值的信息、符号信息、重构亮度样点、重构色度样点、残差亮度样点、残差色度样点、亮度变换系数、色度变换系数、量化亮度等级、量化色度等级、变换系数等级扫描方法、解码器侧的运动矢量搜索区域的尺寸、解码器侧的运动矢量搜索区域的形状、解码器侧的运动矢量搜索的次数、关于ctu尺寸的信息、关于最小块尺寸的信息、关于最大块尺寸的信息、关于最大块深度的信息、关于最小块深度的信息、图像显示/输出顺序、条带标识信息、条带类型、条带分区信息、并行块标识信息、并行块类型、并行块分区信息、并行块组标识信息、并行块组类型、并行块组分区信息、画面类型、输入样点的比特深度、重构样点的比特深度、残差样点的比特深度、变换系数的比特深度、量化等级的比特深度和关于亮度信号的信息或关于色度信号的信息。
151.这里,用信号传送标志或索引可以表示由编码器将相应的标志或索引熵编码并包括在比特流中,并且可以表示由解码器从比特流熵解码相应的标志或索引。
152.当编码设备100通过帧间预测执行编码时,编码的当前图像可以用作之后处理的另一图像的参考图像。因此,编码设备100可对编码的当前图像进行重构或解码,或者将重构或解码的图像作为参考图像存储在参考画面缓冲器190中。
153.量化等级可以在反量化单元160中被反量化,或者可以在逆变换单元170中被逆变换。可通过加法器175将经反量化或经逆变换的系数或经反量化和逆变换两者的系数与预测块相加。通过将经反量化或经逆变换的系数或经反量化和逆变换两者的系数与预测块相加,可产生重构块。这里,经反量化或逆变换的系数或经反量化和逆变换两者的系数可以表示被执行反量化和逆变换中的至少一个的系数,并且可以表示重构的残差块。
154.重构块可通过滤波器单元180。滤波器单元180可将去块滤波器、样点自适应偏移(sao)及自适应环路滤波器(alf)中的至少一个应用于重构样点、重构块或重构图像。滤波器单元180可以被称为环路滤波器。
155.去块滤波器可去除在块之间的边界处产生的块失真。为了确定是否应用去块滤波器,可基于在当前块中包括的若干行或列中所包括的样点来确定是否将去块滤波器应用于
所述当前块。当去块滤波器应用于块时,可根据所需的去块滤波强度应用另一滤波器。
156.为了补偿编码误差,可以通过使用样点自适应偏移将适当的偏移值与样点值相加。样点自适应偏移可以以样点为单位来校正去块图像与原始图像的偏移。可以使用将图像的样点分区为预定数量的区域、确定应用偏移的区域并将偏移应用于所确定的区域的方法,或者可使用考虑到关于每个样点的边缘信息来应用偏移的方法。
157.自适应环路滤波器可以基于经滤波的重构图像和原始图像的比较结果来执行滤波。可将包括在图像中的样点分区为预定群组,可确定将应用于每一群组的滤波器,并且可对每一群组执行差分滤波。可通过编码单元(cu)用信号传送是否应用alf的信息,并且将被应用于每一个块的alf的形式及系数可变化。
158.已经通过滤波器单元180的重构块或重构图像可以存储在参考画面缓冲器190中。由滤波器单元180处理的重构块可以是参考图像的一部分。也就是说,参考图像是由滤波器单元180处理的重构块组成的重构图像。所存储的参考图像可以稍后用于帧间预测或运动补偿。
159.图2是示出根据实施例的应用本发明的解码设备的配置的框图。
160.解码设备200可以是解码器、视频解码设备或图像解码设备。
161.参照图2,解码设备200可包括熵解码单元210、反量化单元220、逆变换单元230、帧内预测单元240、运动补偿单元250、加法器225、滤波器单元260和参考画面缓冲器270。
162.解码设备200可接收从编码设备100输出的比特流。解码设备200可接收存储在计算机可读记录介质中的比特流,或者可接收通过有线/无线传输介质流传输的比特流。解码设备200可通过使用帧内模式或帧间模式对比特流进行解码。另外,解码设备200可生成通过解码生成的重构图像或解码图像,并输出重构图像或解码图像。
163.当在解码时使用的预测模式是帧内模式时,可以将切换器切换到帧内。可选地,当在解码时使用的预测模式为帧间模式时,可以将切换器切换到帧间模式。
164.解码设备200可通过对输入比特流进行解码来获得重构的残差块,并生成预测块。当获得了重构的残差块和预测块时,解码设备200可通过将重构的残差块与预测块相加来生成成为解码目标的重构块。解码目标块可以被称为当前块。
165.熵解码单元210可以通过根据概率分布对比特流进行熵解码来生成符号。所生成的符号可以包括量化等级形式的符号。这里,熵解码方法可以是上述熵编码方法的逆过程。
166.为了对变换系数等级(量化等级)进行解码,熵解码单元210可通过使用变换系数扫描方法将一维矢量形式系数改变为二维块形式。
167.量化等级可以在反量化单元220中被反量化,或者在逆变换单元230中被逆变换。量化等级可以是反量化或逆变换的结果或反量化和逆变换两者的结果,并且可以被生成为重构的残差块。在本文中,反量化单元220可将量化矩阵应用于量化等级。
168.当使用帧内模式时,帧内预测单元240可以通过对当前块执行空间预测来生成预测块,该空间预测使用与解码目标块相邻并且已经被解码的块的样点值。
169.当使用帧间模式时,运动补偿单元250可通过对当前块执行运动补偿来生成预测块,其中,所述运动补偿使用运动矢量和存储在参考画面缓冲器270中的参考图像。
170.加法器225可通过将重构的残差块与预测块相加来生成重构块。滤波器单元260可将去块滤波器、样点自适应偏移及自适应环路滤波器中的至少一个应用于重构块或重构图
像。滤波器单元260可以输出重构图像。重构块或重构图像可以存储在参考画面缓冲器270中,并且在执行帧间预测时使用。由滤波器单元260处理的重构块可以是参考图像的一部分。也就是说,参考图像是由滤波器单元260处理的重构块组成的重构图像。存储的参考图像可以稍后用于帧间预测或运动补偿。
171.图3是示意性地示出当对图像进行编码和解码时图像的分区结构的视图。图3示意性地示出了将单个单元划分为多个下层单元的示例。
172.为了有效地对图像进行分区,在编码和解码时,可以使用编码单元(cu)。当对图像进行编码/解码时,编码单元可以用作基本单元。另外,当对图像进行编码/解码时,编码单元可用作用于对帧内预测模式和帧间预测模式进行区分的单元。编码单元可以是用于变换系数的预测、变换、量化、逆变换、反量化或编码/解码处理的基本单元。
173.参照图3,按照最大编码单元(lcu)顺序地对图像300进行分区,并且将lcu单元确定为分区结构。在本文中,lcu可以按照与编码树单元(ctu)相同的含义被使用。单元分区可表示对与单元相关联的块进行分区。在块分区信息中可以包括单元深度的信息。深度信息可表示单元被分区的次数或程度或次数和程度两者。可基于树结构将单个单元分区成与深度信息分层相关联的多个更低等级单元。换句话说,单元和通过对所述单元进行分区而产生的更低等级单元可分别对应于节点及所述节点的子节点。分区出的更低等级的单元中的每一个可具有深度信息。深度信息可以是表示cu的尺寸的信息,并且可以存储在每个cu中。单元深度表示与对单元进行分区相关的次数和/或程度。因此,更低等级的单元的分区信息可包括关于更低等级的单元的尺寸的信息。
174.分区结构可以表示lcu 310内的编码单元(cu)的分布。可以根据是否将单个cu分区为多个(等于或大于2的正整数,包括2、4、8、16等)cu来确定这种分布。通过分区产生的cu的水平尺寸及垂直尺寸可分别是在分区之前的cu的水平尺寸及垂直尺寸的一半,或者可分别具有根据分区的次数而小于分区之前的水平尺寸及垂直尺寸的尺寸。cu可递归地分区成多个cu。通过递归分区,与分区之前的cu的高度和宽度中的至少一个相比,分区之后的cu的高度和宽度中的至少一个可以减小。可递归地执行cu的分区直到预定义深度或预定义尺寸为止。例如,lcu的深度可以是0,且最小编码单元(scu)的深度可以是预定义的最大深度。这里,如上所述,lcu可以是具有最大编码单元尺寸的编码单元,scu可以是具有最小编码单元尺寸的编码单元。从lcu 310开始分区,随着cu的水平尺寸或垂直尺寸或水平尺寸和垂直尺寸两者通过分区而减小,cu深度增加1。例如,对于每一深度,未被分区的cu可具有2n
×
2n的尺寸。此外,在cu被分区的情况下,可将具有2n
×
2n的尺寸的cu分区为具有n
×
n的尺寸的四个cu。随着深度增加1,n的尺寸可以减小到一半。
175.另外,可通过使用cu的分区信息来表示cu是否被分区的信息。分区信息可以是1比特信息。除了scu之外的所有cu可以包括分区信息。例如,当分区信息的值是第一值时,可以不对cu进行分区,当分区信息的值是第二值时,可以对cu进行分区。
176.参照图3,具有深度0的lcu可以是64
×
64块。0可以是最小深度。具有深度3的scu可以是8
×
8块。3可以是最大深度。32
×
32块和16
×
16块的cu可分别被表示为深度1和深度2。
177.例如,当单个编码单元被分区为四个编码单元时,四个被分区出的编码单元的水平尺寸和垂直尺寸可以是被分区之前的cu的水平尺寸和垂直尺寸的一半尺寸。在一个实施例中,当具有32
×
32尺寸的编码单元被分区为四个编码单元时,四个分区出的编码单元中
的每一个可以具有16
×
16尺寸。当单个编码单元被分区为四个编码单元时,可以称编码单元可以被分区为四叉树形式。
178.例如,当一个编码单元被分区为两个子编码单元时,两个子编码单元中的每一个的水平或垂直尺寸(宽度或高度)可以是原始编码单元的水平或垂直尺寸的一半。例如,当尺寸为32
×
32的编码单元被垂直分区为两个子编码单元时,两个子编码单元中的每一个子编码单元可具有16
×
32的尺寸。例如,当尺寸为8
×
32的编码单元被水平分区为两个子编码单元时,两个子编码单元中的每一个子编码单元可具有8
×
16的尺寸。当一个编码单元被划分为两个子编码单元时,可称该编码单元被二元分区或者通过二叉树分区结构被分区。
179.例如,当一个编码单元被分区为三个子编码单元时,可以以1:2:1的比率对编码单元的水平或垂直尺寸进行分区,从而产生水平或垂直尺寸的比率为1:2:1的三个子编码单元。例如,当尺寸为16
×
32的编码单元被水平分区为三个子编码单元时,三个子编码单元可以按照从最上面的子编码单元到最下面的子编码单元的顺序分别具有16
×
8、16
×
16和16
×
8的尺寸。例如,当尺寸为32
×
32的编码单元被垂直地分区为三个子编码单元时,三个子编码单元可按照从左侧子编码单元到右侧子编码单元的顺序分别具有8
×
32、16
×
32和8
×
32的尺寸。当一个编码单元被分区为三个子编码单元时,可称该编码单元被三元分区或通过三叉树分区结构被分区。
180.在图3中,编码树单元(ctu)320是四叉树分区结构、二叉树分区结构和三叉树分区结构全部被应用的ctu的示例。
181.如上所述,为了对ctu进行分区,可以应用四叉树分区结构、二叉树分区结构和三叉树分区结构中的至少一个。可以根据预定的优先级顺序将各种树分区结构顺序地应用于ctu。例如,四叉树分区结构可优先应用于ctu。无法再使用四叉树分区结构被分区的编码单元可对应于四叉树的叶节点。对应于四叉树的叶节点的编码单元可充当二叉树和/或三叉树分区结构的根节点。即,对应于四叉树的叶节点的编码单元可通过二叉树分区结构或三叉树分区结构被进一步分区,或可不被进一步分区。因此,通过防止由与四叉树的叶节点对应的编码单元的二叉树分区或三叉树分区而产生的编码单元被执行进一步的四叉树分区,可以有效地执行块分区和/或分区信息的信号传送。
182.可使用四分区信息来用信号传送对应于四叉树的节点的编码单元被分区的事实。具有第一值(例如,“1”)的四分区信息可指示当前编码单元按照四叉树分区结构被分区。具有第二值(例如,“0”)的四分区信息可指示当前编码单元不按照四叉树分区结构被分区。四分区信息可以是具有预定长度(例如,一个比特)的标志。
183.在二叉树分区与三叉树分区之间可不存在优先级。也就是说,对应于四叉树的叶节点的编码单元可进一步被执行二叉树分区和三叉树分区中的任意分区。另外,通过二叉树分区或三叉树分区生成的编码单元可以被执行进一步的二叉树分区或进一步的三叉树分区,或者可以不被进一步分区。
184.在二叉树分区与三叉树分区之间不存在优先级的树结构被称作多类型树结构。对应于四叉树的叶节点的编码单元可充当多类型树的根节点。可使用多类型树分区指示信息、分区方向信息和分区树信息中的至少一个来用信号传送是否对对应于多类型树的节点的编码单元进行分区。为了对对应于多类型树的节点的编码单元进行分区,可依序用信号传送多类型树分区指示信息、分区方向信息和分区树信息。
185.具有第一值(例如,“1”)的多类型树分区指示信息可指示当前编码单元将被执行多类型树分区。具有第二值(例如,“0”)的多类型树分区指示信息可指示当前编码单元将不被执行多类型树分区。
186.当通过多类型树分区结构对对应于多类型树的节点的编码单元进一步分区时,编码单元可包括分区方向信息。分区方向信息可指示针对多类型树分区将在哪个方向上对当前编码单元进行分区。具有第一值(例如,“1”)的分区方向信息可指示当前编码单元将被垂直分区。具有第二值(例如,“0”)的分区方向信息可指示当前编码单元将被水平分区。
187.当通过多类型树分区结构对对应于多类型树的节点的编码单元进一步分区时,当前编码单元可包括分区树信息。分区树信息可指示将用于对多类型树的节点进行分区的树分区结构。具有第一值(例如,“1”)的分区树信息可指示当前分区单元将通过二叉树分区结构被分区。具有第二值(例如,“0”)的分区树信息可指示当前编码单元将通过三叉树分区结构被分区。
188.分区指示信息、分区树信息和分区方向信息可以分别是具有预定长度(例如,一个比特)的标志。
189.四叉树分区指示信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个可被熵编码/解码。对于这些类型的信息的熵编码/解码,可使用关于与当前编码单元相邻的邻近编码单元的信息。例如,当前编码单元的左侧邻近编码单元和/或上方邻近编码单元的分区类型(分区或未分区、分区树和/或分区方向)与当前编码单元的分区类型相似的概率很高。因此,可从关于邻近编码单元的信息推导出用于对关于当前编码单元的信息进行熵编码/解码的上下文信息。关于邻近编码单元的信息可包括四分区信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个。
190.作为另一示例,在二叉树分区和三叉树分区中,可以优先执行二叉树分区。也就是说,当前编码单元可首先进行二叉树分区,然后可将与二叉树的叶节点对应的编码单元设置为用于三叉树分区的根节点。在这种情况下,可以不对与三叉树的节点对应的编码单元执行四叉树分区和二叉树分区。
191.不能通过四叉树分区结构、二叉树分区结构和/或三叉树分区结构分区的编码单元成为用于编码、预测和/或变换的基本单元。也就是说,编码单元不能被进一步分区以用于预测和/或变换。因此,分区结构信息和用于将编码单元分区为预测单元和/或变换单元的分区信息可以不存在于比特流中。
192.然而,当编码单元(即,用于分区的基本单元)的尺寸大于最大变换块的尺寸时,可递归地对编码单元进行分区,直到编码单元的尺寸减小到等于或小于最大变换块的尺寸为止。例如,当编码单元的尺寸为64
×
64时且当最大变换块的尺寸为32
×
32时,可将编码单元分区成四个32
×
32块以进行变换。例如,当编码单元的尺寸为32
×
64且最大变换块的尺寸为32
×
32时,可将编码单元分区成两个32
×
32块以进行变换。在这种情况下,不单独用信号传送用于变换的编码单元的分区,并且可以通过对编码单元的水平或垂直尺寸与最大变换块的水平或垂直尺寸之间的比较来确定用于变换的编码单元的分区。例如,当编码单元的水平尺寸(宽度)大于最大变换块的水平尺寸(宽度)时,编码单元可被垂直二等分。例如,当编码单元的垂直尺寸(高度)大于最大变换块的垂直尺寸(高度)时,编码单元可被水平二等分。
193.可以在编码单元的更高等级用信号传送或确定编码单元的最大和/或最小尺寸的信息以及变换块的最大和/或最小尺寸的信息。更高等级可以是例如序列级、画面级、条带级、并行块组级、并行块级等。例如,可将编码单元的最小尺寸确定为4
×
4。例如,可将变换块的最大尺寸确定为64
×
64。例如,可将变换块的最小尺寸确定为4
×
4。
194.可在编码单元的更高等级用信号传送或确定与四叉树的叶节点对应的编码单元的最小尺寸(四叉树最小尺寸)的信息和/或从多类型树的根节点到叶节点的最大深度(多类型树的最大树深度)的信息。例如,更高等级可以是序列级、画面级、条带级、并行块组级、并行块级等。可针对帧内画面条带和帧间画面条带中的每一个用信号传送或确定四叉树的最小尺寸的信息和/或多类型树的最大深度的信息。
195.可在编码单元的更高等级用信号传送或确定ctu的尺寸与变换块的最大尺寸之间的差信息。例如,更高等级可以是序列级、画面级、条带级、并行块组级、并行块级等。可基于编码树单元的尺寸和差信息来确定与二叉树的各个节点对应的编码单元的最大尺寸(在下文中,称为二叉树的最大尺寸)的信息。与三叉树的各个节点对应的编码单元的最大尺寸(在下文中,称为三叉树的最大尺寸)可根据条带的类型而变化。例如,对于画面内条带,三叉树的最大尺寸可以是32
×
32。例如,对于画面间条带,三叉树的最大尺寸可以是128
×
128。例如,与二叉树的各个节点对应的编码单元的最小尺寸(下文中称为二叉树的最小尺寸)和/或与三叉树的各个节点对应的编码单元的最小尺寸(下文中称为三叉树的最小尺寸)可被设置为编码块的最小尺寸。
196.作为另一示例,可以在条带级用信号传送或确定二叉树的最大尺寸和/或三叉树的最大尺寸。可选地,可以在条带级用信号传送或确定二叉树的最小尺寸和/或三叉树的最小尺寸。
197.依据上述各种块的尺寸和深度信息,四分区信息、多类型树分区指示信息、分区树信息和/或分区方向信息可被包括在比特流中或者可不被包括在比特流中。
198.例如,当编码单元的尺寸不大于四叉树的最小尺寸时,编码单元不包括四分区信息。四分区信息可被推导为第二值。
199.例如,当对应于多类型树的节点的编码单元的尺寸(水平尺寸及垂直尺寸)大于二叉树的最大尺寸(水平尺寸及垂直尺寸)和/或三叉树的最大尺寸(水平尺寸及垂直尺寸)时,编码单元可不被二分区或三分区。因此,可不用信号传送多类型树分区指示信息,而可以从第二值推导多类型树分区指示信息。
200.可选地,当对应于多类型树的节点的编码单元的尺寸(水平及垂直尺寸)与二叉树的最大尺寸(水平尺寸及垂直尺寸)相同和/或是三叉树的最大尺寸(水平尺寸及垂直尺寸)的两倍大时,编码单元可不被进一步二分区或三分区。因此,可不用信号传送多类型树分区指示信息,而是从第二值推导多类型树分区指示信息。这是因为当通过二叉树分区结构和/或三叉树分区结构对编码单元进行分区时,生成小于二叉树的最小尺寸和/或三叉树的最小尺寸的编码单元。
201.可选地,可以基于虚拟流水线数据单元的大小(下文中,流水线缓冲器大小)来限制二叉树分区或三叉树分区。例如,当通过二叉树分区或三叉树分区将编码单元划分为不适合流水线缓冲器大小的子编码单元时,对应的二叉树分区或三叉树分区可能受到限制。流水线缓冲器大小可以是最大变换块的分区(例如,64
×
64)。例如,当流水线缓冲器大小是
64
×
64时,可以限制下面的划分。
[0202]-用于编码单元的n
×
m(n和/或m是128)三叉树分区
[0203]-用于编码单元的水平方向上的128
×
n(n《=64)二叉树分区
[0204]-用于编码单元的垂直方向上的n
×
128(n《=64)二叉树分区
[0205]
可选地,当与多类型树的节点对应的编码单元的深度等于多类型树的最大深度时,编码单元可不被进一步二分区和/或三分区。因此,可不用信号传送多类型树分区指示信息,而是可从第二值推导多类型树分区指示信息。
[0206]
可选地,仅当垂直方向二叉树分区、水平方向二叉树分区、垂直方向三叉树分区和水平方向三叉树分区中的至少一个对于与多类型树的节点对应的编码单元是可能的时,可用信号传送多类型树分区指示信息。否则,编码单元可以不被二分区和/或三分区。因此,可不用信号传送多类型树分区指示信息,而是可从第二值推导多类型树分区指示信息。
[0207]
可选地,仅当垂直方向二叉树分区和水平方向二叉树分区两者或垂直方向三叉树分区和水平方向三叉树分区两者对于与多类型树的节点对应的编码单元是可能的时,才可用信号传送分区方向信息。否则,可不用信号传送分区方向信息,而是可以从指示可能的分区方向的值推导分区方向信息。
[0208]
可选地,仅当垂直方向二叉树分区和垂直方向三叉树分区两者或水平方向二叉树分区和水平方向三叉树分区两者对于与多类型树的节点对应的编码树是可能的时,才可用信号传送分区树信息。否则,可不用信号传送分区树信息,而是从指示可能的分区树结构的值推导分区树信息。
[0209]
图4是示出帧内预测过程的示图。
[0210]
图4中从中心到外部的箭头可表示帧内预测模式的预测方向。
[0211]
可以通过使用当前块的邻近块的参考样点来执行帧内编码和/或解码。邻近块可以是重构邻近块。例如,可以通过使用包括在重构邻近块中的参考样点的值或编码参数来执行帧内编码和/或解码。
[0212]
预测块可以表示通过执行帧内预测而生成的块。预测块可对应于cu、pu及tu中的至少一个。预测块的单元可具有cu、pu及tu之一的尺寸。预测块可以是尺寸为2
×
2、4
×
4、16
×
16、32
×
32或64
×
64等的正方形块,或者可以是尺寸为2
×
8、4
×
8、2
×
16、4
×
16和8
×
16等的矩形块。
[0213]
可以根据当前块的帧内预测模式来执行帧内预测。当前块可能具有的帧内预测模式的数量可以是固定值,并且可以是根据预测块的属性不同地确定的值。例如,预测块的属性可以包括预测块的尺寸和预测块的形状等。
[0214]
无论块尺寸如何,帧内预测模式的数量可固定为n。可选地,帧内预测模式的数量可以是3、5、9、17、34、35、36、65或67等。可选地,帧内预测模式的数量可以根据块尺寸或颜色分量类型或者块尺寸和颜色分量类型两者而变化。例如,帧内预测模式的数量可以根据颜色分量是亮度信号还是色度信号而变化。例如,随着块尺寸变大,帧内预测模式的数量可增加。可选地,亮度分量块的帧内预测模式的数量可大于色度分量块的帧内预测模式的数量。
[0215]
帧内预测模式可以是非角度模式或角度模式。非角度模式可以是dc模式或平面模式,并且角度模式可以是具有特定方向或角度的预测模式。可以由模式编号、模式值、模式
数字、模式角度和模式方向中的至少一个来表示帧内预测模式。帧内预测模式的数量可以是大于1的m,包括非角度模式和角度模式。为了对当前块进行帧内预测,可以执行确定包括在重构邻近块中的样点是否可以用作当前块的参考样点的步骤。当存在不可用作当前块的参考样点的样点时,可以使用通过对包括在重构邻近块中的样点中的至少一个样点值进行复制或执行插值或进行复制和执行差值两者而获得的值来替换样点的不可用样点值,因此替换后的样点值用作当前块的参考样点。
[0216]
图7是示出能够用于帧内预测的参考样点的示图。
[0217]
如图7所示,参考样点线0至参考样点线3中的至少一个可被用于当前块的帧内预测。在图7中,片段a和片段f的样点可以分别用最接近片段b和片段e的样点来填充,而不是从重构邻近块进行检索。可以用信号传送指示将用于当前块的帧内预测的参考样点线的索引信息。例如,在图7中,可用信号传送参考样点线指示符0、1和2作为指示参考样点线0、1和2的索引信息。在当前块的上方边界是ctu的边界时,仅参考样点线0可以是可用的。因此,在这种情况下,可以不用信号传送索引信息。当使用除了参考样点线0之外的参考样点线时,可以不执行稍后将描述的针对预测块的滤波。
[0218]
当帧内预测时,可以基于帧内预测模式和当前块尺寸将滤波器应用于参考样点和预测样点中的至少一个。
[0219]
在平面模式的情况下,当生成当前块的预测块时,根据预测目标样点在预测块内的位置,可以通过使用当前块的上侧参考样点和左侧参考样点以及当前块的右上侧参考样点和左下侧参考样点的加权和来生成预测目标样点的样点值。另外,在dc模式的情况下,当生成当前块的预测块时,可以使用当前块的上侧参考样点和左侧参考样点的平均值。另外,在角度模式的情况下,可以通过使用当前块的上侧参考样点、左侧参考样点、右上侧参考样点和/或左下侧参考样点来生成预测块。为了生成预测样点值,可以执行实数单位的插值。
[0220]
在颜色分量之间的帧内预测的情况下,可以基于第一颜色分量的对应重构块来生成第二颜色分量的当前块的预测块。例如,第一颜色分量可以是亮度分量,第二颜色分量可以是色度分量。对于颜色分量之间的帧内预测,可基于模板推导第一颜色分量与第二颜色分量之间的线性模型的参数。模板可包括当前块的上方邻近样点和/或左侧邻近样点以及与其对应的第一颜色分量的重构块的上方邻近样点和/或左侧邻近样点。例如,可使用模板中的样点中的具有最大值的第一颜色分量的样点值及与其对应的第二颜色分量的样点值、以及模板中的样点中的具有最小值的第一颜色分量的样点值及与其对应的第二颜色分量的样点值推导线性模型的参数。当推导线性模型的参数时,可将对应重构块应用于线性模型以产生当前块的预测块。根据视频格式,可对第一颜色分量的重构块和对应重构块的邻近样点执行子采样。例如,当第二颜色分量的一个样点对应于第一颜色分量的四个样点时,可对第一颜色分量的四个样点进行子采样以计算一个对应样点。在此情况下,可基于对应子采样的样点执行线性模型的参数推导以及色彩分量之间的帧内预测。可将是否执行颜色分量之间的帧内预测和/或模板的范围用信号传送为帧内预测模式。
[0221]
可沿水平方向或垂直方向将当前块分区为两个或四个子块。可顺序地重构分区出的子块。也就是说,可以对子块执行帧内预测以生成子预测块。另外,可以对子块执行反量化和/或逆变换以生成子残差块。可通过将子预测块与子残差块相加来产生重构子块。重构子块可以用作子子块的帧内预测的参考样点。子块可为包括预定数量(例如,16)或更多个
样点的块。因此,例如,在当前块是8
×
4块或4
×
8块时,可将当前块分区成两个子块。此外,在当前块为4
×
4块时,可不将当前块分区成子块。在当前块具有其它尺寸时,可将当前块分区成四个子块。可用信号传送关于是否基于子块和/或分区方向(水平或垂直)执行帧内预测的信息。基于子块的帧内预测可以限于仅在使用参考样点线0时执行。当执行基于子块的帧内预测时,可以不执行稍后将描述的针对预测块的滤波。
[0222]
可以通过对帧内预测的预测块执行滤波来生成最终预测块。可以通过将预定权重应用于滤波目标样点、左侧参考样点、上方参考样点和/或左上方参考样点来执行滤波。可以基于块尺寸、帧内预测模式和预测块中的滤波目标样点的位置中的至少一个来确定用于滤波的权重和/或参考样点(范围、位置等)。可以仅在预定帧内预测模式(例如,dc、平面、垂直、水平、对角线和/或相邻对角线模式)的情况下执行滤波。相邻对角线模式可以是将对角线模式加上k或从对角线模式减去k的模式。例如,k可以是8或更小的正整数。
[0223]
可以通过预测与当前块相邻存在的块的帧内预测模式来对当前块的帧内预测模式进行熵编码/解码。在当前块和邻近块的帧内预测模式相同时,可以通过使用预定标志信息来用信号传送当前块与邻近块的帧内预测模式相同的信息。另外,可以用信号传送多个邻近块的帧内预测模式中的与当前块的帧内预测模式相同的帧内预测模式的指示符信息。在当前块和邻近块的帧内预测模式不同时,可以通过基于邻近块的帧内预测模式执行熵编码/解码来对当前块的帧内预测模式信息进行熵编码/解码。
[0224]
图5是示出帧间画面预测过程的实施例的示图。
[0225]
在图5中,矩形可表示画面。在图5中,箭头表示预测方向。可根据画面的编码类型将画面分类为帧内画面(i画面)、预测画面(p画面)和双向预测画面(b画面)。
[0226]
可在不需要帧间画面预测的情况下通过帧内预测对i画面进行编码。可通过使用在相对于当前块的一个方向(即,前向或后向)上存在的参考画面,经由画面间预测来对p画面进行编码。可以通过使用在相对于当前块的两个方向(即,前向和后向)上预设的参考画面,通过画面间预测对b画面进行编码。当使用画面间预测时,编码器可执行画面间预测或运动补偿,并且解码器可执行对应的运动补偿。
[0227]
在下文中,将详细描述画面间预测的实施例。
[0228]
可以使用参考画面和运动信息来执行画面间预测或运动补偿。
[0229]
可通过编码设备100和解码设备200中的每一个在画面间预测期间推导当前块的运动信息。可通过使用重构邻近块的运动信息、同位块(也被称作col块或共同定位块)和/或与同位块相邻的块的运动信息来推导当前块的运动信息。同位块可以表示在先前重构的同位画面(也称为col画面或共同定位画面)内的在空间上与当前块位于相同位置的块。同位画面可以是包括在参考画面列表中的一个或更多个参考画面中的一个画面。
[0230]
运动信息的推导方法可取决于当前块的预测模式而不同。例如,应用于帧间预测的预测模式包括amvp模式、合并模式、跳过模式、具有运动矢量差的合并模式、子块合并模式、几何分区模式、组合帧间-帧内预测模式、仿射模式等。在本文中,合并模式可以被称为运动合并模式。
[0231]
例如,当amvp用作预测模式时,可将重构邻近块的运动矢量、同位块的运动矢量、与同位块相邻的块的运动矢量及(0,0)运动矢量中的至少一个确定为针对当前块的运动矢量候选,并且通过使用运动矢量候选产生运动矢量候选列表。可通过使用所产生的运动矢
量候选列表推导当前块的运动矢量候选。可基于推导出的运动矢量候选确定当前块的运动信息。同位块的运动矢量或与同位块相邻的块的运动矢量可以被称为时间运动矢量候选,并且重构邻近块的运动矢量可以被称为空间运动矢量候选。
[0232]
编码设备100可计算当前块的运动矢量与候选运动矢量之间的运动矢量差(mvd),并且可对运动矢量差(mvd)执行熵编码。另外,编码设备100可对运动矢量候选索引执行熵编码并生成比特流。运动矢量候选索引可指示包括在运动矢量候选列表中的运动矢量候选中的最佳运动矢量候选。解码设备可对比特流中包括的候选运动矢量索引执行熵解码,并且可通过使用经过熵解码的候选运动矢量索引从候选运动矢量列表中包括的候选运动矢量中选择解码目标块的候选运动矢量。另外,解码设备200可将经过熵解码的mvd与通过熵解码提取的候选运动矢量相加,从而推导出解码目标块的运动矢量。
[0233]
另外,编码设备100可对计算出的mvd的分辨率信息执行熵编码。解码设备200可使用mvd分辨率信息来调整熵解码的mvd的分辨率。
[0234]
另外,编码设备100基于仿射模型计算当前块中的运动矢量和候选运动矢量之间的运动矢量差(mvd),并对mvd执行熵编码。解码设备200通过经由熵解码的mvd和仿射控制运动矢量候选的总和推导解码目标块的仿射控制运动矢量,来基于每一个子块推导运动矢量。
[0235]
比特流可以包括指示参考画面的参考画面索引。所述参考画面索引可以由所述编码设备100进行熵编码,然后作为比特流被用信号传送到解码设备200。解码设备200可基于推导的运动矢量和参考画面索引信息生成解码目标块的预测块。
[0236]
推导当前的运动信息的方法的另一示例可以是合并模式。合并模式可以表示合并多个块的运动的方法。合并模式可表示从邻近块的运动信息推导当前块的运动信息的模式。当应用合并模式时,可使用重构邻近块的运动信息和/或同位块的运动信息来产生合并候选列表。运动信息可包含运动矢量、参考画面索引和画面间预测指示符中的至少一个。预测指示符可以指示单向预测(l0预测或l1预测)或双向预测(l0预测和l1预测)。
[0237]
合并候选列表可以是所存储的运动信息的列表。包括在合并候选列表中的运动信息可以是以下各项中的至少一个:与当前块相邻的邻近块的运动信息(空间合并候选)、当前块的在参考画面中的同位块的运动信息(时间合并候选)、通过存在于合并候选列表中的运动信息的组合产生的新运动信息、作为在当前块之前被编码/解码的块的运动信息(基于历史的合并候选)和零合并候选。
[0238]
编码设备100可通过对合并标志和合并索引中的至少一个执行熵编码来生成比特流,并且可将比特流用信号传送到解码设备200。合并标志可以是指示是否对每一个块执行合并模式的信息,并且合并索引可以是指示当前块的邻近块中的哪个邻近块是合并目标块的信息。例如,当前块的邻近块可包括在当前块的左侧的左侧邻近块、被布置在当前块上方的上方邻近块和在时间上与当前块相邻的时间邻近块。
[0239]
另外,编码设备100对合并候选的运动信息中的用于校正运动矢量的校正信息执行熵编码,并将其用信号传送给解码设备200。解码设备200可以基于校正信息校正由合并索引选择的合并候选的运动矢量。这里,校正信息可以包括关于是否执行校正的信息、校正方向信息和校正大小信息中的至少一个。如上所述,基于用信号传送的校正信息校正合并候选的运动矢量的预测模式可以被称为具有运动矢量差的合并模式。
[0240]
跳过模式可以是邻近块的运动信息按照原样应用于当前块的模式。当应用跳过模式时,编码设备100可对哪个块的运动信息将被用作当前块的运动信息的事实的信息执行熵编码以生成比特流,并且可将比特流用信号传送给解码设备200。编码设备100可不将关于运动矢量差信息、编码块标志和变换系数等级中的至少任意一个的语法元素用信号传送给解码设备200。
[0241]
子块合并模式可以表示以编码块(cu)的子块为单位推导运动信息的模式。当应用子块合并模式时,可使用参考画面中的与当前子块同位的子块的运动信息(基于子块的时间合并候选)和/或仿射控制点运动矢量合并候选来生成子块合并候选列表。
[0242]
几何分区模式可表示通过将当前块分区成预定方向来推导运动信息,使用所推导出的运动信息中的每一个来推导每一个预测样点,并且通过对所推导出的预测样点中的每一个进行加权来推导当前块的预测样点的模式。
[0243]
帧间-帧内组合预测模式可以表示通过对由帧间预测生成的预测样点和由帧内预测生成的预测样点进行加权来推导当前块的预测样点的模式。
[0244]
解码设备200可自行校正推导的运动信息。解码设备200可基于由推导出的运动信息指示的参考块搜索预定区域,并推导具有最小sad的运动信息作为校正的运动信息。
[0245]
解码设备200可使用光流来补偿经由帧间预测推导出的预测样点。
[0246]
图6是示出变换和量化过程的示图。
[0247]
如图6所示,对残差信号执行变换和/或量化处理以生成量化的等级信号。残差信号是原始块与预测块(即,帧内预测块或帧间预测块)之间的差。预测块是通过帧内预测或帧间预测生成的块。变换可以是初级变换、次级变换或初级变换和次级变换两者。对残差信号进行初级变换产生变换系数,并且对该变换系数进行次级变换产生次级变换系数。
[0248]
从预先定义的各种变换方案中选择的至少一种方案用于执行初级变换。例如,预定义的变换方案的示例包括离散余弦变换(dct)、离散正弦变换(dst)和卡洛南-洛伊(karhunen-lo
è
ve,(klt))变换。通过初级变换生成的变换系数可以被执行次级变换。可以根据当前块和/或当前块的邻近块的编码参数来确定用于初级变换和/或次级变换的变换方案。可选地,用信号传送指示变换方案的变换信息。基于dct的变换可以包括例如dct-2、dct-8等。基于dst的变换可包括(例如)dst-7。
[0249]
可以通过对残差信号或执行初级变换和/或次级变换的结果执行量化来生成量化的等级信号(量化系数)。取决于块的帧内预测模式或块尺寸/形状,可以根据对角线右上扫描、垂直扫描和水平扫描中的至少一个来对量化的等级信号进行扫描。例如,当按照对角线右上扫描对系数进行扫描时,块形式的系数改变为一维矢量形式。除了对角线右上扫描之外,可根据帧内预测模式和/或变换块的尺寸,使用水平地对二维块形式的系数进行扫描的水平扫描或垂直地对二维块形式的系数进行扫描的垂直扫描。扫描的量化等级系数可以被熵编码以插入比特流中。
[0250]
解码器对比特流进行熵解码以获得量化等级系数。可通过逆扫描以二维块形式来排列量化等级系数。对于逆扫描,可以使用对角线右上扫描、垂直扫描和水平扫描中的至少一个。
[0251]
然后,可以对量化等级系数进行反量化,然后根据需要进行次级逆变换,最后根据需要进行初级逆变换,以生成重构的残差信号。
[0252]
可在环路滤波之前针对通过帧内预测或帧间预测重构的亮度分量执行动态范围中的逆映射。动态范围可以被划分为16个相等的片段,并且可以用信号传送用于每个片段的映射函数。可在条带级或并行块组级用信号传送映射函数。可以基于映射函数推导用于执行逆映射的逆映射函数。在逆映射区域中执行环路滤波、参考画面存储和运动补偿,并且通过使用映射函数的映射将通过帧间预测生成的预测块转换为映射区域,然后将其用于生成重构块。然而,由于帧内预测是在映射区域中执行的,因此经由帧内预测生成的预测块可以用于生成重构块而无需映射/逆映射。
[0253]
在当前块是色度分量的残差块时,可以通过对映射区域的色度分量执行缩放来将残差块转换为逆映射区域。可在条带级或并行块组级用信号传送缩放的可用性。只有当亮度分量的映射可用并且亮度分量的划分和色度分量的划分遵循相同的树结构时,才可以应用缩放。可基于与色差块相应的亮度预测块的样点值的平均值来执行缩放。在此情况下,在当前块使用帧间预测时,亮度预测块可表示映射的亮度预测块。可通过使用亮度预测块的样点值的平均值所属的片段的索引参考查找表来推导缩放所需的值。最后,通过使用推导的值对残差块进行缩放,可以将残差块转换到逆映射区域。然后,可以在逆映射区域中执行色度分量块恢复、帧内预测、帧间预测、环路滤波和参考画面存储。
[0254]
可以通过序列参数集用信号传送指示亮度分量和色度分量的映射/逆映射是否可用的信息。
[0255]
可以基于指示当前画面中的当前块与参考块之间的位移的块矢量来生成当前块的预测块。以这种方式,用于参考当前画面生成预测块的预测模式被称为帧内块复制(ibc)模式。ibc模式可应用于m
×
n(m《=64,n《=64)编码单元。ibc模式可包括跳过模式、合并模式、amvp模式等等。在跳过模式或合并模式的情况下,构建合并候选列表,并且用信号传送合并索引,使得一个合并候选可被指定。指定的合并候选的块矢量可以用作当前块的块矢量。合并候选列表可包括空间候选、基于历史的候选、基于两个候选的平均值的候选和零合并候选中的至少一个。在amvp模式的状况下,可用信号传送差块矢量。另外,可从当前块的左侧邻近块和上方邻近块推导预测块矢量。可以用信号传送关于将使用的邻近块的索引。ibc模式下的预测块被包括在当前ctu或左侧ctu中并且限于已重构区域中的块。例如,块矢量的值可被限制,使得当前块的预测块位于按编码/解码顺序在当前块所属的64
×
64块之前的三个64
×
64块的区域中。通过以此方式限制块矢量的值,可减少根据ibc模式实施方案的存储器消耗和装置复杂度。
[0256]
图8是示出根据本发明的实施例的图像编码方法的流程图。另外,图9是示出根据本发明的实施例的图像解码方法的流程图。
[0257]
在下文中,将描述根据本公开的图像编码/解码方法。
[0258]
可以通过帧内预测、帧间预测和帧内块复制预测中的至少一种方法对单个画面进行编码。
[0259]
此外,可以以帧内预测模式、帧间预测模式和帧内块复制模式中的至少一种模式对单个块进行编码/解码。
[0260]
基于帧内块复制预测的编码/解码方法可以用于以下情况中的至少一种情况:亮度分量和色度分量具有独立的块分区结构(即,双树结构);以及亮度分量和色度分量具有相同的块分区结构(即,单树结构)。
[0261]
帧内块复制预测模式可以是通过推导出的块矢量(bv)从相同画面/子画面/条带/并行块内(即,帧内)的已经编码/解码的区域推导预测块的方法。此处,相同画面/子画面/条带/并行块可表示当前画面/子画面/条带/并行块。这里,块矢量可以表示帧内块矢量。这里,已经编码/解码的区域可以是用于当前画面/子画面/条带/并行块的重构图像或解码图像内的区域。这里,重构图像内的区域可以表示重构区域,并且解码图像内的区域可以表示解码区域。
[0262]
这里,当前画面内的已经编码/解码的区域可以是当前画面内的重构区域,在该区域中不执行如环路滤波、去块滤波、自适应样点偏移和自适应环路滤波的色度缩放和亮度映射中的至少一个。此外,当前画面内的已经编码/解码的区域可以是当前画面内的重构/解码区域,在该区域中执行如环路滤波、去块滤波、自适应样点偏移和自适应环路滤波的色度缩放和亮度映射中的至少一个。
[0263]
当在帧内块复制模式下对当前编码/解码目标块(当前块)进行编码/解码并且推导出的块矢量是(x,y)时,可将以下参考块(与已经编码/解码的区域相对应的块)用作当前块的预测块:具有与当前块相同的尺寸并且在水平方向上远离当前块x样点(即,如果x是正整数,则在右水平方向上远离当前块x样点,如果x是负整数,则在左水平方向上远离当前块-x样点)并且在垂直方向上远离当前块y样点(即,如果y是正整数,则在向下垂直方向远离当前块y样点,如果y是负整数,则在向上垂直方向上远离当前块-y样点)。
[0264]
这里,根据符号,样点可以位于相反的方向上。例如,当x为正整数时,块矢量可指示在左水平方向上远离x样点的区域。当x为负整数时,块矢量可指示在右水平方向上远离-x样点的区域。另外,例如,当y是正整数时,块矢量可以指示在向上垂直方向上远离y样点的区域。当y为负整数时,块矢量可指示在向下垂直方向上远离-y样点的区域。
[0265]
当前块和参考块可以具有彼此不同的尺寸。例如,在通过对当前块执行下采样或子采样而减小当前块的尺寸之后,可确定参考块。可以通过对由此确定的参考块执行上采样或插值而将该参考块用作当前块的预测块。
[0266]
可根据当前块/ctb/ctu的至少一个编码参数来确定当前块的尺寸或参考块的尺寸中的至少一个。
[0267]
如在图10的示例中,x和y两者可以是负整数,当前块的左上方样点位置可以是(x0,y0),并且当前块的预测块的左上方样点位置可以是(x0 x,y0 y)。这里,当前块的预测块可以表示当前块的参考块。
[0268]
在当前块使用利用帧内块复制模式的预测时,可以按照以下方式之一对当前块进行编码/解码。
[0269]
可以根据帧内块复制跳过模式来对当前块进行编码/解码。根据帧内块复制跳过模式(类似于帧间预测模式下的跳过模式),可以从在当前块之前编码/解码的块的块矢量推导当前块的块矢量,并且可以不对残差块进行熵编码/解码。
[0270]
可以根据帧内块复制合并模式对当前块进行编码/解码。根据帧内块复制合并模式(类似于帧间预测模式下的合并模式),可以从在当前块之前编码/解码的块的块矢量推导当前块的块矢量,并且可以对残差块进行熵编码/解码。
[0271]
可以根据帧内块复制amvp(高级运动矢量预测)模式来对当前块进行编码/解码。根据帧内块复制amvp模式(类似于帧间预测模式下的amvp模式),可以对块矢量进行编码/
解码,并且可以根据块矢量对块进行编码/解码。
[0272]
可以根据帧内块复制amvr(自适应运动矢量分辨率)模式对当前块进行编码/解码。根据帧内块复制amvr模式(类似于帧间预测模式下的amvr模式),可以将块矢量的分辨率编码/解码为一个或更多个分辨率中的一个分辨率,并且可以根据该分辨率对块矢量进行编码/解码。帧内块复制amvp模式可表示帧内块复制amvr模式。
[0273]
可以根据多假设帧内块复制模式对当前块进行编码/解码。根据多假设帧内块复制模式,可以根据至少一个块矢量来确定至少一个参考块。另外,可以通过对至少一个参考块中的样点值进行加权和来生成当前块的预测块。这里,可以使用统计值代替加权和。
[0274]
可以根据当前块/ctb/ctu和与当前块/ctb/ctu相邻的邻近块/ctb/ctu的至少一个编码参数对指示是否使用帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式、帧内块复制amvr模式和多假设帧内块复制模式中的至少一个的信息进行熵编码/解码。
[0275]
根据是否执行帧内块复制模式,可以对块边界执行去块滤波。
[0276]
例如,当与块边界相邻的邻近块中的至少一个是帧内块复制模式时,块边界可以被设置为将被去块滤波的目标块边界。此外,可对块边界执行去块滤波。
[0277]
作为另一示例,当与块边界相邻的所有邻近块都是帧内块复制模式时,可将块边界设置为将被去块滤波的目标块边界。此外,可对块边界执行去块滤波。
[0278]
作为另一示例,当与块边界相邻的邻近块都未使用帧内块复制模式时,可不将块边界设置为将被去块滤波的目标块边界。此外,可以不对块边界执行去块滤波。
[0279]
作为另一示例,当与块边界相邻的邻近块中的至少一个是帧内块复制模式时,使用帧内块复制模式的块可被视为帧间预测块。另外,可将块边界设置为将被去块滤波的目标块边界。可对块边界执行去块滤波。
[0280]
作为另一示例,当与块边界相邻的邻近块中的至少一个是帧内块复制模式时,使用帧内块复制模式的块可以被视为帧内预测块。另外,可将块边界设置为将被去块滤波的目标块边界。可对块边界执行去块滤波。
[0281]
作为另一示例,当与块边界相邻的邻近块的块矢量差是至少一个样点时,可将块边界设置为将被去块滤波的目标块边界。此外,可对块边界执行去块滤波。
[0282]
作为另一示例,当与块边界相邻的邻近块的块矢量彼此不同时,可将块边界设置为将被去块滤波的目标块边界。此外,可对块边界执行去块滤波。
[0283]
作为另一示例,当与块边界相邻的邻近块的块矢量在x分量和y分量中的至少一个上不同时,可将块边界设置为将被去块滤波的目标块边界。此外,可对块边界执行去块滤波。
[0284]
当确定将对块边界执行去块滤波时,可以使用帧内块复制模式对块的区域中的具有8
×
8单位的块边界执行去块滤波。
[0285]
可以根据用于帧内块复制模式的至少一个编码参数来确定是否对块边界执行去块滤波、滤波器强度等。
[0286]
当确定将对块边界执行去块滤波时,可以设置滤波器强度。这里,滤波器强度可以被设置为等于或大于1的正整数。
[0287]
块边界可以表示当前块的边界。换句话说,块边界可表示当前块与邻近块之间的
边界。
[0288]
在编码器/解码器中,可以如下推导当前亮度分量的编码模式。编码模式可表示预测模式。
[0289]
可将以下多条编码信息中的至少一条用于确定当前亮度分量的编码模式,并且可对以下多条编码信息中的至少一条进行熵编码/解码。
[0290]
编码信息可以包括指示亮度分量块是跳过模式的信息(例如,跳过模式标识符、标志、索引、skip_flag、cu_skip_flag等)。
[0291]
根据指示跳过模式的信息,可确定是否将跳过模式应用于当前块。例如,当指示跳过模式的信息具有第一值(1)时,可以将跳过模式应用于当前块。另外,当指示跳过模式的信息具有第二值(0)时,可以不将跳过模式应用于当前块。编码信息可以包括亮度分量块的预测模式信息(例如,索引、标识符、标志等)。预测模式信息可以包括帧内预测模式、帧间预测模式和帧内块复制模式。
[0292]
例如,当指示预测模式信息的语法元素具有第一值(0)、第二值(1)或第三值(2)时,其可分别指示帧内预测模式、帧间预测模式或帧内块复制模式。
[0293]
此外,例如,第一预测模式信息(例如,索引、标志、标识符、pred_mode_flag等)可指示是否应用帧内预测模式。当第一预测模式信息具有第一值(1)时,其可指示应用帧内预测模式。当第一预测模式信息具有第二值(0)时,其可指示不应用帧内预测模式。当指示不应用帧内预测模式时,可以对第二预测模式信息(例如,index、flag、identifier、pred_mode_ibc_flag等)进行编码/解码以示出是应用帧间预测模式还是帧内块复制模式。当第二预测模式信息具有第一值(1)时,其可以指示应用帧内块复制模式。当第二预测模式信息具有第二值(0)时,其可指示应用帧间预测模式。
[0294]
作为另一示例,第一预测模式信息(例如,索引、标志、标识符、pred_mode_flag等)可指示是应用帧内预测模式还是应用帧间预测模式。当第一预测模式信息具有第一值(1)时,可将帧内预测模式应用于对应的亮度分量块。另外,当第一预测模式信息具有第二值(0)时,可将帧间预测模式应用于对应的亮度分量块。另外,可对第二预测模式信息(例如,索引、标志、标识符、pred_mode_ibc_flag等)进行熵编码/解码或推导。当第二预测模式信息具有第一值(1)时,可将帧内块复制模式应用于对应的亮度分量块。当第二预测模式信息具有第二值(0)时,可将对应的亮度分量块的预测模式确定为在第一预测模式信息中确定的帧内预测模式或帧间预测模式。
[0295]
编码信息可以包括指示亮度分量块是合并模式的信息(例如,合并模式标识符、标志、索引、merge_flag等)。
[0296]
在当前亮度分量块不是跳过模式而是帧内块复制模式,并且指示合并模式的信息具有特定值时,可以将合并模式应用于当前亮度分量块。例如,当指示合并模式的信息具有第一值(1)时,可将合并模式应用于当前亮度分量块。当指示合并模式的信息具有第二值(0)时,可不将合并模式应用于当前亮度分量块。
[0297]
可根据当前块/ctb/ctu以及与当前块/ctb/ctu相邻的邻近块/ctb/ctu的至少一个编码参数来推导当前亮度分量块的编码模式。
[0298]
在这里描述的前述和/或其它实施例中,第一值和第二值可以具有不同的值。例如,第一值可以是0,第二值可以是1。
[0299]
在这里中所描述的前述及和/或其它实施例中,可使用色度分量块而非亮度分量块。例如,可将当前色度分量块代替当前亮度分量块应用于本发明的以上实施例和/或其它实施例。
[0300]
可以通过使用如下的编码信息来确定当前亮度分量块的编码模式。在这里中,编码模式可表示预测模式。另外,编码信息可表示预测模式信息。
[0301]
当亮度分量块是跳过模式并且对应的子画面、分块、并行块组、条带或并行块不是类型i时,可以对预测模式信息进行熵编码/解码。
[0302]
当亮度分量块是跳过模式并且对应的子画面、分块、并行块组、条带或并行块是类型i时,可以不对预测模式信息进行熵编码/解码,并且可以将对应的块确定为块复制跳过模式。这是因为帧内预测模式和帧间预测模式是能够在类型i的情况下使用的预测模式,并且类型i不用于跳过模式。
[0303]
当亮度分量块是跳过模式并且对应的子画面、分块、并行块组、条带或并行块不是类型i时,可以对预测模式信息进行熵编码/解码。在这种情况下,当根据预测模式信息将对应的亮度分量块确定为帧内块复制模式时,可将对应的亮度分量块确定为帧内块复制跳过模式。
[0304]
另外,当亮度分量块不是跳过模式,亮度分量块和色度分量块的残差块被编码/解码,并且亮度分量块根据预测模式信息被确定为帧内块复制模式时,可对指示合并模式的信息进行熵编码/解码。这里,当指示合并模式的信息指示对应的亮度分量块是合并模式时,可以根据帧内块复制合并模式来预测对应的亮度分量块。
[0305]
当亮度分量块不是跳过模式并且对应的亮度分量块根据预测模式信息被确定为帧内块复制模式时,可以对指示预测模式是否是合并模式的信息进行熵编码/解码。可选地,例如,当亮度分量块不是跳过模式时,可以对指示亮度分量块是否是合并模式的信息进行编码/解码。在这里,当指示预测模式是否是合并模式的信息指示对应的亮度分量块为合并模式时,对应亮度分量块可被确定为帧内块复制合并模式。
[0306]
当亮度分量块既不是跳过模式也不是合并模式而是帧内块复制模式时,可以根据帧内块复制amvp模式来对亮度分量块进行编码/解码。例如,基于指示预测模式是否是合并模式的信息,可以确定用于对应的亮度分量块的预测模式是帧内块复制模式还是帧内块复制amvp模式。这里,指示预测模式是否是合并模式的信息可以是指示当前块的帧间预测编码参数是否从当前块的邻近块的帧间预测编码参数被推导的信息。
[0307]
可以根据上述多条编码信息中的至少一条以及当前块/ctb/ctu和与当前块/ctb/ctu相邻的邻近块/ctb/ctu的至少一个编码参数来推导亮度分量块的编码模式。
[0308]
qtbtt_dual_tree_intra_flag可表示:对于条带i,将每一个ctu分区成64
×
64编码单元,并且64
×
64编码单元被用作亮度分量和色度分量的根节点。
[0309]
例如,当qtbtt_dual_tree_intra_flag为第一值(例如,0)时,每一个ctu可被分区成64
×
64编码单元,并且64
×
64编码单元可不被用作亮度分量和色度分量的根节点。另外,当qtbtt_dual_tree_intra_flag为第二值(例如,1)时,每一个ctu可被分区成64
×
64编码单元,并且64
×
64编码单元可被用作亮度分量和色度分量的根节点。
[0310]
当qtbtt_dual_tree_intra_flag为第一值(例如,0)时,亮度分量的块分区结构和色度分量的块分区结构可以彼此相同。然而,根据色度分量的类型,亮度分量的块尺寸和色
度分量的块尺寸可彼此不同。在这种情况下,可以说是使用单树结构。单树类型可以被标识为single_tree。
[0311]
当条带类型为条带i并且qtbtt_dual_tree_intra_flag为第二值(例如,1)时,在64
×
64编码单元中,亮度分量的块分区结构和色度分量的块分区结构可彼此不同。此处,亮度分量的块分区结构和色度分量的块分区结构可彼此独立。在这种情况下,可以说是使用双树结构。在双树结构中,亮度分量的树类型可被标识为dual_tree_luma,色度分量的树类型可被标识为dual_tree_chroma。
[0312]
在单树结构的情况下,可将针对使用多个帧内块复制模式中的至少一个帧内块复制模式的色度分量的最小块设置为2
×
2块。这里,针对色度分量可不使用具有小于2
×
2尺寸的块。换句话说,可以不准许将使用多个帧内块复制模式中的至少一个帧内块复制模式的具有2
×
2或更大尺寸的块分区成具有小于2
×
2尺寸的块。
[0313]
另外,在单树结构的情况下,可将针对使用多个帧内块复制模式中的至少一个帧内块复制模式的色度分量的最小块设置为4
×
4块。此处,2
×
2块、2
×
4块和4
×
2块可不用于色度分量。换句话说,可以不准许将尺寸大于2
×
2、2
×
4和4
×
2中的至少一个的块分区成尺寸为2
×
2、2
×
4和4
×
2中的至少一个的块。
[0314]
另外,在双树结构的情况下,可将针对使用多个帧内块复制模式中的至少一个帧内块复制模式的色度分量的最小块设置为4
×
4块。此处,2
×
2块、2
×
4块及4
×
2块可不用于色度分量。换句话说,可以不准许将尺寸大于2
×
2、2
×
4和4
×
2中的至少一个的块分区成尺寸为2
×
2、2
×
4和4
×
2中的至少一个的块。
[0315]
为了改善图像的主观/客观质量,编码器可以通过对残差块执行初级变换来生成初级变换系数,通过对初级变换系数执行次级变换来生成次级变换系数,通过对次级变换系数进行量化来生成量化系数等级,并且对量化系数等级进行熵编码。
[0316]
解码器可以对量化系数等级进行熵解码,通过对量化系数等级进行反量化来生成次级变换系数,通过对次级变换系数执行次级逆变换来生成初级变换系数,并且通过对初级变换系数执行初级逆变换来生成重构残差块。
[0317]
在编码器中,可在初级变换和量化之间执行次级变换,并且在解码器中,可在反量化和初级逆变换之间执行次级逆变换。这里,次级变换可以是简化的次级变换或低频不可分离变换(lfnst)。
[0318]
在当前块使用多个帧内块复制模式中的至少一个帧内块复制模式时,可以对当前块执行次级变换/逆变换。这里,可对亮度分量块和色度分量块中的至少一个执行次级变换/逆变换。
[0319]
另外,可以根据当前块的多个帧内块复制模式中的至少一个帧内块复制模式来确定变换矩阵集。
[0320]
这里,当对当前块执行次级变换时,可以对变换矩阵索引进行熵编码/解码,其中,变换矩阵索引指示变换矩阵集中的变换矩阵中的哪个变换矩阵将用于次级变换/逆变换。
[0321]
在编码器/解码器中,可如下推导当前亮度分量块或当前色度分量块的编码模式。这里,编码模式可表示预测模式。另外,编码信息可表示预测模式信息。
[0322]
当亮度分量和色度分量具有相同的块分区结构(单树类型:single_tree)时,可如下所述确定编码模式。
[0323]
例如,色度分量块的预测模式(例如,帧内预测、帧间预测、帧内块复制预测)可与对应的亮度分量块的预测模式相同。在这里描述的前述和/或其它实施例中,帧内块复制模式可以表示帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少一个。
[0324]
另外,当对应的亮度分量块为帧内块复制跳过模式时,可对色度分量块的残差块进行编码/解码,并且可不用信号传送残差块信息。这里,可以不对指示是否用信号传送对应残差块的信息的信息(例如,cu_cbf、tu_cbf等)进行熵编码/解码。tu_cbf可以包括tu_cbf_cb和tu_cbf_cr中的至少一个。
[0325]
另外,当对应的亮度分量块是帧内块复制合并模式时,可不对色度分量块的残差块进行编码/解码,并且可不用信号传送残差块信息。这里,可以不对指示残差块信息不被信号传送的信息(例如cu_cbf、tu_cbf等)进行熵编码/解码。tu_cbf可以包括tu_cbf_cb和tu_cbf_cr中的至少一个。
[0326]
另外,例如,当亮度分量和色度分量具有相同的块分区结构并且当前色度分量块是帧内块复制模式时(或者,当与当前色度分量块对应的亮度分量块是帧内块复制模式时),可以从与当前色度分量块对应的亮度分量块的编码/解码信息推导当前色度分量块的编码/解码所需的信息。
[0327]
这里,可从与对应于色度分量块的中心对应的样点位置对应的亮度分量块的编码信息推导当前色度分量块的编码/解码所需的信息。另外,可从与色度分量块的左上侧处的样点位置对应的亮度分量块的编码信息推导当前色度分量块的编码/解码所需的信息。
[0328]
可根据当前色度分量块/ctb以及与色度分量块/ctb对应的亮度分量块/ctb的至少一个编码参数来推导当前色度分量块的编码模式。
[0329]
当亮度分量和色度分量具有独立的块分区结构(用于双树结构的树类型dual_tree_luma或dual_tree_chroma)时,可以从被熵编码/解码的色度分量块的编码模式信息确定色度分量块的编码模式。类似于亮度分量块的编码模式,色度分量块的编码模式可以是帧内预测模式、帧间预测模式或帧内块复制模式。这里,编码模式可表示预测模式。
[0330]
例如,当指示预测模式信息的语法元素具有第一值(0)、第二值(1)或第三值(2)时,可分别将帧内预测模式、帧间预测模式或帧内块复制模式应用于当前块。
[0331]
作为另一示例,第一预测模式信息(例如,索引、标志、标识符、pred_mode_flag等)可指示帧内预测模式是否被应用于当前块。当第一预测模式信息具有第一值(1)时,可以将当前块的预测模式确定为帧内预测模式。当第一预测模式信息具有第二值(0)时,可不将当前块的预测模式确定为帧内预测模式。当指示不应用帧内预测模式时,可以对第二预测模式信息(例如,索引、标志、标识符、pred_mode_ibc_flag等)进行熵编码/解码。第二预测模式信息可以指示帧间预测模式和帧内块复制模式中的至少一个。当第二预测模式信息具有第一值(1)时,可将当前块的预测模式为帧内块复制模式。当第二预测模式信息具有第二值(0)时,可将当前块的预测模式确定为帧间预测模式。
[0332]
作为另一示例,第一预测模式信息(例如,索引、标志、标识符、pred_mode_flag等)可指示是应用帧内预测模式还是应用帧间预测模式。当第一预测模式信息具有第一值(1)时,可以将当前块的预测模式确定为帧内预测模式。当第一预测模式信息具有第二值(0)时,可将当前块的预测模式确定为帧间预测模式。另外,可对第二预测模式信息(例如,索
引、标志、标识符、pred_mode_ibc_flag等)进行熵编码/解码或推导。当第二预测模式信息具有第一值(1)时,可将当前块的预测模式确定为帧内块复制模式。当第二预测模式信息具有第二值(0)时,可根据第一预测模式信息将帧内预测模式或帧间预测模式确定为对应的色度分量块的预测模式。
[0333]
作为另一示例,可用信号传送或推导第二预测模式信息(例如,索引、标志、标识符、pred_mode_ibc_flag等)。另外,当第二预测模式信息具有第一值(1)时,可将当前块的预测模式确定为帧内块复制模式。另外,当第二预测模式信息具有第二值(0)时,可将当前块的预测模式确定为帧内预测模式。
[0334]
亮度分量和色度分量可具有独立块分区结构。在当前色度分量块为帧内块复制模式时,可从与当前色度分量块对应的亮度分量块的编码信息推导当前色度分量块的编码/解码所需的信息(例如,块矢量)。
[0335]
这里,可以从与对应于色度分量块的中心的样点位置对应的亮度分量块的编码信息推导对当前色度分量块进行编码/解码所需的信息。另外,可以从与色度分量块的左上侧的样点位置对应的亮度分量块的编码信息推导对当前色度分量块进行编码/解码所需的信息。
[0336]
可根据当前色度分量块/ctb以及与当前色度分量块/ctb相邻的邻近块/ctb的至少一个编码参数来推导色度分量块的编码模式。
[0337]
在下文中,将描述推导用于帧内块复制预测的块矢量的方法。
[0338]
推导用于帧内块复制预测的块矢量的步骤可以包括推导亮度分量块的块矢量的步骤和推导色度分量块的块矢量的步骤中的至少一个。
[0339]
在下文中,将描述推导亮度分量块的块矢量的步骤。例如,在当前块是亮度分量块并且以帧内块复制跳过模式或帧内块复制合并模式被编码/解码时,推导块矢量的方法可以如下。
[0340]
为了推导亮度分量块的块矢量,可从在当前块之前编码/解码的亮度分量块的块矢量候选配置块矢量候选列表。另外,在所配置的块矢量候选列表中包括的候选中的至少一个可以用作当前块的块矢量。这里,可以对用于识别块矢量候选列表中的候选的至少一条矢量候选信息(例如,标识符、索引、标志、merge_idx等)进行熵编码/解码。可选地,可基于至少一个编码参数推导块矢量候选信息。
[0341]
这里,可以配置至少一个或更多个块矢量候选列表。另外,可在当前块中使用至少一个块矢量候选。另外,可以对至少一条块矢量候选信息进行熵编码/解码。
[0342]
块矢量候选列表可由多达n个候选组成。这里,n可以是正整数。此处,n可表示块矢量候选列表中的候选的最大数量。可根据当前块/ctb/ctu的至少一个编码参数来推导n。
[0343]
块矢量候选列表可用在帧内块复制跳过模式、帧内块复制合并模式和帧内块复制amvp模式中。另外,帧内块复制跳过模式、帧内块复制合并模式和帧内块复制amvp模式可配置和使用一个共同的块矢量候选列表。
[0344]
另外,以下候选中的至少一个可被包括在块矢量候选列表中。
[0345]
如在图11的示例中,可以从以下块中的至少一个块推导块矢量:与当前块x的顶部相邻的b1、与当前块x的左侧相邻的a1、与当前块x的右上角相邻的b0、与当前块x的左上角相邻的b2、以及与当前块x的左下角相邻的a0。另外,由此推导出的块矢量可以被确定为当
前块候选的块矢量。这里,由此推导出的块矢量中的至少一个可被包括在块矢量候选列表中。这里,由此推导出的块矢量可以是与当前块相邻的邻近块的块矢量候选。
[0346]
当其余的块a1、b1、b0和a0中存在块矢量时,位于当前块的左上角的块b2可以不用作块矢量候选。换句话说,块b2的块矢量可不被包括在块矢量候选列表中。
[0347]
另外,对于在位置a0、a1、b0、b1和b2中包括的至少一个块,可以根据预定的优先级顺序确定每个块中是否存在块矢量(换句话说,对应的块是使用帧内块复制模式被编码/解码,还是对应的块是帧内块复制模式)。当块矢量存在于对应块中时,可以将该块矢量确定为块矢量候选。这里,由此确定的块矢量中的至少一个可以被包括在块矢量候选列表中。这里,用于配置块矢量候选列表的预定优先级顺序可以是a1、b1、b0、a0和b2的顺序。根据预定优先级顺序,可将m个邻近块的块矢量确定为块矢量候选。这里,当将n个邻近块的块矢量确定为块矢量候选(此处,n小于m)时,可不将根据优先级顺序的剩余邻近块的块矢量确定为块矢量候选。例如,m和n可以分别是5和4。然而,它们不限于此,并且可以是包括1的正整数。
[0348]
当根据预定优先级顺序配置块矢量候选列表时,可以在块矢量候选列表中存在的块矢量候选与新添加到块矢量候选列表的块矢量候选之间执行冗余测试。例如,当新添加到块矢量候选列表的块矢量候选与块矢量候选列表中存在的块矢量候选重叠时,可不将重叠的块矢量候选添加到块矢量候选列表。
[0349]
例如,当以a1、b1、b0、a0和b2的顺序配置块矢量候选列表时,可以在块b1和块a1之间并且也在块b0和块b1之间执行冗余测试。另外,可以在块a0和块a1之间执行冗余测试。另外,可以对块b2、a1和b1执行冗余测试。可仅在对应块中存在块矢量时执行冗余测试。
[0350]
例如,可以在一方面添加到块矢量候选列表的块矢量与另一方面存在于块矢量候选列表中的所有块矢量之间执行冗余测试。
[0351]
另外,当在位置a0、a1、b0、b1和b2中包括的块中的至少一个中存在块矢量时,可以确定该块的块矢量是否在当前块中可用。仅当块矢量可用时,可将邻近块的块矢量确定为块矢量候选。当块的块矢量不可用时,其可不用作块矢量候选。这里,可以根据由块矢量指示的位置处的参考样点(块)是否可用来确定块矢量是否可用。
[0352]
例如,当由对应块矢量指示的区域/位置包括当前块中所包括的样点中的至少一个样点时,可将该对应块矢量确定为不可用。
[0353]
例如,当由对应块矢量指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界外部的区域/位置/样点中的至少一个时,可将对应块矢量确定为不可用。
[0354]
此外,可以将在当前块之前编码/解码的块矢量中的至少一个存储在缓冲器中。可将存储于缓冲器中的块矢量中的至少一个确定为当前块的块矢量候选。这里,由此确定的块矢量候选中的至少一个可以被包括在块矢量候选列表中。
[0355]
这里,块矢量可以按编码/解码顺序存储在具有特定大小的缓冲器中。当对应的缓冲器已满时,可以删除首先存储的块矢量,并且可以将新的块矢量(即,最近编码/解码的块的块矢量)存储在缓冲器中。将存储在对应的缓冲器中的块矢量包括到块矢量候选列表中的优先级顺序可以根据将块矢量存储在缓冲器中的顺序(例如,从最旧到最近或从最近到最旧的时间顺序)而不同。例如,可以根据将块矢量存储在缓冲器中的升序时间顺序将块矢量包括在块矢量候选列表中。可选地,可以根据存储块矢量的降序时间顺序将块矢量包括
在块矢量候选列表中。这样的块矢量候选被称为基于历史的块矢量候选。换句话说,存储在缓冲器中的块矢量可以表示基于历史的块矢量候选。
[0356]
包括基于历史的块矢量的缓冲器可通过作为与在帧间预测模式中使用的缓冲器分离的缓冲器来管理而被使用。
[0357]
包括基于历史的块矢量的缓冲器可与在帧间预测模式中使用的缓冲器相同。
[0358]
当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,可以确定对应的基于历史的块矢量候选在当前块中是否可用。只有当基于历史的块矢量候选可用时,基于历史的块矢量候选才可以被添加到块矢量候选列表。这里,可以根据由块矢量指示的位置处的参考样点(块)是否可用来确定对应的基于历史的块矢量是否可用。
[0359]
例如,当由对应的基于历史的块矢量指示的区域/位置包括当前块中所包括的样点中的至少一个时,可将对应的基于历史的块矢量确定为不可用。
[0360]
例如,当由对应的基于历史的块矢量指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界之外的区域/位置/样点中的至少一个时,对应的基于历史的块矢量可以被确定为不可用。
[0361]
当通过使用至少一个基于历史的块矢量候选来配置块矢量候选列表时,可以在对应的基于历史的块矢量候选和块矢量候选列表中的块矢量候选之间执行冗余测试。当不存在相同(冗余)的块矢量时,可将基于历史的块矢量候选添加到块矢量候选列表。
[0362]
作为另一示例,当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,可以在块矢量候选与对应的基于历史的块矢量候选之间执行冗余测试。当不存在相同块矢量时,可将基于历史的块矢量候选添加到块矢量候选列表。
[0363]
作为另一示例,当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,可在不进行基于历史的块矢量候选与块矢量候选列表中的块矢量候选之间的冗余测试的情况下将基于历史的块矢量候选添加到块矢量候选列表。例如,预定候选可以表示除了基于历史的块矢量候选中的第一候选之外的块矢量候选。这里,第一候选可以表示首先或最近存储在由基于历史的块矢量候选组成的基于历史的块矢量候选列表中的块矢量候选。
[0364]
在以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位进行编码/解码时,保持包括基于历史的块矢量候选的缓冲器。因此,可以在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列的单元内使用缓冲器。
[0365]
此外,例如,当通过使用一个或更多个基于历史的块矢量候选来配置块矢量候选列表时,可以在基于历史的块矢量候选中的预定候选与块矢量候选列表中的块矢量候选之间执行冗余测试。作为测试的结果,当不存在相同的块矢量时,可以将预定候选添加到块矢量候选列表。例如,预定候选可以表示基于历史的块矢量候选中的第一候选。这里,第一候选可以表示最近存储在由基于历史的块矢量候选组成的基于历史的块矢量候选列表中的块矢量候选。
[0366]
另外,缓冲器可以以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位包括关于在当前块之前编码/解码的块的至少一条编码信息。
[0367]
另外,当缓冲器以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位被配置时,可在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列的开
始位置/区域/块/单元中对缓冲器进行初始化。这里,当缓冲器被初始化时,可以删除存在于缓冲器中的每个块矢量。另外,当缓冲器被初始化时,可将存在于缓冲器中的每个块矢量确定为预定值。这里,预定值可以表示块矢量(x,y)中的x和y的值。例如,x和y可以是整数值。
[0368]
可以使用组合块矢量候选,其中,所述组合块矢量候选利用存在于块矢量候选列表中的至少两个块矢量候选。可将组合块矢量候选添加到块矢量候选列表。这里,组合块矢量候选可分别具有针对存在于块矢量候选列表中的块矢量候选当中的至少两个块矢量的x分量和y分量的统计值。这里,当配置组合块矢量候选时,可以不使用基于历史的块矢量候选。这里,当配置组合块矢量候选时,编码器/解码器可以不使用当前块的邻近块的块矢量候选中的至少一个。这里,编码器/解码器可以确定由块矢量候选组成的组合块矢量候选在当前块中是否可用。只有当组合块矢量候选可用时,它才可以被确定为组合块矢量候选。这里,编码器/解码器可以基于由块矢量指示的位置处的参考样点(块)是否可用来确定块矢量是否可用。
[0369]
例如,当由对应的组合块矢量候选指示的区域/位置包括当前块中包括的样点中的至少一个样点时,编码器/解码器可以将对应的组合块矢量候选确定为不可用。
[0370]
例如,当由对应的组合块矢量候选指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界之外的区域/位置/样点中的至少一个时,编码器/解码器可以将对应的组合块矢量候选确定为不可用。
[0371]
在当前亮度分量块具有水平长度w和垂直长度h时,(-(w《《n) a,-(h《《n) b)、(-(w《《n) c,0)或(0,-(h《《n) d)可以是包括在块矢量候选列表中的块矢量候选。这里,n可以是正整数,并且a、b、c和d可以具有整数值。这可以被称为固定基本块矢量候选。编码器/解码器可将固定基本块矢量候选添加到块矢量矢量列表。
[0372]
编码器/解码器可以通过使用与当前块相邻的邻近块的块矢量候选、基于历史的块矢量候选、组合块矢量候选和固定基本块矢量候选中的至少一个,根据预定顺序来配置块矢量候选列表。
[0373]
例如,可按与当前块相邻的邻近块的块矢量候选、基于历史的块矢量候选、组合块矢量候选和固定基本块矢量候选的顺序来设置配置块矢量候选列表的顺序。
[0374]
例如,可按以下顺序配置固定基本块矢量候选,直到块矢量候选列表中的候选的数量达到块矢量候选列表中的候选的最大数量为止。
[0375]
1.(-(w《《1),0)
[0376]
2.(0,-(h《《1))
[0377]
3.(-(w《《1)-1,0)
[0378]
4.(0,-(h《《1)-1)
[0379]
5.(-(w《《1)-2,0)
[0380]
6.(0,-(h《《1)-2)
[0381]
7.(-(w《《1)-3,0)
[0382]
8.(0,-(h《《1)-3)
[0383]
9.(-(w《《1)-4,0)
[0384]
10.(0,-(h《《1)-4)
[0385]
作为另一示例,固定基本块矢量可以是(0,0)矢量。编码器/解码器可以通过添加固定的基本块矢量直到块矢量候选列表中的候选的数量达到最大数量,来配置具有最大数量的块矢量候选的块矢量候选列表。例如,当通过使用邻近块的块矢量、基于历史的块矢量和组合块矢量而添加到块矢量候选列表的块矢量候选的数量小于块矢量候选的最大数量(n)时,可将固定基本块矢量添加到块矢量候选列表,直到达到块矢量候选的最大数量为止。在本文中,固定基本块矢量可以是(0,0)矢量。
[0386]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的与当前块相邻的邻近块的块矢量候选的最大数量可以是块矢量候选的最大数量(n)或(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0387]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的基于历史的块矢量候选的最大数量可以是块矢量候选的最大数量(n)或(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0388]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的组合块矢量候选的最大数量可以是块矢量候选的最大数量(n)或(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0389]
当编码器/解码器对上级块进行分区并按照帧内块复制跳过模式或帧内块复制合并模式对从上级块分区出的每个块进行编码/解码时,如果至少通过对上级块进行分区而获得的一个块的块尺寸小于预定阈值,则通过该分区而获得的块通常可以使用在上级块中配置的块矢量候选列表。
[0390]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的固定基本块矢量候选的最大数量可以是块矢量候选的最大数量(n)或(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0391]
块矢量候选列表中的候选的最大数量可以是已在编码器/解码器中设置的值或从编码器用信号传送到解码器的值。可选地,可基于当前块的编码参数(例如,尺寸、形式等)不同地确定最大数量。可选地,可以按照上述方法中的至少两种方法的组合来确定最大数量。
[0392]
可根据当前块/ctb/ctu的至少一个编码参数来推导块矢量候选。
[0393]
可根据当前块/ctb/ctu的至少一个编码参数将块矢量候选添加到块矢量候选列表。
[0394]
当对上级块进行分区并按照帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式或帧内块复制amvr模式对每个块进行编码/解码时,如果通过对上级块进行分区而获得的至少一个块小于预定阈值,则通过该分区而获得的块中的至少一个块可以共享在上级块中配置的块矢量候选列表。
[0395]
可以通过使用上级块或下级块的水平长度(w)和垂直长度(h)中的至少一个来确定是否共享在上级块中配置的块矢量候选列表。例如,当满足以下条件中的至少一个条件时,编码器/解码器可以将在上级块中配置的块矢量候选列表用于被分区出的下级块(从上级块分区出的块)中的至少一个。
[0396]
从上级块到下级块的四叉树分区:(上级块的水平长度
×
上级块的垂直长度)/4《阈值
[0397]
从上级块到下级块的水平或垂直二叉树分区:(上级块的水平长度
×
上级块的垂直长度)/2《阈值
[0398]
从上级块到下级块的三叉树分区:(上级块的水平长度
×
上级块的垂直长度)/4《阈值
[0399]
阈值可以是已经在编码器/解码器中设置的值、或者从编码器用信号传送到解码器的值。
[0400]
这里,阈值可以是正整数。另外,阈值可以是表示块的长度或尺寸的至少一个值,诸如块的水平长度、块的垂直长度以及块的水平长度和垂直长度的乘积(块的面积)。
[0401]
可根据当前块/ctb/ctu的至少一个编码参数来确定阈值。
[0402]
在图12中,当阈值为32时,在上级块的四叉树分区、垂直或水平二叉树分区和三叉树分区中,至少一个下级块面积小于32,并且每个下级块在帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式或帧内块复制amvr模式下被编码/解码时,编码器/解码器可以通过使用块矢量候选列表来对下级块进行编码/解码,所述块矢量候选列表由邻近块(a1,b1,b0,b1)的块矢量候选中的至少一个组成。这里,可以从上级块的水平长度和垂直长度推导固定基本块矢量。
[0403]
在当前块的水平长度和垂直长度等于或小于预设值时,可不准许预定矢量候选作为块矢量候选。
[0404]
参看图12,在当前块的水平长度和垂直长度为4
×
4(或当前块的水平长度和垂直长度的乘积等于或小于16)时,可不准许邻近块的块矢量作为块矢量候选。
[0405]
这里,编码器/解码器可以通过使用基于历史的块矢量、组合块矢量和固定基本块矢量中的至少一个来配置块矢量候选列表。例如,编码器/解码器可通过仅使用基于历史的块矢量来配置块矢量候选列表,或者通过使用基于历史的块矢量和固定基本块矢量两者来配置块矢量候选列表。
[0406]
另外,这里,可不执行用于基于历史的块矢量候选列表的更新过程。例如,在当前块的水平长度和垂直长度为4
×
4(或当前块的水平长度和垂直长度的乘积等于或小于16)时,可不将当前块的编码/解码块矢量添加到基于历史的块矢量候选列表。相反,在当前块的水平长度和垂直长度大于4
×
4(或者当前块的水平长度和垂直长度的乘积大于16)时,可以将当前块的编码/解码的块矢量添加到基于历史的块矢量候选列表。
[0407]
另外,可以通过使用在上级块中已经编码/解码的基于历史的块矢量候选来配置块矢量候选列表。
[0408]
当在上级块中配置的块矢量候选列表在至少一个下级块中被共享时,编码器/解码器可以限制由下级块的块矢量指示的参考块,使得该参考块不位于上级块内。
[0409]
如在图13的示例中,当在至少一个下级块中共享上级块位置(粗实线)的块矢量候选列表时,仅在由在至少一个下级块(细实线)中按照帧内块复制模式编码/解码的块的块矢量(bv)所指示的区域/位置/样点指示在上级块之前编码/解码的区域时,编码器/解码器才将块矢量确定为有效。
[0410]
换句话说,当由下级块的块矢量指示的区域/位置/样点包括上级块中包括的至少一个样点时,编码器/解码器可以将下级块的块矢量确定为不可用。
[0411]
当在上级块中配置的块矢量候选列表在至少一个下级块中被共享时,编码器/解
码器可以通过帧内块复制跳过模式和帧内块复制合并模式中的至少一个来对至少一个下级块进行编码/解码。
[0412]
当在至少一个下级块中共享在上级块中配置的块矢量候选列表时,可以按照帧内块复制跳过模式或帧内块复制合并模式对通过对上级块进行分区而获得的至少一个下级块进行编码/解码。
[0413]
当在上级块中配置的合并候选列表在至少一个下级块中被共享时,可以不按照帧内块复制跳过模式和帧内块复制合并模式对通过对上级块进行分区而获得的下级块进行编码/解码。这里,可应用帧内块复制amvp模式。然而,在此情况下,编码器/解码器可仅在块矢量指示在上级块之前被编码/解码的区域时才将块矢量确定为有效。合并候选列表可表示并非由块矢量而是由以下运动矢量中的一个矢量组成的列表:空间运动矢量、时间运动矢量、基于历史的运动矢量、组合运动矢量及零矢量。
[0414]
在当前块的水平长度或垂直长度或水平长度和垂直长度两者小于阈值或者等于或小于阈值时,编码器/解码器可以不准许帧内块复制跳过模式和帧内块复制合并模式中的至少一个。阈值可以是已经在编码器/解码器中设置的正整数值或从编码器用信号传送到解码器的值。可选地,可以共享在编码器/解码器中预设的查找表,并且可以用信号传送针对查找表的索引。
[0415]
例如,在当前块的水平长度和垂直长度小于8时,编码器/解码器可以不准许帧内块复制跳过模式和帧内块复制合并模式中的至少一个。
[0416]
在当前块的水平长度和垂直长度的乘积等于或小于用于在下级块中使用在上级块中配置的合并候选列表的阈值条件时,编码器/解码器可以不准许帧内块复制跳过模式和帧内块复制合并模式中的至少一个。
[0417]
例如,当在下级块中使用在上级块中配置的合并候选列表的阈值是32时,编码器/解码器可以仅在当前块的水平长度和垂直长度的乘积大于32的情况下准许帧内块复制跳过模式和帧内块复制合并模式中的至少一个。
[0418]
相反,在当前块的水平长度和垂直长度的乘积等于或小于用于在下级块中使用在上级块中配置的块矢量候选列表的阈值条件时,编码器/解码器可以不准许跳过模式和合并模式中的至少一个。跳过模式和合并模式中的至少一个可以表示不是通过块矢量而是通过当前块的空间/时间邻近块的运动矢量编码/解码的运动补偿的模式。
[0419]
例如,当在下级块中使用在上级块中配置的块矢量候选列表的阈值条件是32时,编码器/解码器可以仅在当前块的水平长度和垂直长度的乘积大于32的情况下准许不基于块矢量而是基于运动矢量的跳过模式和合并模式中的至少一个。
[0420]
在这里描述的前述和/或其他实施例中,不准许特定模式可以表示不使用特定模式作为当前块的编码模式。
[0421]
当通过对上级块进行分区而获得的多个块中的至少一个块小于预定阈值时,编码器/解码器可配置组合合并候选列表,所述组合合并候选列表配置有上级块中的邻近块的运动矢量和块矢量,并且所述多个块中的至少一个块可共享所述组合合并候选列表。
[0422]
编码器/解码器可通过使用上级块的邻近块的运动矢量候选、上级块的邻近块的块矢量候选、时间运动矢量候选、基于历史的运动矢量候选、基于历史的块矢量候选、(0,0)运动矢量候选和固定基本块矢量候选中的至少一个来配置组合合并候选列表。此外,在编
码器/解码器中,下级块中的至少一个可共享并使用在上级块中配置的块矢量候选列表。
[0423]
例如,当在帧内块复制跳过模式或帧内块复制合并模式下对相应块进行编码/解码时,编码器/解码器可以通过使用组合合并候选列表中的不与运动矢量相应而是与块矢量相应的候选中的至少一个来对对应块进行编码/解码。这里,当在帧内块复制跳过模式或帧内块复制合并模式下编码/解码时,用于识别组合合并候选列表中的相应候选的信息可以仅指示块矢量候选。
[0424]
例如,当在跳过模式或合并模式下对相应块进行编码/解码时,编码器/解码器可以通过使用组合合并候选列表中的不与块矢量相应而是与运动矢量相应的候选中的至少一个来对相应块进行编码/解码。这里,当在跳过模式或合并模式下编码/解码时,用于识别组合合并候选列表中的相应候选的信息可仅指示运动矢量候选。
[0425]
当在至少一个下级块中共享在上级块中配置的块矢量候选列表时,可不将下级块的块矢量添加到用于推导基于历史的块矢量候选的缓冲器。
[0426]
另外,当在至少一个下级块中不共享在上级块中配置的块矢量候选列表时,可将下级块的块矢量添加到用于推导基于历史的块矢量候选的缓冲器。
[0427]
作为另一示例,在当前块是亮度分量块并且在帧内块复制amvp模式下被编码/解码时,可通过以下方法推导块矢量。
[0428]
与帧内块复制跳过模式或帧内块复制合并模式类似,编码器/解码器可以配置具有多达n个预测块矢量候选的预测块矢量候选列表。这里,n可以是正整数。此处,n可表示预测块矢量候选列表中的候选的最大数量。编码器/解码器可以将包括在配置的预测块矢量候选列表中的候选中的至少一个用作当前块的预测块矢量。另外,可对用于识别相应预测块矢量候选列表中的相应预测候选的至少一条信息(例如,标识符、索引、标志、mvp_10_flag等)进行熵编码/解码。另外,可基于至少一个编码参数推导该信息。
[0429]
这里,可配置至少一个预测块矢量候选列表,并且可在当前块中使用至少一个预测块矢量候选。另外,可以对至少一条预测块矢量候选信息进行熵编码/解码。
[0430]
这里,当根据预测块矢量候选信息在当前块中使用预测块矢量候选时,预测块矢量候选可以表示预测块矢量。
[0431]
编码器可计算当前块的块矢量与预测块矢量之间的块矢量差(bvd)并对bvd进行熵编码。
[0432]
解码器可对块矢量差进行熵解码,并通过将块矢量差与当前块的预测块矢量相加来推导当前块的块矢量。
[0433]
另外,以下候选中的至少一个可被包括在预测块矢量候选列表中。
[0434]
基于相应块是否按照图11的a0和a1的顺序在帧内块复制模式下被编码/解码,编码器/解码器可以将在帧内块复制模式下编码/解码的块的块矢量确定为预测块矢量候选a。
[0435]
可选地,基于与a1相应的块是否在帧内块复制模式下被编码/解码,当该块在帧内块复制模式下被编码/解码时,编码器/解码器可以将该块的块矢量确定为预测块矢量候选a。
[0436]
基于相应块是否按照图11的b0、b1和b2的顺序在帧内块复制模式下被编码/解码,编码器/解码器可以将在帧内块复制模式下编码/解码的块的块矢量确定为预测块矢量候
选b。
[0437]
可选地,基于与b1相应的块是否在帧内块复制模式下被编码/解码,当该块在帧内块复制模式下被编码/解码时,编码器/解码器可以将该块的块矢量确定为预测块矢量候选b。
[0438]
这里,由此确定的预测块矢量候选中的至少一个可以被包括在预测块矢量候选列表中。这里,由此确定的预测块矢量候选可以是与当前块相邻的邻近块的预测块矢量候选。
[0439]
这里,用于配置预测块矢量候选列表的预定优先级顺序可以是a和b的顺序。
[0440]
另外,编码器/解码器可以将在当前块之前被编码/解码的至少一个块的至少一个块矢量存储在缓冲器中。另外,编码器/解码器可将存储在缓冲器中的块矢量中的至少一个确定为当前块的块矢量候选。这里,由此确定的预测块矢量候选中的至少一个可以被包括在预测块矢量候选列表中。
[0441]
这里,块矢量可以按编码/解码顺序存储在具有特定大小的缓冲器中。当对应的缓冲器已满时,编码器/解码器可以删除首先存储的块矢量,然后存储新的块矢量(即,最近编码/解码的块的块矢量)。将存储在对应的缓冲器中的块矢量包括到预测块矢量候选列表中的优先级顺序可以根据将块矢量存储在缓冲器中的顺序(例如,从最旧到最近或从最近到最旧的时间顺序)而不同。例如,编码器/解码器可以根据将块矢量存储在缓冲器中的时间升序或根据将块矢量存储在缓冲器中的时间降序将块矢量包括在预测块矢量候选列表中。这样的预测块矢量候选被称为基于历史的预测块矢量候选。换句话说,存储在对应的缓冲器中的块矢量可以表示基于历史的预测块矢量候选。
[0442]
当通过使用基于历史的预测块矢量候选中的至少一个来配置预测块矢量候选列表时,编码器/解码器可以确定基于历史的预测块矢量候选在当前块中是否可用。仅当基于历史的预测块矢量候选可用时,编码器/解码器可将基于历史的预测块矢量候选添加到预测块矢量候选列表。这里,编码器/解码器可以基于由预测块矢量指示的位置处的参考样点(块)是否可用,来确定对应的基于历史的预测块矢量是否可用。
[0443]
例如,当由对应的基于历史的预测块矢量候选指示的区域/位置包括当前块中所包括的样点中的至少一个时,编码器/解码器可将对应的基于历史的预测块矢量候选确定为不可用。
[0444]
例如,当由对应的基于历史的预测块矢量候选指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界之外的区域/位置/样点中的至少一个时,编码器/解码器可以将对应的基于历史的预测块矢量候选确定为不可用。
[0445]
当通过使用基于历史的预测块矢量候选中的至少一个来配置预测块矢量候选列表时,可以在对应的基于历史的预测块矢量候选与预测块矢量候选列表中的预测块矢量候选之间执行冗余测试。当不存在相同的预测块矢量候选时,编码器/解码器可将对应的基于历史的预测块矢量候选添加到预测块矢量候选列表。
[0446]
作为另一示例,当通过使用基于历史的预测块矢量候选中的至少一个来配置预测块矢量候选列表时,可在对应的基于历史的预测块矢量候选与预测块矢量候选之间执行冗余测试。当不存在相同的预测块矢量候选时,编码器/解码器可将对应的基于历史的预测块矢量候选添加到预测块矢量候选列表。
[0447]
作为另一示例,当通过使用基于历史的预测块矢量候选中的至少一个来配置预测
块矢量候选列表时,编码器/解码器可将对应的基于历史的预测块矢量候选添加到预测块矢量候选列表,而无需在对应的基于历史的预测块矢量候选与预测块矢量候选列表中的预测块矢量候选之间执行冗余测试。例如,预定候选可以表示除了基于历史的块矢量候选中的第一候选之外的块矢量候选。这里,第一候选可以表示首先或最近存储在由基于历史的块矢量候选组成的基于历史的块矢量候选列表中的块矢量候选。
[0448]
在以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行及ctu列为单位进行编码/解码时,保持包括基于历史的预测块矢量候选的缓冲器。因此,缓冲器可以在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列的单元内使用。
[0449]
另外,缓冲器可包括关于在当前块之前以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位编码/解码的块的至少一条编码信息。
[0450]
另外,当缓冲器以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行及ctu列为单位被配置时,可在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行及ctu列的开始位置/区域/块/单元中对缓冲器进行初始化。这里,当缓冲器被初始化时,可以删除存在于缓冲器中的每个块矢量。另外,当缓冲器被初始化时,可将存在于缓冲器中的每个块矢量确定为预定值。这里,预定值可以表示块矢量(x,y)中的x和y的值。例如,x和y可以是整数值。
[0451]
可以通过使用存在于预测块矢量候选列表中的至少两个预测块矢量候选来配置组合预测块矢量候选。可将组合预测块矢量候选添加到预测块矢量候选列表。这里,组合块矢量候选可分别具有针对存在于块矢量候选列表中的块矢量候选当中的至少两个块矢量的x分量和y分量的统计值。这里,当配置组合预测块矢量候选时,编码器/解码器可以不使用基于历史的预测矢量候选。这里,当配置组合预测块矢量候选时,编码器/解码器可以不使用与当前块相邻的邻近块的预测块矢量候选中的至少一个。这里,编码器/解码器可以确定由预测块矢量候选组成的组合预测块矢量候选在当前块中是否可用。只有当组合预测块矢量候选可用时,编码器/解码器才可以确定组合块矢量候选。这里,编码器/解码器可以基于由预测块矢量指示的位置处的参考样点(块)是否可用来确定预测块矢量是否可用。
[0452]
例如,当由对应的组合预测块矢量候选指示的区域/位置包括当前块中包括的样点中的至少一个时,编码器/解码器可以将对应的组合预测块矢量候选确定为不可用。
[0453]
例如,当由对应的组合预测块矢量候选指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界外部的区域/位置/样点中的至少一个时,编码器/解码器可将组合预测块矢量候选确定为不可用。
[0454]
在当前亮度分量块具有水平长度w和垂直长度h时,(-(w《《n) a,-(h《《n) b)、(-(w《《n) c,0)或(0,-(h《《n) d)可以是包括在预测块矢量候选列表中的预测块矢量候选。这里,n可以是正整数,并且a、b、c和d可以具有整数值。这可以被称为固定基本预测块矢量候选。编码器/解码器可以将固定基本预测块矢量候选添加到预测块矢量候选列表。
[0455]
编码器/解码器可以通过使用与当前块相邻的邻近块的预测块矢量候选、基于历史的预测块矢量候选、组合预测块矢量候选和固定基本预测块矢量候选中的至少一个,根据预定顺序来配置预测块矢量候选列表。
[0456]
例如,可按照首先与当前块相邻的邻近块的预测块矢量候选、基于历史的预测块矢量候选、组合预测块矢量候选和固定基本预测块矢量候选的顺序来设置配置预测块矢量
候选列表的顺序。
[0457]
例如,可按以下顺序配置固定基本预测块矢量,直到预测块矢量候选列表中的候选的数量达到预测块矢量候选列表中的候选的最大数量为止。
[0458]
1.(-(w《《1),0)
[0459]
2.(0,-(h《《1))
[0460]
3.(-(w《《1)-1,0)
[0461]
4.(0,-(h《《1)-1)
[0462]
5.(-(w《《1)-2,0)
[0463]
6.(0,-(h《《1)-2)
[0464]
7.(-(w《《1)-3,0)
[0465]
8.(0,-(h《《1)-3)
[0466]
9.(-(w《《1)-4,0)
[0467]
10.(0,-(h《《1)-4)
[0468]
作为另一示例,固定基本预测块矢量可以是(0,0)矢量。编码器/解码器可以通过以下操作来配置具有最大数量的候选的预测块矢量候选列表:将固定基本预测块矢量添加到预测块矢量候选列表直到预测块矢量候选列表中的候选的数量达到预测块矢量候选列表中的候选的最大数量。
[0469]
当配置预测块矢量候选列表时,能够被包括在预测块矢量候选列表中的与当前块相邻的邻近块的预测块矢量候选的最大数量可以是预测块矢量候选的最大数量(n)或者是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0470]
当配置预测块矢量候选列表时,能够被包括在预测块矢量候选列表中的基于历史的预测块矢量候选的最大数量可以是预测块矢量候选的最大数量(n)或者是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0471]
当配置预测块矢量候选列表时,能够被包括在预测块矢量候选列表中的组合预测块矢量候选的最大数量可以是预测块矢量候选的最大数量(n)或者是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0472]
当配置预测块矢量候选列表时,能够被包括在预测块矢量候选列表中的固定基本预测块矢量候选的最大数量可以是预测块矢量候选的最大数量(n)或者是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0473]
预测块矢量候选列表中的候选的最大数量可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送到解码器的值。
[0474]
预测块矢量候选列表可具有与块矢量候选列表相同的含义,并且预测块矢量候选可具有与块矢量候选相同的含义。
[0475]
可根据当前块/ctb/ctu的至少一个编码参数来推导预测块矢量候选。
[0476]
可根据当前块/ctb/ctu的至少一个编码参数将预测块矢量候选添加到预测块矢量候选列表。
[0477]
作为另一示例,在当前块是亮度分量块并且在帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式或帧内块复制amvr模式下被编码/解码时,推导块矢量的方法可如下。
[0478]
块矢量候选列表可由多达n个候选组成。这里,n可以是正整数。此处,n可表示块矢量候选列表中的候选的最大数量。可根据当前块/ctb/ctu的至少一个编码参数来推导n。
[0479]
指示帧间预测模式的合并候选列表中的候选的最大数量的信息可以在上级参数集或报头(诸如序列参数集(sps)、画面参数集(pps)、自适应参数集(aps)、画面头、子画面头、条带头、并行块组头和并行块头)中被编码/解码。另外,指示块矢量候选列表中的候选的最大数量的信息可以在上级参数集或报头(诸如序列参数集(sps)、画面参数集(pps)、自适应参数集(aps)、画面头、子画面头、条带头、并行块组头和并行块头中被编码/解码。
[0480]
可基于帧间预测模式的合并候选列表中的候选的最大数量来确定块矢量候选列表中的候选的最大数量。
[0481]
例如,可以对指示帧间预测模式的合并候选列表中的候选的最大数量的信息(例如,six_minus_max_num_merge_cand)进行熵编码/解码,并且可以如下推导帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)。推导出的最大数量(maxnummergecand)可以被定义为块矢量候选列表中的候选的最大数量(maxnumibccand)。
[0482]
帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)=n-six_minus_max_num_merge_cand
[0483]
maxnummergecand可以具有从1到n的值。这里,n可以是正整数。例如,maxnummergecand可以是6。
[0484]
块矢量候选列表中的候选的最大数量(maxnumibccand)=maxnumergecand
[0485]
作为另一示例,可以对指示帧间预测模式的合并候选列表中的候选的最大数量的信息(例如,six_minus_max_num_merge_cand)进行熵编码/解码,并且可以如下推导帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)。基于推导出的最大数量(maxnummergecand),可定义块矢量候选列表中的候选的最大数量(maxnumibccand)。
[0486]
帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)=n-six_minus_max_num_merge_cand
[0487]
maxnummergecand可以具有从1到n的值。这里,n可以是正整数。例如,maxnummergecand可以是6。
[0488]
块矢量候选列表中的候选的最大数量(maxnumibccand)=max(m,maxnumergecand)
[0489]
这里,m可以是正整数。例如,m可以是2。
[0490]
作为另一示例,可以对指示帧间预测模式的合并候选列表中的候选的最大数量的信息(例如,six_minus_max_num_merge_cand)进行熵编码/解码,并且可以如下推导帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)。基于推导出的最大数量(maxnummergecand)和当前块的编码模式,可定义块矢量候选列表中的候选的最大数量(maxnummergecand)。
[0491]
帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)=n-six_minus_max_num_merge_cand
[0492]
maxnummergecand可以具有从1到n的值。这里,n可以是正整数。例如,maxnummergecand可以是6。
[0493]
在当前块是帧内块复制跳过模式或帧内块复制合并模式时,
[0494]
块矢量候选列表中的候选的最大数量(maxnumibccand)=maxnumergecand
[0495]
在当前块是帧内块复制amvp模式时,
[0496]
块矢量候选列表中的候选的最大数量(maxnumibccand)=max(m,maxnumergecand)
[0497]
这里,m可以是正整数。例如,m可以是2。
[0498]
例如,当m=2且maxnummergecand=1时,可将帧内块复制跳过模式或帧内块复制合并模式的块矢量候选列表中的候选的最大数量确定为1,并且可将帧内块复制amvp模式的块矢量候选列表中的候选的最大数量确定为2。
[0499]
作为另一示例,可以对指示帧间预测模式的合并候选列表中的候选的最大数量的信息(例如,six_minus_max_num_merge_cand)进行熵编码/解码,并且可以如下推导帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)。基于推导出的最大数量(maxnummergecand)和当前块的编码模式,可定义块矢量候选列表中的候选的最大数量(maxnummergecand)。
[0500]
帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)=n-six_minus_max_num_merge_cand
[0501]
maxnummergecand可以具有从1到n的值。这里,n可以是正整数。例如,maxnummergecand可以是6。
[0502]
在当前块是帧内块复制跳过模式或帧内块复制合并模式时,
[0503]
块矢量候选列表中的候选的最大数量(maxnumibccand)=maxnumergecand
[0504]
在当前块是帧内块复制amvp模式时,
[0505]
块矢量候选列表中的候选的最大数量(maxnumibccand)=m
[0506]
这里,m可以是正整数。例如,在当前块为帧内块复制amvp模式时,块矢量候选列表中的候选的最大数量可被定义为2。
[0507]
例如,当maxnummergecand=6时,可将帧内块复制跳过模式或帧内块复制合并模式的块矢量候选列表中的候选的最大数量确定为6,并且可将帧内块复制amvp模式的块矢量候选列表中的候选的最大数量确定为2。
[0508]
可以对指示块矢量候选列表中的候选的最大数量的信息进行熵编码/解码。指示块矢量候选列表中的候选的最大数量的信息可表示块矢量候选列表的最大块矢量候选数量信息。
[0509]
作为另一示例,可以对指示块矢量候选列表中的候选的最大数量的信息(例如,six_minus_max_num_ibc_cand)进行熵编码/解码,并且可以如下推导块矢量候选列表中的候选的最大数量(maxnumibccand)。
[0510]
块矢量候选列表中的候选的最大数量(maxnumibccand)=n-six_minus_max_num_ibc_cand
[0511]
maxnumibccand可以具有从0到n的值。这里,n可以是正整数。例如,maxnumibccand可以是6。
[0512]
另外,指示块矢量候选列表中的候选的最大数量的信息(例如,six_minus_max_num_ibc_cand)可以具有从0到n的值。这里,n可以是正整数。例如,n可以是5。
[0513]
这里,为了便于描述,max_num_ibccand和six_minus_max_num_ibc_cand的名称被
任意给出。可以使用具有其他名称的信息。
[0514]
作为另一示例,可以对指示块矢量候选列表中的候选的最大数量的信息(例如,max_num_merge_cand_minus_max_num_ibc_cand)进行熵编码/解码,并且可以如下推导块矢量候选列表中的候选的最大数量(maxnumibccand)。
[0515]
块矢量候选列表中的候选的最大数量(maxnumibccand)=maxnummergecand-max_num_merge_cand_minus_max_num_ibc_cand
[0516]
maxnumibccand可以具有从2到maxnumergecand的值。
[0517]
指示块矢量候选列表中的候选的最大数量的信息(six_minus_max_num_ibc_cand和max_num_merge_cand_minus_max_num_ibc_cand中的至少一个)可仅在其指示使用帧内块复制模式时在比特流内的上级参数集(sps、pps、aps等)或报头(画面头、子画面头、条带头、并行块头等)中被熵编码/解码。换句话说,可以对帧内块复制模式启用标志进行熵编码/解码。
[0518]
例如,只有当在sps中被熵编码/解码的sps_ibc_enabled_flag是第二值1时,它才可以被熵编码/解码。另外,当sps_ibc_enabled_flag为第一值0时,可将指示块矢量候选列表中的候选的最大数量的至少一条信息推断为0。sps_ibc_enabled_flag可以是帧内块复制模式启用标志的示例。
[0519]
作为另一示例,可以对指示块矢量候选列表中的候选的最大数量的信息(例如,pic_six_minus_max_num_ibc_merge_cand)进行编码/解码,并且基于指示块矢量候选列表中的候选的最大数量的信息,可以如下推导块矢量候选列表中的候选的最大数量(maxnumibccand)。
[0520]
块矢量候选列表中的候选的最大数量(maxnumibccand)=6-pic_six_minus_max_num_ibc_merge_cand
[0521]
这里,maxnumibccand可以具有从1到n的值。可选地,maxnumibccand可以具有从0到n的值。这里,n可以是正整数。例如,n可以是6。另外,当maxnumibccand=0时,这可表示在画面/子画面/条带/并行块中不准许帧内块复制模式。
[0522]
可根据当前块/ctb/ctu的至少一个编码参数来推导n和m中的至少一个。
[0523]
另外,例如,可以基于在上级参数集或报头(如视频参数集、序列参数集和画面参数集)中编码/解码的值而跳过对指示块矢量候选列表的最大可准许数量的信息(例如,sps_six_minus_max_num_ibc_merge_cand、pps_six_minus_max_num_ibc_merge_cand、pic_six_minus_max_num_ibc_merge_cand等)的编码/解码。另外,基于在上级参数集或报头中编码/解码的值,可以推断相应信息的值。指示块矢量候选列表的最大可准许数量的信息可表示指示块矢量候选列表中的候选的最大数量的信息。
[0524]
图29是示出根据本发明的实施例的指示块矢量候选列表的最大可准许数量的信息的推导过程的示图。参考图29,根据在由画面头引用的画面参数集中编码/解码的信息的值(例如,pps_six_minus_max_num_ibc_merge_cand_plus1),可以在画面头中编码/解码或推断指示块矢量候选列表中的块矢量候选的最大可准许数量的信息(例如,pic_six_minus_max_num_ibc_merge_cand)。另外,当信息(例如,pic_six_minus_max_num_ibc_merge_cand)不存在时,该信息可以基于在上级参数集或报头中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)被推断。
[0525]
例如,当在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)具有值0时,这可表示指示块矢量候选列表的块矢量候选的最大可准许数量的信息(例如,pic_six_minus_max_num_ibc_merge_cand)存在于引用画面参数集的画面头中。
[0526]
此外,例如,当在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)具有大于0的值时,这可表示指示块矢量候选列表的块矢量候选的最大可准许数量的信息(例如,pic_six_minus_max_num_ibc_merge_cand)不存在于引用画面参数集的画面头中。这里,信息(例如,pic_six_minus_max_num_ibc_merge_cand)可以被推断为在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)-1。
[0527]
参照图29,可在画面参数集中编码/解码指示是否存在在画面头中编码/解码的预定信息的信息(例如,constant_slice_header_params_enabled_flag)。
[0528]
例如,当在画面参数集中编码/解码的其他信息(例如,constant_slice_header_params_enabled_flag)具有第一值时,可以对在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)进行熵编码/解码。另一方面,当在画面参数集中编码/解码的其他信息(例如,constant_slice_header_params_enabled_flag)具有第二值时,在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)可以不被熵编码/解码,而是被推断为0。这里,第一值可以是1,第二值可以是0。
[0529]
另外,例如,当满足下面描述的条件时,可以对在画面参数集中编码/解码的信息(例如,pps_six_minus_max_num_ibc_merge_cand_plus1)进行熵编码/解码。
[0530]
条件:在画面参数集中编码/解码的信息(例如,constant_slice_header_params_enabled_flag)具有第一值,并且在序列参数集中编码/解码的信息(例如,sps_ibc_enabled_flag)具有第一值。
[0531]
另外,例如,当满足下面描述的条件时,可以对在画面参数集中编码/解码的信息(例如,pps_max_num_merge_cand_minus1_max_num_triangle_cand_plus1)进行熵编码/解码。
[0532]
条件:在画面参数集中编码/解码的信息(例如,constant_slice_header_params_enabled_flag)具有第一值,并且在序列参数集中编码/解码的信息(例如,sps_triangle_enabled_flag)具有第一值。
[0533]
另外,例如,当满足下面描述的条件时,可以对在画面参数集中编码/解码的信息(例如,pps_collocated_from_l0_idc)进行熵编码/解码。
[0534]
条件:在画面参数集中编码/解码的信息(例如,constant_slice_header_params_enabled_flag)具有第一值,并且在序列参数集中编码/解码的信息(例如,sps_temporal_mvp_enabled_flag)具有第一值。
[0535]
另外,第一值可以是1,第二值可以是0。
[0536]
编码器/解码器可将块矢量候选列表中的候选的最大数量确定为固定值n。n可具有正整数值。可根据当前块/ctb/ctu的至少一个编码参数来推导n。
[0537]
例如,块矢量候选列表中的候选的最大数量可以是2。
[0538]
例如,块矢量候选列表中的候选的最大数量可以是5。
[0539]
例如,块矢量候选列表中的候选的最大数量可以是6。
[0540]
对于块矢量候选列表中的候选的最大数量,可以使用在编码器/解码器中预定义的固定值n。n可以是正整数,并且编码器/解码器可以根据当前块的编码模式使用不同的n值。这里,当前块的编码模式可以表示帧内块复制模式。另外,编码器/解码器可以根据当前块的帧内块复制跳过模式、帧内块复制合并模式和帧内块复制amvp模式来使用n的不同值。可根据当前块/ctb/ctu的至少一个编码参数来推导n。
[0541]
例如,在当前块是帧内块复制跳过模式或帧内块复制合并模式时,n的预定义值可以是6。
[0542]
例如,在当前块是帧内块复制amvp模式时,n的预定义值可以是2。
[0543]
另外,以下候选中的至少一个可被包括在块矢量候选列表中。
[0544]
如在图11的示例中,编码器/解码器可以通过推导与当前块x的左侧相邻的块a1和与当前块x的顶部相邻的块b1中的至少一个中的块矢量来确定当前块x的块矢量候选。这里,由此推导的块矢量中的至少一个可以被包括在块矢量候选列表中。这里,由此推导出的块矢量可以是与当前块相邻的邻近块的块矢量候选。
[0545]
对于包括在a1和b1的至少一个位置中的块,编码器/解码器可以根据预定的优先级顺序来确定块矢量是否存在于每个块中(换句话说,确定对应的块是否使用帧内块复制模式被编码/解码或者确定对应的块是否是帧内块复制模式)。另外,当存在块矢量时,编码器/解码器可以将对应块的块矢量作为块矢量候选。这里,用于配置块矢量候选列表的预定优先级顺序可以是a1和b1的顺序。
[0546]
当根据预定的优先级顺序配置块矢量候选列表时,编码器/解码器可在存在于块矢量候选列表中的块矢量候选与新添加到块矢量候选列表的块矢量候选之间执行冗余测试。例如,当新添加到块矢量候选列表的块矢量候选与存在于块矢量候选列表中的块矢量候选重叠时,编码器/解码器可以不将重叠的块矢量候选添加到块矢量候选列表。
[0547]
例如,当以a1和b1的顺序配置块矢量候选列表时,编码器/解码器可以在块b1和块a1之间执行冗余测试。只有当块b1具有与a1块矢量不相同的块矢量时,编码器/解码器才可以将块b1的块矢量添加到块矢量候选列表。可仅在对应块中存在块矢量时执行冗余测试。
[0548]
另外,当在位置a1和b1中的至少一个中所包括的块中的至少一个中存在块矢量时,编码器/解码器可以确定块的块矢量是否在当前块中可用。仅当块矢量可用时,编码器/解码器才可将邻近块的块矢量确定为块矢量候选。当对应块的块矢量不可用时,编码器/解码器可以不将该块矢量用作块矢量候选。这里,编码器/解码器可以基于由块矢量指示的位置处的参考样点(块)是否可用来确定块矢量是否可用。
[0549]
例如,当由对应块矢量指示的区域/位置包括当前块中所包括的样点中的至少一个时,编码器/解码器可将对应块矢量确定为不可用。
[0550]
例如,当由对应块矢量指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界外部的区域/位置/样点中的至少一个时,编码器/解码器可将对应块矢量确定为不可用。
[0551]
当块矢量候选列表中的候选的数量小于块矢量候选列表中的候选的最大数量时,编码器/解码器将来自缓冲器的至少一个块矢量候选添加到块矢量候选列表,其中,该缓冲
器存储在当前块之前编码/解码的块的块矢量中的至少一个。编码器/解码器可以将在当前块之前被编码/解码的块中的至少一个块的至少一个块矢量存储在缓冲器中。可将存储于缓冲器中的块矢量中的至少一个确定为当前块的块矢量候选。这里,由此确定的块矢量候选中的至少一个可以被包括在块矢量候选列表中。
[0552]
这里,块矢量可以按编码/解码顺序被存储在具有特定大小的缓冲器中。当对应的缓冲器已满时,编码器/解码器可以删除首先存储的块矢量,然后将新的块矢量(即,最近编码/解码的块的块矢量)存储在缓冲器中。将存储在对应的缓冲器中的块矢量包括到块矢量候选列表中的优先级顺序可以根据将块矢量存储在缓冲器中的顺序(例如,从最旧到最近或从最近到最旧的时间顺序)而不同。例如,编码器/解码器可以根据将块矢量存储在缓冲器中的升序时间顺序将块矢量包括在块矢量候选列表中。可选地,编码器/解码器可以根据将块矢量存储在缓冲器中的降序时间顺序将块矢量包括在块矢量候选列表中。这样的块矢量候选被称为基于历史的块矢量候选。换句话说,存储在缓冲器中的块矢量可以表示基于历史的块矢量候选。
[0553]
当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,编码器/解码器可以仅在对应的基于历史的块矢量候选在当前块中可用时将对应的基于历史的块矢量候选添加到块矢量候选列表。这里,可以根据由块矢量指示的位置处的参考样点(块)是否可用来确定对应的基于历史的块矢量是否可用。
[0554]
例如,当由对应的基于历史的块矢量指示的区域/位置包括当前块中所包括的样点中的至少一个样点时,可将对应的基于历史的块矢量确定为不可用。
[0555]
例如,当由对应的基于历史的块矢量指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界之外的区域/位置/样点中的至少一个时,编码器/解码器可以将对应的基于历史的块矢量确定为不可用。
[0556]
当块矢量候选列表中的候选的数量小于块矢量候选列表中的候选的最大数量并且至少一个块矢量存在于存储了在当前块之前被编码/解码的块的块矢量的缓冲器中时,编码器/解码器可将基于历史的块矢量候选添加到块矢量候选列表,直到块矢量候选列表中的候选的数量达到块矢量候选列表中的候选的最大数量为止。
[0557]
当通过使用至少一个基于历史的块矢量候选来配置块矢量候选列表时,可以在对应的基于历史的块矢量候选和块矢量候选列表中的块矢量候选之间执行冗余测试。当不存在相同的块矢量时,编码器/解码器可以将基于历史的块矢量候选添加到块矢量候选列表。
[0558]
作为另一示例,当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,可以在对应的基于历史的块矢量候选和块矢量候选之间执行冗余测试。当不存在相同的块矢量时,编码器/解码器可以将基于历史的块矢量候选添加到块矢量候选列表。
[0559]
例如,编码器/解码器可以在基于历史的块矢量候选和作为与当前块相邻的邻近块的块a1和b1的块矢量之间执行冗余测试。
[0560]
作为另一示例,编码器/解码器可以仅针对基于历史的块矢量候选和第一基于历史的块矢量候选,利用块a1和b1的块矢量执行冗余测试。
[0561]
作为另一示例,编码器/解码器可以仅针对基于历史的块矢量候选和第二基于历史的块矢量候选,利用块a1和b1的块矢量执行冗余测试。
[0562]
作为另一示例,对于所有基于历史的块矢量候选,编码器/解码器可以利用块a1和
b1的块矢量来执行冗余测试,所述块a1和b1是与当前块相邻的邻近块。
[0563]
这里,第一候选可表示最近存储在由基于历史的块矢量候选组成的基于历史的块矢量候选列表中的块矢量候选。
[0564]
这里,当执行冗余测试并且不存在相同的块矢量时,编码器/解码器可以将基于历史的块矢量候选添加到块矢量候选列表。
[0565]
作为另一示例,当通过使用基于历史的块矢量候选中的至少一个来配置块矢量候选列表时,编码器/解码器可以在不进行基于历史的块矢量候选与块矢量候选列表中的块矢量候选之间或在块矢量候选之间执行冗余测试的情况下,将基于历史的块矢量候选添加到块矢量候选列表。
[0566]
在以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位进行编码/解码时,保持包括基于历史的块矢量候选的缓冲器。因此,可以在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列的单元内使用缓冲器。
[0567]
另外,缓冲器可以以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位包括关于在当前块之前编码/解码的块的至少一条编码信息。
[0568]
另外,当缓冲器以画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列为单位被配置时,可在画面、条带、子画面、分块、并行块组、并行块、ctu、ctu行和ctu列的开始位置/区域/块/单元中对缓冲器进行初始化。这里,当缓冲器被初始化时,可以删除存在于缓冲器中的每个块矢量。另外,当缓冲器被初始化时,存在于缓冲器中的每个块矢量可以被确定为预定值。这里,预定值可以表示块矢量(x,y)中的x和y的值。例如,x和y可以是整数值。
[0569]
编码器/解码器可以通过使用存在于预测块矢量候选列表中的至少两个预测块矢量候选来配置组合预测块矢量候选。可将组合预测块矢量候选添加到预测块矢量候选列表。这里,组合块矢量候选可分别具有针对存在于块矢量候选列表中的块矢量候选当中的至少两个块矢量的x分量和y分量的统计值。这里,当配置组合预测块矢量候选时,编码器/解码器可以不使用基于历史的预测矢量候选。这里,当配置组合预测块矢量候选时,编码器/解码器可以不使用与当前块相邻的邻近块的预测块矢量候选中的至少一个。这里,仅当由预测块矢量候选组成的组合预测块矢量候选在当前块中可用时,编码器/解码器可以确定组合预测块矢量候选。这里,可以根据由预测块矢量指示的位置处的参考样点(块)是否可用来确定预测块矢量是否可用。
[0570]
例如,当由对应的组合预测块矢量候选指示的区域/位置包括当前块中包括的样点中的至少一个样点时,编码器/解码器可以将对应的组合预测块矢量候选确定为不可用。
[0571]
例如,当由对应的组合预测块矢量候选指示的区域/位置包括位于画面、子画面、条带、并行块组、并行块和分块的边界外部的区域/位置/样点中的至少一个时,编码器/解码器可将组合预测块矢量候选确定为不可用。
[0572]
当块矢量候选列表中的候选的数量小于块矢量候选列表中的候选的最大数量时,编码器/解码器可将固定基本块矢量(0,0)添加到块矢量候选列表,直到块矢量候选列表中的候选的数量达到块矢量候选列表中的候选的最大矢量为止。在当前块是帧内块复制跳过模式和帧内块复制合并模式时,可以执行将固定基本块矢量添加到块矢量候选列表的操作。
[0573]
作为另一示例,可按以下顺序配置固定基本块矢量候选,直到块矢量候选列表中的候选的数量达到块矢量候选列表中的候选的最大数量为止。
[0574]
1.(-(w《《1),0)
[0575]
2.(0,-(h《《1))
[0576]
3.(-(w《《1)-1,0)
[0577]
4.(0,-(h《《1)-1)
[0578]
5.(-(w《《1)-2,0)
[0579]
6.(0,-(h《《1)-2)
[0580]
7.(-(w《《1)-3,0)
[0581]
8.(0,-(h《《1)-3)
[0582]
9.(-(w《《1)-4,0)
[0583]
10.(0,-(h《《1)-4)
[0584]
作为另一示例,在当前块是帧内块复制amvp模式并且块矢量候选列表中的候选的数量小于块矢量候选列表中的候选的最大数量(预定义amvp候选的最大数量(n))时,编码器/解码器可将固定基本块矢量(0,0)添加到块矢量候选列表,直到块矢量候选列表中的候选的数量达到预定义amvp候选的最大数量(n)为止。这里,n可以是正整数。例如,它可以是2。
[0585]
例如,在当前块是帧内块复制amvp模式,块矢量候选列表中的候选的最大数量被定义为与帧间预测模式的合并候选列表中的候选的最大数量(maxnummergecand)相同,并且帧间预测模式的合并候选列表中的候选的最大矢量(maxnummergecand)为1(即,块矢量候选列表中的候选的数量小于预定义amvp候选的最大数量(2))时,编码器/解码器可添加固定基本块矢量(0,0)到块矢量候选列表,以便满足amvp候选的最大数量(2)。
[0586]
编码器/解码器可以通过使用与当前块相邻的邻近块的块矢量候选、基于历史的块矢量候选、组合块矢量候选和固定基本块矢量候选中的至少一个,根据预定顺序来配置块矢量候选列表。例如,可按与当前块相邻的邻近块的块矢量候选、基于历史的块矢量候选、组合块矢量候选和固定基本块矢量候选的顺序来设置配置块矢量候选列表的顺序。
[0587]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的与当前块相邻的邻近块的块矢量候选的最大数量可以是块矢量候选的最大数量(n)或者可以是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0588]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的基于历史的块矢量候选的最大数量可以是块矢量候选的最大数量(n)或者可以是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0589]
当配置块矢量候选列表时,能够被包括在块矢量候选列表中的固定基本块矢量候选的最大数量可以是块矢量候选的最大数量(n)或者可以是(n-m)。这里,n可以是正整数,并且m可以是正整数。此外,n可以具有比m大的值。
[0590]
可根据当前块/ctb/ctu的至少一个编码参数来推导块矢量候选。
[0591]
可根据当前块/ctb/ctu的至少一个编码参数将块矢量候选添加到块矢量候选列表。
[0592]
用于识别如上配置的块矢量候选列表中的对应候选的至少一个块矢量候选信息
(例如,标识符、索引、标志、merge_idx等)可以被熵编码/解码并且按照至少一个编码参数被推导。
[0593]
例如,在当前块对应于帧内块复制跳过模式或帧内块复制合并模式时,编码器/解码器可以基于作为当前块中的块矢量候选信息的合并索引(例如,merge_idx)信息来识别对应的块矢量候选。在本文中,合并索引可表示块矢量的合并索引。另外,合并索引可以是编码/解码/推断的信息。
[0594]
如在图30的示例中,在当前块对应于帧内块复制amvp模式时,编码器/解码器可基于作为块矢量候选信息的l0运动预测标志(例如,mvp_l0_flag)信息来识别对应块矢量候选。这里,l0运动预测标志可以表示l0块矢量预测标志。另外,l0运动预测标志可以是编码/解码/推断的信息。
[0595]
当块矢量候选列表中的候选的最大数量为1时,l0运动预测标志可以不被熵编码/解码,而是被推断为0。
[0596]
例如,当maxnummergecand指示块矢量候选列表中的候选的最大数量并且maxnummergecand=1时,l0运动预测标志可以不被熵编码/解码,而是被推断为0。换句话说,仅当maxnummergecand大于1时,编码器/解码器可对l0运动预测标志进行熵编码/解码。这里,为了便于描述,maxnumibccand的名称被任意给出。可以使用其他名称,诸如maxnumibcmergecand和maxnumibccand。换句话说,可以使用maxnumibcmergecand而不是maxnummergecand。例如,当maxnumibcmergecand大于1时,可以对指示l0运动矢量预测因子的索引的信息(例如,mvp_10_flag)进行熵编码/解码。否则(当maxnumibcmergecand等于或小于1时),mvp_l0_flag可以不被熵编码/解码,而是被推断为0。该信息可以是标志。
[0597]
这里,l0运动矢量预测标志可表示指示l0运动矢量预测因子的索引的信息。
[0598]
如在图31的示例中,当块矢量候选列表中的候选的最大数量(maxnumibccand)大于1并且当前块对应于帧内块复制跳过模式或帧内块复制合并模式时,编码器/解码器可始终对合并索引信息进行熵编码/解码,而不考虑块矢量候选列表中的候选的最大数量。
[0599]
作为另一示例,在当前块对应于帧内块复制跳过模式或帧内块复制合并模式并且块矢量候选列表中的候选的最大数量(例如,maxnumibcmergecand)大于1时,可以对合并索引信息(例如,merge_idx)进行熵编码/解码。
[0600]
例如,在当前块是帧内块复制跳过模式或帧内块复制合并模式时,编码器/解码器将块矢量候选列表中的由块矢量候选信息标识的块矢量候选作为当前块的块矢量。
[0601]
作为另一示例,在当前块为帧内块复制amvp模式时,编码器/解码器可将熵编码/解码的块矢量差与块矢量候选列表中的由块矢量候选信息标识的预测块矢量相加,并且可将总和用作当前块的块矢量。
[0602]
如在图30的示例中,根据熵编码/解码的amvr_precision_flag的值,可以对所标识的预测块矢量(mvx[0]和mvx[1])执行如以下公式中描述的舍入。
[0603]
这里,根据amvr_precision_flag的值,可以确定块矢量差的分辨率和预测块矢量的分辨率。
[0604]
这里,当amvr_precision_flag是第一值0时,块矢量可以具有n整数样点单位的大小。
[0605]
另外,当amvr_precision_flag是第二值1时,块矢量可以具有m整数样点单位的大
小。
[0606]
这里,n和m可以是正整数。例如,n可以是1并且m可以是4。此外,n可以小于m,并且m可以小于n。
[0607]
offset=(rightshift==0)?0:(1《《(rightshift-1))
[0608]
mvx[0]=((mvx[0] offset-(mvx[0]》=0))》》rightshift)《《leftshift
[0609]
mvx[1]=((mvx[0] offset-(mvx[1]》=0))》》rightshift)《《leftshift
[0610]
当amvr_precision_flag是第一值0(块矢量具有1整数样点单位的大小)时,rightshift=4,leftshift=4。
[0611]
当amvr_precision_flag是第二值1(块矢量具有4整数样点单位的大小)时,rightshift=6,leftshift=6
[0612]
可以根据当前块/ctb/ctu的至少一个编码参数来推导amvr_precision_flag、块矢量差的分辨率和预测块矢量的分辨率中的至少一个。
[0613]
作为另一示例,在当前块为帧内块复制amvp模式时,编码器/解码器可将块矢量差与预测块矢量相加,并且将总和用作当前块的块矢量。
[0614]
如在图32的示例中,根据熵编码/解码的amvr_flag和amvr_precision_flag中的至少一个的值,编码器/解码器可以对所标识的预测块矢量(mvx[0]和mvx[1])执行如下式所述的舍入。
[0615]
这里,根据amvr_flag和amvr_precision_flag的值中的至少一个的值,可以确定块矢量差的分辨率和预测块矢量的分辨率。
[0616]
这里,当amvr_flag是第一值0时,块矢量可以具有n整数样点单位的大小。
[0617]
另外,当amvr_flag是第二值1时,块矢量可以具有m或p整数样点单位的大小。
[0618]
当amvr_flag是第二值1并且amvr_precision_flag是第一值0时,块矢量可以具有m整数样点单位的大小。
[0619]
当amvr_flag是第二值1并且amvr_precision_flag是第二值1时,块矢量可以具有p整数样点单位的大小。
[0620]
这里,n、m和p可以是正整数。例如,n可以是1,m可以是4,p可以是16。此外,n可以小于m和p。此外,p可以大于n和m。
[0621]
offset=(rightshift==0)?0:(1《《(rightshift-1))
[0622]
mvx[0]=((mvx[0] offset-(mvx[0]》=0))》》rightshift)《《leftshift
[0623]
mvx[1]=((mvx[0] offset-(mvx[1]》=0))》》rightshift)《《leftshift
[0624]
当amvr_flag是第一值0(块矢量具有1整数样点单位的大小)时,rightshift=4,leftshift=4。
[0625]
当amvr_flag是第一值0并且amvr_precision_flag是第一值0(块矢量具有4整数样点单位的大小)时,rightshift=6,leftshift=6。
[0626]
当amvr_flag是第二值1并且amvr_precision_flag是第二值1(块矢量具有16整数样点单位的大小)时,rightshift=8,leftshift=8。
[0627]
这里,在帧内块复制amvp模式中使用的块矢量分辨率(例如,1、4、16整数样点单位)可与通过将在帧间amvp模式或仿射amvp模式中使用的运动矢量分辨率(例如,1/4、1、4整数样点单位)乘以k或通过对运动矢量分辨率执行j左移位运算而获得的结果相同。这里,
k和j可以是正整数。例如,k可以是4并且j可以是2。
[0628]
可以根据当前块/ctb/ctu的至少一个编码参数来推导amvr_flag、amvr_precision_flag、块矢量差的分辨率和预测块矢量的分辨率中的至少一个。
[0629]
指示块矢量候选列表中的候选的最大数量的信息、指示帧间预测模式的合并候选列表中的候选的最大数量的信息、块矢量候选信息、合并索引、l0运动预测标志和amvp分辨率相关信息(amvr_precision_flag和/或amvr_flag)中的至少一个可以在参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个中被熵编码/解码。
[0630]
这里,参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个可以是以下中的至少一个:视频参数集、解码参数集、序列参数集、自适应参数集、画面参数集、画面报头、子画面报头、条带报头、并行块组报头、并行块报头、分块、编码树单元(ctu)、编码单元(cu)、预测单元(pu)、变换单元(tu)、预测块(pb)和变换块(tb)。
[0631]
这里,编码器/解码器可以通过使用参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个中的以下至少一项,基于帧内块复制模式执行预测:指示块矢量候选列表中的候选的最大数量的信息、指示帧间预测模式的合并候选列表中的候选的最大数量的信息、块矢量候选信息、合并索引、l0运动预测标志和amvp分辨率相关信息(amvr_precision_flag和/或amvr_flag)。
[0632]
这里,可根据当前块/ctb/ctu的至少一个编码参数来推导指示块矢量候选列表中的候选的最大数量的信息、指示帧间预测模式的合并候选列表中的候选的最大数量的信息、块矢量候选信息、合并索引、l0运动预测标志及amvp分辨率相关信息(amvr_precision_flag和/或amvr_flag)中的至少一个。
[0633]
当比特流中不存在指示块矢量候选列表中的候选的最大数量的信息、指示帧间预测模式的合并候选列表中的候选的最大数量的信息、块矢量候选信息、合并索引、l0运动预测标志及amvp分辨率相关信息(amvr_precision_flag和/或amvr_flag)中的至少一个时,可将指示块矢量候选列表中的候选的最大数量的信息、指示帧间预测模式的合并候选列表中的候选的最大数量的信息、合并索引、l0运动预测标志和amvp分辨率相关信息(amvr_precision_flag和/或amvr_flag)推断为第一值(例如,0)。
[0634]
在帧内块复制模式中,编码器/解码器可以限制由块矢量指示的参考块的位置或块矢量的可能范围。
[0635]
这里,当不限制块的范围或由块矢量指示的参考块的位置时,为了以帧内块复制模式生成预测块,编码器/解码器可能必须存储在同一画面(当前画面)内的当前块之前编码/解码的每个区域的重构图像。在这种情况下,实现编码器/解码器可能需要大量存储器来存储重构图像。因此,为了确保易于实现,在帧内块复制模式中,编码器/解码器可以限制由块矢量指示的参考块的位置或块矢量的可能范围。
[0636]
如在图14的示例中,当假设画面中的针对帧内块复制模式中的当前块的左上样点位置的坐标为(xcb,ycb),当前块的水平长度为cbwidth,当前块的垂直长度为cbheight,并且块矢量为(vx,vy)时,通过使用块矢量而获得的参考块的左上样点位置的坐标(xtl,ytl)可以被确定为(xcb vx,ycb vy),并且参考块的右下样点位置的坐标(xbr,ybr)可被确定为(xtl cbwidth-1,ytl cbheight-1)。
[0637]
这里,可以通过以下方法中的至少一种来限制块矢量的值的范围或由块矢量指示
的参考块的位置。可以基于当前块和与当前块相邻的邻近块中的至少一个的编码参数来限制块矢量的值的范围或由块矢量指示的参考块的位置。另外,可基于当前ctu和与当前ctu相邻的邻近ctu中的至少一个的编码参数来限制块矢量的值范围或由块矢量指示的参考块的位置。
[0638]
包括针对参考块的左上样点位置的坐标(xtl,ytl)的区域和包括针对右下样点位置的坐标(xbr,ybr)的区域可能必须是可用的。这里,可用的可以表示存在对应的区域。可选地,可用的可以具体地表示存在用于对应区域的重构图像/样点。
[0639]
在前述实施例和/或本文中所描述的其它实施例中,参考块的左上坐标可表示针对参考块的左上样点位置的坐标,并且参考块的右下坐标可表示针对参考块的右下样点位置的坐标。
[0640]
编码器/解码器可以将参考块的左下坐标限制为位于当前块的左上坐标的左侧、顶部或左上,使得在当前块和参考块之间不存在重叠区域。在这方面,可能必须满足以下条件中的至少一个。
[0641]
vx cbwidth≤0
[0642]
vy cbheight≤0
[0643]
参考块可与当前块被包括在相同的ctb中,或者参考块可被包括在左侧的(n-1)个ctb内。当ctb的尺寸是128
×
128时,n可以是2。当ctb的尺寸小于128
×
128或等于或大于64
×
64时,对应的ctb的垂直长度
×
(n
×
(ctb的水平长度))可等于128
×
128。可基于当前ctu和与当前ctu相邻的邻近ctu中的至少一个的编码参数来确定n。
[0644]
当ctb的尺寸为128
×
128时,参考块可与当前块被包括在相同的ctb中,或者参考块可被包括在左侧的ctb中。当参考块与当前块被包括在相同的ctb中时,参考块可被包括于在当前块之前编码/解码的区域中。在当前ctb和当前ctb的左侧ctb以64
×
64为单位被四分区时,参考块可存在于在当前块所属的一个64
×
64块之前编码/解码的其余三个64
×
64块中的至少一个中。
[0645]
如在图15的示例中,参考块可属于的64
×
64块根据当前块(curr)所在的64
×
64块在ctb中的位置以灰色被标记。“x”标记的区域可以表示不能包括参考块的区域。另外,在当前块所属的64
×
64块内,在当前块之前编码/解码的区域中可能存在参考块。因此,待存储以用于参考块产生的重构样点的数量可被限制为在四个64
×
64块(即,128
×
128块)中包括的样点的数量。
[0646]
当ctb尺寸小于128
×
128或者等于或小于64
×
64时,参考块可被包括在包括当前块的ctb的左侧的(n-1)个ctb中。这里,n可以满足(ctb的垂直长度
×
(n
×
ctb的水平长度))=128
×
128。例如,当ctb尺寸是64
×
64时,n可以是4。另外,在当前块之前编码/解码的区域中可能存在参考块。因此,待存储以用于产生参考块(包括当前块所属的ctb)的重构样点的数量可被限制为128
×
128个样点的数量。
[0647]
编码器/解码器可以通过将在帧内块复制模式中可用的参考范围存储到独立缓冲器中来限制参考块的范围。这里,参考块的范围可以表示由块矢量指示的参考块的位置。这里,参考范围可以是能够包含由块矢量指示的参考块的区域。可以基于当前块和与当前块相邻的邻近块中的至少一个的编码参数来限制参考块的范围。另外,可基于当前ctu和与当前ctu相邻的邻近ctu中的至少一个的编码参数来限制块矢量的值的范围或由块矢量指示
的参考块的位置。
[0648]
在这种情况下,用于帧内块复制的参考区域缓冲器的大小可以是m1
×
m2,并且按照每个样点m3个比特被存储。这里,m1和m2可以是作为2的倍数的正整数(例如,8、16、32、64、128等),并且m3可以是随机正整数(例如,3、4、5、6、7、8、9、10、11、12等)。可选地,可以通过将作为2的倍数的预定正整数除以ctu的一个边的长度来确定m1,并且可以将m2确定为ctu的一个边的长度。例如,m1可以是2n。n可以是正整数。例如,n可以是14、15或16。
[0649]
存储在对应缓冲器中的值可以是未应用环路滤波的重构图像样点中的至少一个。当样点不按照每样点m3个比特表示时,编码器/解码器可以将样点变换为每样点m3个比特。
[0650]
可以基于当前块和与当前块相邻的邻近块中的至少一个的编码参数来确定m1、m2和m3中的至少一个。另外,可基于当前ctu/ctb和与当前ctu/ctb相邻的邻近ctu/ctb中的至少一个的编码参数来确定m1、m2和m3中的至少一个。
[0651]
可在分块、并行块、条带、子画面、画面或并行块组的每个ctb或ctu行中新设置参考区域缓冲器。新设置可以表示重置或初始化对应的缓冲器。
[0652]
可以通过以下方法中的至少一种来配置对应的缓冲器。
[0653]
用于亮度分量的参考区域缓冲器的大小可等于包括当前块的ctb的尺寸。例如,当ctb尺寸为128
×
128时,参考区域缓冲器的大小可以是128
×
128。可选地,参考区域缓冲器的大小可小于ctb尺寸。
[0654]
如图16的(b)中所示,可通过包括在包括当前块的ctb(下文中,当前ctb)内的在当前块之前编码/解码的区域以及位于当前ctb左侧的ctb的区域(如图16的(a)中所示)来配置参考区域缓冲器。在参考区域缓冲器中,在当前ctb内的在当前块之前编码/解码的区域的重构样点可被包括在与ctb内的相对位置相同的位置中,并且当前块的位置以及与当前ctb内的除在当前块之前编码/解码的区域以外的其它区域对应的位置可包括位于当前ctb左侧的ctb中的重构样点。这里,对应重构样点的位置可被包括在与对应ctb中的对应重构样点的相对位置相同的位置中。换句话说,当对应样点的坐标是(x,y)时,包括在缓冲器中的位置可表示(x%ctb的水平或垂直长度,y%ctb的水平或垂直长度)、(x%m1,y%m2)或(x%m1,y%ctb的垂直长度)。这里,模运算“%”的结果可以总是正值。换句话说,当x具有负值时,x%l可以是-(-x%l)。例如,当m1或ctb的水平或垂直长度为128时,-3%128可为125。当块矢量是(vx,vy)时,预测样点的位置可以是((x vx)%128,(y vy)%128)。这里,在参考区域缓冲器中,当前块区域的样点值可以是在左侧ctb中的与当前块区域对应的重构样点值。
[0655]
编码器/解码器可限制用信号传送或推导的块矢量以便指示包括在参考区域缓冲器中的区域。
[0656]
当用信号传送或推导的块矢量是(vx,vy)时,编码器/解码器可将块矢量的范围限制为minvx≤vx≤maxvx且minvy≤vy≤maxvy。另外,可以按照以下方式之一来设置minvx、maxvx、minvy和maxvy。
[0657]
当参考区域缓冲器的左上坐标被设置为(0,0)时,minvx=0,maxvx=(参考区域缓冲器的水平长度-1),minvy=0,并且maxvy=(参考区域缓冲器的垂直长度-1)。
[0658]
当图17的(a)的灰色部分在参考区域缓冲器中被设置为(0,0)时,minvx=-((参考区域缓冲器的水平长度/2)-1),maxvx=(参考区域缓冲器的水平长度/2),minvy=-((参考
区域缓冲器的水平长度/2)-1),并且maxvy=(参考区域缓冲器的垂直长度/2)。
[0659]
当图17的(b)的灰色部分在参考区域缓冲器中被设置为(0,0)时,minvx=-(参考区域缓冲器的水平长度/2),maxvx=((参考区域缓冲器的水平长度/2)-1),minvy=-(参考区域缓冲器的水平长度/2),并且maxvy=((参考区域缓冲器的垂直长度/2)-1)。
[0660]
可以基于当前块和与当前块相邻的邻近块中的至少一个的编码参数来确定minvx、maxvx、minvy和maxvy中的至少一个。另外,可基于当前ctu和与当前ctu相邻的邻近ctu中的至少一个的编码参数来确定minvx、maxvx、minvy和maxvy中的至少一个。
[0661]
通过限制参考区域缓冲器中的块矢量的值,编码器/解码器可确定在当前块中是否用信号传送和使用无效块矢量。当用信号传送或推导的块矢量被包括在除了限制的范围以外的范围中时,编码器/解码器可应用以下方法中的至少一个以便将块矢量包括在限制的范围内或产生预测块。
[0662]
这里,无效块矢量可以表示块矢量超出参考区域缓冲器的范围。另外,无效块矢量可表示(0,0)块矢量。
[0663]
超出限制的范围的对应块矢量的最接近块矢量可由所述对应块矢量替换。换句话说,当用信号传送或推导的块矢量是(v1x,v1y)且v1x《minvx时,可以设置v1x=minvx。在v1x》maxvx的情况下,可以设置v1x=maxvx。在v1y《minvy的情况下,可以设置v1y=minvy。在v1y》maxvy的情况下,可以设置v1y=maxvy。
[0664]
对于由超出限制的范围的对应块矢量指示的区域,编码器/解码器可以基于最接近该区域的重构样点的值来执行填充。
[0665]
对应的块矢量可以被设置为具有固定的随机值。例如,对应的块矢量可以是(0,0)、指示当前块的位置的矢量值、(0,p1)、(p2,0)或(p3,p4)。这里,p1、p2、p3和p4可以是随机正整数。
[0666]
当对应的块矢量未被随机值替换并且块矢量没有被包括在限制的范围内时,编码器/解码器可以将通过使用块矢量而获得的预测块的所有样点值设置为随机固定值。这里,随机固定值的范围从-1
×
2^(bitdepth)到2^(bitdepth)-1。bitdepth(比特深度)可以是包括0的随机整数。例如,bitdepth可以是5、6、7、8、9、10、11、12等。另外,预测块的样点值可以是-1、0、-1
×
2^(bitdepth)、2^(bitdepth-1)和2^(bitdepth)-1。
[0667]
作为另一示例,当通过使用对应的块矢量而获得的预测块的所有样点值被设置为随机固定值时,随机固定值的范围可从-1
×
(2《《bitdepth)到(2《《bitdepth)-1。这里,bitdepth可以是包括0的整数。此外,例如,预测块的所有样点值可以是-1、0、(-1
×
(2《《bitdepth))、(2《《bitdepth-n-1))和(2《《bitdepth-n))-1。
[0668]
这里,n可以是包括0的正整数。另外,n可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0669]
bitdepth可以表示输入样点的比特深度。另外,bitdepth可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0670]
n和bitdepth中的至少一个可以在亮度分量块和色度分量(cb和/或cr)块中具有不同的值。
[0671]
n和bitdepth中的至少一个可以根据作为当前块的编码模式的帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少一个而具
有不同的值。
[0672]
可根据当前块/ctb/ctu的至少一个编码参数来确定n和bitdepth中的至少一个。
[0673]
参考区域缓冲器可以在当前块被编码/解码之后在当前块的位置处存储当前块的重构图像样点值。该过程被称为参考区域缓冲器更新过程。在执行该过程之后,编码器/解码器可以进行下一块的编码/解码。因此,参考区域缓冲器中包括的样点值被逐渐更新,并且在当前ctb中的每个块被编码/解码时,缓冲器可以仅由当前ctb的重构图像样点组成。
[0674]
参考区域缓冲器的大小可以是m1=(n
×
ctb的水平长度)且m2=(ctb的垂直长度),或者是m1=(ctb的垂直长度)且m2=(n
×
ctb的水平长度)。这里,n可以是满足m1
×
m2=128
×
128的正整数。可选地,n可被推导为满足(n
×
ctb的水平长度)
×
(ctb的垂直长度)=128
×
128的值,并且参考区域缓冲器的水平长度m1可等于或小于(n
×
ctb的水平长度)。参考区域缓冲器的垂直长度m2可等于ctb的垂直长度。可选地,m1可以是(128/ctb的水平长度)
×
k,并且当ctb的水平长度是128时,k可以是参考区域缓冲器的水平长度。
[0675]
可以基于当前块和与当前块相邻的邻近块中的至少一个的编码参数来确定m1、m2、n和k中的至少一个。另外,可基于当前ctu/ctb和与当前ctu/ctb相邻的邻近ctu/ctb中的至少一个的编码参数来确定m1、m2、n和k中的至少一个。
[0676]
如在图18的示例中,参考区域缓冲器可被配置为包括在当前ctb之前完全编码/解码的左侧的(n-1)个ctb。另外,在当前块之前在当前ctb中编码/解码的区域可以被包括在参考区域缓冲器中。
[0677]
与图18类似,图19示出了配置包括在当前ctb之前完全编码/解码的左侧(n-1)个ctb的参考区域缓冲器的示例。当ctb#1是当前ctu或ctb行的第一ctb时,在ctb#1被编码/解码之前,缓冲器可以是空的或被设置为初始值。这里,初始值是等于或大于-1
×
2^(bitdepth)且等于或小于2^(bitdepth)-1的随机整数。初始值可以是重构样点的可能范围内的预定值。例如,初始值可以是-1、0、-1
×
2^(bitdepth)、2^(bitdepth-1)或2^(bitdepth)-1。当对应的缓冲器为空时,这可能表示块矢量被限制为不指示缓冲器中的空区域。设置初始值可以表示块矢量能够指示由初始值设置的区域,并且在这种情况下,初始值可以被设置为预测样点值。
[0678]
作为另一示例,缓冲器的初始值的范围可从-1
×
(2《《bitdepth)到(2《《bitdepth)-1。这里,bitdepth可以是包括0的整数。例如,bitdepth可以是1、2、3、4、5、6、7、8、9、10、11、12等。此外,例如,缓冲器的初始值可以是-1、0、(-1
×
(2《《bitdepth))、(2《《(bitdepth-n-1))和(2《《(bitdepth-n))-1。
[0679]
这里,n可以是包括0的正整数。另外,n可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0680]
bitdepth可以表示输入样点的比特深度。另外,bitdepth可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0681]
n和bitdepth中的至少一个可以在亮度分量块和色度分量(cb和/或cr)块中具有不同的值。
[0682]
n和bitdepth中的至少一个可以根据作为当前块的编码模式的帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少一个而具有不同的值。
[0683]
可根据当前块/ctb/ctu的至少一个编码参数来确定n和bitdepth中的至少一个。
[0684]
在完成ctb#1的编码/解码的时刻,ctb#1的所有重构样点可被存储在参考区域缓冲器中。在完成ctb#2的编码/解码的时刻,ctb#2的重构样点可被存储在参考区域缓冲器中。图19示出了当特定ctb的编码/解码完成时以及在ctb的重构样点被添加到参考区域缓冲器之后的参考区域缓冲器状态的实施例。如图19的(a)所示,当ctb#2的编码/解码完成时,编码器/解码器可将ctb#1的样点的存储位置在参考区域缓冲器中向右移动单个ctb大小,并将ctb#2的重构样点存储曾存储ctb#1的位置处。如图19的(b)所示,编码器/解码器可将ctb#2的重构样点存储在ctb#1右侧的区域中,而不改变ctb#1的样点的存储位置。这里,当ctb#4的编码/解码完成时,参考图像缓冲器可以是满的。因此,当ctb#5的编码/解码完成时,编码器/解码器可将ctb#5的重构样点存储在曾用于存储ctb#1的重构样点的位置处。然后,ctb#6的重构样点可被存储在ctb#2的重构样点的存储位置处。根据图19的(c),在完成ctb#4的编码/解码并且每个参考图像缓冲器已满之前,可以将编码/解码的ctb的重构样点存储在缓冲器中,如图19的(b)所示。当ctb#5的编码/解码完成时,编码器/解码器可将ctb#4的重构样点的存储位置向左移动单个ctb大小,并将ctb#5的重构样点存储在曾用于存储ctb#4的位置处。这里,编码器/解码器还可将ctb#2和ctb#3的重构样点向左移动单个ctb大小。因此,由于画面中的ctb的相对位置变得与参考区域缓冲器中的ctb的相对位置相同,因此可在没有单独变换过程的情况下使用用信号传送的块矢量来推导预测块。根据图19的(d),当ctb#2的编码/解码完成时,ctb#1的样点的存储位置在参考区域缓冲器中向左移动单个ctb大小。编码器/解码器可将ctb#2的重构样点存储在曾用于存储ctb#1的位置处。当ctb#4的编码/解码完成时,参考图像缓冲器已满。当ctb#5的编码/解码完成时,如图19的(c)所示,ctb#4的重构样点的存储位置可向左移动单个ctb大小。编码器/解码器可将ctb#5的重构样点存储在曾用于ctb#4的重构样点的位置处。这里,编码器/解码器还可将ctb#2和ctb#3的重构样点向左移动单个ctb大小。
[0685]
在开始编码/解码第k5个ctb时,即,当开始编码/解码第k5个ctb的第一块时,第(k5-1)、第(k5-2)、...、第(k5-n)个ctb的重构样点可以被存储在参考区域缓冲器中。例如,当ctb尺寸是64
×
64时,n可以是4。在这种情况下,第(k5-1)、第(k5-2)、第(k5-3)和第(k5-4)个ctb的重构样点可被存储在参考区域缓冲器中。上述k5可以表示随机正整数。可以通过参考对应的参考区域缓冲器来编码/解码第k5个ctb的第一块。当对应块的编码/解码完成时,参考区域缓冲器状态和块矢量可以具有以下范围之一。
[0686]
可在参考区域缓冲器中删除第(k5-(n-1))个ctb的重构样点,并且可将第k5个ctb的第一块的重构样点存储在参考区域缓冲器中。第k5个ctb的第a个块(a是大于1的随机整数)的参考区域可以被限制为当前ctb的左侧的(n-1)个ctb。这可表示由块矢量推导出的预测块的左上坐标(或位置)和右下坐标(或位置)指示的位置被限制为包括在左侧的(n-1)个ctb中。
[0687]
可在参考区域缓冲器中删除第(k5-(n-1))个ctb的重构样点,并且可将第k5个ctb的第一块的重构样点存储在参考区域缓冲器中。第k5个ctb的第a块(a是大于1的随机整数)的参考区域可以被限制为当前ctb中的在当前块之前编码/解码的块的区域,并且被限制为在当前ctb的左侧的(n-1)个ctb。这可表示由块矢量推导出的预测块的左上坐标(或位置)和右下坐标(或位置)指示的位置被限制为包括在左侧的(n-1)个ctb和当前ctb的在第a块
之前编码/解码的块中。
[0688]
在第(k5-(n-1))个ctb的重构样点中,就ctb中的相对位置而言,可仅删除对应于与第k5个ctb的第一块相同的位置的样点,并且可将第k5个ctb的第一块的重构样点存储在该位置中。在这种情况下,当前块的参考区域可被限制为当前ctb内的在当前块之前编码/解码的块、以及当前ctb的左侧的(n-1)个ctb。该方法在编码效率方面是有利的,因为参考区域缓冲器的每个区域由重构样点组成。
[0689]
在开始对第k5个ctb进行编码/解码时,即,当开始对第k5个ctb的第一个块进行编码/解码时,第(k5-1)、第(k5-2)、...、第(k5-(n-1))个ctb的重构样点可被存储在参考区域缓冲器中。例如,当ctb尺寸是64
×
64时,n可以是4。在这种情况下,第(k5-1)、第(k5-2)和第(k5-3)个ctb的重构样点可被存储在参考区域缓冲器中。第k5个ctb中的块的编码/解码可以应用以下方法之一。
[0690]
第k5个ctb的第a个块(a是等于或大于0的随机整数)的参考区域可被限制为当前ctb的左侧的(n-1)个ctb。这可表示由块矢量推导出的预测块的左上坐标(或位置)和右下坐标(或位置)指示的位置被限制为包括在左侧的(n-1)个ctb中。
[0691]
第k5个ctb的第a个块(a是等于或大于0的随机整数)的参考区域可被限制为在当前ctb中的在当前块之前编码/解码的块的区域、以及在当前ctb的左侧的(n-1)个ctb。这可表示由块矢量推导出的预测块的左上坐标(或位置)和右下坐标(或位置)指示的位置被限制为被包括在左侧的(n-1)个ctb和在当前ctb的第a个块之前编码/解码的块中。
[0692]
在参考区域缓冲器的上述内容中,第k5个ctb的第一个块的编码/解码或用于在该编码/解码之前存储第k5个ctb的编码/解码块的重构样点的对应ctb区域的起始点可以被初始化为随机固定值或是空的。这里,初始值是等于或大于-1
×
2^(bitdepth)且等于或小于2^(bitdepth)-1的随机整数。初始值可以是重构样点的可能范围内的预定值。例如,初始值可以是-1、0、-1
×
2^(bitdepth)、2^(bitdepth-1)或2^(bitdepth)-1。当对应的缓冲器为空时,这可表示块矢量被限制为不指示缓冲器中的空区域。设置初始值可表示块矢量能够指示由初始值设置的区域,并且在这种情况下,初始值可以被设置为预测样点值。在对对应ctb区域内的特定块进行编码/解码之后,可以将重构的样点值存储在参考区域缓冲器内的为空的或被设置为初始值的对应块位置。在参考区缓冲器内的对应ctb区域中,未被编码/解码的区域可以为空或被设置为初始值。
[0693]
作为另一示例,缓冲器的初始值的范围可从-1
×
(2《《bitdepth)到(2《《bitdepth)-1。这里,bitdepth可以是包括0的整数。例如,bitdepth可以是1、2、3、4、5、6、7、8、9、10、11、12等。此外,例如,缓冲器的初始值可以是-1、0、(-1
×
(2《《bitdepth))、(2《《(bitdepth-n-1))及(2《《(bitdepth-n))-1。
[0694]
这里,n可以是包括0的正整数。另外,n可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0695]
bitdepth可以表示输入样点的比特深度。另外,bitdepth可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0696]
n和bitdepth中的至少一个可以在亮度分量块和色度分量(cb和/或cr)块中具有不同的值。
[0697]
n和bitdepth中的至少一个可以根据作为当前块的编码模式的帧内块复制跳过模
式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少一个而具有不同的值。
[0698]
可根据当前块/ctb/ctu的至少一个编码参数来确定n和bitdepth中的至少一个。
[0699]
可根据当前块/ctb/ctu的至少一个编码参数来确定k5。
[0700]
另外,可在分块、并行块、条带、子画面、画面或并行块组的每个ctb或ctu行中新设置参考区域缓冲器。新设置可以表示清空或初始化对应的缓冲器。
[0701]
当ctb水平长度为c1,ctb垂直长度为c2,并且当前ctb和左侧的(n-1)个ctb能够被包括在参考区域缓冲器中时,如果包括在ctb中的块的画面内坐标为(x,y),则当存储在参考区域缓冲器中时块的存储位置可被如下设置。可根据当前块/ctb/ctu的至少一个编码参数来确定n。
[0702]
在图19的(a)的情况下,当包括在第k5个ctb中的块的画面内坐标是(x,y)时,该块可以被存储在位置(x%c1,y%c2)。当包括在第k5个ctb中的块被存储时,如果包括在左侧ctb中的块的画面内坐标是(x1,y1),则参考区域缓冲器内的位置可以如下。包括在第(k5-1)个ctb中的块、包括在第(k5-2)个ctb中的块和包括在第(k5-3)个ctb中的块可以分别被存储在(x1%c1 c1,y1%c2)、(x1%c1 (c1
×
2),y1%c2)和(x1%c1 (c1
×
3),y1%c2)。包括在第(k5-a)个ctb中的块可以被存储在(x1%c1 (c1
×
a),y1%c2)。这里,a可以是满足0≤a≤(n-1)的正整数。
[0703]
在图19的(b)的情况下,当包括在第k5个ctb中的块的画面内坐标是(x,y)时,该块可以被存储在位置(x%c1,y%c2)。当包括在第k5个ctb中的块被存储时,如果包括在左侧ctb中的块的画面内坐标是(x1,y1),则参考区域缓冲器内的位置可以如下。包括在第(k5-1)个ctb中的块、第(k5-2)个ctb中的块和第(k5-3)个ctb中的块可以分别被存储在(x1%c1 (c1
×
3),y1%c2)、(x1%c1 (c1
×
2),y1%c2)和(x1%c1 (c1
×
1),y1%c2)。包括在第(k5-a)个ctb中的块可以被存储在(x1%c1 (c1x(n-a)),y1%c2)处。这里,a可以是0或满足0≤a≤(n-1)的正整数。块可以被存储在位置(x%m1,y%m2)、(x%m1,y%ctb垂直长度)或(x%m1,y)。
[0704]
在类似于图19的(c)或图19的(d)的情况下,当包括在第k5个ctb中的块的画面内坐标是(x,y)时,该块可以被存储在位置(x%c1 (c1
×
(n-1)),y%c2)中。当包括在第k5个ctb中的块被存储时,如果包括在左侧ctb中的块的画面内坐标是(x1,y1),则参考区域缓冲器内的位置可以如下。包括在第(k5-1)个ctb中的块、包括在第(k5-2)个ctb中的块和包括在第(k5-3)个ctb中的块可以分别被存储在(x1%c1 (c1
×
(n-2),y1%c2),(x1%c1 (c1
×
(n-3)),y1%c2),和(x1%c1 (c1
×
(n-4)),y1%c2)。包括在第(k5-a)个ctb中的块可以被存储在(x1%c1 (c1
×
(n-(a 1))),y1%c2)。这里,a可以是0或满足0≤a≤(n-1)的正整数。
[0705]
可以用以下方法之一来表示块矢量。另外,块矢量可用信号传送或被推导以便按照以下方法中之一表示。
[0706]
在当前块的左上位置的画面内坐标是(x,y)并且预测块的左上位置的画面内坐标为(x vpx,y vpy)时,块矢量可被表示为作为这两个坐标之间的差的(vpx,vpy)。另外,可用信号传送能够推导块矢量的信息。
[0707]
在当前块的左上位置的帧内参考区域缓冲器坐标是(x,y)并且预测块的左上位置的帧内参考区域缓冲器坐标是(x vbx,y vby)时,块矢量可被表示为作为这两个坐标之间
的差的(vbx,vby)。另外,可用信号传送能够推导块矢量的信息。
[0708]
这里,当参考区域缓冲器中存在空区域时,编码器/解码器可以限制块矢量的范围,使得预测块不包括该区域。具体地,编码器/解码器可以限制块矢量(vbx,vby),使得预测块的左上坐标(x vbx,y vby)和右下坐标(x vbx cbwidth-1,y vby cbheight-1)都不被包括在参考区域缓冲器的空区域中。当预测块的左上坐标是(x vbx,y vby)时,编码器/解码器可以将块矢量限制为满足0≤x vbx和0≤y vby。当右下坐标为(x vbx cbwidth-1,y vby cbheight-1)时,编码器/解码器可以将块矢量限制为满足x vbx cbwidth-1≤((c1x(n-1))-1)且y vby cbheight-1≤(c2-1)。当甚至能够参考当前ctb中的在当前块之前编码/解码的区域时,编码器/解码器可以将块矢量限制为满足x vbx cbwidth-1《x或y vby cbheight-1《y。
[0709]
可选地,当参考区域被设置为初始值时,块矢量的范围可被限制为预测块被包括在参考区域缓冲器中的范围。换句话说,当预测块的左上坐标是(x vbx,y vby)时,编码器/解码器可以将块矢量限制为满足0≤x vbx和0≤y vby。当右下坐标为(x vbx cbwidth-1,y vby cbheight-1)时,编码器/解码器可以将块矢量限制为满足x vbx cbwidth-1≤((c1
×
n)-1)且y vby cbheight-1≤(c2-1)。
[0710]
在下文中,将根据本发明描述推导色度分量块的块矢量的方法。
[0711]
对于亮度分量的块分区按照与同一ctu中的色度分量的块分区相同的方式被执行的单树类型(single_tree),在当前块是色度分量块并且在帧内块复制模式下被编码/解码时,编码器/解码器可如下推导色度分量块的块矢量。
[0712]
与当前色度分量块对应的亮度分量块可如下确定。
[0713]
在当前色度分量块的左上样点位置是(xc,yc)、水平长度是wc且垂直长度是hc时,与当前色度分量块对应的亮度分量块的左上样点位置、水平长度和垂直长度可以分别是(xc/k1,yc/k2)、k1
×
wc和k2
×
hc。这里,k1和k2可以是根据色度分量格式变化的值。
[0714]
例如,在当前画面的色度分量格式是4:2:0时,k1和k2两者可以是2。
[0715]
作为另一示例,在当前画面的色度分量格式是4:2:2时,k1可以是2,并且k2可以是1。
[0716]
作为另一示例,在当前画面的色度分量格式是4:4:4时,k1和k2两者可以是1。
[0717]
由于色度分量块和亮度分量块具有相同的块分区结构,因此与当前色度分量块对应的亮度分量块可由一个亮度分量块组成。
[0718]
当与色度分量块对应的亮度分量块的块矢量是(mvl[0],mvl[1])时,对应的色度分量块的块矢量可以是(mvl[0]/k1,mvl[1]/k2)。
[0719]
例如,在当前画面的色度分量格式是4:2:0时,k1和k2两者可以是2。
[0720]
作为另一示例,在当前画面的色度分量格式是4:2:2时,k1可以是2,并且k2可以是1。
[0721]
作为另一示例,在当前画面的色度分量格式是4:4:4时,k1和k2两者可以是1。
[0722]
尽管以上描述假设mvl[0]和mvl[1]的基本单位是1个样点,但是基本单位可以是1/16个样点、1/n个样点或n个样点。这里,n可以是正整数。
[0723]
在用于亮度分量的块分区和色度分量的块分区在同一ctu中彼此独立地被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前块是色度分量
块并且在帧内块复制模式下被编码/解码时,可以如下推导色度分量块的块矢量。
[0724]
与当前色度分量块对应的亮度分量区域可如下确定。
[0725]
在当前色度分量块的左上样点位置是(xc,yc)、水平长度是wc且垂直长度是hc时,与当前色度分量块对应的亮度分量区域的左上样点位置、水平长度和垂直长度可以分别是(xc/k1,yc/k2)、k1
×
wc和k2
×
hc。这里,k1和k2可以是根据色度分量格式变化的值。
[0726]
例如,在当前画面的色度分量格式是4:2:0时,k1和k2两者可以是2。
[0727]
作为另一示例,在当前画面的色度分量格式是4:2:2时,k1可以是2,并且k2可以是1。
[0728]
作为另一示例,在当前画面的色度分量格式是4:4:4时,k1和k2两者可以是1。
[0729]
这里,与当前色度分量块对应的亮度分量的区域可仅包括被分区的亮度分量块的一部分。另外,与对应的色度分量块对应的亮度分量区域可被分区成至少一个或更多个亮度分量块。
[0730]
可将当前色度分量块分区成n
×
m子块单元,并且可通过将亮度分量区域分区成(n
×
k1)
×
(m
×
k2)子块单元来获得与子块对应的亮度分量区域的子块。这里,n和m可以是等于或大于1的正整数。
[0731]
色度分量块与亮度分量区域之间的对应关系可如图20的示例中所示。
[0732]
可将当前色度分量块分区成n
×
m子块单元,并且可通过将亮度分量块分区成(n
×
k1)
×
(m
×
k2)子块单元来获得与子块对应的亮度分量区域的子块。这里,n和m可以是等于或大于1的正整数。可选地,在当前色度分量块的水平长度和垂直长度分别是wc和hc时,编码器/解码器可以被分区成水平长度和垂直长度分别被分区成p1和p2的n
×
m子块单元。这里,n可以是wc/p1,m可以是hc/p2,并且p1和p2可以是等于或大于1的整数。
[0733]
可存在与当前色度分量块的子块对应的亮度分量子块。这里,可从对应的亮度分量子块的块矢量推导当前色度分量块的子块的块矢量。
[0734]
当与色度分量块的子块对应的亮度分量子块的块矢量是(mvl[0],mvl[1])时,对应的色度分量块的子块的块矢量可以是(mvl[0]/k1,mvl[1]/k2)。
[0735]
例如,在当前画面的色度分量格式是4:2:0时,k1和k2两者可以是2。
[0736]
作为另一示例,在当前画面的色度分量格式是4:2:2时,k1可以是2,并且k2可以是1。
[0737]
作为另一示例,在当前画面的色度分量格式是4:4:4时,k1和k2两者可以是1。
[0738]
尽管以上描述假设mvl[0]和mvl[1]的基本单位是1个样点,但是基本单位可以是1/16个样点、1/n个样点或n个样点。这里,n可以是正整数。
[0739]
另外,并非位于与当前色度分量块的子块对应的亮度分量子块内的所有样点都可以在相同预测模式下被编码/解码。这是因为亮度分量和色度分量的块分区结构彼此独立。换句话说,与色度分量块的子块对应的亮度分量块可不对应于亮度分量预测块,并且在亮度分量子块内可存在两个或更多个分区出的亮度分量预测块。
[0740]
这里,亮度分量预测块表示在对亮度分量进行编码/解码时被应用相同预测或变换/逆变换的块。可通过进行亮度分量块分区来确定亮度分量预测块。
[0741]
如本文中所提及的,与色度分量块对应的亮度分量区域不仅可表示通过进行亮度分量块分区而确定的预测块(如图20中所示),而且可表示在位置和尺寸上与色度分量块对
应的亮度分量区域。
[0742]
因此,与当前色度分量块的子块对应的亮度分量子块的块矢量可以是以下块矢量中的至少一个。
[0743]
当以下亮度分量预测块在帧内块复制模式下被编码/解码时的所述亮度分量预测块的矢量,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的左上样点。
[0744]
当以下亮度分量预测块在帧内块复制模式下被编码/解码时的所述亮度分量预测块的块矢量,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的中心位置样点。
[0745]
当以下亮度分量预测块在帧内块复制模式下被编码/解码时的所述亮度分量预测块的块矢量,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块(图21)中的图21中所示出的样点位置之一。
[0746]
当以下亮度分量预测块在帧内块复制模式下被编码/解码时的所述亮度分量预测块的块矢量,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块中的样点中的至少一个。
[0747]
当以下亮度分量预测块在帧内块复制模式下被编码/解码时的所述亮度分量预测块的块矢量,其中,所述亮度分量预测块占据与当前色度分量的子块对应的亮度分量子块中的最大区域。
[0748]
可不存在与当前色度分量块的子块对应的亮度分量子块的块矢量。这可以是以下情况之一。
[0749]
在以下亮度分量预测块未在帧内块复制模式下被编码/解码、或者在帧内预测模式下被编码/解码的情况,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的左上样点。
[0750]
在以下的亮度分量预测块未在帧内块复制模式下被编码/解码、或者在帧内预测模式中被编码/解码的情况,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的中心位置样点。
[0751]
在亮度分量预测块未在帧内块复制模式下被编码/解码、或者在帧内预测模式下被编码/解码的情况,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块(图21)中的图21中所示的样点位置之一。
[0752]
在亮度分量预测块未在帧内块复制模式下被编码/解码、或者在帧内预测模式下被编码/解码的情况,其中,所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块中的样点中的至少一个。
[0753]
在以下亮度分量预测块未在帧内块复制模式下被编码/解码、或者在帧内预测模式下被编码/解码的情况,其中,所述亮度分量预测块占据与当前色度分量的子块对应的亮度分量子块中的最大区域。
[0754]
当不存在与当前色度分量块的子块(被称作当前子块)对应的亮度分量子块的块矢量时,编码器/解码器可通过以下方法之一来推导与色度分量块的子块对应的块矢量。
[0755]
编码器/解码器可以将当前子块的块矢量设置为(0,0)或(d1,d2)。这里,d1和d2可以是整数,如0、1、2、3等。
[0756]
编码器/解码器可以将当前子块的块矢量设置为(wc d1,d2)或(d1,hc d2)。这里,wc可以是当前色度分量块的水平长度,并且hc可以是当前色度分量块的垂直长度。d1和d2可以是整数,如0、1、2、3等。
[0757]
编码器/解码器可将当前子块的块矢量设置为(-(wc《《n) a,-(hc《《n) b)、(-(wc《《n) c,0)和(0,-(hc《《n) d)中的一个。这里,n可以是正整数,并且a、b、c和d可以具有整数值。
[0758]
编码器/解码器可以将当前子块的邻近子块(例如,上方子块、下方子块、左侧子块、右侧子块、左上子块、右上子块、左下子块和右下子块中的至少一个)的块矢量用作当前子块的块矢量。
[0759]
编码器/解码器可通过使用当前色度分量块的子块的块矢量的统计值来推导当前子块的块矢量,其中,当前色度分量块的子块的对应的亮度分量子块具有块矢量。
[0760]
例如,统计值可以是对应子块的块矢量的平均值、中值、最大值和最小值中的至少一个。
[0761]
例如,统计值可以是具有最高出现频率的块矢量。
[0762]
当对应的亮度分量子块未在帧内块复制模式下被编码/解码或者存在对应的亮度分量子块不具有块矢量的色度分量块的至少一个子块时,可以不在帧内块复制模式下对色度分量块进行编码/解码。
[0763]
编码器/解码器可如下设置与当前色度分量块的子块对应的亮度分量子块的预测模式。这里,预测模式可以是帧内预测模式、帧间预测模式和帧内块复制模式中的至少一个。更具体地,预测模式可以是以下帧间预测模式中的至少一个:跳过模式、合并模式、amvp模式、仿射跳过模式和仿射帧间模式。另外,预测模式可以是以下帧内块复制模式中的至少一个:帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式。
[0764]
以下亮度分量预测块的预测模式:该亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的左上样点
[0765]
以下亮度分量预测块的预测模式:该亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块的中心位置样点
[0766]
以下亮度分量预测块的预测模式:该亮度分量预测块的包括与当前色度分量块的子块对应的亮度分量子块(图21)中的图21中所示的样点位置之一
[0767]
以下亮度分量预测块的预测模式:所述亮度分量预测块包括与当前色度分量块的子块对应的亮度分量子块中的样点中的至少一个
[0768]
以下亮度分量预测块的预测模式:所述亮度分量预测块占据与当前色度分量块的子块对应的亮度分量子块中的最大区域
[0769]
在用于亮度分量的块分区和色度分量的块分区在同一ctu中彼此独立被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前块是色度分量块时,可以不对当前色度分量块执行帧内块复制模式。换句话说,当用于双树结构(dual_tree_luma或dual_tree_chroma)的树类型被应用并且当前块是色度分量块时,可仅在帧内预测模式和/或帧间预测模式下对当前色度分量块进行编码/解码。
[0770]
在下文中,将描述根据本公开的推导预测块的方法。
[0771]
推导用于对帧内块复制模式进行预测的预测块的步骤可以包括推导亮度分量块的预测块的步骤和推导色度分量块的预测块的步骤中的至少一个。
[0772]
在下文中,将描述根据本公开的推导亮度分量块的预测块的方法。
[0773]
由从当前亮度分量块推导的亮度分量块的块矢量指示的块可被确定为参考块。这里,编码器/解码器可以将参考块确定为当前块的预测块。
[0774]
如在图22的示例中,在当前亮度分量块的左上样点位置为(x0,y0),水平长度为wl,垂直长度为hl,并且推导出的亮度分量的块矢量为(xd,yd)时,预测块可以是左上样点位置为(x0 xd,y0 yd)、水平长度为wl且垂直长度为hl的块,其中,(x0 xd,y0 yd)是在同一画面中从当前亮度分量块的左上样点位置移动了(xd,yd)。在这种情况下,当xd是负整数时,样点位置沿水平左方向从(x0,y0)移动xd。当xd是正整数时,样点位置沿水平右方向从(x0,y0)移动xd。当yd是负整数时,样点位置沿垂直向上方向从(x0,y0)移动yd。当yd是正整数时,样点位置沿垂直向下方向从(x0,y0)移动yd。
[0775]
图22示出了xd和yd都是负整数的示例。
[0776]
参考块的样点值可被设置为当前亮度分量块的预测样点值。这可以被称为当前亮度分量块的预测块。
[0777]
参考块的样点值可以是未应用至少一种环路滤波方法的重构图像样点值。
[0778]
当块矢量是(0,0)时,可将预测块的样点值设置为固定值。作为等于或大于-1
×
2^(bitdepth)且等于或小于2^(bitdepth)-1的随机整数,固定值可以是重构样点的可能范围内的预定值。例如,固定值可以是-1、0、-1
×
2^(bitdepth)、2^(bitdepth-1)或2^(bitdepth)-1。
[0779]
作为另一示例,当预测块的所有样点值被设置为固定值时,固定值的范围可从-1
×
(2《《bitdepth)到(2《《bitdepth)-1,并且bitdepth可以是包括0的整数。例如,bitdepth可以是1、2、3、4、5、6、7、8、9、10、11、12等。此外,例如,预测块的所有样点值可以是-1、0、(-1
×
(2《《bitdepth))、(2《《bitdepth-n-1))和(2《《bitdepth-n))-1。
[0780]
这里,n可以是包括0的正整数。另外,n可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0781]
bitdepth可以表示输入样点的比特深度。另外,bitdepth可以是已经在编码器/解码器中设置的值,或者从编码器用信号传送给解码器的值。
[0782]
n和bitdepth中的至少一个可以在亮度分量块和色度分量(cb和/或cr)块中具有不同的值。
[0783]
n和bitdepth中的至少一个可以根据作为当前块的编码模式的帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少一个而具有不同的值。
[0784]
可根据当前块/ctu/ctb的至少一个编码参数来确定n和bitdepth中的至少一个。
[0785]
可以限制块矢量的值,使得参考块位于限制的区域中。当块矢量不具有限制的范围的值时,编码器/解码器可以针对具有块矢量的块的预测块将预测块样点值设置为固定值。固定值可被设置为与在块矢量为(0,0)时设置的固定值相同。
[0786]
当通过应用参考区域缓冲器来执行编码/解码时,参考区域缓冲器内的由当前块位置处的块矢量指示的区域可以被称为参考块。在这种情况下,参考块可被包括在参考区
域缓冲器中。
[0787]
在当前块中的样点的帧内画面坐标为(x,y)并且块矢量为(vx,vy)时,位于参考区域缓冲器内的参考块中的对应参考样点的位置可以是((x vx)%m1,(y vy)%m2)或((x vx)%m1,(y vy))。
[0788]
在下文中,将描述根据本发明的推导色度分量块的预测块的方法。
[0789]
在亮度分量的块分区和色度分量的块分区在同一个ctu内按照相同方式被执行的单树结构(single_tree)的情况下,在当前块是色度分量块并且在帧内块复制模式下被编码/解码时,可以如下推导色度分量块的预测块。
[0790]
预测块可以是这样的块:该块是远离当前色度分量块的推导出的色度分量块的块矢量。
[0791]
例如,在当前色度分量块的左上样点位置是(x0,y0)、水平长度是wc、垂直长度是hc并且推导出的色度分量的块矢量是(xd,yd)时,预测块可以是左上样点位置为(x0 xd,y0 yd)、水平长度为wc并且垂直长度为hc的块,其中,(x0 xd,y0 yd)是从同一画面中的当前色度分量块的左上样点位置移动了(xd,yd)。当xd是正整数时,它可表示沿水平向右方向从x0移动xd。当xd是负整数时,它可表示沿水平向左方向从x0移动xd。当yd是正整数时,它可表示沿垂直向下方向从y0移动yd。当yd是负整数时,它可表示沿垂直向上方向从y0移动yd。
[0792]
预测块的样点值可以被设置为当前色度分量块的预测样点值。这可被称作当前色度分量块的预测块。
[0793]
在用于亮度分量的块分区和色度分量的块分区在同一ctu中彼此独立地被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前块是色度分量块并且在帧内块复制模式下被编码/解码时,可以如下推导色度分量块的预测块。
[0794]
编码器/解码器可通过使用在当前色度分量块的子块单元中推导的块矢量来推导子块单元中的子块预测块。
[0795]
预测子块可以是由从当前色度分量块的子块推导的对应色度分量块的子块的块矢量所指示的块。
[0796]
例如,在当前色度分量块的子块的左上样点位置为(sx0,sy0),水平长度为swc,垂直长度为shc,并且推导出的色度分量的块矢量为(sxd,syd)时,预测子块可以是左上样点位置为(sx0 sxd,sy0 syd)、水平长度为swc和垂直长度为shc的块,其中,(sx0 sxd,sy0 syd)是从同一画面中的当前色度分量块的子块的左上样点位置移动了(sxd,syd)。
[0797]
对应的色度分量块的子块的预测块可以是子块预测块。
[0798]
预测子块的样点值可被设置为当前色度分量块的子块的预测样点值。这可被称作当前色度分量块的子块的预测块。
[0799]
编码器/解码器可通过使用包括在当前色度分量块中的所有子块的子块预测块来配置当前色度分量块的预测块。
[0800]
在下文中,将描述根据本公开的推导残差块的方法。
[0801]
通常,当存在残差块时,可以通过在编码过程中执行变换和量化中的至少一个来对残差块进行熵编码。在解码过程中,可以对残差块进行熵解码,并且可以通过执行反量化和逆变换中的至少一个来推导重构的残差块。这里,重构的残差块可以表示残差块。
[0802]
指示是否存在与被熵编码/解码的残差块相关的信息(例如,量化变换系数、量化
等级、变换系数等)的标识符信息可以是以下信息中的至少一个。
[0803]
cu_cbf:当亮度分量和色度分量具有相同的块分区结构时,可以表示关于亮度分量块的残差块中是否存在量化变换系数并且色度分量块的残差块中是否存在量化变换系数的信息。
[0804]
当亮度分量和色度分量具有独立的块分区结构时,cu_cbf可以表示关于亮度分量块的残差块中是否存在量化变换系数的信息或关于色度分量块的残差块中是否存在量化变换系数的信息。当关于残差块中是否存在量化的变换系数的信息具有第一值1时,这可表示存在对应块的残差块的量化变换系数。当信息具有第二值0时,这可表示不存在对应块的残差块的量化变换系数。
[0805]
当亮度分量和色度分量具有相同的块分区结构并且在亮度分量块和色度分量(cb和cr)块中的至少一个中存在残差块的量化变换系数时,cu_cbf可以具有第一值。另一方面,当在所有分量的残差块中不存在残差信号量化变换系数时,cu_cbf可以具有第二值。
[0806]
tu_cbf_luma:可以表示亮度分量块的残差块中是否存在量化变换系数。
[0807]
当关于亮度分量块的残差块中是否存在量化变换系数的信息具有第一值1时,这可表示存在亮度分量块的残差块的量化变换系数。
[0808]
当关于亮度分量块的残差块中是否存在量化变换系数的信息具有第二值0时,这可表示亮度分量块的残差块不存在量化变换系数。
[0809]
tu_cbf_cr、tu_cbf_cb:可以分别表示在色度分量cr和cb的残差块中是否存在量化变换系数。
[0810]
当关于色度分量(cr或cb)块的残差块中是否存在量化变换系数的信息具有第一值1时,这可表示存在色度分量(cr或cb)块的残差块的量化变换系数。
[0811]
当关于色度分量(cr或cb)块的残差块中是否存在量化变换系数的信息具有第二值0时,这可表示不存在色度分量(cr或cb)块的残差块的量化变换系数。
[0812]
在本文描述的前述和/或其他实施例中,量化变换系数可以表示量化等级和变换系数中的至少一个。另外,量化变换系数可表示具有除0以外的值的量化变换系数。量化变换系数可以包括在残差块中。
[0813]
仅当cu_cbf是第一值1时,可以另外用信号传送tu_cbf_luma、tu_cbf_cr和tu_cbf_cb中的至少一个。这些语法元素可分别指示量化变换系数是否存在于亮度分量、色度分量cr和色度分量cb的残差块中。
[0814]
当亮度分量和色度分量具有独立的块分区结构时,cu_cbf可以具有与tu_cbf_luma相同的信息。
[0815]
在亮度分量的块分区和色度分量的块分区在待编码的当前ctu内按照相同方式被执行的单树类型(single_tree)的情况下,在当前亮度分量块是帧内块复制跳过模式时,编码器/解码器可以如下推导当前亮度分量块和色度分量块的残差块。
[0816]
在当前亮度分量块是帧内块复制跳过模式时,与在帧间预测的跳过模式下类似,可不存在残差块。在这种情况下,编码器/解码器可以将每个残差块设置为具有值0。
[0817]
在本文描述的前述和/或其他实施例中,当残差块被设置为具有值0时,这可表示残差块中的每个量化变换系数被设置为值0。
[0818]
当对应亮度分量块是帧内块复制跳过模式时,与亮度分量块类似,在当前色度分
量块中可不存在残差块。在这种情况下,编码器/解码器可以将每个残差块设置为具有值0。
[0819]
在帧内块复制跳过模式的情况下,编码器/解码器可以不用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引、cu_cbf、tu_cbf_luma、tu_cbf_cr、tu_cbf_cb等)。
[0820]
例如,编码器/解码器可以不用信号传送指示在亮度分量、色度分量cr和色度分量cb的所有残差块中是否存在量化变换系数的cu_cbf值,而是将cu_cbf设置为第二值,该第二值指示在编码/解码过程中在亮度分量、色度分量cr和色度分量cb的任何残差块中不存在量化变换系数。另外,编码器/解码器可以不用信号传送指示亮度分量的残差块中是否存在量化变换系数的tu_cbf_luma、指示色度分量cr的残差块中是否存在量化变换系数的tu_cbf_cr以及指示色度分量cb的残差块中是否存在量化变换系数的tu_cbf_cb。相反,编码器/解码器可以在编码/解码过程中将每个值设置为第二值,从而指示在每个残差块中不存在量化变换系数。
[0821]
在亮度分量的块分区和色度分量的块分区在待编码的当前ctu内按照相同方式被执行的单树类型(single_tree)的情况下,在当前亮度分量块是帧内块复制合并模式时,可以如下推导当前亮度分量块和色度分量块的残差块。
[0822]
在当前亮度分量块是帧内块复制合并模式时,可存在残差块。在这种情况下,可在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来推导残差块。
[0823]
当对应亮度分量块是帧内块复制合并模式时,与亮度分量块类似,当前色度分量块中可存在残差块。在这种情况下,可在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来推导残差块。
[0824]
在帧内块复制合并模式的情况下,编码器可以不用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf)。由于合并模式中存在残差块,因此可以在编码/解码过程中将指示亮度分量、色度分量cr和色度分量cb的残差块中是否存在至少一个量化变换系数的cu_cbf设置为第一值。在这种情况下,编码器可以不用信号传送指示是否存在残差块的信息,而是用信号传送包括残差块的量化变换系数的信息。
[0825]
然而,在帧内块复制合并模式的情况下,在亮度分量、色度分量cr和色度分量cb中可能存在不存在残差块的量化变换系数的分量,编码器可以用信号传送指示每个分量的残差块中是否存在量化变换系数的标识符(例如,用于亮度分量的tu_cbf_luma、以及用于色度分量的tu_cbf_cr和tu_cbf_cb)。
[0826]
在亮度分量的块分区和色度分量的块分区在待编码的当前ctu内按照相同方式被执行的单树类型(single_tree)的情况下,在当前亮度分量块是帧内块复制amvp模式时,编码器/解码器可如下推导当前亮度分量块和色度分量块的残差块。
[0827]
在当前亮度分量块是帧内块复制amvp模式时,可存在或不存在残差块。在这种情况下,可以用信号传送标识是否存在残差块的信息。当存在残差块时,可以在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。此外,在解码过程中,可以通过反量化和/或逆变换来推导残差块。当不存在残差块时,可以设置每个残差块具有值0。
[0828]
当对应的亮度分量块是帧内块复制amvp模式时,与亮度分量块类似,在当前色度分量块中可存在或不存在残差块。当存在残差块时,可以在执行变换和/或量化的编码过程
中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来推导残差块。当不存在残差块时,可以设置每个残差块具有值0。
[0829]
在帧内块复制amvp模式的情况下,由于亮度分量、色度分量cr和色度分量cb的残差块中可存在或可不存在量化变换系数,因此可以用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf),其中,该信息指示在亮度分量、色度分量cr和色度分量cb的残差块中是否存在量化变换系数。
[0830]
另外,当标识是否存在的残差块的信息(例如,标识符、标志、索引或cu_cbf)(指示在亮度分量、色度分量cr和色度分量cb的残差块中是否存在量化变换系数)具有指示存在残差块的第一值时,由于在亮度分量、色度分量cr和色度分量cb中的一个中不存在量化变换系数,因此可以用信号传送用于指示每个分量的残差块中是否存在量化变换系数的标识符(例如,用于亮度分量的tu_cbf_luma、以及用于色度分量的tu_cbf_cr和tu_cbf_cb)。
[0831]
在用于亮度分量的块分区和色度分量的块分区在待编码的当前ctu中彼此独立被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前亮度分量块是帧内块复制跳过模式时,与在帧间预测的跳过模式中类似,可能不存在当前亮度分量块的残差块。在这种情况下,可以设置所有残差块具有值0,并且可以不用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引、cu_cbf、tu_cbf_luma等)。
[0832]
当亮度分量块是帧内块复制跳过模式时,针对独立划分结构中的亮度分量块用信号传送的cu_cbf可以指示亮度分量块的残差块中是否存在量化变换系数。在这种情况下,由于亮度分量块的残差块中不存在量化变换系数,因此在编码/解码过程中可以不用信号传送该信息并将该信息设置为0,即,第二值。
[0833]
另外,在编码/解码过程中,可以不用信号传送指示是否存在亮度分量的残差块的标识信息(例如,tu_cbf_luma),并且可以将tu_cbf_luma设置为0,即,第二值。
[0834]
在用于亮度分量的块分区和色度分量的块分区在待编码的当前ctu中彼此独立被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前亮度分量块是帧内块复制合并模式时,与在帧间预测的合并模式中类似,可存在当前亮度分量块的残差块。在这种情况下,可以在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来推导残差块。
[0835]
当亮度分量块是帧内块复制合并模式时,针对独立划分结构中的亮度分量块用信号传送的cu_cbf可以仅指示在亮度分量块的残差块中是否存在量化变换系数。在这种情况下,由于在亮度分量块的残差块中存在量化变换系数,因此在编码/解码过程中可以不用信号传送该信息并将该信息设置为1,即,第一值。
[0836]
另外,由于指示是否存在亮度分量的残差块的标识信息(例如,tu_cbf_luma)具有与针对独立划分结构中的亮度分量块用信号传送的cu_cbf相同的值,因此在编码/解码过程中可以不用信号传送该信息,并且将该信息设置为第一值1。
[0837]
在用于亮度分量的块分区和色度分量的块分区在待编码的当前ctu中彼此独立被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前亮度分量块是帧内块复制amvp模式时,与在帧间预测的amvp模式中类似,可存在或可不存在当前亮度分量块的残差块。当存在当前亮度分量块的残差块时,可以在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆
变换来推导残差块。当不存在残差块时,可以设置每个残差块具有值0。
[0838]
当亮度分量块是帧内块复制amvp模式时,针对独立划分结构中的亮度分量块用信号传送的cu_cbf可以仅指示亮度分量块的残差块中是否存在量化变换系数。在这种情况下,由于在亮度分量块的残差块中可存在或可不存在量化变换系数,因此可以用信号传送作为标识是否存在残差块的信息的cu_cbf。
[0839]
另外,由于指示是否存在亮度分量的残差块的标识信息(例如,tu_cbf_luma)具有与针对独立划分结构中的亮度分量块用信号传送的cu_cbf相同的值,因此在编码/解码过程中可以不用信号传送该信息,并且将该信息设置为与cu_cbf相同的值。
[0840]
根据cu_cbf或tu_cbf_luma的值,可以设置是否存在残差块。例如,如果cu_cbf或tu_cbf_luma具有第一值,则可以将残差块设置为存在。
[0841]
在用于亮度分量的块分区和色度分量的块分区在同一ctu中彼此独立被执行的双树结构(dual_tree_luma或dual_tree_chroma)的树类型的情况下,在当前块是色度分量块并且在帧内块复制模式下被编码/解码时,可以如下推导色度分量块的残差块。
[0842]
可存在以下情况:在与当前色度分量块对应的亮度分量块中包括的所有子块具有同一帧内块复制模式。
[0843]
另外,帧内块复制跳过模式可以是帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式。
[0844]
例如,每个帧内块复制模式是帧内块复制跳过模式(如图23所示)、帧内块复制合并模式或帧内块复制amvp模式。
[0845]
当在与当前色度分量块对应的亮度分量块中包括的所有子块是同一帧内块复制模式时,可基于对应的亮度分量块的帧内块复制模式来确定是否对色度分量块的残差块进行编码/解码。
[0846]
当包括在对应的亮度分量块中的所有子块都是帧内块复制跳过模式时,与亮度分量块是帧内块复制跳过模式的情况类似,可不对色度分量块的残差块进行编码/解码,并且可不用信号传送关于残差块的信息。在这种情况下,可以设置每个残差块具有值0。
[0847]
这里,可以不用信号传送标识是否存在对应块的残差块的信息(例如,标识符、标志、cu_cbf或tu_cbf_cr/tu_cbf_cb)。当标识是否存在残差块的信息具有第一值时,其可以指示存在残差块。当该信息具有第二值时,其可以指示不存在残差块。当对应的色度分量块是帧内块复制跳过模式时,可以在编码/解码过程中将标识是否存在块的残差块的信息设置为第二值。
[0848]
当包括在对应亮度分量块中的所有子块都是帧内块复制合并模式时,类似于亮度分量块是帧内块复制合并模式的情况,可能存在色度分量块的残差块。在这种情况下,可以在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来导出残差块。
[0849]
针对独立划分结构中的色度分量块用信号传送的标识是否存在残差块的信息(例如,标识符、标志、cu_cbf等)可以指示在色度分量cb和色度分量cr中的至少一个中是否存在残差块的量化变换系数。
[0850]
在帧内块复制合并模式的情况下,可以不用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf)。由于在合并模式中存在残差块,因此可以在编码/解
码过程中将指示色度分量cr和色度分量cb的残差块中是否存在至少一个量化变换系数的cu_cbf设置为第一值。
[0851]
然而,在帧内块复制合并模式的情况下,由于残差块的量化变换系数可不存在于色度分量cr和色度分量cb之一中,因此可以用信号传送指示量化变换系数是否存在于每个分量的残差块中的标识符(例如,tu_cbf_cr和tu_cbf_cb)。
[0852]
当包括在对应的亮度分量块中的所有子块是帧内块复制amvp模式时,类似于亮度分量块是帧内块复制amvp模式的情况,残差块可存在于色度分量块中或者可不存在于色度分量块中。在这种情况下,可以用信号传送标识是否存在残差块的信息。当存在残差块时,可以在执行变换和/或量化的编码过程中用信号传送包括量化变换系数的残差块。在解码过程中,可以通过反量化和/或逆变换来推导残差块。当不存在残差块时,可以设置每个残差块具有值0。
[0853]
针对独立划分结构中的色度分量块用信号传送的标识是否存在残差块的信息(例如,标识符、标志、cu_cbf等)可以指示在色度分量cb和色度分量cr中的至少一个中是否存在残差块的量化变换系数。
[0854]
在帧内块复制amvp模式的情况下,由于在色度分量cr和色度分量cb的残差块中可存在量化变换系数或可不存在量化变换系数,因此可以用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf),该信息指示在色度分量cr和色度分量cb的残差块中是否存在量化变换系数。
[0855]
另外,当指示在色度分量cr和色度分量cb的残差块中是否存在量化变换系数的标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf)具有指示存在残差块的第一值时,由于在色度分量cr和色度分量cb之一的残差块中可不存在量化变换系数,因此,可以用信号传送用于指示量化变换系数是否存在于每个分量的残差块中的标识符(例如,用于色度分量的tu_cbf_cr和tu_cbf_cb)。当指示在色度分量cr的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cr分量的残差块中的量化变换系数的信息。当指示在色度分量cb的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cb分量的残差块中的量化变换系数的信息。
[0856]
即使当包括在对应的亮度分量块中的所有子块是相同的帧内块复制模式(例如,帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式、帧内块复制amvr模式等)时,并非对应的亮度分量块中包括的所有样点都可以是相同的帧内块复制模式。因此,依据与色度分量块对应的亮度分量块的模式,对残差块进行编码/解码可能并不高效。
[0857]
因此,当色度分量块是帧内块复制模式时,不管对应的亮度分量块中包括的子块的模式类型如何,可以用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf),该信息指示色度分量cr和cb的残差块中是否存在量化变换系数。
[0858]
另外,当指示在色度分量cr和色度分量cb的残差块中是否存在量化变换系数的标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf)具有指示存在残差块的第一值时,由于在色度分量cr和色度分量cb之一的残差块中可不存在量化变换系数,因此,可以用信号传送用于指示量化变换系数是否存在于每个分量的残差块中的标识符(例如,用于色度分量的tu_cbf_cr和tu_cbf_cb)。当指示在色度分量cr的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cr分量的残差块中的量化
变换系数的信息。当指示在色度分量cb的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cb分量的残差块中的量化变换系数的信息,并且可以通过在解码过程中执行反量化和/或逆变换来推导残差块。当识别出不存在色度分量块的残差块时,可不用信号传送关于色度分量块的残差块中的量化变换系数的信息,并且可设置每个残差块具有值0。
[0859]
在当前色度分量块是帧内块复制模式或者在与当前色度分量块对应的亮度分量块中包括的所有子块是帧内块复制模式时,与色度分量块对应的亮度分量子块可以具有不同的帧内块复制模式(例如,帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式)。例如,如图24中所示,帧内块复制跳过模式、帧内块复制合并模式、帧内块复制amvp模式和帧内块复制amvr模式中的至少两个或更多个模式可存在于对应的亮度分量块中。
[0860]
在这种情况下,不管对应的亮度分量块中包括的子块的模式类型如何,可以用信号传送标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf),该信息指示色度分量cr和cb的残差块中是否存在量化变换系数。
[0861]
另外,当指示在色度分量cr和色度分量cb的残差块中是否存在量化变换系数的标识是否存在残差块的信息(例如,标识符、标志、索引或cu_cbf)具有指示存在残差块的第一值时,由于在色度分量cr和色度分量cb中之一中不存在量化变换系数,因此可以用信号传送用于指示在每个分量的残差块中是否存在量化变换系数的标识符(例如,用于色度分量的tu_cbf_cr和tu_cbf_cb)。当指示在色度分量cr的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cr分量的残差块中的量化变换系数的信息。当指示在色度分量cb的残差块中存在量化变换系数的标识符(例如,tu_cbf_cr)具有第一值时,可以用信号传送关于cb分量的残差块中的量化变换系数的信息,并且可以通过在解码过程中执行反量化和/或逆变换来推导残差块。当识别出不存在色度分量块的残差块时,可不用信号传送关于色度分量块的残差块中的量化变换系数的信息,并且可设置每个残差块具有值0。
[0862]
在下文中,将描述根据本公开的配置重构块的方法。
[0863]
可通过将亮度分量块的残差块与亮度分量块的预测块相加来确定当前重构亮度分量块。
[0864]
当不存在残差亮度分量块时,可将预测亮度分量块设置为重构亮度分量块。
[0865]
当前色度分量(cb或cr)块可通过将色度分量(cb或cr)块的残差块与色度分量(cb或cr)块的预测块相加来配置重构色度分量(cb或cr)块。
[0866]
当不存在残差色度分量(cb或cr)块时,可将预测色度分量(cb或cr)块设置为重构色度分量(cb或cr)块。
[0867]
在下文中将描述根据本公开的对与帧内块复制相关的块编码信息进行熵编码/解码的方法。
[0868]
与帧内块复制相关的编码信息可以被熵编码到比特流中或者从比特流被熵解码。这里,与帧内块复制相关的编码信息可以包括以下多条信息中的至少一条。
[0869]-cu_skip_flag,指示是否使用跳过模式。
[0870]-merge_flag,指示是否使用合并模式。
[0871]-merge_idx(merge_index),指示合并候选。
[0872]-pred_mode_flag,指示预测模式是否是帧内预测模式。
[0873]-pred_mode_ibc_flag,指示预测模式是帧间预测模式还是帧内块复制模式。
[0874]-块矢量候选索引(mvp_l0_flag)
[0875]-块矢量差(运动矢量差)
[0876]-示出残差块中是否存在量化变换系数的cu_cbf、tu_cbf_luma、tu_cbf_cb和tu_cbf_cr。
[0877]
cu_skip_flag可以表示关于是否使用跳过模式的信息,并且可以在编码块和预测块中的至少一个或更多个单元中被熵编码/解码。例如,当关于是否使用跳过模式的信息具有第一值(1)时,可以指示使用跳过模式。当关于是否使用跳过模式的信息具有第二值(0)时,可以不指示使用跳过模式。这里,cu_skip_flag可以指示帧内块复制跳过模式的使用。
[0878]
merge_flag可以表示关于是否使用合并模式的信息,并且可以在编码块和预测块中的至少一个或更多个单元中被熵编码/解码。例如,当关于是否使用合并模式的信息具有第一值(1)时,可以指示使用合并模式。当关于是否使用合并模式的信息具有第二值(0)时,可不指示使用合并模式。这里,merge_flag可以指示帧内块复制合并模式的使用。
[0879]
merge_idx可以表示指示合并候选列表内的合并候选的信息,并且可以在编码块和预测块中的至少一个或更多个单元中被熵编码/解码。另外,merge_idx可以表示合并索引信息。另外,merge_idx可以指示在空间上与当前块相邻的重构块中的从中推导合并候选的块。另外,merge_idx可指示合并候选的至少一条运动信息。例如,当合并索引信息具有第一值(0)时,其可指示合并候选列表内的第一合并候选。当合并索引信息具有第二值(1)时,其可指示合并候选列表内的第二合并候选。当合并索引信息具有第三值(2)时,其可指示合并候选列表内的第三合并候选。同样地,当合并索引信息具有第四值或第n值时,其可指示根据合并候选列表中的顺序具有对应值的合并候选。这里,n可以是包括0的正整数。这里,当使用帧内块复制合并模式时,merge_idx可以指示合并索引。换句话说,合并候选列表可表示块矢量候选列表,并且合并候选可表示块矢量候选。
[0880]
pred_mode_flag可以表示关于是否应用帧内预测模式的信息,并且可以在以下单元中的至少一个中被熵编码/解码:编码块、预测块和编码单元。例如,当关于是否应用帧内预测模式的信息具有第一值(1)时,其可以指示应用帧内预测模式。当该信息具有第二值(0)时,其可指示不应用帧内预测模式。
[0881]
pred_mode_ibc_flag可以表示关于是否应用帧内块复制模式的信息,并且可以在以下单元中的至少一个中被熵编码/解码:编码块、预测块和编码单元。例如,当关于是否应用帧内块复制模式的信息具有第一值(1)时,其可以指示应用帧内块复制模式。当该信息具有第二值(0)时,其可指示应用帧间预测模式。
[0882]
块矢量候选索引(mvp_l0_flag)可指示在帧内块复制amvp模式的预测块矢量候选列表中的由当前块所使用的预测块矢量。为此,可以对块矢量候选索引进行熵编码/解码。可通过使用块矢量候选索引和预测块矢量候选列表来推导当前块的预测块。这里,块矢量候选索引可表示l0块矢量预测标志。
[0883]
块矢量差(运动矢量差)可表示帧内块复制amvp模式中的块矢量与预测块矢量之间的差。可针对当前块对块矢量差进行熵编码/解码。编码器/解码器可以通过使用块矢量
差来推导当前块的预测块。
[0884]
在指示残差块中是否存在量化变换系数的cu_cbf、tu_cbf_luma、tu_cbf_cb和tu_cbf_cr之中,当亮度分量和色度分量具有相同的块分区结构时,cu_cbf可以表示关于是否存在亮度分量块的量化变换系数和色度分量块的量化变换系数的信息。当亮度分量和色度分量具有独立的块分区结构时,cu_cbf可以表示关于是否存在亮度分量块或色度分量块的量化变换系数的信息。当关于是否存在量化变换系数的信息具有第一值(1)时,其可以表示存在对应块的量化变换系数。当该信息具有第二值(0)时,其可以表示不存在对应块的量化变换系数。tu_cbf_luma可以表示是否存在亮度分量块的量化变换系数,并且tu_cbf_cr和tu_cbf_cb可以分别表示是否存在色度分量cr和cb的量化变换系数。当关于是否存在亮度分量块的量化变换系数的信息具有第一值(1)时,其可以表示存在亮度分量块的量化变换系数。当该信息具有第二值(0)时,其可表示不存在亮度分量块的量化变换系数。当关于是否存在色度分量(cb,cr)块的量化变换系数的信息具有第一值(1)时,其可表示存在色度分量块的量化变换系数。当该信息具有第二值(0)时,其可表示不存在色度分量块的量化变换系数。
[0885]
编码器/解码器可以将与帧内块复制相关的至少一条信息熵编码在参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个中/对参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个中的与帧内块复制相关的至少一条信息进行熵解码。
[0886]
这里,参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb中的至少一个可以是以下中的至少一个:视频参数集、解码参数集、序列参数集、自适应参数集、画面参数集、画面头、子画面头、条带头、并行块组报头、并行块头、分块、编码树单元(ctu)、编码单元(cu)、预测单元(pu)、变换单元(tu)、预测块(pb)和变换块(tb)。
[0887]
这里,在包括参数集、报头、分块、ctu、cu、pu、tu、cb、pb和tb的用信号传送的单元中的至少一个中,编码器/解码器可通过使用与帧内块复制相关的编码信息和帧内块复制模式来执行预测。
[0888]
例如,当在sps中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在序列单元中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0889]
作为另一示例,当在条带头中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在条带单元中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0890]
作为另一示例,当在自适应参数集中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在参考相同参数集的单元中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0891]
作为另一示例,当在cu中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同cu中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0892]
作为另一示例,当在cb中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同cb中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0893]
作为另一示例,当在pu中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同pu中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0894]
作为另一示例,当在pb中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同pb中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0895]
作为另一示例,当在tu中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同tu中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0896]
作为另一示例,当在tb中对与帧内块复制相关的至少一条编码信息进行熵编码/解码时,编码器/解码器通过使用帧内块复制模式以及在相同tb中具有相同语法元素值的与帧内块复制相关的至少一条编码信息来执行预测。
[0897]
可根据当前块/ctb/ctu的至少一个编码参数来推导与帧内块复制相关的上述多条编码信息中的至少一条。
[0898]
当与帧内块复制相关的上述多条编码信息中的至少一条编码信息不存在于比特流中时,可将与帧内块复制相关的上述多条编码信息中的至少一条编码信息推断为第一值(例如,0)。
[0899]
自适应参数集可表示能够通过在不同画面、子画面、条带、并行块组、并行块或分块中被参考而被共享的参数集。另外,可通过参考画面内的子画面、条带、并行块组、并行块或分块中的不同自适应参数集来使用自适应参数集中的信息。
[0900]
可以通过使用画面内的子画面、条带、并行块组、并行块或分块中的不同自适应参数集的标识符来参考不同的自适应参数集。
[0901]
另外,自适应参数集可以通过使用子画面内的条带、并行块组、并行块或分块中的不同自适应参数集的标识符来参考不同的自适应参数集。
[0902]
另外,自适应参数集可以通过使用条带内的并行块或分块中的不同自适应参数集的标识符来参考不同的自适应参数集。
[0903]
另外,自适应参数集可以通过使用并行块内的分块中的不同自适应参数集的标识符来参考不同的自适应参数集。
[0904]
通过将关于自适应参数集标识符的信息包括在子画面的参数集或报头中,可以在子画面中使用与自适应参数集标识符对应的自适应参数集。
[0905]
通过将关于自适应参数集标识符的信息包括在并行块的参数集或报头中,可以在并行块中使用与自适应参数集标识符对应的自适应参数集。
[0906]
通过在分块的报头中包括关于自适应参数集标识符的信息,可以在分块中使用与自适应参数集标识符对应的自适应参数集。
[0907]
可将画面分区为一个或更多个并行块以及一个或更多个并行块列。
[0908]
可将子画面分区为画面内的一个或更多个并行块行以及一个或更多个并行块列。子画面可以是画面内具有矩形/正方形形式的区域,并且可包括一个或更多个ctu。另外,至少一个或更多个并行块/分块/条带可包括在单个子画面中。
[0909]
并行块可以是画面内具有矩形/正方形形式的区域,并且可包括一个或更多个
ctu。另外,并行块可以被分区成一个或更多个分块。
[0910]
分块可以表示并行块内的一个或更多个ctu行。并行块可以被分区成一个或更多个分块,并且每个分块可以具有至少一个或更多个ctu行。未被分区成两个或更多个的并行块可以表示分块。
[0911]
条带可包括画面内的一个或更多个并行块,并且可包括并行块内的一个或更多个分块。
[0912]
图25a至图28示出了相对于块分区结构用信号传送的编码信息。
[0913]
具体地,图26至图28示出了在亮度分量块使用帧内块复制模式进行预测的独立块分区结构中去除重复用信号传送指示相同信息的cu_cbf和tu_cbf_luma的方法。
[0914]
如图26所示,在亮度分量块具有独立块分区结构(即,树类型为dual_tree_luma)的情况下,仅当预测模式为帧内预测模式(即,cupredmode[x0][y0]==mode_intra)时,才可以用信号传送tu_cbf_luma。当具有独立分区结构的亮度分量块是帧内块复制模式时,可以不用信号传送tu_cbf_luma。
[0915]
如图27所示,在亮度分量块具有独立块分区结构(即,树类型为dual_tree_luma)的情况下,仅当预测模式不是帧内预测模式(即,cupredmode[x0][y0]==mode_intra)时,才可以用信号传送tu_cbf_luma。当具有独立分区结构的亮度分量块是帧内块复制模式时,可以不用信号传送tu_cbf_luma。
[0916]
如图28所示,在具有独立块分区结构的亮度分量块的情况(其中tu_cbf_luma基于tu_cbf_cb和tu_cbf_cr被用信号传送)下,当预测模式是帧内块复制模式时,可以不用信号传送tu_cbf_luma。在亮度分量块具有独立块分区结构(即,树类型是dual_tree_luma)的情况下,可以不用信号传送tu_cbf_cb和tu_cbf_cr。当不用信号传送tu_cbf_luma时,可以在编码/解码过程中将tu_cbf_cb和tu_cbf_cr设置为0。在这种情况下,根据图28的实施例,当tu_cbf_cb和tu_cbf_cr都为0时,可以不用信号传送tu_cbf_luma。这里,不用信号传送的tu_cbf_luma的值可以被设置为cu_cbf值。
[0917]
如图26至图28所示,在独立块分区结构的情况下,当亮度分量块使用帧内块复制模式进行预测时,可以不用信号传送tu_cbf_luma,并且可以将tu_cbf_luma的值设置为cu_cbf值。
[0918]
在图26至图28中,intrasubpartitionssplittype指示当应用帧内预测时对应块是否通过被划分为子块来预测。当亮度分量块应用使用帧内块复制模式的预测时,不通过将该块划分成子块来编码该块。在这种情况下,intrasubpartitionssplittype可以对应于isp_no_split。另外,cu_sbt_flag指示是否在帧间预测中执行子块单元中的变换。由于它不适用于使用帧内块复制模式的预测,因此cu_sbt_flag在帧内块复制模式中可以具有值0。
[0919]
根据作为用于对色度信号(cb分量和cr分量)的残差信号进行聚合的编码/解码方法的指示符的tu_joint_cbcr_residual,tu_cbf_cb和tu_cbf_cr中的至少一个可以不在tu_joint_cbcr_residual与第二值(例如,1)对应的块(tb,tc)中被熵编码/解码。另外,tu_cbf_cb和tu_cbf_cr中的至少一个可以在tu_joint_cbcr_residual与第一值(例如,0)对应的块(tb,tu)中被熵编码/解码。
[0920]
例如,当特定分量的残差信号由于tu_joint_cbcr_residual而不存在于比特流中
时,可以不在该分量的块(tb,tu)中对该分量的tu_cbf_cb或tu_cbf_cr进行熵编码/解码。
[0921]
这里,tu_joint_cbcr_residual可以表示cb分量的残差信号是否用于推导cb分量和cr分量的残差信号。
[0922]
例如,当tu_joint_cbcr_residual是第一值(例如,0)时,它可指示cr分量的残差信号根据另一语法元素值而存在于比特流中。当tu_joint_cbcr_residual是第二值(例如,1)时,它可指示cb分量的残差信号用于推导cb分量和cr分量的残差信号。
[0923]
当tu_joint_cbcr_residual表示cb分量的残差信号是否用于推导cb分量和cr分量的残差信号时,cr分量可能成为特定分量,并且cr分量的残差信号可不存在于比特流中。在这种情况下,可以不在cr分量的块(tb,tu)中对tu_cbf_cr进行熵编码/解码。
[0924]
另外,tu_joint_cbcr_residual可表示cr分量的残差信号是否用于推导cb分量和cr分量的残差信号。
[0925]
例如,当tu_joint_cbcr_residual是第一值(例如,0)时,它可以指示cr分量的残差信号根据另一语法元素值而存在于比特流中。当tu_joint_cbcr_residual是第二值(例如,1)时,它可以指示cr分量的残差信号用于推导cb分量和cr分量的残差信号。
[0926]
当tu_joint_cbcr_residual表示cr分量的残差信号是否用于推导cb分量和cr分量的残差信号时,cb分量可成为特定分量,并且cb分量的残差信号可不存在于比特流中。在这种情况下,可以不在cb分量的块(tb,tu)中对tu_cbf_cb进行熵编码/解码。
[0927]
图33示出了根据本公开的实施例的视频解码方法。
[0928]
在步骤s3302,针对当前序列,可获得指示是否启用帧内块复制模式的帧内块复制模式启用标志。
[0929]
在步骤s3304,当帧内块复制模式启用标志指示针对当前序列启用帧内块复制模式时,可以获得关于块矢量候选列表的块矢量候选的最大数量的信息。
[0930]
根据实施例,可以从当前序列参考的序列参数集中获得帧内块复制模式启用标志和关于块矢量候选的最大数量的信息。
[0931]
根据实施例,关于块矢量候选的最大数量的信息可以指示预定正整数与块矢量候选列表的块矢量候选的最大数量之间的差。
[0932]
在步骤s3306,在当前块的预测模式是帧内块复制模式时,可以根据关于块矢量候选的最大数量的信息来确定包括一个或更多个块矢量候选的当前块的块矢量候选列表。
[0933]
根据实施例,帧内块复制模式可以是块复制跳过模式、块复制合并模式和块复制amvp模式中的至少一个。
[0934]
根据实施例,当块矢量候选列表中包括的候选块矢量的数量小于块矢量候选列表中准许的块矢量候选的最大数量时,可以将基于历史的块矢量候选列表中的至少一个基于历史的块矢量候选添加到块矢量候选列表,直到块矢量候选列表中包括的候选块矢量的数量等于块矢量候选列表中准许的块矢量候选的最大数量。
[0935]
根据实施例,当基于历史的块矢量候选不与包括在块矢量候选列表中的块矢量候选重复时,可以将基于历史的块矢量候选添加到块矢量候选列表。
[0936]
在步骤s3308,可以从当前块候选列表的一个或更多个块矢量候选中确定当前块的块矢量。
[0937]
根据实施例,可以基于当前块的块矢量来更新基于历史的块矢量候选列表。
[0938]
根据实施例,在当前块的尺寸大于预定尺寸时,可以基于当前块的块矢量来更新基于历史的块矢量候选列表。
[0939]
在步骤s3310,根据块矢量,可以确定当前块的预测块。
[0940]
根据实施例,可以基于预测块来重构当前块。另外,可对重构的当前块的块边界执行去块滤波。
[0941]
根据实施例,在当前块的预测模式是帧内块复制模式并且与块边界相邻的邻近块中的至少一个是帧内块复制模式时,可以对块边界执行去块滤波。
[0942]
图34示出了根据本公开的实施例的视频编码方法。
[0943]
在步骤s3402,在当前块的预测模式是帧内块复制模式时,可以根据关于块矢量候选的最大数量的信息来确定包括一个或更多个块矢量候选的当前块的块矢量候选列表。
[0944]
根据实施例,帧内块复制模式可以是块复制跳过模式、块复制合并模式和块复制amvp模式中的至少一个。
[0945]
根据实施例,当块矢量候选列表中包括的候选块矢量的数量小于块矢量候选列表中准许的块矢量候选的最大数量时,可以将基于历史的块矢量候选列表中的至少一个基于历史的块矢量候选添加到块矢量候选列表,直到块矢量候选列表中包括的候选块矢量的数量等于块矢量候选列表中准许的块矢量候选的最大数量。
[0946]
根据实施例,当基于历史的块矢量候选不与包括在块矢量候选列表中的块矢量候选重复时,可以将基于历史的块矢量候选添加到块矢量候选列表。
[0947]
在步骤s3404,可以基于当前块候选列表的一个或更多个块矢量候选来确定当前块的块矢量。
[0948]
根据实施例,可以基于当前块的块矢量来更新基于历史的块矢量候选列表。
[0949]
根据实施例,在当前块的尺寸大于预定尺寸时,可以基于当前块的块矢量来更新基于历史的块矢量候选列表。
[0950]
在步骤s3406,根据块矢量,可以确定当前块的预测块。
[0951]
根据实施例,可以基于预测块来重构当前块。另外,可对重构的当前块的块边界执行去块滤波。
[0952]
根据实施例,在当前块的预测模式是帧内块复制模式并且与块边界相邻的邻近块中的至少一个是帧内块复制模式时,可以对块边界执行去块滤波。
[0953]
在步骤s3408,针对当前序列,可对指示是否启用帧内块复制模式的帧内块复制模式启用标志进行熵编码。
[0954]
在步骤s3410,当帧内块复制模式启用标志指示针对当前序列启用帧内块复制模式时,可以对关于块矢量候选列表的块矢量候选的最大数量的信息进行熵编码。
[0955]
根据实施例,帧内块复制模式启用标志和关于块矢量候选的最大数量的信息可被包括在当前序列参考的序列参数集中。
[0956]
根据实施例,关于块矢量候选的最大数量的信息可以指示预定正整数与块矢量候选列表的块矢量候选的最大数量之间的差。
[0957]
图33和图34的实施例是示例性的,并且本领域技术人员可以容易地修改图33和图34的每个步骤。另外,图33和图34的每种配置可以被省略或由另一种配置代替。图33的视频解码方法可以在图2的解码器中实施。另外,图34的视频编码方法可在图1的编码器中实施。
另外,一个或更多个处理器可以执行实施图33和图34的每个步骤的命令。另外,包括实施图33和图34的每个步骤的命令的程序产品可被存储在存储器装置中或在线销售。
[0958]
可以在编码器和解码器中以相同的方法执行上述实施例。
[0959]
在本说明书中,当获得预定信息时,这可表示从比特流对该信息进行熵解码。
[0960]
上述实施例中的至少一个或组合可以用于对视频进行编码/解码。
[0961]
应用于上述实施例的顺序在编码器和解码器之间可以是不同的,或者应用于上述实施例的顺序在编码器和解码器中可以是相同的。
[0962]
可以对每个亮度信号和色度信号执行上述实施例,或者可以对亮度和色度信号相同地执行上述实施例。
[0963]
应用本发明的上述实施例的块形式可以具有正方形形式或非正方形形式。
[0964]
由编码器熵编码和由解码器熵解码的语法元素(标志、索引等)中的至少一个可以使用以下二值化/去二值化方法和熵编码/解码方法中的至少一个。
[0965]
有符号0阶exp_golomb二值化/去二值化方法(se(v))
[0966]
有符号k阶exp_golomb二值化/去二值化方法(sek(v))
[0967]
无符号0阶exp_golomb二值化/去二值化方法(ue(v))
[0968]
无符号k阶exp_golomb二值化/去二值化方法(uek(v))
[0969]
固定长度二值化/去二值化方法(f(n))
[0970]
截断莱斯二值化/去二值化方法或截断一元二值化/去二值化方法(tu(v))
[0971]
截断二进制二值化/去二值化方法(tb(v))
[0972]
上下文自适应算术编码/解码方法(ae(v))
[0973]
字节单位位串(b(8))
[0974]
有符号整数二值化/去二值化方法(i(n))
[0975]
无符号整数二值化/去二值化方法(u(n))
[0976]
一元二值化/去二值化方法
[0977]
可以根据编码块、预测块、变换块、块、当前块、编码单元、预测单元、变换单元、单元和当前单元中的至少一个的尺寸来应用本发明的上述实施例。这里,尺寸可以被定义为最小尺寸或最大尺寸或者最小尺寸和最大尺寸两者使得上述实施例被应用,或者尺寸可以被定义为应用上述实施例的固定尺寸。另外,在上述实施例中,第一实施例可以应用于第一尺寸,并且第二实施例可以应用于第二尺寸。换句话说,可以根据尺寸组合应用上述实施例。另外,当尺寸等于或大于最小尺寸并且等于或小于最大尺寸时,可以应用上述实施例。换句话说,当块尺寸被包括在特定范围内时,可以应用上述实施例。
[0978]
另外,本发明的前述实施例可以仅在尺寸等于或大于最小尺寸并且等于或小于最大尺寸时应用。这里,最小尺寸和最大尺寸可以分别是块或单元的尺寸。换句话说,最小尺寸的目标块和最大尺寸的目标块可以彼此不同。另外,本发明的上述实施例可以仅在当前块的尺寸等于或大于块的最小尺寸并且等于或小于块的最大尺寸时应用。
[0979]
例如,在当前块的尺寸为8
×
8或更大时,可以应用上述实施例。例如,在当前块的尺寸仅为4
×
4时,可以应用上述实施例。例如,在当前块的尺寸为16
×
16或更小时,可以应用上述实施例。例如,在当前块的尺寸等于或大于16
×
16并且等于或小于64
×
64时,可以应用上述实施例。
[0980]
可以根据时间层来应用本发明的上述实施例。为了识别可应用上述实施例的时间层,可用信号传送对应标识符,并且可将上述实施例应用于通过对应标识符标识的指定时间层。这里,标识符可以被定义为可以应用上述实施例的最低层或最高层或者最低层和最高层两者,或者可以被定义为指示应用该实施例的特定层。另外,可以定义应用该实施例的固定时间层。
[0981]
例如,在当前图像的时间层是最低层时,可以应用上述实施例。例如,在当前图像的时间层标识符是1时,可以应用上述实施例。例如,在当前图像的时间层是最高层时,可以应用上述实施例。
[0982]
可以定义应用本发明的上述实施例的条带类型或并行块组类型,并且可以根据对应的条带类型或并行块组类型来应用上述实施例。
[0983]
在上述实施例中,基于具有一系列步骤或单元的流程图描述了方法,但是本发明不限于步骤的顺序,而是一些步骤可以与其他步骤同时执行或以不同的顺序执行。另外,本领域普通技术人员应当理解,流程图中的步骤不彼此排除,并且可以将其他步骤添加到流程图中,或者可以从流程图中删除一些步骤,而不影响本发明的范围。
[0984]
实施例包括示例的各个方面。可以不描述各个方面的所有可能的组合,但是本领域技术人员将能够认识到不同的组合。因此,本发明可以包括在权利要求的范围内的所有替换、修改和改变。
[0985]
本发明的实施例可以以程序指令的形式实现,该程序指令可由各种计算机组件执行并记录在计算机可读记录介质中。计算机可读记录介质可以包括独立的程序指令、数据文件、数据结构等或者程序指令、数据文件、数据结构等的组合。记录在计算机可读记录介质中的程序指令可以是为本发明专门设计和构造的,或者是计算机软件技术领域的普通技术人员公知的。计算机可读记录介质的示例包括磁记录介质,诸如硬盘、软盘和磁带;光学数据存储介质,诸如cd-rom或dvd-rom;磁最佳介质,例如软磁盘;以及特别构造为存储和实现程序指令的硬件装置,诸如只读存储器(rom)、随机存取存储器(ram)、闪存等。程序指令的示例不仅包括由编译器格式化的机械语言代码,还包括可以由计算机使用解释器实现的高级语言代码。所述硬件装置可以被配置为由一个或更多个软件模块操作,反之亦然,以进行根据本发明的过程。
[0986]
尽管已经根据诸如详细元件的特定项以及有限的实施例和附图描述了本发明,但是提供它们仅是为了帮助更一般地理解本发明,并且本发明不限于上述实施例。本发明所属领域的技术人员将理解,可以从上述描述中进行各种修改和改变。
[0987]
因此,本发明的精神不应限于上述实施例,并且所附权利要求及其等同物的整个范围将落入本发明的范围和精神内。
[0988]
工业适用性
[0989]
本发明可用于对图像进行编码或解码。
转载请注明原文地址:https://win.8miu.com/read-1056171.html