1.本发明涉及一种图像编码/解码方法和设备,以及一种用于存储比特流的记录介质。更具体地,本发明涉及一种用于基于自适应变换类型选择来对视频图像进行编码/解码的方法和设备。
背景技术:
2.近来,在各种应用中针对诸如高清晰度(hd)或超高清晰度(uhd)图像的高分辨率和质量图像的需求已经增加。随着图像的分辨率和质量的提高,数据量相应地增加。这是在通过诸如有线宽带信道或无线宽带信道的现有传输介质传输图像数据时或者在存储图像数据时的传输成本和存储成本增加的原因之一。为了解决高分辨率和高质量图像数据的这些问题,需要高效的图像编码/解码技术。
3.存在各种视频压缩技术,诸如从先前画面或后续画面内的像素的值预测当前画面内的像素的值的帧间(inter)预测技术、从当前画面的另一区域内的像素的值预测当前画面的区域内的像素的值的帧内(intra)预测技术、对残差信号的能量进行压缩的变换和量化技术、以及将较短码分配给频繁出现的像素值而将较长码分配给较少出现的像素值的熵编码技术。
技术实现要素:
4.技术问题
5.本发明的一个目的在于提供一种具有改进的编码/解码效率的图像编码/解码方法和设备。
6.本发明的另一个目的在于提供一种用于改进编码/解码效率的基于变换、乱序(shuffling)、重排和/或翻转的图像编码/解码方法和设备。
7.本发明的另一个目的在于提供一种用于改进编码/解码效率的基于自适应变换类型选择的图像编码/解码方法和设备。
8.本发明的另一个目的在于提供一种用于改进图像变换效率的图像编码/解码方法和设备。
9.本发明的另一个目的在于提供一种用于存储由图像编码/解码方法或设备产生的比特流的记录介质。
10.解决问题的方案
11.根据本发明的实施例的对图像进行解码的方法包括:确定当前块的水平变换类型和垂直变换类型,通过基于确定的所述水平变换类型和所述垂直变换类型对所述当前块执行逆变换来推导所述当前块的残差块,以及基于所述残差块重建所述当前块。在所述当前块处于帧内子块分区(isp)模式时,基于所述当前块的宽度或高度中的至少一个来执行对所述水平变换类型和所述垂直变换类型的确定,而不管所述当前块的帧内预测模式如何。
12.在图像解码方法中,确定所述水平变换类型和所述垂直变换类型的步骤还可包括
设置隐式多变换选择信息。
13.在图像解码方法中,设置隐式多变换选择信息的步骤可包括:在所述当前块处于帧内子块分区(isp)模式时,将所述隐式多变换选择信息设置为指示隐式多变换选择的值。
14.在图像解码方法中,设置所述隐式多变换选择信息的步骤可包括:当帧内预测显式多变换选择启用信息指示不启用显式多变换选择,所述当前块的预测模式是帧内预测模式,不对所述当前块执行次级逆变换并且所述当前块不处于基于矩阵的帧内预测模式时,将所述隐式多变换选择信息设置为指示隐式多变换选择的值。
15.在图像解码方法中,当所述隐式多变换选择信息指示隐式多变换选择时,可基于所述当前块是否处于子块变换(sbt)模式来确定所述水平变换类型和所述垂直变换类型。
16.在图像解码方法中,当所述隐式多变换选择信息指示隐式多变换选择并且所述当前块不处于子块变换(sbt)模式时,可确定所述水平变换类型和所述垂直变换类型,而不管所述当前块的帧内预测模式如何。
17.在图像解码方法中,在所述当前块处于帧内子块分区(isp)模式并且执行次级逆变换时,可将所述水平变换类型和所述垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管所述隐式多变换选择信息如何。
18.在图像解码方法中,确定所述水平变换类型和所述垂直变换类型的步骤可包括:在所述当前块为色度分量时,将所述水平变换类型和所述垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管所述隐式多变换选择信息如何。
19.根据本发明的另一个实施例的对图像进行编码的方法包括:确定当前块的水平变换类型和垂直变换类型,基于确定的所述水平变换类型和所述垂直变换类型对所述当前块的残差块执行变换,以及基于经过变换的残差块对所述当前块进行编码。在所述当前块处于帧内子块分区(isp)模式时,可基于所述当前块的宽度或高度中的至少一个来执行对所述水平变换类型和所述垂直变换类型的确定,而不管所述当前块的帧内预测模式如何。
20.在图像编码方法中,确定所述水平变换类型和所述垂直变换类型的步骤还可包括设置隐式多变换选择信息。
21.在图像编码方法中,设置所述隐式多变换选择信息的步骤可包括:在所述当前块处于帧内子块分区(isp)模式时,将所述隐式多变换选择信息设置为指示隐式多变换选择的值。
22.在图像编码方法中,设置所述隐式多变换选择信息的步骤可包括:当帧内预测显式多变换选择启用信息指示不启用显式多变换选择,所述当前块的预测模式是帧内预测模式,不对所述当前块执行次级逆变换并且所述当前块不处于基于矩阵的帧内预测模式时,将所述隐式多变换选择信息设置为指示隐式多变换选择的值。
23.在图像编码方法中,当所述隐式多变换选择信息指示隐式多变换选择时,可基于所述当前块是否处于子块变换(sbt)模式来确定所述水平变换类型和所述垂直变换类型。
24.在图像编码方法中,当所述隐式多变换选择信息指示隐式多变换选择并且所述当前块不处于子块变换(sbt)模式时,可确定所述水平变换类型和所述垂直变换类型,而不管所述当前块的帧内预测模式如何。
25.在图像编码方法中,在所述当前块处于帧内子块分区(isp)模式并且执行次级逆变换时,可将所述水平变换类型和所述垂直变换类型确定为指示基于dct
‑
2的整数变换的
第一变换,而不管所述隐式多变换选择信息如何。
26.在图像编码方法中,确定所述水平变换类型和所述垂直变换类型的步骤可包括:在所述当前块为色度分量时,将所述水平变换类型和所述垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管所述隐式多变换选择信息如何。
27.根据本发明的另一实施例的非暂时性计算机可读记录介质可存储通过图像编码方法产生的比特流,并且图像编码方法可包括:确定当前块的水平变换类型和垂直变换类型,基于确定的所述水平变换类型和所述垂直变换类型对所述当前块的残差块执行变换,以及基于经过变换的残差块对所述当前块进行编码。在所述当前块处于帧内子块分区(isp)模式时,基于所述当前块的宽度或高度中的至少一个来执行对所述水平变换类型和所述垂直变换类型的确定,不管所述当前块的帧内预测模式如何。
28.本发明的效果
29.根据本发明,可提供一种具有改进的编码/解码效率的图像编码/解码方法和设备。
30.根据本发明,可提供一种用于改进编码/解码效率的基于变换、乱序、重排和/或翻转的图像编码/解码方法和设备。
31.根据本发明,可提供一种用于改进编码/解码效率的基于自适应变换类型选择的图像编码/解码方法和设备。
32.根据本发明,可提供一种用于改进图像变换效率的图像编码/解码方法和设备。
33.根据本发明,可提供一种用于存储由图像编码/解码方法或设备产生的比特流的记录介质。
附图说明
34.图1是示出根据应用了本发明的实施例的编码设备的配置的框图。
35.图2是示出根据实施例的应用本发明的解码设备的配置的框图。
36.图3是示意性地示出当对图像进行编码和解码时图像的分区结构的示图。
37.图4是示出帧内预测处理的示图。
38.图5是示出画面间预测处理的实施例的示图。
39.图6是示出变换和量化处理的示图。
40.图7是示出根据本发明的dct
‑
2的频域中的基矢量的示图。
41.图8是示出根据本发明的dst
‑
7的每一个频域中的基矢量的示图。
42.图9是示出根据在帧间模式下预测的8
×
8编码单元(cu)的2n
×
2n预测单元(pu)内的位置的平均残差值的分布的示图,其中,通过在低延迟
‑
p配置环境中的测试获得“仙人掌(cactus)”序列。
43.图10是示出在帧间预测模式(帧间模式)下预测的8
×
8编码单元(cu)的2n
×
2n预测单元(pu)内的残差信号的分布特性的三维图。
44.图11是示出根据本发明的编码单元(cu)的2n
×
2n预测单元(pu)模式下的残差信号的分布特性的示图。
45.图12是示出根据本发明的2n
×
2n预测单元(pu)的乱序之前和乱序之后的残差信号的分布特性的示图。
46.图13是示出根据本发明的子块的4
×
4残差数据重排的示例的示图。
47.图14(a)和图14(b)是示出根据预测单元(pu)模式和变换单元(tu)的乱序方法的编码单元(cu)的变换单元(tu)分区结构的实施例的示图。
48.图15是示出根据2n
×
2n预测单元(pu)的残差信号的分布执行dct
‑
2变换和sdst变换的结果的示图。
49.图16是示出根据本发明的sdst处理的示图。
50.图17是示出根据本发明的针对帧间预测的编码单元(cu)的每一个预测单元(pu)分区模式的变换单元(tu)的分区和残差绝对值的大小的分布特性的示图。
51.图18是示出根据本发明的实施例的预测单元(pu)内的深度为零的变换单元(tu)的残差信号扫描顺序和重排顺序的示图。
52.图19是示出根据本发明的通过速率失真优化(rdo)的dct
‑
2或sdst选择编码处理的流程图。
53.图20是示出根据本发明的选择dct
‑
2或sdst用于解码的处理的流程图。
54.图21是示出根据本发明的使用sdst的解码处理的流程图。
55.图22和图23分别示出在根据本发明的编码器和解码器中执行残差信号重排(残差重排)的位置。
56.图24是示出根据本发明的使用sdst方法的解码方法的实施例的示图。
57.图25是示出根据本发明的使用sdst方法的编码方法的实施例的示图。
58.图26是示出在翻转之后执行变换的方法中的编码处理的实施例的示图。
59.图27是示出在逆变换之后执行翻转的方法中的解码处理的实施例的示图。
60.图28是示出在变换之后执行翻转的方法中的编码处理的实施例的示图。
61.图29是示出在翻转之后执行逆变换的方法中的解码处理的实施例的示图。
62.图30是示出在量化之后执行翻转的方法中的编码处理的实施例的示图。
63.图31是示出在翻转之后执行反量化的方法中的解码处理的实施例的示图。
64.图32是示出对残差块执行翻转的示图。
65.图33是示出用于将对尺寸为8
×
8的残差块执行翻转实现为硬件的实施例的示图。
66.图34是示出对残差块执行翻转和变换的示图。
67.图35至图37是示出根据本发明的第一子块分区模式的实施例的示图。
68.图38是示出根据本发明的第二子块分区模式的实施例的示图。
69.图39是示出对角线扫描的实施例的示图。
70.图40是示出水平扫描的实施例的示图。
71.图41是示出垂直扫描的实施例的示图。
72.图42是示出基于块的对角线扫描的实施例的示图。
73.图43是示出基于块的水平扫描的实施例的示图。
74.图44是示出基于块的垂直扫描的实施例的示图。
75.图45是示出基于块的水平扫描的实施例的示图。
76.图46是示出基于块的垂直扫描的实施例的示图。
77.图47是示出基于块的形状的扫描的各种实施例的示图。
78.图48是示出帧内预测模式的示图。
79.图49是示出能够用于帧内预测的参考样点的示图。
80.图50至图54是示出根据本发明实施例的使用变换的编码处理或解码处理的示例的示图。
81.图55是示出根据本发明的实施例的图像解码方法的示图。
82.图56是示出根据本发明的实施例的图像编码方法的示图。
具体实施方式
83.可对本发明做出各种修改,并且存在本发明的各种实施例,现在将参照附图提供并详细描述本发明的各种实施例的示例。然而,尽管示例性实施例可被解释为包括本发明的技术构思和技术范围中的所有修改、等同形式或替代形式,但本发明不限于此。相似的参考标号指在各个方面相同或相似的功能。在附图中,为了清楚起见,元件的形状和尺寸可被夸大。在本发明的以下详细描述中,对通过图示的方式示出可实施本发明的具体实施例的附图进行参照。这些实施例被足够详细地描述以使本领域技术人员能够实施本公开。应该理解,本公开的各种实施例尽管不同,但不必是相互排他的。例如,在不脱离本公开的精神和范围的情况下,这里结合一个实施例描述的特定特征、结构和特性可在其它实施例中被实施。此外,应该理解,在不脱离本公开的精神和范围的情况下,每一个公开的实施例内的各个元件的位置或布置可被修改。因此,以下详细描述不应以限制的含义来理解,并且本公开的范围仅由所附权利要求(在合适的解释的情况下,还连同权利要求所要求保护的等同形式的全部范围)来限定。
84.在说明书中使用的术语“第一”、“第二”等可被用于描述各种组件,但这些组件并不被解释为受限于这些术语。这些术语仅被用于将一个组件与其它组件区分开。例如,在不脱离本发明的范围的情况下,“第一”组件可被称为“第二”组件,并且“第二”组件也可类似地被称为“第一”组件。术语“和/或”包括多个项的组合或者是多个项中的任意一项。
85.将理解的是,在本说明书中,当元件仅被称为“连接到”或“结合到”另一元件而不是“直接连接到”或“直接结合到”所述另一元件时,所述元件可“直接连接到”或“直接结合到”所述另一元件,或者在所述元件与所述另一元件之间具有其他元件的情况下连接到或结合到所述另一元件。相反,应该理解,当元件被称为“直接结合”或“直接连接”到另一元件时,不存在中间元件。
86.此外,在本发明的实施例中示出的组成部件被独立地示出,以便呈现彼此不同的特性功能。因此,这并不意味着每一个组成部件以单独的硬件或软件的组成单元被组成。换句话说,为了方便,每一个组成部件包括枚举的组成部件中的每一个。因此,每一个组成部件中的至少两个组成部件可被组合形成一个组成部件,或者一个组成部件可被划分为用于执行每一个功能的多个组成部件。在没有脱离本发明的本质的情况下,每一个组成部件被组合的实施例以及一个组成部件被划分的实施例也被包括在本发明的范围中。
87.在本说明书中使用的术语仅用于描述具体实施例,而不旨在限制本发明。除非以单数使用的表达在上下文中具有明显不同的含义,否则它包括复数表达。在本说明书中,将理解的是,诸如“包括
……
的”、“具有
……
的”等的术语旨在指明存在说明书中所公开的特征、数量、步骤、动作、元件、部件、或其组合,而并不旨在排除可存在或者可添加一个或更多个其它特征、数量、步骤、动作、元件、部件、或其组合的可能性。换句话说,当特定元件被称
为“被包括”时,除相应元件以外的元件并不被排除,而是,附加的元件可被包括在本发明的实施例中或者是本发明的范围中。
88.此外,一些组成元件可能不是执行本发明的必要功能的不可缺的组成元件,而是仅提升其性能的可选组成元件。可通过仅包括用于实施本发明的实质的不可缺的组成部件而排除在提升性能时使用的组成元件来实施本发明。仅包括所述不可缺的组成元件而排除在仅提升性能时使用的可选组成元件的结构也被包括在本发明的范围中。
89.在下文中,将参照附图详细描述本发明的实施例。在描述本发明的示例性实施例时,因为公知的功能或结构可能不必要地模糊对本发明的理解,因此将不详细描述它们。附图中的相同的组成元件由相同的参考标号来表示,并且将省略对相同元件的重复描述。
90.在下文中,图像可指构成视频的画面,或者可指视频本身。例如,“对图像进行编码或解码或者进行编码和解码两者”可指“对运动画面进行编码或解码或者进行编码和解码两者”,并且可指“对运动画面的图像中的一个图像进行编码或解码或者进行编码和解码两者。”91.在下文中,术语“运动画面”和“视频”可被用作相同的含义并且可彼此替换。
92.在下文中,目标图像可以是作为编码的目标的编码目标图像和/或作为解码的目标的解码目标图像。此外,目标图像可以是输入到编码设备的输入图像、以及输入到解码设备的输入图像。这里,目标图像可与当前图像具有相同的含义。
93.在下文中,术语“图像”、“画面”、“帧”和“屏幕”可被用作相同的含义并且彼此替换。
94.在下文中,目标块可以是作为编码的目标的编码目标块和/或作为解码的目标的解码目标块。此外,目标块可以是作为当前编码和/或解码的目标的当前块。例如,术语“目标块”和“当前块”可被用作相同的含义并且彼此替换。
95.在下文中,术语“块”和“单元”可被用作相同的含义并且彼此替换。或者“块”可表示特定单元。
96.在下文中,术语“区域”和“片段”可彼此替换。
97.在下文中,特定信号可以是表示特定块的信号。例如,原始信号可以是表示目标块的信号。预测信号可以是表示预测块的信号。残差信号可以是表示残差块的信号。
98.在实施例中,特定信息、数据、标志、索引、元素和属性等中的每一个可具有值。等于“0”的信息、数据、标志、索引、元素和属性的值可表示逻辑假或第一预定义值。换句话说,值“0”、假、逻辑假和第一预定义值可彼此替换。等于“1”的信息、数据、标志、索引、元素和属性的值可表示逻辑真或第二预定义值。换句话说,值“1”、真、逻辑真和第二预定义值可彼此替换。
99.当变量i或j用于表示列、行或索引时,i的值可以是等于或大于0的整数、或者等于或大于1的整数。也就是说,列、行、索引等可从0开始计数,或者可从1开始计数。
100.术语的描述
101.编码器:表示执行编码的设备。也就是说,表示编码设备。
102.解码器:表示执行解码的设备。也就是说,表示解码设备。
103.块:是m
×
n的样点阵列。这里,m和n可表示正整数,并且块可表示二维形式的样点阵列。块可指单元。当前块可表示在编码时成为目标的编码目标块,或者在解码时成为目标
的解码目标块。此外,当前块可以是编码块、预测块、残差块和变换块中的至少一个。
104.样点:是构成块的基本单元。根据比特深度(bd),样点可被表达为从0到2
bd
‑
1的值。在本发明中,样点可被用作像素的含义。也就是说,样点、pel、像素可具有彼此相同的含义。
105.单元:可指编码和解码单元。当对图像进行编码和解码时,单元可以是通过对单个图像进行分区而产生的区域。此外,当在编码或解码期间将单个图像分区为子划分单元时,单元可表示子划分单元。也就是说,图像可被分区为多个单元。当对图像进行编码和解码时,可针对每一个单元执行预定的处理。单个单元可被分区为尺寸小于该单元的尺寸的子单元。依据功能,单元可表示块、宏块、编码树单元、编码树块、编码单元、编码块、预测单元、预测块、残差单元、残差块、变换单元、变换块等。此外,为了将单元与块区分开,单元可包括亮度分量块、与亮度分量块相关联的色度分量块、以及每一个颜色分量块的语法元素。单元可具有各种尺寸和形状,具体地,单元的形状可以是二维几何图形,诸如正方形形状、长方形形状、梯形形状、三角形形状、五边形形状等。此外,单元信息可包括指示编码单元、预测单元、变换单元等的单元类型以及单元尺寸、单元深度、单元的编码和解码的顺序等中的至少一个。
106.编码树单元:被配置有亮度分量y的单个编码树块、以及与色度分量cb和cr相关的两个编码树块。此外,编码树单元可表示包括块和每一个块的语法元素。可通过使用四叉树分区方法、二叉树分区方法和三叉树分区方法中的至少一个对每一个编码树单元进行分区以配置诸如编码单元、预测单元、变换单元等的更低等级的单元。编码树单元可被用作用于指定在对作为输入图像的图像进行编码/解码时成为处理单元的样点块的术语。这里,四叉树可表示四元树。
107.当编码块的尺寸在预定范围内时,可仅使用四叉树分区进行划分。这里,预定范围可被定义为仅能够使用四叉树分区进行划分的编码块的最大尺寸和最小尺寸中的至少一个。可通过比特流用信号传送指示允许四叉树分区的编码块的最大/最小尺寸的信息,并且可在序列、画面参数、并行块组或条带(片段)中的至少一个单元中用信号传送所述信息。可选地,编码块的最大/最小尺寸可以是编码器/解码器中预定的固定尺寸。例如,当编码块的尺寸与256
×
256至64
×
64相应时,可仅使用四叉树分区来进行划分。可选地,当编码块的尺寸大于最大转换块的尺寸时,可仅使用四叉树分区来进行划分。这里,将被划分的块可以是编码块和变换块中的至少一个。在这种情况下,指示编码块的划分的信息(例如,split_flag)可以是指示是否执行四叉树分区的标志。当编码块的尺寸落入预定范围内时,可仅使用二叉树分区或三叉树分区来进行划分。在此情况下,四叉树分区的以上描述可以以相同方式被应用于二叉树分区或三叉树分区。
108.编码树块:可被用作用于指定y编码树块、cb编码树块和cr编码树块中的任意一个的术语。
109.邻近块:可表示与当前块相邻的块。与当前块相邻的块可表示与当前块的边界接触的块、或者位于距当前块预定距离内的块。邻近块可表示与当前块的顶点相邻的块。这里,与当前块的顶点相邻的块可表示与水平相邻于当前块的邻近块垂直相邻的块、或者与垂直相邻于当前块的邻近块水平相邻的块。
110.重建的邻近块:可表示与当前块相邻并且已经在空间/时间上被编码或解码的邻近块。这里,重建的邻近块可表示重建的邻近单元。重建的空间邻近块可以是在当前画面内
并且已经通过进行编码或解码或者进行编码和解码两者而被重建的块。重建的时间邻近块是在参考图像内的与当前画面的当前块相应的位置处的块或该块的邻近块。
111.单元深度:可表示单元的分区程度。在树结构中,最高节点(根节点)可与未被分区的第一单元相应。此外,最高节点可具有最小深度值。在这种情况下,最高节点的深度可以为等级0。深度为等级1的节点可表示通过对第一单元进行一次分区而产生的单元。深度为等级2的节点可表示通过对第一单元进行两次分区而产生的单元。深度为等级n的节点可表示通过对第一单元进行n次分区而产生的单元。叶节点可以是最低节点并且是不能被进一步分区的节点。叶节点的深度可以是最大等级。例如,最大等级的预定义值可以是3。根节点的深度可以是最低的,并且叶节点的深度可以是最深的。此外,当单元被表示为树结构时,单元存在于的等级可表示单元深度。
112.比特流:可表示包括编码图像信息的比特流。
113.参数集:与比特流内的配置中的头信息相应。视频参数集、序列参数集、画面参数集和自适应参数集中的至少一个可被包括在参数集中。此外,参数集可包括条带(slice)头、并行块组头和并行块(tile)头信息。术语“并行块组”可表示一组并行块并且具有与条带相同的含义。
114.自适应参数集可指可通过在不同画面、子画面、条带、并行块组、并行块或分块中引用而共享的参数集。另外,可通过引用针对画面内部的子画面、条带、并行块组、并行块或分块的不同自适应参数集来使用自适应参数集中的信息。
115.另外,关于自适应参数集,可通过使用针对画面内部的子画面、条带、并行块组、并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
116.另外,关于自适应参数集,可通过使用针对子画面内部的条带、并行块组、并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
117.另外,关于自适应参数集,可通过使用针对条带内部的并行块或分块的不同自适应参数集的标识符来引用不同的自适应参数集。
118.另外,关于自适应参数集,可通过使用针对并行块内部的分块的不同自适应参数集的标识符来引用不同的自适应参数集。
119.关于自适应参数集标识符的信息可被包括在子画面的参数集或报头中,并且与自适应参数集标识符相应的自适应参数集可被用于子画面。
120.关于自适应参数集标识符的信息可被包括在并行块的参数集或报头中,并且与自适应参数集标识符相应的自适应参数集可被用于并行块。
121.关于自适应参数集标识符的信息可被包括在分块的报头中,并且与自适应参数集标识符相应的自适应参数集可被用于分块。
122.画面可被分区为一个或更多个并行块行和一个或更多个并行块列。
123.子画面可被分区为画面内的一个或更多个并行块行和一个或更多个并行块列。子画面可以是画面内具有矩形(非正方形)/正方形形状的区域,并且可包括一个或更多个ctu。另外,至少一个或多个并行块/分块/条带可被包括在一个子画面内。
124.并行块可以是画面内具有矩形(非正方形)/正方形形状的区域,并且可包括一个或更多个ctu。另外,并行块可被分区为一个或更多个分块。
125.分块可指并行块内的一个或更多个ctu行。并行块可被分区为一个或更多个分块,
并且每一个分块可具有至少一个或多个ctu行。未被分区为两个或更多个的并行块可指分块。
126.条带可包括画面内的一个或更多个并行块,并且可包括并行块内的一个或更多个分块。
127.解析:可表示通过执行熵解码来确定语法元素的值,或者可表示熵解码本身。
128.符号:可表示编码/解码目标单元的语法元素、编码参数和变换系数值中的至少一个。此外,符号可表示熵编码目标或熵解码结果。
129.预测模式:可以是指示利用帧内预测编码/解码的模式或利用帧间预测编码/解码的模式的信息。
130.预测单元:可表示当执行预测(诸如帧间预测、帧内预测、帧间补偿、帧内补偿和运动补偿)时的基本单元。单个预测单元可被分区为具有更小尺寸的多个分区,或者可被分区为多个更低等级的预测单元。多个分区可以是在执行预测或补偿时的基本单元。通过对预测单元进行划分而产生的分区也可以是预测单元。
131.预测单元分区:可表示通过对预测单元进行分区而获得的形式
132.参考画面列表可指包括用于帧间预测或运动补偿的一个或更多个参考画面的列表。存在几种类型的可用参考画面列表,所述可用参考画面列表包括lc(列表组合)、l0(列表0)、l1(列表1)、l2(列表2)、l3(列表3)。
133.帧间预测指示符可指当前块的帧间预测(单向预测、双向预测等)的方向。可选地,帧间预测指示符可指用于产生当前块的预测块的参考画面的数量。可选地,帧间预测指示符可指在对当前块执行帧间预测或运动补偿时所使用的预测块的数量。
134.预测列表利用标志指示是否使用特定参考画面列表中的至少一个参考画面来产生预测块。可使用预测列表利用标志来推导帧间预测指示符,并且相反地,可使用帧间预测指示符来推导预测列表利用标志。例如,当预测列表利用标志具有第一值零(0)时,它表示不使用参考画面列表中的参考画面来产生预测块。另一方面,当预测列表利用标志具有第二值一(1)时,它表示使用参考画面列表来产生预测块。
135.参考画面索引可指指示参考画面列表中的特定参考画面的索引。
136.参考画面可表示由特定块参考以实现对特定块进行帧间预测或运动补偿的目的的参考画面。可选地,参考画面可以是包括由当前块参考以进行帧间预测或运动补偿的参考块的画面。在下文中,术语“参考画面”和“参考图像”具有相同的含义并且可彼此替换。
137.运动矢量可以是用于帧间预测或运动补偿的二维矢量。运动矢量可表示编码/解码目标块与参考块之间的偏移。例如,(mvx,mvy)可表示运动矢量。这里,mvx可表示水平分量,并且mvy可表示垂直分量。
138.搜索范围可以是在帧间预测期间为了检索运动矢量而搜索的二维区域。例如,搜索范围的尺寸可以是m
×
n。这里,m和n均为整数。
139.运动矢量候选可指在对运动矢量进行预测时的预测候选块或预测候选块的运动矢量。此外,运动矢量候选可被包括在运动矢量候选列表中。
140.运动矢量候选列表可表示由一个或更多个运动矢量候选组成的列表。
141.运动矢量候选索引可表示指示运动矢量候选列表中的运动矢量候选的指示符。可选地,运动矢量候选索引可以是运动矢量预测因子的索引。
142.运动信息可表示包括以下项中的至少一项的信息:运动矢量、参考画面索引、帧间预测指示符、预测列表利用标志、参考画面列表信息、参考画面、运动矢量候选、运动矢量候选索引、合并候选和合并索引。
143.合并候选列表可表示由一个或更多个合并候选组成的列表。
144.合并候选可表示空间合并候选、时间合并候选、组合合并候选、组合双预测合并候选或零合并候选。合并候选可包括运动信息,诸如帧间预测指示符、针对每一个列表的参考画面索引、运动矢量、预测列表利用标志和帧间预测指示符。
145.合并索引可表示指示在合并候选列表中的合并候选的指示符。可选地,合并索引可指示在空间上/时间上与当前块相邻的重建块中的从其推导合并候选的块。可选地,合并索引可指示合并候选的至少一条运动信息。
146.变换单元:可表示在对残差信号执行编码/解码(诸如变换、逆变换、量化、反量化、变换系数编码/解码)时的基本单元。单个变换单元可被分区为具有更小尺寸的多个更低等级的变换单元。这里,变换/逆变换可包括第一变换/第一逆变换和第二变换/第二逆变换中的至少一个。
147.缩放:可表示将量化的等级乘以因子的处理。可通过对量化的等级进行缩放来产生变换系数。缩放也可被称为反量化。
148.量化参数:可表示当在量化期间使用变换系数来产生量化的等级时使用的值。量化参数还可表示当在反量化期间通过对量化的等级进行缩放来产生变换系数时使用的值。量化参数可以是被映射在量化步长上的值。
149.增量量化参数:可表示预测的量化参数与编码/解码目标单元的量化参数之间的差值。
150.扫描:可表示对单元、块或矩阵内的系数进行排序的方法。例如,将系数的二维矩阵改成为一维矩阵的操作可被称为扫描,将系数的一维矩阵改成为二维矩阵的操作可被称为扫描或逆扫描。
151.变换系数:可表示在编码器中执行变换之后产生的系数值。变换系数可表示在解码器中执行熵解码和反量化中的至少一个之后产生的系数值。通过对变换系数或残差信号进行量化而获得的量化的等级或者量化的变换系数等级也可落入变换系数的含义内。
152.量化的等级:可表示在编码器中通过对变换系数或残差信号进行量化而产生的值。可选地,量化的等级可表示作为在解码器中将被执行反量化的反量化目标的值。类似地,作为变换和量化的结果的量化的变换系数等级也可落入量化的等级的含义内。
153.非零变换系数:可表示具有除零之外的值的变换系数、或者具有除零之外的值的变换系数等级或量化的等级。
154.量化矩阵:可表示在被执行以提高主观图像质量或客观图像质量的量化处理或反量化处理中使用的矩阵。量化矩阵也可被称为缩放列表。
155.量化矩阵系数:可表示量化矩阵内的每一个元素。量化矩阵系数也可被称为矩阵系数。
156.默认矩阵:可表示在编码器或解码器中初步定义的预定量化矩阵。
157.非默认矩阵:可表示在编码器或解码器中未初步定义而是由用户用信号传送的量化矩阵。
158.统计值:针对具有可计算的特定值的变量、编码参数、常量值等之中的至少一个的统计值可以是相应特定值的平均值、总和值、加权平均值、加权和值、最小值、最大值、最频繁出现的值、中值、插值之中的一个或更多个。
159.图1是示出根据应用了本发明的实施例的编码设备的配置的框图。
160.编码设备100可以是编码器、视频编码设备或图像编码设备。视频可包括至少一个图像。编码设备100可顺序地对至少一个图像进行编码。
161.参照图1,编码设备100可包括运动预测单元111、运动补偿单元112、帧内预测单元120、切换器115、减法器125、变换单元130、量化单元140、熵编码单元150、反量化单元160、逆变换单元170、加法器175、滤波器单元180和参考画面缓冲器190。
162.编码设备100可通过使用帧内模式或帧间模式或者帧内模式和帧间模式两者来对输入图像执行编码。此外,编码设备100可通过对输入图像进行编码来产生包括编码信息的比特流,并输出产生的比特流。产生的比特流可被存储在计算机可读记录介质中,或者可通过有线/无线传输介质被流传输。当帧内模式被用作预测模式时,切换器115可被切换到帧内。可选地,当帧间模式被用作预测模式时,切换器115可被切换到帧间模式。这里,帧内模式可表示帧内预测模式,帧间模式可表示帧间预测模式。编码设备100可产生针对输入图像的输入块的预测块。此外,编码设备100可在产生预测块之后使用输入块和预测块的残差对残差块进行编码。输入图像可被称为作为当前编码目标的当前图像。输入块可被称为作为当前编码目标的当前块,或者被称为编码目标块。
163.当预测模式是帧内模式时,帧内预测单元120可使用已被编码/解码并与当前块相邻的块的样点作为参考样点。帧内预测单元120可通过使用参考样点来对当前块执行空间预测,或者通过执行空间预测来产生输入块的预测样点。这里,帧内预测可表示帧内部的预测。
164.当预测模式是帧间模式时,运动预测单元111可在执行运动预测时从参考图像检索与输入块最匹配的区域,并且通过使用检索到的区域来推导运动矢量。在这种情况下,搜索区域可被用作所述区域。参考图像可被存储在参考画面缓冲器190中。这里,当执行了对参考图像的编码/解码时,参考图像可被存储在参考画面缓冲器190中。
165.运动补偿单元112可通过使用运动矢量对当前块执行运动补偿来产生预测块。这里,帧间预测可表示帧之间的预测或运动补偿。
166.当运动矢量的值不是整数时,运动预测单元111和运动补偿单元112可通过将插值滤波器应用于参考画面的部分区域来产生预测块。为了对编码单元执行帧间画面预测或运动补偿,可确定将跳过模式、合并模式、高级运动矢量预测(amvp)模式和当前画面参考模式之中的哪个模式用于对包括在相应编码单元中的预测单元的运动预测和运动补偿。然后,依据所确定的模式,可不同地执行帧间画面预测或运动补偿。
167.减法器125可通过使用输入块和预测块的差来产生残差块。残差块可被称为残差信号。残差信号可表示原始信号和预测信号之间的差。此外,残差信号可以是通过对原始信号与预测信号之间的差进行变换或量化或者变换和量化而产生的信号。残差块可以是块单元的残差信号。
168.变换单元130可通过对残差块执行变换来产生变换系数,并输出产生的变换系数。这里,变换系数可以是通过对残差块执行变换而产生的系数值。当变换跳过模式被应用时,
变换单元130可跳过对残差块的变换。
169.可通过将量化应用于变换系数或应用于残差信号来产生量化的等级。在下文中,量化的等级在实施例中也可被称为变换系数。
170.量化单元140可通过根据参数对变换系数或残差信号进行量化来产生量化的等级,并输出产生的量化的等级。这里,量化单元140可通过使用量化矩阵对变换系数进行量化。
171.熵编码单元150可通过根据概率分布对由量化单元140计算出的值或者对在执行编码时计算出的编码参数值执行熵编码来产生比特流,并输出产生的比特流。熵编码单元150可对图像的样点信息和用于对图像进行解码的信息执行熵编码。例如,用于对图像进行解码的信息可包括语法元素。
172.当熵编码被应用时,符号被表示使得较少数量的比特被分配给具有高产生可能性的符号,并且较多数量的比特被分配给具有低产生可能性的符号,因此,可减小用于将被编码的符号的比特流的大小。熵编码单元150可使用诸如指数哥伦布、上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)等的用于熵编码的编码方法。例如,熵编码单元150可通过使用变长编码/码(vlc)表来执行熵编码。此外,熵编码单元150可推导目标符号的二值化方法和目标符号/二进制位的概率模型,并且通过使用推导的二值化方法和上下文模型来执行算术编码。
173.为了对变换系数等级(量化的等级)进行编码,熵编码单元150可通过使用变换系数扫描方法将二维块形式的系数改成为一维矢量形式。
174.编码参数可包括在编码器中被编码并且被用信号传送到解码器的诸如语法元素的信息(标志、索引等)以及在执行编码或解码时推导的信息。编码参数可表示在对图像进行编码或解码时所需要的信息。例如,以下项中的至少一个值或组合形状可被包括在编码参数中:单元/块尺寸、单元/块深度、单元/块分区信息、单元/块形状、单元/块分区结构、是否进行四叉树形式的分区、是否进行二叉树形式的分区、二叉树形式的分区方向(水平方向或垂直方向)、二叉树形式的分区形式(对称分区或非对称分区)、当前编码单元是否通过三叉树分区被分区、三叉树分区的方向(水平方向或垂直方向)、三叉树分区的类型(对称类型或非对称类型)、当前编码单元是否通过多类型树分区被分区、多类型树分区的方向(水平方向或垂直方向)、多类型树分区的类型(对称类型或非对称类型)和多类型树分区的树(二叉树或三叉树)结构、预测模式(帧内预测或帧间预测)、亮度帧内预测模式/方向、色度帧内预测模式/方向、帧内分区信息、帧间分区信息、编码块分区标志、预测块分区标志、变换块分区标志、参考样点滤波方法、参考样点滤波器抽头、参考样点滤波器系数、预测块滤波方法、预测块滤波器抽头、预测块滤波器系数、预测块边界滤波方法、预测块边界滤波器抽头、预测块边界滤波器系数、帧内预测模式、帧间预测模式、运动信息、运动矢量、运动矢量差、参考画面索引、帧间预测角度、帧间预测指示符、预测列表利用标志、参考画面列表、参考画面、运动矢量预测因子索引、运动矢量预测因子候选、运动矢量候选列表、是否使用合并模式、合并索引、合并候选、合并候选列表、是否使用跳过模式、插值滤波器类型、插值滤波器抽头、插值滤波器系数、运动矢量尺寸、运动矢量的表示精度、变换类型、变换尺寸、初级(第一次)变换是否被使用的信息、次级变换是否被使用的信息、初级变换索引、次级变换索引、残差信号是否存在的信息、编码块样式、编码块标志(cbf)、量化参数、量化参数残差、量化
矩阵、是否应用环内滤波器、环内滤波器系数、环内滤波器抽头、环内滤波器形状/形式、是否应用去块滤波器、去块滤波器系数、去块滤波器抽头、去块滤波器强度、去块滤波器形状/形式、是否应用自适应样点偏移、自适应样点偏移值、自适应样点偏移类别、自适应样点偏移类型、是否应用自适应环路滤波器、自适应环路滤波器系数、自适应环路滤波器抽头、自适应环路滤波器形状/形式、二值化/反二值化方法、上下文模型确定方法、上下文模型更新方法、是否执行常规模式、是否执行旁路模式、上下文二进制位、旁路二进制位、有效系数标志、最后有效系数标志、针对系数组的单元的编码标志、最后有效系数的位置、关于系数的值是否大于1的标志、关于系数的值是否大于2的标志、关于系数的值是否大于3的标志、关于剩余系数值的信息、正负号信息、重建的亮度样点、重建的色度样点、残差亮度样点、残差色度样点、亮度变换系数、色度变换系数、量化的亮度等级、量化的色度等级、变换系数等级扫描方法、在解码器侧的运动矢量搜索区域的尺寸、在解码器侧的运动矢量搜索区域的形状、在解码器侧的运动矢量搜索的次数、关于ctu尺寸的信息、关于最小块尺寸的信息、关于最大块尺寸的信息、关于最大块深度的信息、关于最小块深度的信息、图像显示/输出顺序、条带标识信息、条带类型、条带分区信息、并行块标识信息、并行块类型、并行块分区信息、并行块组标识信息、并行块组类型、并行块组分区信息画面类型、输入样点的比特深度、重建样点的比特深度、残差样点的比特深度、变换系数的比特深度、量化的等级的比特深度、以及关于亮度信号的信息或关于色度信号的信息。
175.这里,用信号传送标志或索引可表示由编码器对相应的标志或索引进行熵编码并将其包括在比特流中,并且可表示由解码器从比特流对相应的标志或索引进行熵解码。
176.当编码设备100通过帧间预测执行编码时,编码的当前图像可被用作用于随后被处理的另一图像的参考图像。因此,编码设备100可对编码的当前图像进行重建或解码,或者将重建的或解码的图像作为参考图像存储在参考画面缓冲器190中。
177.量化的等级可在反量化单元160中被反量化,或者可在逆变换单元170中被逆变换。可由加法器175将经过反量化或逆变换的系数或者经过反量化和逆变换两者的系数与预测块相加。通过将经过反量化或逆变换的系数或者经过反量化和逆变换两者的系数与预测块相加,可产生重建块。这里,经过反量化或逆变换的系数或经过反量化和逆变换两者的系数可表示执行了反量化和逆变换中的至少一个的系数,并且可表示重建的残差块。
178.重建块可通过滤波器单元180。滤波器单元180可将去块滤波器、样点自适应偏移(sao)和自适应环路滤波器(alf)中的至少一个应用于重建样点、重建块或重建图像。滤波器单元180可被称为环内滤波器。
179.去块滤波器可去除在块之间的边界中产生的块失真。为了确定是否应用去块滤波器,可基于块中所包括的若干行或列中包括的样点来确定是否将去块滤波器应用于当前块。当将去块滤波器应用于块时,可根据所需的去块滤波强度来应用另一滤波器。
180.为了补偿编码误差,可通过使用样点自适应偏移将合适的偏移值与样点值相加。样点自适应偏移可以以样点为单位对经过去块的图像与原始图像的偏移进行校正。可使用考虑关于每一个样点的边缘信息来应用偏移的方法,或者可使用以下方法:将图像的样点分区为预定数量的区域,确定偏移被应用的区域,并对确定的区域应用偏移。
181.自适应环路滤波器可基于经过滤波的重建图像和原始图像的比较结果来执行滤波。可将包括在图像中的样点分区为预定组,可确定将被应用于每一个组的滤波器,并且可
对每一个组执行差异化滤波。是否应用alf的信息可通过编码单元(cu)被用信号传送,并且将被应用于每一个块的alf的形式和系数可变化。
182.已经通过滤波器单元180的重建块或重建图像可被存储在参考画面缓冲器190中。由滤波器单元180处理的重建块可以是参考图像的一部分。也就是说,参考图像是由通过滤波器单元180处理的重建块组成的重建图像。存储的参考图像可稍后在帧间预测或运动补偿时被使用。
183.图2是示出根据应用了本发明的实施例的解码设备的配置的框图。
184.解码设备200可以是解码器、视频解码设备或图像解码设备。
185.参照图2,解码设备200可包括熵解码单元210、反量化单元220、逆变换单元230、帧内预测单元240、运动补偿单元250、加法器225、滤波器单元260和参考画面缓冲器270。
186.解码设备200可接收从编码设备100输出的比特流。解码设备200可接收存储在计算机可读记录介质中的比特流,或者可接收通过有线/无线传输介质被流传输的比特流。解码设备200可通过使用帧内模式或帧间模式对比特流进行解码。此外,解码设备200可产生通过解码而产生的重建图像或解码图像,并输出重建图像或解码图像。
187.当在解码时使用的预测模式是帧内模式时,切换器可被切换到帧内。可选地,当在解码时使用的预测模式是帧间模式时,切换器可被切换到帧间模式。
188.解码设备200可通过对输入比特流进行解码来获得重建的残差块,并产生预测块。当重建的残差块和预测块被获得时,解码设备200可通过将重建的残差块与预测块相加来产生为解码目标的重建块。解码目标块可被称为当前块。
189.熵解码单元210可通过根据概率分布对比特流进行熵解码来产生符号。产生的符号可包括量化的等级形式的符号。这里,熵解码方法可以是上述熵编码方法的逆过程。
190.为了对变换系数等级(量化的等级)进行解码,熵解码单元210可通过使用变换系数扫描方法将单向矢量形式的系数改成为二维块形式。
191.可在反量化单元220中对量化的等级进行反量化,或者可在逆变换单元230中对量化的等级进行逆变换。量化的等级可以是进行反量化或逆变换或者进行反量化和逆变换两者的结果,并且可被产生为重建的残差块。这里,反量化单元220可将量化矩阵应用于量化的等级。
192.当使用帧内模式时,帧内预测单元240可通过对当前块执行空间预测来产生预测块,其中,空间预测使用与解码目标块相邻并且已经被解码的块的样点值。
193.当使用帧间模式时,运动补偿单元250可通过对当前块执行运动补偿来产生预测块,其中,运动补偿使用运动矢量以及存储在参考画面缓冲器270中的参考图像。
194.加法器225可通过将重建的残差块与预测块相加来产生重建块。滤波器单元260可将去块滤波器、样点自适应偏移和自适应环路滤波器中的至少一个应用于重建块或重建图像。滤波器单元260可输出重建图像。重建块或重建图像可被存储在参考画面缓冲器270中并且在执行帧间预测时被使用。由滤波器单元260处理的重建块可以是参考图像的一部分。也就是说,参考图像是由通过滤波器单元260处理的重建块组成的重建图像。存储的参考图像可稍后在帧间预测或运动补偿时被使用。
195.图3是示意性地示出当对图像进行编码和解码时的图像的分区结构的示图。图3示意性地示出将单个单元分区为多个更低等级的单元的示例。
196.为了有效地对图像进行分区,当进行编码和解码时,可使用编码单元(cu)。编码单元可被用作当对图像进行编码/解码时的基本单元。此外,编码单元可被用作用于在对图像进行编码/解码时区分帧内预测模式与帧间预测模式的单元。编码单元可以是用于预测、变换、量化、逆变换、反量化或对变换系数的编码/解码处理的基本单元。
197.参照图3,图像300按照最大编码单元(lcu)被顺序地分区,并且lcu单元被确定为分区结构。这里,lcu可以以与编码树单元(ctu)相同的含义被使用。单元分区可表示对与该单元相关联的块进行分区。在块分区信息中,可包括单元深度的信息。深度信息可表示单元被分区的次数或程度或者单元被分区的次数和程度两者。可基于树结构将单个单元分区为与深度信息分层地相关联的多个更低等级的单元。换句话说,单元和通过对该单元进行分区而产生的更低等级的单元可分别与节点和该节点的子节点相应。分区出的更低等级的单元中的每一个可具有深度信息。深度信息可以是表示cu的尺寸的信息,并且可被存储在每一个cu中。单元深度表示与对单元进行分区相关的次数和/或程度。因此,更低等级的单元的分区信息可包括关于更低等级的单元的尺寸的信息。
198.分区结构可表示编码单元(cu)在lcu 310内的分布。可根据是否将单个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的大小可减半。
199.此外,可通过使用cu的分区信息来表示cu是否被分区的信息。分区信息可以是1比特信息。除scu之外的所有cu可包括分区信息。例如,当分区信息的值为第一值时,可不对cu进行分区,当分区信息的值为第二值时,可对cu进行分区。
200.参照图3,深度为0的lcu可以是64
×
64的块。0可以是最小深度。深度为3的scu可以是8
×
8的块。3可以是最大深度。32
×
32的块和16
×
16的块的cu可分别被表示为深度1和深度2。
201.例如,当单个编码单元被分区为四个编码单元时,分区出的四个编码单元的水平尺寸和垂直尺寸可以是cu在被分区之前的水平尺寸和垂直尺寸的一半尺寸。在一个实施例中,当尺寸为32
×
32的编码单元被分区为四个编码单元时,分区出的四个编码单元中的每一个的尺寸可以为16
×
16。当单个编码单元被分区为四个编码单元时,可称编码单元可被分区为四叉树形式。
202.例如,当一个编码单元被分区为两个子编码单元时,该两个子编码单元中的每一个的水平尺寸或垂直尺寸(宽度或高度)可以是原始编码单元的水平尺寸或垂直尺寸的一半。例如,当尺寸为32
×
32的编码单元被垂直分区为两个子编码单元时,该两个子编码单元
中的每一个可具有16
×
32的尺寸。例如,当尺寸为8
×
32的编码单元被水平分区为两个子编码单元时,该两个子编码单元中的每一个可具有8
×
16的尺寸。当一个编码单元被分区为两个子编码单元时,可称编码单元被二分区,或者根据二叉树分区结构被分区。
203.例如,当一个编码单元被分区为三个子编码单元时,可按照1:2:1的比例对编码单元的水平尺寸或垂直尺寸进行分区,从而产生水平尺寸或垂直尺寸的比例为1:2:1的三个子编码单元。例如,当尺寸为16
×
32的编码单元被水平分区为三个子编码单元时,该三个子编码单元以从最上方子编码单元到最下方子编码单元的顺序可分别具有16
×
8、16
×
16和16
×
8的尺寸。例如,当尺寸为32
×
32的编码单元被垂直划分为三个子编码单元时,该三个子编码单元以从左侧子编码单元到右侧子编码单元的顺序可分别具有8
×
32、16
×
32和8
×
32的尺寸。当一个编码单元被分区为三个子编码单元时,可称编码单元被三分区或者根据三叉树分区结构被分区。
204.在图3中,编码树单元(ctu)320是四叉树分区结构、二叉树分区结构和三叉树分区结构全部被应用的ctu的示例。
205.如上所述,为了对ctu进行分区,可应用四叉树分区结构、二叉树分区结构和三叉树分区结构中的至少一个。可根据预定的优先级顺序将各种树分区结构顺序地应用于ctu。例如,可将四叉树分区结构优先应用于ctu。不能再使用四叉树分区结构进行分区的编码单元可与四叉树的叶节点相应。与四叉树的叶节点相应的编码单元可用作二叉树和/或三叉树分区结构的根节点。也就是说,与四叉树的叶节点相应的编码单元可根据二叉树分区结构或三叉树分区结构被进一步分区,或者可不被进一步分区。因此,通过阻止从与四叉树的叶节点相应的编码单元的二叉树分区或三叉树分区得到的编码单元被执行进一步的四叉树分区,块分区操作和/或用信号传送分区信息的操作可被有效执行。
206.可使用四分区信息用信号传送与四叉树的节点相应的编码单元被分区的事实。具有第一值(例如,“1”)的四分区信息可指示当前编码单元按照四叉树分区结构被分区。具有第二值(例如,“0”)的四分区信息可指示当前编码单元不按照四叉树分区结构被分区。四分区信息可以是具有预定长度(例如,一个比特)的标志。
207.在二叉树分区与三叉树分区之间可没有优先级。也就是说,与四叉树的叶节点相应的编码单元可进一步被执行二叉树分区和三叉树分区中的任意分区。此外,通过二叉树分区或三叉树分区产生的编码单元可被执行进一步的二叉树分区或进一步的三叉树分区,或者可不被进一步分区。
208.在二叉树分区和三叉树分区之间不存在优先级的树结构被称为多类型树结构。与四叉树的叶节点相应的编码单元可用作多类型树的根节点。可使用多类型树分区指示信息、分区方向信息和分区树信息中的至少一个来用信号传送是否对与多类型树的节点相应的编码单元进行分区。为了对与多类型树的节点相应的编码单元进行分区,可顺序地用信号传送多类型树分区指示信息、分区方向信息和分区树信息。
209.具有第一值(例如,“1”)的多类型树分区指示信息可指示当前编码单元将被执行多类型树分区。具有第二值(例如,“0”)的多类型树分区指示信息可指示当前编码单元将不被执行多类型树分区。
210.当与多类型树的节点相应的编码单元按照多类型树分区结构被进一步分区时,所述编码单元可包括分区方向信息。分区方向信息可指示当前编码单元将在哪个方向上根据
多类型树分区被分区。具有第一值(例如,“1”)的分区方向信息可指示当前编码单元将被垂直分区。具有第二值(例如,“0”)的分区方向信息可指示当前编码单元将被水平分区。
211.当与多类型树的节点相应的编码单元按照多类型树分区结构被进一步分区时,当前编码单元可包括分区树信息。分区树信息可指示将被用于对多类型树的节点进行分区的树分区结构。具有第一值(例如,“1”)的分区树信息可指示当前编码单元将按照二叉树分区结构被分区。具有第二值(例如,“0”)的分区树信息可指示当前编码单元将按照三叉树分区结构被分区。
212.分区指示信息、分区树信息和分区方向信息均可以是具有预定长度(例如,一个比特)的标志。
213.四叉树分区指示信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个可被熵编码/熵解码。为了对那些类型的信息进行熵编码/熵解码,可使用关于与当前编码单元相邻的邻近编码单元的信息。例如,当前编码单元的左侧邻近编码单元和/或上方邻近编码单元的分区类型(被分区或不被分区、分区树和/或分区方向)与当前编码单元的分区类型相似的可能性很高。因此,可从关于邻近编码单元的信息推导用于对关于当前编码单元的信息进行熵编码/熵解码的上下文信息。关于邻近编码单元的信息可包括四分区信息、多类型树分区指示信息、分区方向信息和分区树信息中的至少任意一个。
214.作为另一示例,在二叉树分区和三叉树分区中,可优先执行二叉树分区。也就是说,当前编码单元可首先被执行二叉树分区,并且随后可将与二叉树的叶节点相应的编码单元设置为用于三叉树分区的根节点。在这种情况下,对于与三叉树的节点相应的编码单元,可既不执行四叉树分区也不执行二叉树分区。
215.不能按照四叉树分区结构、二叉树分区结构和/或三叉树分区结构被分区的编码单元成为用于编码、预测和/或变换的基本单元。也就是说,所述编码单元不能被进一步分区以用于预测和/或变换。因此,在比特流中可不存在用于将编码单元分区为预测单元和/或变换单元的分区结构信息和分区信息。
216.然而,当编码单元(即,用于分区的基本单元)的尺寸大于最大变换块的尺寸时,可递归地对该编码单元进行分区,直到将该编码单元的尺寸减小到等于或小于最大变换块的尺寸为止。例如,当编码单元的尺寸为64
×
64时并且当最大变换块的尺寸为32
×
32时,可将该编码单元分区为用于变换的四个32
×
32的块。例如,当编码单元的尺寸为32
×
64并且最大变换块的尺寸为32
×
32时,可将该编码单元分区为用于变换的两个32
×
32的块。在这种情况下,不单独用信号传送编码单元的用于变换的分区,并且可通过编码单元的水平尺寸或垂直尺寸与最大变换块的水平尺寸或垂直尺寸之间的比较来确定编码单元的用于变换的分区。例如,当编码单元的水平尺寸(宽度)大于最大变换块的水平尺寸(宽度)时,可将该编码单元垂直地二等分。例如,当编码单元的垂直尺寸(高度)大于最大变换块的垂直尺寸(高度)时,可将该编码单元水平地二等分。
217.可在编码单元的更高等级用信号传送或确定编码单元的最大尺寸和/或最小尺寸的信息以及变换块的最大尺寸和/或最小尺寸的信息。所述更高等级可以是例如序列级、画面级、条带级、并行块组级、并行块级等。例如,可将编码单元的最小尺寸确定为4
×
4。例如,可将变换块的最大尺寸确定为64
×
64。例如,可将变换块的最小尺寸确定为4
×
4。
218.可在编码单元的更高等级用信号传送或确定与四叉树的叶节点相应的编码单元
的最小尺寸(四叉树最小尺寸)的信息和/或多类型树的从根节点到叶节点的最大深度(多类型树的最大树深度)的信息。例如,所述更高等级可以是序列级、画面级、条带级、并行块组级、并行块级等。可针对帧内画面条带和帧间画面条带中的每一个用信号传送或确定四叉树的最小尺寸的信息和/或多类型树的最大深度的信息。
219.可在编码单元的更高等级用信号传送或确定ctu的尺寸与变换块的最大尺寸之间的差信息。例如,所述更高等级可以是序列级、画面级、条带级、并行块组级、并行块级等。可基于编码树单元的尺寸和所述差信息来确定与二叉树的各个节点相应的编码单元的最大尺寸(在下文中,称为二叉树的最大尺寸)的信息。与三叉树的各个节点相应的编码单元的最大尺寸(在下文中,称为三叉树的最大尺寸)可依据条带的类型而变化。例如,针对帧内画面条带,三叉树的最大尺寸可以是32
×
32。例如,针对帧间画面条带,三叉树的最大尺寸可以是128
×
128。例如,可将与二叉树的各个节点相应的编码单元的最小尺寸(在下文中,称为二叉树的最小尺寸)和/或与三叉树的各个节点相应的编码单元的最小尺寸(在下文中,称为三叉树的最小尺寸)设置为编码块的最小尺寸。
220.作为另一示例,可在条带级用信号传送或确定二叉树的最大尺寸和/或三叉树的最大尺寸。可选地,可在条带级用信号传送或确定二叉树的最小尺寸和/或三叉树的最小尺寸。
221.依据上述各种块的尺寸信息和深度信息,四分区信息、多类型树分区指示信息、分区树信息和/或分区方向信息可被包括在比特流中或可不被包括在比特流中。
222.例如,当编码单元的尺寸不大于四叉树的最小尺寸时,该编码单元不包括四分区信息。因此,四分区信息可被推断为第二值。
223.例如,当与多类型树的节点相应的编码单元的尺寸(水平尺寸和垂直尺寸)大于二叉树的最大尺寸(水平尺寸和垂直尺寸)和/或三叉树的最大尺寸(水平尺寸和垂直尺寸)时,该编码单元可不被二分区或三分区。因此,可不用信号传送多类型树分区指示信息,而是多类型树分区指示信息可被推断为第二值。
224.可选地,当与多类型树的节点相应的编码单元的尺寸(水平尺寸和垂直尺寸)与二叉树的最大尺寸(水平尺寸和垂直尺寸)相同,和/或是三叉树的最大尺寸(水平尺寸和垂直尺寸)的两倍大时,该编码单元可不进一步被二分区或三分区。因此,可不用信号传送多类型树分区指示信息,而是多类型树分区指示信息可被推断为第二值。这是因为,当按照二叉树分区结构和/或三叉树分区结构对编码单元进行分区时,产生了小于二叉树的最小尺寸和/或三叉树的最小尺寸的编码单元。
225.可选地,可基于虚拟管线数据单元的尺寸(在下文中,管线缓冲器大小)来限制二叉树分区或三叉树分区。例如,当通过二叉树分区或三叉树分区将编码单元划分为不适合管线缓冲器大小的子编码单元时,相应的二叉树分区或三叉树分区可能受到限制。管线缓冲器大小可以是最大变换块的尺寸(例如,64
×
64)。例如,当管线缓冲器大小是64
×
64时,可限制下面的划分。
226.‑
针对编码单元的n
×
m(n和/或m是128)三叉树分区
227.‑
针对编码单元的沿水平方向的128
×
n(n<=64)二叉树分区
228.‑
针对编码单元的沿垂直方向的n
×
128(n<=64)二叉树分区
229.可选地,当与多类型树的节点相应的编码单元的深度等于多类型树的最大深度
时,可不对该编码单元进一步进行二分区和/或三分区。因此,可不用信号传送多类型树分区指示信息,而是多类型树分区指示信息可被推断为第二值。
230.可选地,只有当垂直方向二叉树分区、水平方向二叉树分区、垂直方向三叉树分区和水平方向三叉树分区中的至少一个对于与多类型树的节点相应的编码单元是可行的时,才可用信号传送多类型树分区指示信息。否则,可不对该编码单元进行二分区和/或三分区。因此,可不用信号传送多类型树分区指示信息,而是多类型树分区指示信息可被推断为第二值。
231.可选地,只有当垂直方向二叉树分区和水平方向二叉树分区两者或者垂直方向三叉树分区和水平方向三叉树分区两者对于与多类型树的节点相应的编码单元是可行的时,才可用信号传送分区方向信息。否则,可不用信号传送分区方向信息,而是分区方向信息可被推断为指示可能的分区方向的值。
232.可选地,只有当垂直方向二叉树分区和垂直方向三叉树分区两者或者水平方向二叉树分区和水平方向三叉树分区两者对于与多类型树的节点相应的编码树是可行的时,才可用信号传送分区树信息。否则,可不用信号传送分区树信息,而是分区树信息可被推断为指示可能的分区树结构的值。
233.图4是示出帧内预测处理的示图。
234.图4中的从中心到外部的箭头可表示帧内预测模式的预测方向。
235.可通过使用当前块的邻近块的参考样点来执行帧内编码和/或解码。邻近块可以是重建的邻近块。例如,可通过使用包括在重建的邻近块中的参考样点的编码参数或值来执行帧内编码和/或解码。
236.预测块可表示通过执行帧内预测产生的块。预测块可与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等的矩形块。
237.可根据针对当前块的帧内预测模式来执行帧内预测。当前块可具有的帧内预测模式的数量可以是固定值,并且可以是根据预测块的属性不同地确定的值。例如,预测块的属性可包括预测块的尺寸和预测块的形状等。
238.不管块尺寸为多少,可将帧内预测模式的数量固定为n。可选地,帧内预测模式的数量可以是3、5、9、17、34、35、36、65或67等。可选地,帧内预测模式的数量可根据块尺寸或颜色分量类型或者块尺寸和颜色分量类型两者而变化。例如,帧内预测模式的数量可根据颜色分量是亮度信号还是色度信号而变化。例如,随着块尺寸变大,帧内预测模式的数量可增加。可选地,亮度分量块的帧内预测模式的数量可大于色度分量块的帧内预测模式的数量。
239.帧内预测模式可以是非角度模式或角度模式。非角度模式可以是dc模式或平面模式,并且角度模式可以是具有特定方向或角度的预测模式。帧内预测模式可由模式编号、模式值、模式数字、模式角度和模式方向中的至少一个来表示。帧内预测模式的数量可以是大于1的m,包括非角度模式和角度模式。为了对当前块进行帧内预测,可执行确定是否可将包括在重建的邻近块中的样点用作当前块的参考样点的步骤。当存在不能用作当前块的参考样点的样点时,通过对包括在重建的邻近块中的样点中的至少一个样点值进行复制或执行
插值或者执行复制和插值两者而获得的值可被用于替换样点的不可用样点值,因此,经过替换的样点值被用作当前块的参考样点。
240.图49是示出能够用于帧内预测的参考样点的示图。
241.如在图49中所示出的,参考样点线0至参考样点线3中的至少一个可被用于当前块的帧内预测。在图49中,片段a和片段f的样点可分别用最接近片段b和片段e的样点来填充,来代替从重建的邻近块检索。可用信号传送指示将被用于当前块的帧内预测的参考样点线的索引信息。例如,在图49中,可用信号传送参考样点线指示符0、1和2作为指示参考样点线0、1和2的索引信息。在当前块的上方边界是ctu的边界时,仅参考样点线0可以是可用的。因此,在这种情况下,可以不用信号传送索引信息。当使用除了参考样点线0之外的参考样点线时,可以不执行稍后将描述的针对预测块的滤波。
242.当进行帧内预测时,可基于帧内预测模式和当前块尺寸将滤波器应用于参考样点和预测样点中的至少一个。
243.在平面模式的情况下,当产生当前块的预测块时,根据预测目标样点在预测块内的位置,可通过使用当前样点的上侧参考样点与左侧参考样点以及当前块的右上侧参考样点与左下侧参考样点的加权和来产生预测目标样点的样点值。此外,在dc模式的情况下,当产生当前块的预测块时,可使用当前块的上侧参考样点与左侧参考样点的平均值。此外,在角度模式的情况下,可通过使用当前块的上侧参考样点、左侧参考样点、右上侧参考样点和/或左下侧参考样点来产生预测块。为了产生预测样点值,可执行实数单位的插值。
244.在颜色分量之间的帧内预测的情况下,可基于第一颜色分量的相应重建块来产生当前块的第二颜色分量的预测块。例如,第一颜色分量可以是亮度分量,并且第二颜色分量可以是色度分量。对于颜色分量之间的帧内预测,可基于模板推导第一颜色分量与第二颜色分量之间的线性模型的参数。模板可包括当前块的上方相邻样点和/或左侧相邻样点以及与其相应的第一颜色分量的重建块的上方相邻样点和/或左侧相邻样点。例如,可使用模板中的样点中的具有最大值的第一颜色分量的样点值和与其相应的第二颜色分量的样点值、以及模板中的样点中的具有最小值的第一颜色分量的样点值和与其相应的第二颜色分量的样点值推导线性模型的参数。当推导线性模型的参数时,可将相应重建块应用于线性模型以产生当前块的预测块。根据视频格式,可对第一颜色分量的重建块和相应重建块的相邻样点执行子取样。例如,当第二颜色分量的一个样点与第一颜色分量的四个样点相应时,可对第一颜色分量的四个样点进行子采样以计算一个相应样点。在此情况下,可基于相应子采样的样点执行线性模型的参数推导和颜色分量之间的帧内预测。可将是否执行颜色分量之间的帧内预测和/或模板的范围用信号传送为帧内预测模式。
245.可沿水平方向或垂直方向将当前块分区为两个或四个子块。可顺序地重建分区出的子块。也就是说,可对子块执行帧内预测以产生子预测块。另外,可对子块执行反量化和/或逆变换以产生子残差块。可通过将子预测块与子残差块相加来产生重建的子块。重建的子块可被用作子子块的帧内预测的参考样点。子块可以是包括预定数量(例如,16)或更多个样点的块。因此,例如,在当前块是8
×
4块或4
×
8块时,可将当前块分区为两个子块。此外,在当前块为4
×
4块时,可以不将当前块分区为子块。在当前块具有其它尺寸时,可将当前块分区为四个子块。可用信号传送关于是否基于子块和/或分区方向(水平或垂直)执行帧内预测的信息。基于子块的帧内预测可限于仅在使用参考样点线0时执行。当执行基于子
块的帧内预测时,可以不执行稍后将描述的针对预测块的滤波。
246.可通过对帧内预测的预测块执行滤波来产生最终预测块。可通过将预定权重应用于滤波目标样点、左侧参考样点、上方参考样点和/或左上方参考样点来执行滤波。可基于块尺寸、帧内预测模式和预测块中的滤波目标样点的位置中的至少一个来确定用于滤波的权重和/或参考样点(范围、位置等)。可仅在预定帧内预测模式(例如,dc、平面、垂直、水平、对角线和/或相邻对角线模式)的情况下执行滤波。相邻对角线模式可以是将对角线模式与k相加或将对角线模式与k相减的模式。例如,k可以是8或更小的正整数。
247.可通过预测与当前块相邻存在的块的帧内预测模式来对当前块的帧内预测模式进行熵编码/熵解码。在当前块与邻近块的帧内预测模式相同时,可通过使用预定标志信息来用信号传送当前块与邻近块的帧内预测模式相同的信息。此外,可用信号传送多个邻近块的帧内预测模式中的与当前块的帧内预测模式相同的帧内预测模式的指示符信息。在当前块与邻近块的帧内预测模式不同时,可通过基于邻近块的帧内预测模式执行熵编码/熵解码来对当前块的帧内预测模式信息进行熵编码/熵解码。
248.图5是示出帧间画面预测处理的实施例的示图。
249.在图5中,矩形可表示画面。在图5中,箭头表示预测方向。根据画面的编码类型,可将画面分类为帧内画面(i画面)、预测画面(p画面)和双预测画面(b画面)。
250.可在不需要帧间画面预测的情况下通过帧内预测对i画面进行编码。可通过使用在相对于当前块的一个方向(即,前向或后向)上存在的参考画面,通过帧间画面预测来对p画面进行编码。可通过使用在相对于当前块的两个方向(即,前向和后向)上预设的参考画面,通过帧间画面预测来对b画面进行编码。当使用帧间画面预测时,编码器可执行帧间画面预测或运动补偿,并且解码器可执行相应的运动补偿。
251.在下文中,将对帧间画面预测的实施例进行详细描述。
252.可使用参考画面和运动信息来执行帧间画面预测或运动补偿。
253.可通过编码设备100和解码设备200中的每一个在帧间画面预测期间推导当前块的运动信息。可通过使用重建的邻近块的运动信息、同位块(也称为col块或共同定位块)的运动信息和/或与同位块相邻的块的运动信息来推导当前块的运动信息。同位块可表示先前重建的同位画面(也称为col画面或共同定位画面)内的在空间上与当前块位于相同位置的块。同位画面可以是包括在参考画面列表中的一个或更多个参考画面中的一个画面。
254.运动信息的推导方法可取决于当前块的预测模式而不同。例如,应用于帧间预测的预测模式包括amvp模式、合并模式、跳过模式、具有运动矢量差的合并模式、子块合并模式、几何分区模式、组合帧间帧内预测模式、仿射模式等。这里,合并模式可被称为运动合并模式。
255.例如,当amvp被用作预测模式时,可将重建的邻近块的运动矢量、同位块的运动矢量、与同位块相邻的块的运动矢量和(0,0)运动矢量中的至少一个确定为针对当前块的运动矢量候选,并且通过使用运动矢量候选产生运动矢量候选列表。可通过使用产生的运动矢量候选列表来推导当前块的运动矢量候选。可基于推导的运动矢量候选来确定当前块的运动信息。同位块的运动矢量或与同位块相邻的块的运动矢量可被称为时间运动矢量候选,并且重建的邻近块的运动矢量可被称为空间运动矢量候选。
256.编码设备100可计算当前块的运动矢量与运动矢量候选之间的运动矢量差(mvd),
并且可对运动矢量差(mvd)执行熵编码。此外,编码设备100可对运动矢量候选索引执行熵编码并产生比特流。运动矢量候选索引可指示包括在运动矢量候选列表中的运动矢量候选中的最佳运动矢量候选。解码设备可对包括在比特流中的运动矢量候选索引执行熵解码,并且可通过使用经过熵解码的运动矢量候选索引从包括在运动矢量候选列表中的运动矢量候选中选择解码目标块的运动矢量候选。此外,解码设备200可将经过熵解码的mvd与通过熵解码而提取的运动矢量候选相加,从而推导解码目标块的运动矢量。
257.另外,编码设备100可对计算出的mvd的分辨率信息执行熵编码。解码设备200可使用mvd分辨率信息来调整熵解码的mvd的分辨率。
258.另外,编码设备100基于仿射模型计算当前块中的运动矢量与候选运动矢量之间的运动矢量差(mvd),并对mvd执行熵编码。解码设备200通过经由熵解码的mvd和仿射控制运动矢量候选的总和推导解码目标块的仿射控制运动矢量,来基于每一个子块推导运动矢量。
259.比特流可包括指示参考画面的参考画面索引。参考画面索引可通过编码设备100被熵编码,并且随后作为比特流被用信号传送到解码设备200。解码设备200可基于推导的运动矢量和参考画面索引信息来产生解码目标块的预测块。
260.推导当前的运动信息的方法的另一示例可以是合并模式。合并模式可表示合并多个块的运动的方法。合并模式可表示从邻近块的运动信息推导当前块的运动信息的模式。当应用合并模式时,可使用重建的邻近块的运动信息和/或同位块的运动信息来产生合并候选列表。运动信息可包括运动矢量、参考画面索引和帧间画面预测指示符中的至少一个。预测指示符可指示单向预测(l0预测或l1预测)或双向预测(l0预测和l1预测)。
261.合并候选列表可以是所存储的运动信息的列表。包括在合并候选列表中的运动信息可以是以下各项中的至少一个:与当前块相邻的邻近块的运动信息(空间合并候选)、当前块的在参考画面中的同位块的运动信息(时间合并候选)、通过存在于合并候选列表中的运动信息的组合产生的新运动信息、作为在当前块之前被编码/解码的块的运动信息(基于历史的合并候选)和零合并候选。
262.编码设备100可通过对合并标志和合并索引中的至少一个执行熵编码来产生比特流,并且可将比特流用信号传送到解码设备200。合并标志可以是指示是否针对每一个块执行合并模式的信息,并且合并索引可以是指示当前块的邻近块中的哪个邻近块是合并目标块的信息。例如,当前块的邻近块可包括在当前块的左侧的左侧邻近块、被布置在当前块上方的上方邻近块和在时间上与当前块相邻的时间邻近块。
263.另外,编码设备100对合并候选的运动信息中的用于校正运动矢量的校正信息执行熵编码,并将其用信号传送给解码设备200。解码设备200可基于校正信息校正由合并索引选择的合并候选的运动矢量。这里,校正信息可包括关于是否执行校正的信息、校正方向信息和校正大小信息中的至少一个。如上所述,基于用信号传送的校正信息校正合并候选的运动矢量的预测模式可被称为具有运动矢量差的合并模式。
264.跳过模式可以是将邻近块的运动信息按照原样应用于当前块的模式。当应用跳过模式时,编码设备100可对哪个块的运动信息将被用作当前块的运动信息的事实的信息执行熵编码以产生比特流,并且可将比特流用信号传送到解码设备200。编码设备100可不将关于运动矢量差信息、编码块标志和变换系数等级中的至少任意一个的语法元素用信号传
送到解码设备200。
265.子块合并模式可表示以编码块(cu)的子块为单位推导运动信息的模式。当应用子块合并模式时,可使用参考图像中的与当前子块同位的子块的运动信息(基于子块的时间合并候选)和/或仿射控制点运动矢量合并候选来产生子块合并候选列表。
266.几何分区模式可表示通过将当前块分区为预定方向来推导运动信息、使用所推导出的运动信息中的每一个来推导每一个预测样点、并且通过对所推导出的预测样点中的每一个进行加权来推导当前块的预测样点的模式。
267.帧间
‑
帧内组合预测模式可表示通过对由帧间预测产生的预测样点和由帧内预测产生的预测样点进行加权来推导当前块的预测样点的模式。
268.解码设备200可自行校正推导的运动信息。解码设备200可基于由推导出的运动信息指示的参考块搜索预定区域,并且推导具有最小sad的运动信息作为校正的运动信息。
269.解码设备200可使用光流补偿经由帧间预测推导出的预测样点。
270.图6是示出变换和量化处理的示图。
271.如在图6中所示出的,对残差信号执行变换处理和/或量化处理以产生量化的等级信号。残差信号是原始块与预测块(即,帧内预测块或帧间预测块)之间的差。预测块是通过帧内预测或帧间预测产生的块。变换可以是初级变换、次级变换或者初级变换和次级变换两者。对残差信号进行初级变换产生变换系数,并且对该变换系数进行次级变换产生次级变换系数。
272.从各种预先定义的变换方案中选择的至少一种方案用于执行初级变换。例如,预定义的变换方案的示例包括离散余弦变换(dct)、离散正弦变换(dst)和卡洛南
‑
洛伊变换(karhunen
‑
lo
è
ve,klt)。通过初级变换产生的变换系数可经历次级变换。可根据当前块和/或当前块的邻近块的编码参数来确定用于初级变换和/或次级变换的变换方案。可选地,可用信号传送指示变换方案的变换信息。基于dct的变换可包括例如dct
‑
2、dct
‑
8等。基于dst的变换可包括例如dst
‑
7。
273.可通过对残差信号或执行初级变换和/或次级变换的结果执行量化来产生量化的等级信号(量化系数)。取决于块的帧内预测模式或块尺寸/形状,可根据对角线右上扫描、垂直扫描和水平扫描中的至少一个来对量化的等级信号进行扫描。例如,当沿对角线右上扫描对系数进行扫描时,块形式的系数改成为一维矢量形式。除了对角线右上扫描之外,可根据变换块的尺寸和/或帧内预测模式使用水平地对二维块形式的系数进行扫描的水平扫描或垂直地对二维块形式的系数进行扫描的垂直扫描。扫描的量化的等级系数可被熵编码以插入比特流中。
274.解码器对比特流进行熵解码以获得量化的等级系数。可通过逆扫描以二维块形式排列量化的等级系数。对于逆扫描,可使用对角线右上扫描、垂直扫描和水平扫描中的至少一个。
275.然后,可对量化的等级系数进行反量化,随后根据需要进行次级逆变换,并且最后根据需要进行初级逆变换,以产生重建的残差信号。
276.可在环内滤波之前针对通过帧内预测或帧间预测重建的亮度分量执行动态范围中的逆映射。动态范围可被划分为16个相等的片段,并且针对每一个片段的映射函数可用信号被传送。可在条带级或并行块组级用信号传送映射函数。可基于映射函数推导用于执
行逆映射的逆映射函数。在逆映射区域中执行环内滤波、参考画面存储和运动补偿,并且经由使用映射函数的映射将通过帧间预测产生的预测块转换为映射区域,然后将其用于产生重建块。然而,由于在映射区域中执行帧内预测,因此经由帧内预测产生的预测块可被用于产生重建块而无需映射/逆映射。
277.在当前块是色度分量的残差块时,可通过对映射区域的色度分量执行缩放来将残差块转换为逆映射区域。可在条带级或并行块组级用信号传送缩放的可用性。只有当针对亮度分量的映射可用并且亮度分量的划分和色度分量的划分遵循相同的树结构时,才可应用缩放。可基于与色差块相应的亮度预测块的样点值的平均值来执行缩放。在此情况下,在当前块使用帧间预测时,亮度预测块可表示映射的亮度预测块。可通过使用亮度预测块的样点值的平均值所属的片段的索引参照查找表来推导缩放所必需的值。最后,通过使用推导的值对残差块进行缩放,可将残差块转换到逆映射区域。然后,可在逆映射区域中执行色度分量块恢复、帧内预测、帧间预测、环内滤波和参考画面存储。
278.可通过序列参数集用信号传送指示亮度分量和色度分量的映射/逆映射是否可用的信息。
279.可基于指示当前画面中的当前块与参考块之间的位移的块矢量来产生当前块的预测块。以这种方式,用于参考当前画面产生预测块的预测模式被称为帧内块复制(ibc)模式。ibc模式可被应用于m
×
n(m<=64,n<=64)编码单元。ibc模式可包括跳过模式、合并模式、amvp模式等等。在跳过模式或合并模式的情况下,构建合并候选列表,并且用信号传送合并索引,使得一个合并候选可被指定。指定的合并候选的块矢量可被用作当前块的块矢量。合并候选列表可包括空间候选、基于历史的候选、基于两个候选的平均值的候选和零合并候选中的至少一个。在amvp模式的状况下,可用信号传送差块矢量。另外,可从当前块的左侧邻近块和上方邻近块推导预测块矢量。可用信号传送关于将使用的邻近块的索引。ibc模式下的预测块被包括在当前ctu或左侧ctu中并且限于已重建的区域中的块。例如,块矢量的值可被限制,使得当前块的预测块位于按编码/解码顺序在当前块所属的64
×
64块之前的三个64
×
64块的区域中。通过以此方式限制块矢量的值,可减少根据ibc模式实施方案的存储器消耗和装置复杂度。
280.在下文中,将描述通过改进作为视频编码处理之一的变换方法来提高视频压缩效率的方法。更具体地讲,传统视频编码中的编码的步骤示意性地包括:对作为当前原始图像的一部分的原始块进行预测的帧内/帧间预测步骤;用于残差块的变换和量化步骤,其中,所述残差块是预测的预测块与原始块之间的差;以及熵编码步骤,其是基于针对已经执行变换和量化的块的系数和在前一步骤获得的压缩信息的概率的无损压缩方法。因此,产生作为原始图像的压缩形式的比特流,并且将比特流发送到解码器或存储在记录介质中。下面将在本说明书中描述的乱序和离散正弦变换(下文中,称为“sdst”)旨在通过提高变换效率来提高压缩效率。
281.根据本发明的sdst方法使用离散正弦变换类型
‑
7(下文中称为“dst
‑
vii”或“dst
‑
7”)而不是作为视频编码中广泛使用的变换核的离散余弦变换类型
‑
2(下文中称为“dct
‑
ii”或“dct
‑
2”),从而更好地反映图像共有的频率特性。
282.根据本发明的变换方法,与传统的视频编码方法相比,即使在相对低的比特率下也可获得高的客观视频质量。
283.dst
‑
7可被应用于残差块的数据。可基于与残差块相应的预测模式来执行将dst
‑
7应用于残差块。例如,dst
‑
7可被应用于在帧间模式下编码的残差块。根据本发明的实施例,可在重排或乱序残差块的数据之后应用dst
‑
7。这里,乱序可意味着图像数据的重排,并且可等同于残差信号重排或翻转。这里,残差块可具有与残差、剩余块、剩余信号、残差信号、剩余数据或残差数据相同的含义。此外,残差块可具有与编码器和解码器中的残差块的重建形式的重建残差、重建剩余块、重建剩余信号、重建残差信号、重建剩余数据或重建残差数据相同的含义。
284.根据本发明的实施例,sdst可使用dst
‑
7作为变换核。这里,sdst的变换核不限于dst
‑
7,并且可使用各种类型的dst和dct中的至少一种,诸如,离散正弦变换类型
‑
1(dst
‑
1)、离散正弦变换类型
‑
2(dst
‑
2)、离散正弦变换类型
‑
3(dst
‑
3)、
……
、离散正弦变换类型
‑
n(dst
‑
n)、离散余弦变换类型
‑
1(dct
‑
1)、离散余弦变换类型
‑
2(dct
‑
2)、离散余弦变换类型
‑
3型(dct
‑
3)、
……
、离散余弦变换类型
‑
n(dct
‑
n)等(这里,n可以是1或大于1的正整数)。
285.下面的等式1可表示根据本发明的实施例的执行一维dct
‑
2的方法。这里,n可表示块的尺寸,k可表示频率分量的位置,并且x
n
可表示空间域中的第n个系数的值。
286.[等式1]
[0287][0288]
可通过利用上面的等式1对残差块执行水平变换和垂直变换来实现二维域中的dct
‑
2。
[0289]
dct
‑
2变换核可被定义为下面的等式2。这里,x
k
可表示频域中根据位置的基矢量,并且n可表示频域的大小。
[0290]
[等式2]
[0291][0292]
另外,图7是示出根据本发明的dct
‑
2的频域中的基矢量的示图。图7示出dct
‑
2在频域中的频率特性。这里,通过dct
‑
2的x0基矢量计算的值可表示dc分量。
[0293]
dct
‑
2可被用于尺寸为4
×
4、8
×
8、16
×
16、32
×
32等的残差块的变换处理。
[0294]
另外,可基于残差块的尺寸、残差块的颜色分量(例如,亮度分量和色度分量)以及与残差块相应的预测模式中的至少一个来选择性地使用dct
‑
2。例如,当残差块的尺寸为4
×
4并且在帧内模式下被编码,残差块的分量为亮度分量时,使用dct
‑
2。例如,当在帧内模式下编码的残差块的水平长度(宽度)在预定范围内(例如,等于或大于4个像素且等于或小于16个像素)并且水平长度(宽度)不长于垂直长度(高度)时,可将第一变换核用于水平变换。否则,可将第二变换核用于水平变换。例如,当在帧内模式下编码的残差块的垂直长度(高度)等于或长于4个像素且等于或短于16个像素且垂直长度(高度)不长于水平长度(宽度)时,可将第一变换核用于垂直变换。否则,可将第二变换核用于垂直变换。第一变换核可不同于第二变换核。也就是说,可在预定条件下基于块的形状隐式地确定用于在帧内模式下编码的块的水平变换方法和垂直变换方法。例如,第一变换核可以是dst
‑
7,并且第二变
换核可以是dct
‑
2。这里,残差块是变换目标,因此它可具有与变换块相同的含义。这里,预测模式可表示帧间预测或帧内预测。此外,在帧内预测的情况下,预测模式是指帧内预测模式或帧内预测方向。
[0295]
通过dct
‑
2变换核的变换可针对具有邻近像素之间的变化小的特性的块(如图像的背景)实现高压缩效率。然而,dct
‑
2可能不适合作为具有复杂图案的区域(诸如,纹理图像)的变换核。这是因为当通过dct
‑
2对邻近像素之间具有低相关性的块进行变换时,在频域的高频分量中出现大量变换系数。当在高频域中频繁产生变换系数时,图像的压缩效率可能降低。为了提高压缩效率,具有大的值的系数需要出现在低频分量附近,并且系数的值需要在高频分量处接近零。
[0296]
下面的等式3可表示根据本发明的实施例的执行一维dst
‑
7的方法。这里,n可表示块的尺寸,k可表示频率分量的位置,并且x
n
可表示空间域中的第n个系数的值。
[0297]
[等式3]
[0298][0299]
可通过利用上面的等式3对残差块执行水平变换和垂直变换来实现二维域中的dst
‑
7。
[0300]
dst
‑
7变换核可被定义为以下等式4。这里,x
k
可表示dst
‑
7的第k基矢量,i可表示频域中的位置,并且n可表示频域的大小。
[0301]
[等式4]
[0302][0303]
dst
‑
7可被用于尺寸为2
×
2、4
×
4、8
×
8、16
×
16、32
×
32、64
×
64、128
×
128等中的至少一个的残差块的变换处理。
[0304]
另外,dst
‑
7可被应用于矩形块而不是正方形块。例如,dst
‑
7可被应用于水平尺寸不同于垂直尺寸(诸如,8
×
4、16
×
8、32
×
4、64
×
16等)的矩形块的垂直变换和水平变换中的至少一个。当可选择性地应用多种变换方法时,将dct
‑
2应用于正方形块的水平变换和垂直变换。当不能选择性地应用多种变换方法时,将dst
‑
7应用于正方形块的水平变换和垂直变换。
[0305]
此外,可基于残差块的尺寸、残差块的颜色分量(例如,亮度分量和色度分量)、与残差块相应的预测模式、帧内预测模式(方向)和残差块的形状中的至少一个来选择性地使用dst
‑
7。例如,当残差块的尺寸为4
×
4并且在帧内模式下被编码,并且残差块的分量为亮度分量时,使用dst
‑
7。这里,预测模式可表示帧间预测或帧内预测。此外,在帧内预测的情况下,预测模式是指帧内预测模式或帧内预测方向。例如,针对色度分量,基于块形状来选择变换方法可能是不可用的。例如,当帧内预测模式是颜色分量之间的预测时,基于块形状来选择变换方法是不可用的。例如,针对色度分量的变换方法可由通过比特流用信号传送的信息来指定。在当前块被分区为多个子块并且对每一个子块执行帧内预测时,基于帧内
预测模式和/或块尺寸(水平和/或垂直尺寸)来确定针对当前块的变换方法。例如,当帧内预测模式是非方向的(dc或平面)并且水平长度(宽度)(或垂直长度(高度))在预定范围内时,将第一变换核用于水平变换(垂直变换)。否则,使用第二变换核。第一变换核可不同于第二变换核。例如,第一变换核可以是dst
‑
7,第二变换核可以是dct
‑
2。所述预定范围可例如从4个像素到16个像素。当块的尺寸不在所述预定范围内时,将相同的核(例如,第二变换核)用于水平变换和垂直变换。当块的尺寸在所述预定范围内时,将不同的变换核用于彼此相邻的帧内预测模式。例如,当第二变换核和第一变换核分别被用于模式27中的水平变换和垂直变换时,将第一变换核和第二变换核分别用于与模式27相邻的模式26和模式28中的水平变换和垂直变换。
[0306]
另外,图8是示出根据本发明的dst
‑
7的每一个频域中的基矢量的示图。参照图8,dst
‑
7的第一基矢量(x0)为曲线形状。通过此,预测出:与dct
‑
2相比,dst
‑
7针对图像中具有大空间改变的块将示出更高的变换性能。
[0307]
在对帧内预测的编码单元(cu)内的4
×
4变换单元(tu)进行变换时,可使用dst
‑
7。通过反映帧内预测的特性,即误差量随着距参考样点的距离增加而增加的特性,可使用具有更高的变换效率的dst
‑
7。也就是说,在残差信号的量随着在空间域中在块内距位置(0,0)的距离增加而增加的块的情况下,可将dst
‑
7用于高效地压缩块。
[0308]
如上所述,为了提高变换效率,重要的是使用适合于图像的频率特性的变换核。具体地,由于对针对原始块的残差块执行变换,因此可通过检查cu、pu或tu块内的残差信号的分布特性来知道dst
‑
7和dct
‑
2的变换效率。
[0309]
图9是示出根据在帧间模式下预测的8
×
8编码单元(cu)的2n
×
2n预测单元(pu)内的位置的平均残差值的分布的示图,其中,通过在低延迟
‑
p配置环境中的测试获得“仙人掌”序列。
[0310]
参照图9,图9的左侧示出作为块内的平均残差信号值中的前30%而标记的相对大的值。右侧示出作为左侧所示出的同一块内的平均残差信号值中的前70%而标记的相对大的值。
[0311]
如图9中所示出的,在帧间模式下预测的8
×
8cu的2n
×
2n pu内的残差信号的分布具有以下特性:小的残差信号值主要集中在块的中心附近并且残差信号值随着远离块的中心点而增加。也就是说,残差信号值在块边界处较大。如上文所描述的残差信号的分布特性可以是pu内的残差信号的共同特征,而不管帧间预测的cu可具有的cu分区模式和pu分区模式的尺寸(2n
×
2n、2n
×
n、n
×
2n、n
×
n、nr
×
2n、nl
×
2n、2n
×
nu和2n
×
nd)如何。
[0312]
图10是示出在帧间预测模式(帧间模式)下预测的8
×
8编码单元(cu)的2n
×
2n预测单元(pu)内的残差信号的分布特性的三维图。
[0313]
参照图10,发现具有相对小的值的残差信号以集中的方式分布在块的中心附近,并且更靠近块边界的残差信号具有相对更大的值。
[0314]
基于图9和图10中示出的残差信号的分布特性,当使用dst
‑
7而不是dct
‑
2时,帧间预测的cu的pu内的残差信号的变换更有效。
[0315]
在下文中,将描述作为使用dst
‑
7作为变换核的变换方法之一的sdst。
[0316]
在下文中,块可表示cu、pu和tu中的一个。
[0317]
可以以两个步骤执行根据本发明的sdst。第一步骤在于对在帧间模式或帧内模式
下预测的cu的pu内的残差信号执行乱序。第二步骤在于将dst
‑
7应用于已经执行乱序的块内的残差信号。
[0318]
可沿第一方向扫描布置在当前块(例如,cu、pu或tu)内的残差信号,并且可沿第二方向重排残差信号。也就是说,可沿第一方向扫描布置在当前块内的残差信号,并且可沿第二方向重排残差信号以执行乱序。这里,残差信号可表示指示原始信号与预测信号之间的差信号的信号。也就是说,残差信号可表示在执行变换和量化中的至少一个之前的信号。可选地,残差信号可表示执行了变换和量化中的至少一个的信号形式。此外,残差信号可表示重建的残差信号。也就是说,残差信号可表示已经执行了逆变换和反量化中的至少一个的信号。此外,残差信号可表示在执行逆变换和反量化中的至少一个之前的信号。
[0319]
另外,第一方向(或扫描方向)可以是光栅扫描顺序、右上方对角线扫描顺序、水平扫描顺序和垂直扫描顺序中的一个。此外,第一方向可被定义为以下(1)至(10)项中的至少一项。
[0320]
(1)从顶行至底行进行扫描,并且在一行中从左侧至右侧进行扫描
[0321]
(2)从顶行至底行进行扫描,并且在一行中从右侧至左侧进行扫描
[0322]
(3)从底行至顶行进行扫描,并且在一行中从左侧至右侧进行扫描
[0323]
(4)从底行至顶行进行扫描,并且在一行中从右侧至左侧进行扫描
[0324]
(5)从左列至右列进行扫描,并且在一列中从顶部至底部进行扫描
[0325]
(6)从左列至右列进行扫描,并且在一列中从底部至顶部进行扫描
[0326]
(7)从右列至左列进行扫描,并且在一列中从顶部至底部进行扫描
[0327]
(8)从右列至左列进行扫描,并且在一列中从底部至顶部进行扫描
[0328]
(9)以螺旋形状进行扫描:从块的内部(或外部)至块的外部(或内部)进行扫描,并且沿顺时针/逆时针方向进行扫描
[0329]
(10)对角线扫描:在块内从一个顶点起,沿左上方向、右上方向、左下方向或右下方向上对角地进行扫描
[0330]
另外,关于第二方向(或重排方向),可选择性地使用(1)至(10)扫描方向中的至少一个。第一方向和第二方向可相同,或者可彼此不同。
[0331]
可以以当前块为单位执行针对残差信号的扫描和重排处理。
[0332]
这里,重排可表示在块内沿第一方向扫描的残差信号沿第二方向被布置在相同尺寸的块中。这里,用于沿第一方向进行扫描的块的尺寸可不同于用于沿第二方向重排的块的尺寸。
[0333]
此外,扫描和重排被描述为根据第一方向和第二方向单独执行,但扫描和重排可针对第一方向作为一个处理来执行。例如,针对块内的残差信号,可从顶行至底行执行扫描,并且在一行中从右侧至左侧执行扫描以存储(重排)在块中。
[0334]
另外,可在当前块内以子块为预定单元执行针对残差信号的扫描和重排处理。这里,子块可以是尺寸等于或小于当前块的块。子块可以是通过以四叉树形式、二叉树形式等对当前块进行分区而产生的块。
[0335]
子块单元可具有固定的尺寸和/或形状(例如,4
×
4、4
×
8、8
×
8、
……
、n
×
m,其中,n和m为正整数)。此外,可以可变地推导子块单元的尺寸和/或形状。例如,可根据当前块的尺寸、形状和/或预测模式(帧间和帧内)来确定子块单元的尺寸和/或形状。
[0336]
可依据子块的位置自适应地确定扫描方向和/或重排方向。在这种情况下,不同的扫描方向和/或重排方向可被用于子块,或者当前块的全部子块或一部分子块可使用相同的扫描方向和/或相同的重排方向。
[0337]
图11是示出根据本发明的编码单元(cu)的2n
×
2n预测单元(pu)模式中的残差信号的分布特性的示图。
[0338]
参照图11,按照四叉树结构将pu分区为四个子块,并且每一个子块的箭头方向示出残差信号的分布特性。具体地,每一个子块的箭头方向指示残差信号增大的方向。这是由于pu内的残差信号共有的分布特性,与pu分区模式无关。因此,可执行用于重排每一个子块的残差信号的乱序操作,以具有适合于dst
‑
7变换的分布特性。
[0339]
图12是示出根据本发明的2n
×
2n预测单元(pu)乱序之前和乱序之后的残差信号的分布特性的示图。
[0340]
参照图12,上方块示出在帧间模式下预测的8
×
8cu的2n
×
2n pu内的残差信号进行乱序之前的分布。下面的等式5示出根据图12中的上方块内的每一个残差信号的位置的值。
[0341]
[等式5]
[0342][0343]
由于在帧间模式下预测的cu的pu内的残差信号的分布特性,许多具有相对小的值的残差信号分布在图12中的上方块内的中心区域中,并且许多具有较大的值的残差信号分布为更靠近上方块的边界。
[0344]
图12中的下方块示出在执行乱序之后的2n
×
2n pu内的残差信号的分布特性。这示出针对已经执行乱序的pu的每一个子块的残差信号的分布是适合于dst
‑
7的第一基矢量的残差信号的分布。也就是说,由于每一个子块内的残差信号随着远离位置(0,0)而具有更大的值,因此当执行变换时,通过dst
‑
7对频率进行变换的变换系数值集中在低频域中。
[0345]
下面的等式6示出依据pu内的四个子块中的每一个的位置而执行乱序的方法,其中,所述四个子块通过以四叉树结构对pu进行分区而产生。
[0346]
[等式6]
[0347]
s0
[0348]
a
′
(x,y)=a(w
blk0
‑1‑
x,h
blk0
‑1‑
y)
[0349]
s1
[0350]
b
′
(x,y)=b(x,h
blk1
‑1‑
y)
[0351]
s2
[0352]
c
′
(x,y)=c(w
blk2
‑1‑
x,y)
[0353]
s3
[0354]
d
′
(x,y)=d(x,y)
[0355]
0≤x≤w
k
,0≤y≤h
k
,k∈{blk0,blk1,blk2,blk3}
[0356]
这里,w
k
和h
k
分别表示pu中的第k子块(k∈{blk0,blk1,blk2,blk3})的宽度和高度,并且blk0至blk3分别表示以四叉树结构对pu进行分区而产生的子块。此外,x和y分别表示子块内的水平位置和垂直位置。如图12中的上方块所示出的,在执行乱序之前的残差信
号的位置由a(x,y)、b(x,y)、c(x,y)和d(x,y)来指定。如图12中的下方块所示出的,通过乱序改变后的残差信号的位置由a
′
(x,y)、b
′
(x,y)、c
′
(x,y)和d
′
(x,y)来指定。
[0357]
图13是示出根据本发明的子块的4
×
4残差数据重排的示例的示图。
[0358]
参照图13,子块可表示属于8
×
8预测块的多个子块中的一个。图13的(a)示出重排之前的原始残差数据的位置,并且图13的(b)示出重排的残差数据的位置。
[0359]
参照图13的(c),残差数据的值可从位置(0,0)至位置(3,3)逐渐增加。这里,每一个子块内的水平一维残差数据和/或垂直一维残差数据可具有图8中所示出的基矢量形式的数据分布。
[0360]
也就是说,关于根据本发明的乱序,可重排每一个子块的残差数据,使得残差数据的分布适合于dst
‑
7基矢量的形式。在对每一子块进行乱序之后,可将dst
‑
7变换应用于在每一子块单元中重排的数据。
[0361]
另外,可基于tu的深度以四叉树结构对子块进行进一步分区,或者可选择性地进行重排处理。例如,当tu的深度为二时,将属于2n
×
2n pu的n
×
n子块分区为n/2
×
n/2块,并且将重排处理应用于n/2
×
n/2块中的每一个。这里,可重复执行基于四叉树的tu分区,直到达到最小tu尺寸。
[0362]
此外,当tu的深度为零时,将dct
‑
2变换应用于2n
×
2n块。这里,可以不执行残差数据的重排。
[0363]
另外,根据本发明的sdst方法使用pu块内的残差信号的分布特性,因此执行sdst的tu的分区结构可被定义为基于pu以四叉树结构进行分区。
[0364]
图14(a)和图14(b)是示出根据预测单元(pu)模式和变换单元(tu)的乱序方法的编码单元(cu)的变换单元(tu)分区结构的实施例的示图。图14(a)和图14(b)针对帧间预测的pu的不对称分区模式(2n
×
nu、2n
×
nd、nr
×
2n和nl
×
2n)中的每一个示出根据tu的深度的tu的四叉树分区结构。
[0365]
参照图14(a)和图14(b),每一个块的粗实线表示cu内的pu,并且细实线表示tu。此外,每一个tu内的s0、s1、s2和s3表示上面等式6中定义的tu内的残差信号的乱序方法。
[0366]
另外,在图14(a)和图14(b)中,每一个pu的深度为零的tu在块尺寸上可与pu相同(例如,在2n
×
2n pu中,深度为零的tu的尺寸可与pu的尺寸相同)。这里,稍后将参照图18描述深度为零的tu内的残差信号的乱序。
[0367]
此外,当cu、pu和tu中的至少一个为矩形形状(例如,2n
×
nu、2n
×
nd、nr
×
2n和nl
×
2n)时,在残差信号重排之前,将cu、pu和tu中的至少一个分区为n个子块,诸如两个、四个、六个、八个、16个子块等,然后将残差信号重排应用于通过分区而产生的子块。
[0368]
此外,当cu、pu和tu中的至少一个为正方形形状(例如,2n
×
2n和n
×
n)时,在残差信号重排之前,将cu、pu和tu中的至少一个分区为n个子块,例如四个、八个、16个子块等,然后将残差信号重排应用于通过分区而产生的子块。
[0369]
此外,当通过对cu或pu进行分区而产生tu且tu具有顶层深度(不被分区)时,将tu分区为n个子块,例如两个、四个、六个、八个、16个子块等,然后以通过分区而产生的子块为单位执行残差信号重排。
[0370]
在以上示例中,当cu、pu和tu具有不同形状或不同尺寸时,执行残差信号重排。然而,当cu、pu和tu中的至少两个具有相同形状或相同尺寸时,也可应用残差信号重排。
[0371]
另外,在图14(a)和图14(b)中,描述了帧间预测的pu的不对称分区模式,但不限于此,tu的分区和tu的乱序可被应用于pu的对称分区模式(2n
×
n和n
×
2n)。
[0372]
可对已经执行乱序的pu内的每一个tu执行dst
‑
7变换。这里,当cu、pu和tu具有相同尺寸和相同形状时,对一个块执行dst
‑
7变换。
[0373]
考虑到帧间预测的pu块的残差信号的分布特性,不管cu的尺寸和pu分区模式如何,在乱序之后执行dst
‑
7变换可比执行dct
‑
2变换更高效。
[0374]
在变换之后,当许多变换系数分布在低频分量(特别是dc分量)附近时,在i)量化之后的能量损失的最小化方面以及ii)熵编码处理中的比特使用的减少方面,残差信号的分布具有比相反情况更高的压缩效率。
[0375]
图15是示出根据2n
×
2n预测单元(pu)的残差信号的分布执行dct
‑
2变换和sdst变换的结果的示图。
[0376]
图15的左侧所示出的附图示出当cu的pu分区模式为2n
×
2n时残差信号从中心到边界增加的分布。此外,图15的中间所示出的附图示出对在pu内的深度为1的tu执行dct
‑
2变换的残差信号的分布。图15的右侧所示出的附图示出对在pu内的深度为1的tu进行乱序之后执行dst
‑
7变换(sdst)的残差信号的分布。
[0377]
参照图15,与对具有上述残差信号的分布特性的pu的tu执行dct
‑
2的情况相比,当执行sdst时,更多的系数集中在低频分量附近,并且关于高频分量的系数具有更小的值。根据变换特性,发现当对帧间预测的pu的残差信号进行变换时,执行sdst在压缩效率方面比执行dct
‑
2更有利。
[0378]
执行dst
‑
7变换的块的单元是在pu中定义的执行sdst的tu单元。如参照图14所描述的,tu可通过以四叉树或二叉树对具有最大深度的pu单元进行分区而产生。这意味着不仅可对正方形块执行dst
‑
7变换,还可对乱序之后的矩形块执行dst
‑
7变换。
[0379]
例如,针对帧间预测的块,可对与该块具有相同尺寸的残差块进行解码,或可对与该块的一部分相应的子残差块进行解码。可针对该块用信号传送用于此的信息,并且该信息可以是例如标志。当对具有与该块相同尺寸的残差块进行解码时,通过对包含在比特流中的信息进行解码来确定关于变换核的信息。当对与该块的一部分相应的子残差块进行解码时,基于用于指定子残差块的类型和/或块内的位置的信息来确定用于子残差块的变换核。例如,关于子残差块的类型和/或块内的位置的信息可以包含在用于信号传送的比特流中。这里,当块大于32
×
32时,不执行基于子残差块的类型和/或块内的位置来确定变换核的操作。例如,针对大于32
×
32的块,可应用预定变换核(例如,dct
‑
2),或可显式地用信号传送关于变换核的信息。可选地,当块的宽度或高度大于32时,不执行基于子残差块的类型和/或块内的位置来确定变换核的操作。例如,针对64
×
8块,可应用预定变换核(例如,dct
‑
2),或可显式地用信号传送关于变换核的信息。
[0380]
关于子残差块的类型的信息可以是块的分区信息。块的分区信息可以是例如指示水平分区和垂直分区中的一个的分区方向信息。可选地,块的分区信息可包含分区比例信息。例如分区比例可包括1:1、1:3和/或3:1。分区方向信息和分区比例信息可作为单独语法元素或作为单个语法元素被用信号传送。
[0381]
关于子残差块的位置的信息可以指示块内的位置。例如,当块的分区是垂直分区时,关于位置的信息指示左侧和右侧中的一个。此外,当块的分区是水平分区时,关于位置
的信息指示顶部和底部中的一个。
[0382]
可基于类型信息和/或位置信息来确定子残差块的变换核。可针对水平变换和垂直变换独立地确定变换核。例如,可基于分区方向来确定变换核。例如,在垂直分区的情况下,可将第一变换核应用于垂直变换。在水平分区的情况下,可将第一变换核应用于水平变换。例如,可在垂直分区的情况下将第一变换核或第二变换核应用于水平变换,并且可在水平分区的情况下将第一变换核或第二变换核应用于垂直变换。例如,在垂直分区的情况下,可将第二变换核应用于左侧位置处的水平变换,并且可将第一变换核应用于右侧位置处的水平变换。此外,在水平分区的情况下,可将第二变换核应用于顶部位置处的垂直变换,并且可将第一变换核应用于底部位置处的垂直变换。例如,第一变换核和第二变换核可分别是dst
‑
7和dct
‑
8。例如,第一变换核和第二变换核可分别是dst
‑
7和dct
‑
2。然而,不限于此,在本说明书中描述的各种变换核中,任何两个不同的变换核可被用作第一变换核和第二变换核。这里,块可表示cu或tu。此外,子残差块可表示子tu。
[0383]
图16是示出根据本发明的sdst处理的示图。
[0384]
在步骤s1610,输入作为变换目标的tu的残差信号。这里,tu可以是通过对预测模式为帧间模式的pu进行分区而产生的tu。在步骤s1620,可对作为变换目标的tu执行乱序。接下来,在步骤s1630,对已经执行乱序的tu执行dst
‑
7变换,在步骤s1640,执行量化,并且执行一系列后续处理,由此以此顺序执行sdst处理。
[0385]
另外,可对预测模式为帧内模式的块执行乱序和dst
‑
7变换。
[0386]
在下文中,作为用于在编码器中实现sdst变换的实施例,将描述:i)对帧间预测的pu内的所有tu执行sdst的方法,以及ii)通过速率失真优化选择性地执行sdst或dct
‑
2的方法。在以下方法中,描述帧间预测的块,但不限于此,以下方法可以应用于帧内预测的块。
[0387]
图17是示出根据本发明的针对帧间预测的编码单元(cu)的每一个预测单元(pu)分区模式的变换单元(tu)的分区和残差绝对值的大小的分布特性的示图。
[0388]
参照图17,在帧间预测模式中,tu可通过按照四叉树或二叉树对cu进行分区直到最大深度而产生,并且可存在pu的总共k个分区模式。这里,k是正整数,并且例如,在图17中,k是8。
[0389]
如上面参照图10所描述的,根据本发明的sdst使用帧间预测的cu中的pu中的残差信号的分布特性。此外,tu可通过按照四叉树结构或按照二叉树结构对pu进行分区而产生。也就是说,深度为0的tu可相应于pu,并且深度为1的tu可相应于通过按照四叉树结构或按照二叉树结构对pu分区一次而获得的每一个子块。
[0390]
图17中的每一个块示出tu通过相对于帧间预测的cu的每一个pu分区模式按照深度为二进行分区而产生的形式。这里,粗实线可表示pu,细实线可表示tu,并且每一个tu的箭头方向可表示tu内的残差信号值增大的方向。每一个tu可根据pu内的位置进行上文关于乱序步骤所描述的乱序。
[0391]
具体地讲,在深度为0的tu的情况下,除了以针对乱序步骤提出的方法执行乱序之外,还可以以各种方法执行乱序。
[0392]
各种方法之一在于从pu块的中心位置处的残差信号开始扫描,并且在块的边界方向上以圆圈方式扫描附近的残差信号,并且从pu中的位置(0,0)开始以z字形扫描顺序重排扫描的残差信号。
[0393]
图18是示出根据本发明的实施例的预测单元(pu)内的深度为0的变换单元(tu)的残差信号扫描顺序和重排顺序的示图。
[0394]
图18的(a)和图18的(b)示出用于乱序的扫描顺序,图18的(c)示出用于sdst的重排顺序。
[0395]
可对经过乱序的每一个tu内的残差信号执行dst
‑
7变换,并且可执行量化、熵编码等。此乱序方法使用根据pu分区模式的tu内的残差信号的分布特性,因此可优化残差信号的分布以提高作为下一步骤的dst
‑
7变换的效率。
[0396]
在编码器中,可根据在图16所示出的sdst处理对帧间预测的pu内的所有tu执行sdst。根据帧间预测的cu的pu分区模式,可按照与图17中所示出的形式相同的形式从pu执行tu分区直到深度为2。通过使用图17中的tu内的残差信号的分布特性,可对每一个tu内的残差信号执行乱序。之后,可执行使用dst
‑
7变换核的变换,然后可执行量化、熵编码等。
[0397]
当重建帧间预测的pu内的tu的残差信号时,解码器对帧间预测的pu内的每一个tu执行dst
‑
7逆变换,并且对重建的残差信号执行逆乱序,从而获得重建的残差信号。在此sdst方法中,sdst被应用于帧间预测的pu内的所有tu的变换方法,因此不存在需要进一步用信号传送到解码器的标志或信息。也就是说,可在没有任何对sdst方法的信号传送的情况下执行sdst方法。
[0398]
另外,即使对帧间预测的pu内的所有tu执行sdst,编码器也将上面关于乱序步骤所描述的用于残差信号的重排方法的一部分确定为最佳重排方法,并且可将关于所确定的重排方法的信息用信号传送给解码器。
[0399]
作为执行sdst的另一实施例,可选择两种或更多种变换方法(例如,dct
‑
2和sdst)中的至少一种变换方法来应用以便对pu进行变换。根据此方法,与对帧间预测的pu内的所有tu执行sdst的实施例相比,编码器的计算可能增加。然而,在dct
‑
2和sdst中选择更高效的变换方法,因此可提高压缩效率。
[0400]
图19是示出根据本发明的通过速率失真优化(rdo)的dct
‑
2或sdst选择编码处理的流程图。
[0401]
参照图19,在步骤s1910,可输入作为变换目标的tu的残差信号。可将通过在步骤s1920对在帧间模式下预测的pu内的每一个tu执行dct
‑
2而获得的tu的成本与通过在步骤s1930执行乱序和在步骤s1940执行dst
‑
7而获得的tu的成本进行比较,从而在步骤s1950在率失真方面确定tu的最佳变换模式(例如,dst
‑
2或sdst)。接下来,根据所确定的变换模式,在步骤s1960,可对变换的tu执行量化,并且可执行熵编码。
[0402]
另外,仅当tu满足以下条件中的一个时,才选择sdst和dct
‑
2中的最佳变换模式。
[0403]
i)不管pu分区模式如何,tu需要是cu,或者,tu需要通过以四叉树或以二叉树对cu进行分区而产生。
[0404]
ii)tu需要是根据pu分区模式的pu,或者,tu需要通过以四叉树或以二叉树对pu进行分区而产生。
[0405]
iii)不管pu分区模式如何,tu都不是通过对cu进行分区而产生的。
[0406]
条件i)是这样一种方法:针对以四叉树或二叉树进行分区而不管pu分区模式如何的cu,或者针对从分区为cu尺寸而获得的tu,在率失真优化方面将dct
‑
2或sdst选为变换模式。
[0407]
条件ii)与对帧间预测的pu内的所有tu执行sdst的实施例相关。也就是说,根据pu分区模式,对以四叉树或以二叉树进行分区的pu执行dct
‑
2和sdst,或者对从分区为pu尺寸而获得的tu执行dct
‑
2和sdst,并且考虑每一个成本,确定tu的变换模式。
[0408]
条件iii)为不管pu分区模式如何,cu或tu不在具有与tu相同尺寸的cu单元中分区,并且执行dct
‑
2和sdst以确定tu的变换模式。
[0409]
在对针对特定pu分区模式中深度为0的tu块的率失真成本(rd成本)进行比较时,将对深度为0的tu执行sdst的结果的成本与对深度为0的tu执行dct
‑
2的结果的成本进行比较,并且可选择深度为0的tu的变换模式。
[0410]
图20是示出根据本发明的选择dct
‑
2或sdst用于解码的处理的流程图。
[0411]
参照图20,在步骤s2010,可针对每一个tu参考用信号传送的sdst标志。这里,sdst标志可以是指示sdst是否被用作变换模式的标志。
[0412]
当sdst标志为真(在步骤s2020
‑
是)时,将tu的变换模式确定为sdst模式。然后,在步骤s2030,对tu内的残差信号执行dst
‑
7逆变换。针对已经执行了dst
‑
7逆变换的tu内的残差信号,在步骤s2040,根据pu内的tu的位置执行使用上述等式6的逆乱序。最后,在步骤s2060获得重建的残差信号。
[0413]
另外,当sdst标志不为真(在步骤s2020
‑
否)时,将tu的变换模式确定为dct
‑
2模式。然后,在步骤s2050,对tu内的残差信号执行dct
‑
2逆变换,并且在步骤s2060获得重建的残差信号。
[0414]
当使用sdst方法时,重排残留数据。这里,残差数据可表示与帧间预测的pu相应的残差数据。使用可分离性质从dst
‑
7推导出的整数变换可被用作sdst方法。
[0415]
另外,为了选择性地使用dct
‑
2或dst
‑
7,可用信号传送sdst_flag。以tu为单位执行sdst_flag的信号传送。sdst_flag可指示需要识别是否执行sdst。
[0416]
图21是示出根据本发明的使用sdst的解码处理的流程图。
[0417]
参照图21,在步骤s2110,可以以tu为单位对sdst_flag进行熵解码。
[0418]
首先,当tu的深度为零(在步骤s2120
‑
是)时,在步骤s2170和s2180不使用sdst并且使用dct
‑
2来重建tu。这是因为可在tu的深度为1至tu的最大深度值之间执行sdst。
[0419]
此外,虽然tu的深度不为零(在步骤s2120
‑
否),但是当tu的变换模式是变换跳过模式和/或tu的编码块标志(cbf)值为零时,在步骤s2180,在不执行逆变换的情况下重建tu。
[0420]
另外,当tu的深度不为0(在步骤s2120
‑
否)时,并且当tu的变换模式不是变换跳过模式并且tu的cbf值不为0(在步骤s2130
‑
否)时,在步骤s2140,检查sdst_flag值。
[0421]
这里,当sdst_flag值为1(在步骤s2140
‑
是)时,在步骤s2150,执行基于dst
‑
7的逆变换,在步骤s2160,对tu的残差数据执行逆乱序,并且在步骤s2180,重建tu。相反,当sdst_flag值不为1(在步骤s2140
‑
否)时,在步骤s2170,执行基于dct
‑
2的逆变换,并且在步骤s2180,重建tu。
[0422]
这里,作为乱序或重排的目标的信号可以是逆变换之前的残差信号、反量化之前的残差信号、逆变换之后的残差信号、反量化之后的残差信号、重建的残差信号和重建的块信号中的至少一个。
[0423]
另外,在图21中,描述了以tu为单位用信号传送sdst_flag,但可基于tu的变换模
式和tu的cbf值中的至少一个来选择性地用信号传送sdst_flag。例如,当tu的变换模式是变换跳过模式和/或tu的cbf值为0时,不用信号传送sdst_flag。此外,即使当tu的深度为零时,也不用信号传送sdst_flag。
[0424]
另外,描述了以tu为单位用信号传送sdst_flag,但可以以预定单位用信号传送sdst_flag。例如,可以以视频、序列、画面、条带、并行块、编码树单元、编码单元、预测单元和变换单元中的至少一个为单位用信号传送sdst_flag。
[0425]
与图20中的sdst标志和图21中的sdst_flag的实施例类似,可以以tu为单位通过n
‑
比特标志或索引(n是等于或大于1的正整数)对所选择的变换模式信息进行熵编码/解码。变换模式信息可指示是否通过dct
‑
2对tu执行变换、是否通过sdst对tu执行变换、是否通过dst
‑
7对tu执行变换等中的至少一个。
[0426]
在仅帧间预测的pu内的tu的情况下,可在旁路模式下对变换模式信息进行熵编码/解码。此外,在变换跳过模式、残差差分pcm(rdpcm)模式和无损模式中的至少一个的情况下,省略对变换模式信息的熵编码/解码,并且不用信号传送变换模式信息。
[0427]
此外,当块的编码块标志为零时,省略对变换模式信息的熵编码/解码,并且不用信号传送变换模式信息。当编码块标志为零时,在解码器中省略逆变换处理。因此,即使在解码器中不存在变换模式信息时,也可进行块的重建。
[0428]
然而,变换模式信息不限于通过标志表示变换模式,并且可以以预定义表和索引的形式来实现变换模式信息。这里,预定义表可以是定义针对每一个索引的可用变换模式。
[0429]
另外,在图19至图21中,描述了选择性地使用sdst或dct
‑
2,但不限于此,可应用dct
‑
n或dst
‑
n(n是正整数)来代替dct
‑
2。
[0430]
此外,可沿水平方向和垂直方向分别执行dct
‑
2或sdst的变换。可将相同的变换模式用于水平方向和垂直方向,或者可使用不同的变换模式。
[0431]
此外,可对关于是否将dct
‑
2用于水平方向和垂直方向、是否使用sdst和是否使用dst
‑
7的变换模式信息分别进行熵编码/解码。可将变换模式信息例如作为索引用信号传送。由相同索引指示的变换核针对帧内预测的块和帧间预测的块可以是相同的。
[0432]
此外,可以以cu、pu、tu和块中的至少一个为单位对变换模式信息进行熵编码/解码。
[0433]
此外,可根据亮度分量或色度分量用信号传送变换模式信息。换句话说,可根据y分量、cb分量或cr分量用信号传送变换模式信息。例如,当用信号传送关于是针对y分量执行dct
‑
2还是执行sdst的变换模式信息时,针对y分量用信号传送的变换模式信息可用作块的变换模式,而无需用信号传送针对cb分量和cr分量中的至少一个的任何变换模式信息。
[0434]
这里,可利用使用上下文模型的算术编码方法对变换模式信息进行熵编码/解码。当变换模式信息以预定义表和索引的形式来实现时,利用使用上下文模型的算术编码方法对多个二进制位中的全部二进制位或部分二进制位进行熵编码/解码。
[0435]
此外,可依据块尺寸选择性地对变换模式信息进行熵编码/解码。例如,在当前块的尺寸等于或大于64
×
64时,不对变换模式信息进行熵编码/解码。当尺寸等于或小于32
×
32时,对变换模式信息进行熵编码/解码。
[0436]
此外,当在当前块内存在非零变换系数或l个量化的等级时,不对变换模式信息进行熵编码/解码,并且执行dct
‑
2、dst
‑
7和sdst方法中的一种方法。这里,不管块内的量化的
等级或非零变换系数的位置如何,都可以不对变换模式信息进行熵编码/解码。此外,仅当在块内的左上方位置处存在非零变换系数或量化的等级时,可以不对变换模式信息进行熵编码/解码。这里,l可以是包括零的正整数,并且例如可以是1。
[0437]
此外,在当前块内存在非零变换系数或j个或更多个量化的等级时,对变换模式信息进行熵编码/解码。这里,j是正整数。
[0438]
此外,变换模式信息是根据同位块的变换模式限制某些变换模式的使用或者同位块的变换模式由几个比特来表示的方法,变换方法的二值化方法可以变化。
[0439]
可以基于当前块的预测模式、帧内预测模式、帧间预测模式、tu深度、尺寸和形状中的至少一个来限制地使用上述sdst。
[0440]
例如,当在帧间模式下对当前块进行编码时,使用sdst。
[0441]
可定义允许sdst的最小/最大深度。在这种情况下,在当前块的深度等于或大于最小深度时,使用sdst。可选地,在当前块的深度等于或小于最大深度时,使用sdst。这里,最小/最大深度可以是固定值,或者可基于指示最小/最大深度的信息可变地确定最小/最大深度。可从编码器用信号传送指示最小/最大深度的信息,并且可基于当前块/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导指示最小/最大深度的信息。
[0442]
可定义允许sdst的最小/最大尺寸。类似地,在当前块的尺寸等于或大于最小尺寸时,使用sdst。可选地,在当前块的尺寸等于或小于最大尺寸时,使用sdst。这里,最小/最大尺寸可以是固定值,或者可基于指示最小/最大尺寸的信息可变地确定最小/最大尺寸。可从编码器用信号传送指示最小/最大尺寸的信息,并且可基于当前/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导指示最小/最大尺寸的信息。例如,在当前块是4
×
4时,dct
‑
2被用作变换方法,并且不对关于是使用dct
‑
2还是使用sdst的变换模式信息进行熵编码/解码。
[0443]
可定义允许sdst的块的形状。在这种情况下,在当前块的形状是定义的块形状时,使用sdst。此外,可定义不允许sdst的块的形状。在这种情况下,在当前块的形状是定义的块形状时,不使用sdst。允许或不允许sdst的块的形状可以是固定的,并且可从编码器用信号传送关于此的信息。可选地,可基于当前块/邻近块的属性(例如,尺寸、深度和/或形状)从解码器推导允许或不允许sdst的块的形状。允许或不允许sdst的块的形状可表示例如在m
×
n块中的m、n和/或m与n之间的比例。
[0444]
此外,当tu的深度为0时,dct
‑
2或dst
‑
7被用作变换方法,并且关于已使用哪种变换方法的变换模式信息被熵编码/解码。当dst
‑
7被用作变换方法时,执行对残差信号的重排处理。此外,当tu的深度为1或更大时,dct
‑
2或sdst被用作变换方法,并且关于已使用哪种变换方法的变换模式信息被熵编码/解码。
[0445]
此外,可依据cu和pu的分区形状或当前块的形状而选择性地使用变换方法。
[0446]
根据实施例,当cu和pu的分区形状或者当前块的形状为2n
×
2n时,使用dct
‑
2。关于其余分区形状和块形状,可选择性地使用dct
‑
2或sdst。
[0447]
此外,当cu和pu的分区形状或者当前块的形状为2n
×
n或n
×
2n时,使用dct
‑
2。关于其余分区形状和块形状,可选择性地使用dct
‑
2或sdst。
[0448]
此外,当cu和pu的分区形状或者当前块的形状为nr
×
2n、nl
×
2n、2n
×
nu或2n
×
nd时,使用dct
‑
2。关于其余分区形状和块形状,可选择性地使用dct
‑
2或sdst。
[0449]
另外,当以通过对当前块进行分区而产生的块为单位执行sdst或dst
‑
7时,可以以通过分区而产生的块为单位对变换系数(量化的等级)执行扫描和逆扫描。此外,当以通过对当前块进行分区而产生的块为单位执行sdst或dst
‑
7时,可以以未被分区的当前块为单位对变换系数(量化的等级)执行扫描和逆扫描。
[0450]
此外,可根据当前块的帧内预测模式(方向)、当前块的尺寸和当前块的分量(亮度分量或色度分量)中的至少一个来执行使用sdst或dst
‑
7的变换/逆变换。
[0451]
此外,在使用sdst或dst
‑
7的变换/逆变换中,可使用dst
‑
1代替dst
‑
7。此外,在使用sdst或dst
‑
7的变换/逆变换中,可使用dct
‑
4代替dst
‑
7。
[0452]
此外,在使用dct
‑
2的变换/逆变换中,可应用用于重排sdst或dst
‑
7的残差信号的重排方法。也就是说,即使当使用dct
‑
2时,也执行残差信号的重排或使用预定角度的残差信号的旋转。
[0453]
在下文中,将描述乱序方法和信号传送方法的各种修改和实施例。
[0454]
本发明的sdst旨在通过改变变换、乱序、重排和/或翻转方法来提高图像压缩效率。通过对残差信号进行乱序来执行dst
‑
7有效地反映了pu内的残差信号的分布特性,因此实现了高压缩效率。
[0455]
在上面关于乱序步骤的描述中,已经描述了残差信号重排方法。在下文中,除了用于重排残差信号的乱序方法之外,还将描述其他实现方法。
[0456]
下面描述的重排方法可应用于与上述sdst方法相关的实施例中的至少一个实施例。
[0457]
为了使实现残差信号的重排的硬件复杂度最小化,可通过水平翻转方法和垂直翻转方法来实现残差信号重排处理。可通过如以下(1)至(4)所示出的翻转来实现残差信号重排方法。下面描述的重排可表示翻转。
[0458]
(1)r'(x,y)=r(x,y);不翻转
[0459]
(2)r'(x,y)=r(w
‑1‑
x,y);水平翻转
[0460]
(3)r'(x,y)=r(x,h
‑1‑
y);垂直翻转
[0461]
(4)r'(x,y)=r(w
‑1‑
x,h
‑1‑
y);水平和垂直翻转
[0462]
表达式r'(x,y)表示重排后的残差信号,表达式r(x,y)表示重排前的残差信号。块的宽度和高度分别由w和h来表示。残差信号在块内的位置由x和y来表示。可以按照与重排方法相同的处理执行使用翻转的重排方法的逆重排方法。也就是说,通过再次执行水平翻转,可将使用水平翻转重排的残差信号重建为原始残差信号排列。由编码器执行的重排方法和由解码器执行的逆重排方法可以是相同的翻转方法。
[0463]
例如,当对已经执行水平翻转的残差块执行水平翻转时,获得执行翻转之前的残差块,其表示如下。
[0464]
r'(w
‑1‑
x,y)=r(w
‑1‑
(w
‑1‑
x),y)=r(x,y)。
[0465]
例如,当对已经执行了垂直翻转的残差块执行垂直翻转时,获得执行翻转之前的残差块,其表示如下。
[0466]
r'(x,h
‑1‑
y)=r(x,h
‑1‑
(h
‑1‑
y))=r(x,y)。
[0467]
例如,当对已经执行水平和垂直翻转的残差块执行水平和垂直翻转时,获得执行翻转之前的残差块,其表示如下。
[0468]
r'(w
‑1‑
x,h
‑1‑
y)=r(w
‑1‑
(w
‑1‑
x),h
‑1‑
(h
‑1‑
y))=r(x,y)。
[0469]
可在不对当前块进行分区的情况下使用基于翻转的残差信号乱序/重排方法。也就是说,在sdst方法中,描述了将当前块(tu等)分区为子块,并且将dst
‑
7用于每一个子块。然而,当使用基于翻转的残差信号乱序/重排方法时,不将当前块分区为子块,并且对整个当前块或当前块的一部分执行翻转,然后执行dst
‑
7变换。此外,当使用基于翻转的残差信号乱序/重排方法时,不将当前块分区为子块,并且在执行dst
‑
7逆变换之后,对当前块的全部或一部分执行翻转。
[0470]
可定义能够执行基于翻转的残差信号乱序/重排的块的最大尺寸(m
×
n)和/或最小尺寸(o
×
p)。这里,尺寸可包括作为水平尺寸(m或o)的宽度和作为垂直尺寸(n或p)的高度中的至少一个。m、n、o和p可以是正整数。块的最大尺寸和/或块的最小尺寸可以是编码器/解码器中的预定义值,或者可以是从编码器向解码器用信号传送的信息。
[0471]
例如,在当前块的尺寸小于能够执行翻转方法的最小尺寸时,不执行翻转和dst
‑
7变换,而仅执行dct
‑
2变换。这里,可以不用信号传送作为指示翻转和dst
‑
7是否用作变换模式的变换模式信息的sdst标志。
[0472]
例如,当块的宽度小于能够执行翻转方法的最小宽度并且块的高度大于能够执行翻转方法的最小高度时,仅利用dct
‑
2执行水平方向上的一维变换。关于垂直方向上的一维变换,在垂直翻转之后使用dst
‑
7执行一维垂直变换,或者在不进行翻转的情况下使用dst
‑
7执行一维垂直变换。这里,可仅针对垂直方向上的一维变换用信号传送作为指示是否将翻转用作变换模式的变换模式信息的sdst标志。
[0473]
例如,当块的高度小于能够执行翻转方法的最小宽度并且块的宽度大于能够执行翻转方法的最小宽度时,关于水平方向上的一维变换,在水平翻转之后使用dst
‑
7执行一维水平变换,或者在不翻转的情况下使用dst
‑
7执行一维水平变换。仅利用dct
‑
2执行垂直方向上的一维变换。这里,可仅针对水平方向上的一维变换用信号传送作为指示是否将翻转用作变换模式的变换模式信息的sdst标志。
[0474]
例如,在当前块的尺寸大于能够执行翻转方法的最大尺寸时,不使用翻转和dst
‑
7变换,而仅使用dct
‑
2变换。这里,可以不用信号传送作为指示是否将翻转和dst
‑
7变换用作变换模式的变换模式信息的sdst标志。
[0475]
例如,在当前块的尺寸大于能够执行翻转方法的最大尺寸时,仅使用dct
‑
2变换或dst
‑
7变换。
[0476]
例如,当能够执行翻转方法的最大尺寸是32
×
32并且最小尺寸是4
×
4时,将翻转和dst
‑
7变换用于64
×
64尺寸的块,并且仅使用dct
‑
2变换。这里,针对尺寸为64
×
64的块,可以不用信号传送作为指示是否将翻转和dst
‑
7用作变换模式的变换模式信息的sdst标志。此外,对于尺寸为4
×
4至32
×
32的块,可用信号传送指示是否将翻转和dst
‑
7用作变换模式的变换模式信息的sdst标志。在这种情况下,不将dst
‑
7变换用于尺寸为64
×
64的块,因此可节省用于存储用于尺寸为64
×
64的块的dst
‑
7变换的存储器空间。
[0477]
例如,当能够执行翻转方法的最大尺寸是32
×
32并且最小尺寸是4
×
4时,不仅将翻转方法用于64
×
64尺寸的块,还使用dct
‑
2或dst
‑
7变换。
[0478]
例如,可以按照四叉树将尺寸为m
×
n的正方形块分区为四个子块,并且可使用翻转对每一个子块执行乱序/重排方法,然后可执行dst
‑
7变换。这里,可针对每一个子块显式
地用信号传送翻转方法。翻转方法可作为两个比特的固定长度码被用信号传送,并且可作为截断一元码被用信号传送。此外,可使用基于根据通过分区而产生的每一个块的翻转方法的出现概率的二值化方法。这里,m和n可以是正整数,例如64
×
64。
[0479]
例如,可以按照四叉树将尺寸为m
×
n的正方形块分区为四个子块,并且可使用翻转对每一个子块执行乱序/重排方法,然后可执行dst
‑
7变换。可隐式地确定针对每一个子块的翻转方法。例如,可针对第一(左上方)子块确定水平和垂直翻转,可针对第二(右上方)子块确定垂直翻转,可针对第三(左下方)子块确定水平翻转,并且可针对第四(右下方)子块确定不翻转。如上所述,当隐式地确定翻转方法时,不需要用于翻转方法的信号传送。这里,m和n可以是正整数,例如64
×
64。
[0480]
例如,可以按照二叉树将尺寸为2m
×
n的矩形块分区为两个m
×
n正方形块,并且可使用翻转对所述两个块中的每一个执行乱序/重排方法,然后可执行dst
‑
7变换。这里,可针对每一个子块显式地用信号传送翻转方法。翻转方法可作为两个比特的固定长度码被用信号传送,并且可作为截断一元码被用信号传送。此外,可使用基于根据每一个子块的翻转方法的出现概率的二值化方法。这里,m和n可以是正整数,例如8
×
8。
[0481]
例如,可以按照二叉树将尺寸为2m
×
n的矩形块分区为两个m
×
n正方形块,并且可使用翻转对每一个子块执行乱序/重排方法,然后可执行dst
‑
7变换。可隐式地确定用于每一个子块的翻转方法。可针对第一(左侧)子块确定水平翻转,并且可针对第二(右侧)子块确定不翻转。如上所述,当隐式地确定翻转方法时,不需要针对翻转方法进行信号传送。这里,m和n可以是正整数,例如4
×
4。
[0482]
例如,可以按照二叉树将尺寸为m
×
2n的矩形块分区为两个m
×
n正方形块,并且可使用翻转对每一个子块执行乱序/重排方法,然后可执行dst
‑
7变换。可隐式地确定用于每一个子块的翻转方法。可针对第一(顶部)子块确定垂直翻转,并且可针对第二(底部)子块确定不翻转。如上所述,当隐式地确定翻转方法时,不需要针对翻转方法进行信号传送。这里,m和n可以是正整数,例如4
×
4。
[0483]
可应用以下两种方法中的至少一种:对尺寸为m
×
n的块执行dct
‑
2变换/逆变换的方法;以及这样一种方法:在按照四叉树或按照二叉树对块进行分区以产生子块,并且对每一个子块执行翻转,然后执行dst
‑
7变换/逆变换。这里,可根据在作为子块的父块的块中的相对位置来不同地执行翻转方法,并且可隐式地确定翻转方法。这里,m和n可以是正整数,并且例如,m和n可以是64。也就是说,尺寸为m
×
n的块在尺寸上可以是相对大的块。
[0484]
在左上方子块的情况下,可将水平和垂直翻转确定为用于子块的翻转。
[0485]
在右上方子块的情况下,可将垂直翻转确定为用于子块的翻转。
[0486]
在左下方子块的情况下,可将水平翻转确定为用于子块的翻转。
[0487]
在右下方子块的情况下,可确定不执行用于子块的翻转。
[0488]
可使用变换模式信息对关于使用基于翻转的残差信号乱序/重排方法的信息(sdst_flag或sdst标志)进行熵编码/解码。也就是说,通过针对变换模式信息进行信号传送,可在解码器中执行在编码器中执行的相同的方法。例如,当指示变换模式信息的标志位具有第一值时,基于翻转的残差信号乱序/重排方法和dst
‑
7被用作变换/逆变换方法。当标志位具有第二值时,使用另一变换/逆变换方法。这里,可针对每一个块对变换模式信息进行熵编码/解码。这里,另一变换/逆变换方法可以是dct
‑
2变换/逆变换方法。此外,在变换
跳过模式、残差差分pcm(rdpcm)模式和无损模式之一的情况下,省略对变换模式信息的熵编码/解码,并且不用信号传送变换模式信息。
[0489]
可使用当前块的深度、当前块的尺寸、当前块的形状、邻近块的变换模式信息、当前块的编码块标志和关于是否使用当前块的变换跳过模式的信息中的至少一个对变换模式信息进行熵编码/解码。例如,在当前块的编码块标志为0时,省略对变换模式信息的熵编码/解码,并且不用信号传送变换模式信息。此外,可在熵编码/解码期间从与当前块相邻的重建块的变换模式信息预测性地对变换模式信息进行编码/解码。此外,可基于当前块和邻近块的编码参数中的至少一个来用信号传送变换模式信息。
[0490]
此外,使用翻转方法信息,可以以标志或索引(flipping_idx)的形式对四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的至少一种进行熵编码/解码。也就是说,通过用信号传送翻转方法信息,可在解码器中执行在编码器中执行的相同翻转方法。变换模式信息可包括翻转方法信息。
[0491]
此外,在变换跳过模式、残差差分pcm(rdpcm)模式和无损模式之一的情况下,省略对翻转方法信息的熵编码/解码,并且不用信号传送翻转方法信息。可使用当前块的深度、当前块的尺寸、当前块的形状、邻近块的翻转方法信息、当前块的编码块标志和关于是否使用当前块的变换跳过模式的信息中的至少一个对翻转方法信息进行熵编码/解码。例如,在当前块的编码块标志为0时,省略对翻转方法信息的熵编码/解码,并且不用信号传送翻转方法信息。此外,可在熵编码/解码期间从与当前块相邻的重建块的翻转方法信息预测性地对翻转方法信息进行编码/解码。此外,可基于当前块和邻近块的编码参数中的至少一个来用信号传送翻转方法信息。
[0492]
此外,残差信号重排方法不限于上述残差信号重排,并且可通过以预定角度旋转块内的残差信号来实现乱序。这里,预定角度可表示0度、90度、180度、
‑
90度、
‑
180度、270度、
‑
270度、45度、
‑
45度、135度、
‑
135度等的角度。这里,可以以标志或索引的形式对关于角度的信息进行熵编码/解码,并且可与用于变换模式信息的信号传送方法类似地执行关于角度的信息。
[0493]
此外,可在熵编码/解码期间从与当前块相邻的重建块的角度信息预测性地对角度信息进行编码/解码。当使用角度信息执行重排时,可在对当前块进行分区之后执行sdst或dst
‑
7,但也可以在不对当前块进行分区的情况下以当前块为单位执行sdst或dst
‑
7。
[0494]
可根据子块的位置不同地确定预定角度。可以以限定的方式使用通过仅旋转子块中的特定位置处的子块(例如,第一子块)来重排的方法。此外,可将使用预定角度的重排应用于整个当前块。这里,作为重排的目标的当前块可以是逆变换之前的残差块、反量化之前的残差块、逆变换之后的残差块、反量化之后的残差块、重建的残差块和重建块中的至少一个。
[0495]
另外,为了实现与残差信号的重排或旋转相同的效果,可重排或旋转用于变换的变换矩阵的系数,并且这可被应用于预先排列的残差信号以便执行变换。也就是说,代替残差信号的重排,使用变换矩阵的重排来执行变换,因此可实现与对残差信号执行重排和变换的方法相同的效果。这里,可以以与上述残差信号重排方法相同的方式执行变换矩阵的系数的重排,并且可以以与用信号传送上述残差信号重排方法所需的信息的方法相同的方式执行用信号传送针对变换矩阵的系数的重排所需的信息的方法。
[0496]
另外,可由编码器将上述关于乱序步骤的残差信号重排方法的一部分确定为最佳重排方法,并且可将关于所确定的重排方法的信息(翻转方法信息)用信号传送给解码器。例如,当使用四种重排方法时,编码器将多达两个比特的关于残差信号重排方法的信息用信号传送给解码器。
[0497]
此外,当所使用的重排方法具有不同的出现概率时,使用少数个比特对具有高出现概率的重排方法进行编码,并且使用相对较多个比特对具有低出现概率的重排方法进行编码。例如,四种重排方法按照出现概率递减的顺序排列,并且可作为截断一元码(例如,(0、10、110、111)或(1,01、001、000))用信号传送。
[0498]
此外,重排方法的出现概率可依据编码参数而变化,诸如,当前cu的预测模式、pu的帧内预测模式(方向)、邻近块的运动矢量等。因此,可根据编码参数不同地使用关于重排方法的信息(翻转方法信息)的编码方法。例如,重排方法的出现概率可根据帧内预测的预测模式而变化。因此,针对每一个帧内模式,可将少数个比特分配给具有高出现概率的重排方法,并且可将许多个比特分配给具有低出现概率的重排方法。可选地,根据情况,具有非常低的出现概率的重排方法可不被使用,并且可以不被分配任何比特。
[0499]
可根据当前块的预测模式(帧间模式或帧内模式)、帧内预测模式(包括方向模式和非方向模式)、帧间预测模式、块尺寸、块形状(正方形形状或非正方形形状)、亮度/色度信号、变换模式信息等中的至少一个来构建包括残差信号重排方法中的至少一种的重排集合。重排可表示翻转。此外,基于当前块和邻近块的编码参数中的至少一个编码参数,可构建包括残差信号重排方法中的至少一种残差信号重排方法的重排集合。
[0500]
此外,根据当前块的预测模式、帧内预测模式、帧间预测模式、块尺寸、块形状、亮度/色度信号、变换模式信息等中的至少一个,可选择以下重排集合中的至少一个。此外,基于当前块和邻近块的编码参数中的至少一个编码参数,可选择重排集合中的至少一个重排集合。
[0501]
重排集合可以包括“不翻转”、“水平翻转”、“垂直翻转”和“水平和垂直翻转”中的至少一个。重排集合的示例如下所示。
[0502]
1、不翻转
[0503]
2、水平翻转
[0504]
3、垂直翻转
[0505]
4、水平和垂直翻转
[0506]
5、不翻转、和水平翻转
[0507]
6、不翻转、和垂直翻转
[0508]
7、不翻转、以及水平和垂直翻转
[0509]
8、水平翻转、和垂直翻转
[0510]
9、水平翻转、以及水平和垂直翻转
[0511]
10、垂直翻转、以及水平和垂直翻转
[0512]
11、不翻转、水平翻转、和垂直翻转
[0513]
12、不翻转、水平翻转、以及水平和垂直翻转
[0514]
13、不翻转、垂直翻转、以及水平和垂直翻转
[0515]
14、水平翻转、垂直翻转、以及水平和垂直翻转
[0516]
15、不翻转、水平翻转、垂直翻转、以及水平和垂直翻转
[0517]
基于重排集合,可将残差信号重排方法中的至少一种用于对当前块的重排。
[0518]
此外,根据当前块的预测模式、帧内预测模式、帧间预测模式、块尺寸、块形状、亮度/色度、变换模式信息、翻转方法信息等中的至少一个,可在重排集合中选择残差信号重排方法中的至少一种。此外,基于当前块和邻近块的编码参数中的至少一个,可在重排集合中选择残差信号重排方法中的至少一种。
[0519]
根据当前块的预测模式,可构建至少一个重排集合。例如,在当前块的预测模式是帧内预测时,构建多个重排集合。在当前块的预测模式是帧间预测时,构建一个重排集合。
[0520]
根据当前块的帧内预测模式,可构建至少一个重排集合。例如,在当前块的帧内预测模式是非方向模式时,构建一个重排集合。在当前块的帧内预测模式是方向模式时,构建多个重排集合。
[0521]
根据当前块的尺寸,可构建至少一个重排集合。例如,在当前块的尺寸大于16
×
16时,构建一个重排集合。在当前块的尺寸等于或小于16
×
16时,构建多个重排集合。
[0522]
根据当前块的形状,可构建至少一个重排集合。例如,在当前块为正方形时,构建一个重排集合。在当前块为非正方形形状时,构建多个重排集合。
[0523]
根据当前块的亮度/色度信号,可构建至少一个重排集合。例如,在当前块是色度信号时,构建一个重排集合。在当前块是亮度信号时,构建多个重排集合。
[0524]
此外,基于重排集合,可对针对残差信号重排方法的索引进行熵编码/解码。这里,可将索引熵编码/解码为可变长度码或固定长度码。
[0525]
此外,基于重排集合,可执行对针对残差信号重排方法的索引的二值化和去二值化。这里,索引可以被二值化和去二值化为可变长度码或固定长度码。
[0526]
此外,重排集合可以在编码器和解码器中是表的形式,并且可通过等式被计算。
[0527]
此外,可以以具有对称性的方式构建重排集合。例如,可以以具有对称性的方式构建用于重排集合的表。这里,可以以针对帧内预测模式具有对称性的方式构建表。
[0528]
此外,可根据帧内预测模式是否在特定范围内和帧内预测模式是偶数还是奇数中的至少一个来构建重排集合。
[0529]
下表示出根据当前块的预测模式和帧内预测模式(方向)对残差信号重排方法进行编码/解码的方法的示例。
[0530]
此外,在下表中,可使用翻转方法信息来指示残差信号重排方法中的至少一种的使用。
[0531]
[表1]
[0532][0533]
在表1中,残差信号重排方法的列(1)至列(4)指定残差信号重排方法,诸如用于针对上述残差信号重排的扫描/重排顺序的索引、针对预定角度值的索引、针对预定翻转方法的索引等。在表1中,残差信号重排方法的列中的标记*表示在没有信号传送的情况下隐式地使用相应的重排方法,并且标记
‑
表示在相应的情况下不使用相应的重排方法。隐式地使用重排方法的含义可以是利用变换模式信息(sdst_flag或sdstflag)来使用重排方法,而不对用于残差信号重排方法的索引进行熵编码/解码。残差信号重排方法的列(1)至列(4)可分别指(1)不翻转、(2)水平翻转、(3)垂直翻转和(4)水平和垂直翻转。此外,数字0、1、10、11、110、111等可以是用于对残差信号重排方法进行熵编码/解码的二值化/去二值化的结果。可将固定长度码、截断一元码、一元码等用作二值化/去二值化方法。
[0534]
如表1所示出的,在当前块与预测模式和帧内预测模式(方向)中的至少一个相应时,在编码器和解码器中使用至少一种重排方法。这里,45度角的对角线方向可表示朝向当前块中的左上方位置的方向或从当前块中的左上方位置朝向当前块的方向。
[0535]
[表2]
[0536][0537]
作为另一示例,如表2所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0538]
[表3]
[0539][0540][0541]
作为另一示例,如表3所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0542]
[表4]
[0543][0544]
作为另一示例,如表4所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。例如,在当前块处于帧内模式并且帧内预测方向是偶数时,可将不翻转、水平翻转和垂直翻转方法中的至少一种用作残差信号重排方法。此外,在当前块处于帧内模式并且帧内预测方向是奇数时,可将不翻转、垂直翻转、水平和垂直翻转方法中的至少一种用作残差信号重排方法。
[0545]
[表5]
[0546][0547]
作为另一示例,如表5所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0548]
[表6]
[0549][0550][0551]
作为另一示例,如表6所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0552]
[表7]
[0553][0554]
作为另一示例,如表7所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0555]
[表8]
[0556][0557]
作为另一示例,如表8所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0558]
[表9]
[0559][0560]
作为另一示例,如表9所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0561]
[表10]
[0562][0563]
作为另一示例,如表10所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。这里,135度角的对角线方向可表示朝向当前块中的右上方位置的方向或从当前块中的右上方位置朝向当前块的方向。例如,135度角的对角线方向模式的值可以是6。这里,
‑
45度角的对角线方向可表示朝向当前块中的右下方位置的方向或从当前块中的右下方位置朝向当前块的方向。例如,
‑
45度角的对角线方向模式的值可以是2。
[0564]
[表11]
[0565][0566]
作为另一示例,如表11所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0567]
[表12]
[0568]
[0569][0570]
作为另一示例,如表12所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。
[0571]
[表13]
[0572][0573]
作为另一示例,如表13所示出的,在当前块与至少一个预测模式和至少一个帧内预测模式(方向)相应时,在编码器和解码器中使用至少一种重排方法。这里,残差信号重排方法可表示变换的类型。例如,当残差信号重排方法为(1)时,水平变换和垂直变换两者都表示第一变换核。作为另一示例,当残差信号重排方法为(2)时,水平变换和垂直变换分别表示第二变换核和第一变换核。作为另一示例,当残差信号重排方法为(3)时,水平变换和垂直变换分别表示第一变换核和第二变换核。作为另一示例,当残差信号重排方法为(4)时,水平变换和垂直变换分别表示第二变换核和第二变换核。例如,第一变换核可以是dst
‑
7,并且第二变换核可以是dct
‑
8。当帧内预测模式是平面模式或dc模式时,基于出现频率使用截断一元码对关于四种重排方法的信息(翻转方法信息)进行熵编码/解码。
[0574]
当帧内预测方向是水平方向或接近水平方向的模式时,重排方法(1)和/或重排方法(3)的概率高。在这种情况下,可将一个比特用于两种重排方法中的每一种,并且可对关于重排方法的信息进行熵编码/解码。这里,接近水平方向的模式的含义可以是特定模式的值在针对水平方向模式的值
‑
k与针对水平方向模式的值 k之间。这里,k可以是整数。例如,当针对水平方向模式的值为18且k为4,并且特定模式为20时,特定模式为接近水平方向的模式。例如,当针对水平方向模式的值为18且k为4,并且特定模式为26时,特定模式不是接近水平方向的模式。
[0575]
当帧内预测方向是垂直方向或接近垂直方向的模式时,重排方法(1)和/或重排方法(2)的概率高。在这种情况下,可将一个比特用于两种方法中的每一种,并且可对关于重排方法的信息进行熵编码/解码。这里,接近垂直方向的模式的含义可以是特定模式的值在针对垂直方向模式的值
‑
k与针对垂直方向模式的值 k之间。这里,k可以是整数。例如,当针对垂直方向模式的值为50且k为2,并且特定模式为51时,特定模式为接近垂直方向的模式。例如,当针对垂直方向模式的值为50且k为8,并且特定模式为20时,特定模式不是接近垂直方向的模式。
[0576]
当帧内预测方向是45度角的对角线方向或接近45度角的对角线方向的模式时,与
重排方法(1)的概率相比,其他重排方法(2)、(3)和(4)的概率非常低。在这种情况下,仅应用上述方法中的一种,并且可隐式地使用该方法,而无需用信号传送关于重排方法的信息。这里,接近45度角的对角线方向的模式的含义可以是特定模式的值在针对45度角的对角线方向模式的值
‑
k与针对45度角的对角线方向模式的值 k之间。这里,k可以是整数。例如,当针对45度角的对角线方向模式的值为34且k为2,并且特定模式为36时,特定模式是接近45度角的对角线方向模式的模式。例如,当45度角的对角线方向模式的值为34且k为8,并且特定模式为10时,特定模式不是接近45度角的对角线方向模式的模式。
[0577]
当帧内预测方向是偶数时,可仅针对重排方法(1)、(2)和(3)将关于重排方法的信息熵编码/解码为截断一元码或一元码。
[0578]
当帧内预测方向是奇数时,可仅针对重排方法(1)、(3)和(4)将关于重排方法的信息熵编码/解码为截断一元码或一元码。
[0579]
针对其他帧内预测方向,重排方法(4)的出现概率可能低,因此,仅针对重排方法(1)、(2)和(3)将关于重排方法的信息熵编码/解码为截断一元码或一元码。
[0580]
在帧间预测的情况下,可认为重排方法(1)至(4)的出现概率相等,并且可将关于重排方法的信息熵编码/解码为两个比特的固定长度码。
[0581]
算术编码/解码可被用于码。此外,可以不使用使用针对码的上下文模型的算术编码,并且可在旁路模式下进行熵编码/解码。
[0582]
可在不翻转的情况下针对画面内的区域或ctu、整个画面或画面组内的当前块执行利用dst
‑
7的变换/逆变换,或者可通过在执行利用dct
‑
2的变换/逆变换的两种方法中选择一种方法来执行变换/逆变换。在这种情况下,可对以当前块为单位指示是使用dst
‑
7还是dct
‑
2的一个比特的标志信息(变换模式信息)进行熵编码/解码。此方法可被用于距参考样点的距离更长、残差信号的能量更大的情况,或者可被用于降低编码和解码时的计算复杂度。可以以ctu、条带、pps、sps或其它特定区域为单位用信号传送关于使用此方法的区域的信息,并且可以以开/关形式用信号传送一个比特的标志。
[0583]
针对画面内的区域或ctu、整个画面或画面组内的当前块,可通过选择以下三种方法中的一种来执行变换/逆变换:dct
‑
2变换/逆变换、在不翻转情况下的dst
‑
7变换/逆变换、以及执行垂直翻转之后的dst
‑
7变换/逆变换。可使用当前块的周围信息隐式地选择关于将选择所述三种方法中的哪一种方法的信息,并且可通过用信号传送索引(变换模式信息或翻转方法信息)来显式地选择关于将选择所述三种方法中的哪一种方法的信息。可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,以及垂直翻转之后的dst
‑
7为11的方式将索引用信号传送为截断一元码。此外,根据当前块的尺寸和周围信息,可互换dct
‑
2和dst
‑
7的二值化以用于信号传送。此外,可以以cu为单位用信号传送二进制数中的第一个二进制数,并且可以以tu或pu为单位用信号传送其余二进制数。可以以ctu、条带、pps、sps或其它特定区域为单位用信号传送关于使用此方法的区域的信息,并且可以以开/关形式用信号传送一个比特的标志。
[0584]
针对画面内的区域或ctu、整个画面或画面组内的当前块,可通过选择以下四种方法中的一种来执行变换/逆变换:dct
‑
2变换/逆变换、在不翻转情况下的dst
‑
7变换/逆变换、执行水平翻转之后的dst
‑
7变换/逆变换、以及执行垂直翻转之后的dst
‑
7变换/逆变换。可使用当前块的周围信息隐式地选择关于将选择所述四种方法中的哪一种方法的信息,并
且可通过用信号传送索引(变换模式信息或翻转方法信息)来显式地选择关于将选择四种方法中的哪一种方法的信息。可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,水平翻转之后的dst
‑
7为110,并且垂直翻转之后的dst
‑
7为111的方式将索引用信号传送为截断一元码。此外,根据当前块的尺寸和周围信息,可互换dct
‑
2和dst
‑
7的二值化以用于信号传送。此外,可以以cu为单位用信号传送二进制数中的第一个二进制数,并且可以以tu或pu为单位用信号传送其余二进制数。根据帧内预测模式,可仅使用所述四种方法中的一部分。例如,当帧内预测模式的值小于对角线预测模式的值,帧内预测模式是dc模式或者帧内预测模式是平面模式时,仅使用三种方法:dct
‑
2、在不翻转情况下的dst
‑
7、以及垂直翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,以及垂直翻转之后的dst
‑
7为11的方式用信号传送变换模式信息或翻转方法信息。例如,当帧内预测模式的值大于对角线预测模式的值时,仅使用三种方法:dct
‑
2、在不翻转情况下的dst
‑
7、以及水平翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0、在不翻转情况下的dst
‑
7为10、以及水平翻转之后的dst
‑
7为11的方式用信号传送变换模式信息或翻转方法信息。可以以ctu、条带、pps、sps或其它特定区域为单位用信号传送关于使用此方法的区域的信息,并且可以以开/关形式用信号传送一个比特的标志。
[0585]
针对画面内的区域或ctu、整个画面或画面组内的当前块,可通过选择以下五种方法中的一种来执行变换/逆变换:dct
‑
2变换/逆变换、在不翻转情况下的dst
‑
7变换/逆变换、执行水平翻转之后的dst
‑
7变换/逆变换、执行垂直翻转之后的dst
‑
7变换/逆变换、以及执行水平和垂直翻转之后的dst
‑
7变换/逆变换。可使用当前块的周围信息隐式地选择关于将选择五种方法中的哪个变换的信息,并且可通过用信号传送索引(变换模式信息或翻转方法信息)来显式地选择关于将选择五种方法中的哪个变换的信息。可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,水平翻转之后的dst
‑
7为110,垂直翻转之后的dst
‑
7为1110,以及水平和垂直翻转之后的dst
‑
7为1111的方式将索引用信号传送为截断一元码。此外,根据当前块的尺寸和周围信息,可互换dct
‑
2和dst
‑
7的二值化以用于信号传送。此外,可以以cu为单位用信号传送二进制数中的第一个二进制数,并且可以以tu或pu为单位用信号传送其余二进制数。此外,可通过在二进制数中对第一个二进制数、第二个二进制数和第三个二进制数进行区分来将信息用信号传送为固定长度码。例如,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为000,水平翻转之后的dst
‑
7为001,垂直翻转之后的dst
‑
7为010,以及水平和垂直翻转之后的dst
‑
7为011的方式用信号传送变换模式信息或翻转方法信息。此外,根据帧内预测模式,可仅使用所述五种方法中的一部分。例如,当帧内预测模式是接近水平方向预测模式的预测模式时,仅使用三种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7和垂直翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,以及垂直翻转之后的dst
‑
7为11的方式用信号传送变换模式信息或翻转方法信息。
[0586]
例如,当帧内预测模式是接近垂直方向预测模式的预测模式时,仅使用三种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7和水平翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,以及水平翻转之后的dst
‑
7为11的方式用信号传送变换模式信息或翻转方法信息。
[0587]
例如,当帧内预测模式是接近对角线方向预测模式的预测模式时,仅使用两种变换方法:dct
‑
2和在不翻转情况下的dst
‑
7。在此情况下,可以以dct
‑
2为0以及在不翻转情况
下的dst
‑
7为1的方式用信号传送变换模式信息或翻转方法信息。
[0588]
例如,在除上述三种情况之外的情况下,可使用全部五种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7、水平翻转之后的dst
‑
7、垂直翻转之后的dst
‑
7、以及水平和垂直翻转之后的dst
‑
7。可通过截断一元码方案、固定长度码方案或其它方案用信号传送针对变换方法的索引。
[0589]
例如,当帧内预测模式是非方向模式时,使用全部五种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7、水平翻转之后的dst
‑
7、垂直翻转之后的dst
‑
7、以及水平和垂直翻转之后的dst
‑
7。可通过截断一元码方案、固定长度码方案或其它方案用信号传送针对变换方法的索引。
[0590]
例如,当帧内预测模式是奇数模式时,使用四种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7、垂直翻转之后的dst
‑
7、以及水平和垂直翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,垂直翻转之后的dst
‑
7为110,以及水平和垂直翻转之后的dst
‑
7为111的方式用信号传送变换模式信息或翻转方法信息。
[0591]
例如,当帧内预测模式是偶数模式时,使用四种变换方法:dct
‑
2、在不翻转情况下的dst
‑
7、水平翻转之后的dst
‑
7、以及垂直翻转之后的dst
‑
7。在此情况下,可以以dct
‑
2为0,在不翻转情况下的dst
‑
7为10,水平翻转之后的dst
‑
7为110,以及垂直翻转之后的dst
‑
7为111的方式用信号传送变换模式信息或翻转方法信息。可以以ctu、条带、pps、sps或其它特定区域为单位用信号传送关于使用此方法的区域的信息,并且可以以开/关形式用信号传送一个比特的标志。
[0592]
图22和图23分别示出在根据本发明的在编码器和解码器中执行残差信号重排(残差重排)的位置。
[0593]
参照图22,在编码器中,可在dst
‑
7变换处理之前执行残差信号重排。尽管在图22中未示出,但是在编码器中,可在变换处理与量化处理之间执行残差信号重排,或者可在量化处理之后执行残差信号重排。
[0594]
参照图23,在解码器中,可在dst
‑
7逆变换处理之后执行残差信号重排。尽管在图23中未示出,但在解码器中,可在反量化处理与逆变换处理之间执行残差信号重排,或者可在反量化处理之前执行残差信号重排。
[0595]
上面已经参照图7至图23描述了根据本发明的sdst方法。在下文中,将参照图24和25详细描述应用根据本发明的sdst方法的解码方法、编码方法、解码器、编码器和比特流。
[0596]
图24是示出根据本发明的使用sdst方法的解码方法的实施例的示图。
[0597]
参照图24,首先,在步骤s2401,可确定当前块的变换模式,并且在步骤s2402,可根据当前块的变换模式对当前块的残差数据执行逆变换。
[0598]
接下来,在步骤s2403,可对已经根据当前块的变换模式执行了逆变换的当前块的残差数据执行重排。
[0599]
这里,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0600]
sdst模式可指示在dst
‑
7变换模式下执行逆变换并且对已经执行逆变换的残差数据执行重排的模式。
[0601]
sdct模式可指示在dct
‑
2变换模式下执行逆变换并且对已经执行逆变换的残差数
据执行重排的模式。
[0602]
dst模式可指示在dst
‑
7变换模式下执行逆变换并且不对已经执行逆变换的残差数据执行重排的模式。
[0603]
dct模式可指示在dct
‑
2变换模式下执行逆变换并且不对已经执行逆变换的残差数据执行重排的模式。
[0604]
因此,仅在当前块的变换模式是sdst和sdct之一时,才执行残差数据的重排。
[0605]
尽管描述了针对如上所述的sdst和dst模式在dst
‑
7变换模式中执行逆变换,但可使用基于其它dst(诸如dst
‑
1、dst
‑
2等)的变换模式。
[0606]
另外,在步骤s2401确定当前块的变换模式的步骤可包括:从比特流获得当前块的变换模式信息;以及基于变换模式信息确定当前块的变换模式。
[0607]
此外,在步骤s2401确定当前块的变换模式时,可基于当前块的预测模式、当前块的深度信息、当前块的尺寸和当前块的形状中的至少一个来确定当前块的变换模式。
[0608]
具体地,在当前块的预测模式是帧间预测模式时,将sdst和sdct中的一个确定为当前块的变换模式。
[0609]
另外,在步骤s2403对已经执行了逆变换的当前块的残差数据进行重排的步骤可包括:按照沿第一方向的顺序扫描在已经执行了逆变换的当前块内排列的残差数据;以及,按照沿第二方向的顺序重排在已经执行逆变换的当前块内沿第一方向扫描的残差数据。这里,沿第一方向的顺序可以是光栅扫描顺序、右上方对角线扫描顺序、水平扫描顺序和垂直扫描顺序中的一个。此外,沿第一方向的顺序可如下定义。
[0610]
(1)从顶行至底行进行扫描,并且在一行中从左侧至右侧进行扫描
[0611]
(2)从顶行至底行进行扫描,并且在一行中从右侧至左侧进行扫描
[0612]
(3)从底行至顶行进行扫描,并且在一行中从左侧至右侧进行扫描
[0613]
(4)从底行至顶行进行扫描,并且在一行中从右侧至左侧进行扫描
[0614]
(5)从左列至右列进行扫描,并且在一列中从顶部至底部进行扫描
[0615]
(6)从左列至右列进行扫描,并且在一列中从底部至顶部进行扫描
[0616]
(7)从右列至左列进行扫描,并且在一列中从顶部至底部进行扫描
[0617]
(8)从右列至左列进行扫描,并且在一列中从底部至顶部进行扫描
[0618]
(9)以螺旋形状进行扫描:从块的内部(或外部)至块的外部(或内部)进行扫描,并且沿顺时针/逆时针方向进行扫描
[0619]
另外,关于沿第二方向的顺序,可选择性地使用上述方向中的一个。第一方向和第二方向可相同,或者可彼此不同。
[0620]
此外,在步骤s2403对已经执行了逆变换的当前块的残差数据进行重排时,以当前块内的子块为单位执行重排。在这种情况下,可基于当前块内的子块的位置来重排残差数据。由于上面已经在等式6中详细描述了基于子块的位置对残差数据的重排,因此将省略重复的描述。
[0621]
此外,在步骤s2403对已经执行了逆变换的当前块的残差数据进行重排时,可以以预定角度旋转在已经执行了逆变换的当前块内排列的残差数据以进行重排。
[0622]
此外,在步骤s2403对已经执行了逆变换的当前块的残差数据进行重排时,根据翻转方法,可对在已经执行了逆变换当前块内排列的残差数据执行翻转以进行重排。在这种
情况下,在步骤s2401确定当前块的变换模式的步骤可包括:从比特流获得翻转方法信息;以及基于翻转方法信息确定当前块的翻转方法。
[0623]
图25是示出根据本发明的使用sdst方法的编码方法的实施例的示图。
[0624]
参照图25,在步骤s2501,可确定当前块的变换模式。
[0625]
接下来,在步骤s2502,可根据当前块的变换模式重排当前块的残差数据。
[0626]
接下来,在步骤s2503,可对根据当前块的变换模式重排的当前块的残差数据进行变换。
[0627]
这里,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。由于已经参照图24描述了sdst、sdct、dst和dct模式,因此将省略重复的描述。
[0628]
另外,仅在当前块的变换模式是sdst和sdct之一时,才执行对残差数据的重排。
[0629]
此外,在步骤s2501确定当前块的变换模式时,可基于当前块的预测模式、当前块的深度信息、当前块的尺寸和当前块的形状中的至少一个来确定当前块的变换模式。
[0630]
这里,在当前块的预测模式是帧间预测模式时,将sdst和sdct中的一个确定为当前块的变换模式。
[0631]
另外,在步骤s2502重排当前块的残差数据的步骤可包括:按照沿第一方向的顺序扫描在当前块内排列的残差数据;以及按照沿第二方向的顺序重排在当前块内沿第一方向扫描的残差数据。
[0632]
此外,在步骤s2502重排当前块的残差数据时,以当前块内的子块为单位执行重排。
[0633]
在这种情况下,在步骤s2502重排当前块的残差数据时,可基于当前块内的子块的位置来重排残差数据。
[0634]
另外,在步骤s2502重排当前块的残差数据时,可以以预定义角度旋转在当前块内排列的残差数据以进行重排。
[0635]
另外,在步骤s2502重排当前块的残差数据时,根据翻转方法,可对在当前块内排列的残差数据执行翻转以进行重排。
[0636]
根据本发明的使用sdst方法的图像解码器可包括逆变换模块,其中,所述逆变换模块确定当前块的变换模式,根据当前块的变换模式对当前块的残差数据执行逆变换,并且重排已经根据当前块的变换模式执行逆变换的当前块的残差数据。这里,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0637]
根据本发明的使用sdst方法的图像解码器可包括逆变换模块,其中,所述逆变换模块确定当前块的变换模式,根据当前块的变换模式重排当前块的残差数据,并且对根据当前块的变换模式重排的当前块的残差数据执行逆变换。这里,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0638]
根据本发明的使用sdst方法的图像编码器可包括变换模块,其中,所述变换模块确定当前块的变换模式,并且根据当前块的变换模式重排当前块的残差数据,并且对根据当前块的变换模式重排的当前块的残差数据进行变换。这里,变换模式可包括乱序离散正
弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0639]
根据本发明的使用sdst方法的图像编码器可包括变换模块,其中,所述变换模块确定当前块的变换模式,根据当前块的变换模式对当前块的残差数据进行变换,并且重排根据当前块的变换模式变换的当前块的残差数据。这里,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0640]
根据本发明的通过使用sdst方法的编码方法产生的比特流可包括:确定当前块的变换模式;根据当前块的变换模式重排当前块的残差数据;以及对根据当前块的变换模式重排的当前块的残差数据进行变换,其中,变换模式可包括乱序离散正弦变换(sdst)、乱序离散余弦变换(sdct)、离散正弦变换(dst)和离散余弦变换(dct)中的至少一种。
[0641]
图26至图31示出在根据本发明的编码器和解码器中执行翻转方法的位置的示例。
[0642]
图26是示出在翻转之后执行变换的方法中的编码处理的实施例的示图。
[0643]
图27是示出在逆变换之后执行翻转的方法中的解码处理的实施例的示图。
[0644]
参照图26,从针对当前块的原始信号中减去帧间或帧内预测信号以产生残差信号,然后可选择dct
‑
2变换、翻转和dst
‑
7变换中的一个作为变换方法。当变换方法是dct
‑
2变换时,使用dct
‑
2变换对残差信号执行变换,从而产生变换系数。当变换方法是翻转和dst
‑
7变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转、以及水平和垂直翻转)中的一种来对残差信号执行翻转,然后使用dst
‑
7变换来对已经执行翻转的残差信号执行变换,从而产生变换系数。通过对变换系数执行量化,可产生量化的等级。
[0645]
参照图27,接收量化的等级以执行反量化,从而产生变换系数。可选择与在编码处理中从dct
‑
2逆变换或者dst
‑
7逆变换和翻转中选择的方法相应的方法。也就是说,当在编码处理中执行dct
‑
2变换时,在解码处理中执行dct
‑
2逆变换。此外,当在编码处理中执行翻转和dst
‑
7变换方法时,在解码处理中执行dst
‑
7逆变换和翻转。当逆变换方法是dct
‑
2逆变换时,使用dct
‑
2逆变换对变换系数执行逆变换,从而产生重建的残差信号。当逆变换方法是dst
‑
7逆变换和翻转方法时,使用dst
‑
7逆变换对残差系数执行逆变换以产生重建的残差信号,然后,选择四种翻转方法(不翻转、水平翻转、垂直翻转、以及水平和垂直翻转)中的一种来对重建的残差信号执行翻转,从而产生翻转和重建的残差信号。将帧间或帧内预测信号与重建的残差信号相加或者与翻转和重建的残差信号相加,从而产生重建信号。
[0646]
图28是示出在变换之后执行翻转的方法中的编码处理的实施例的示图。
[0647]
图29是示出在翻转之后执行逆变换的方法中的解码处理的实施例的示图。
[0648]
参照图28,从针对当前块的原始信号中减去帧间或帧内预测信号以产生残差信号,然后可选择dct
‑
2变换、dst
‑
7变换和翻转中的一个作为变换方法。当变换方法是dct
‑
2变换时,使用dct
‑
2变换对残差信号执行变换,从而产生变换系数。当变换方法是dst
‑
7变换和翻转方法时,使用dst
‑
7变换对残差信号执行变换,然后,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的一种来对变换系数执行翻转,从而产生已经执行翻转的变换系数。通过对变换系数或对已经执行翻转的变换系数执行量化,可产生量化的等级。当对变换系数执行翻转时,执行对变换系数的重排。执行重排的方法可以是与翻转相同的方法,可以是执行第二变换以在变换基础的零点处旋转轴的方法,可以是交换变换
系数的正符号和负符号的方法,等等。
[0649]
参照图29,接收量化的等级以执行反量化,从而产生变换系数。可选择与在编码处理中从dct
‑
2逆变换或者翻转和dst
‑
7逆变换中选择的方法相应的方法。也就是说,当在编码处理中执行dct
‑
2变换时,在解码处理中执行dct
‑
2逆变换。当在编码处理中执行dst
‑
7变换和翻转方法时,在解码处理中执行翻转和dst
‑
7逆变换。当逆变换方法是dct
‑
2逆变换时,使用dct
‑
2逆变换对变换系数执行逆变换,从而产生重建的残差信号。当逆变换方法是翻转和dst
‑
7逆变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的一种来对变换系数执行翻转。然后,使用dst
‑
7逆变换对已经执行翻转的变换系数执行逆变换,从而产生重建的残差信号。将帧间或帧内预测信号与重建的残差信号相加,从而产生重建信号。
[0650]
图30是示出在量化之后执行翻转的方法中的编码处理的实施例的示图。
[0651]
图31是示出在翻转之后执行反量化的方法中的解码处理的实施例的示图。
[0652]
参照图30,从当前块的原始信号中减去帧间或帧内预测信号以产生残差信号,然后可选择dct
‑
2变换和dst
‑
7变换中的一个作为变换方法。当变换方法是dct
‑
2变换时,使用dct
‑
2变换对残差信号执行变换,从而产生变换系数。当变换方法是dst
‑
7变换时,使用dst
‑
7变换对残差信号执行变换,从而产生变换系数。通过对变换系数执行量化,可产生量化的等级。此外,当变换方法是dst
‑
7变换时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的一种来对量化的等级执行翻转,从而产生已经执行翻转的量化的等级。此外,当对量化的等级执行翻转时,执行量化的等级的重排。执行重排的方法可以是与翻转相同的方法,可以是执行第二变换以在变换基础的零点处旋转轴的方法,可以是交换量化的等级的正符号和负符号的方法,等等。
[0653]
参照图31,接收量化的等级,并且选择与在编码处理中的dct
‑
2逆变换和dst
‑
7逆变换之中选择的方法相应的逆变换方法。也就是说,当在编码处理中执行dct
‑
2变换时,在解码处理中执行dct
‑
2逆变换。此外,当在编码处理中执行dst
‑
7变换时,在解码处理中执行dst
‑
7逆变换。当逆变换方法是dct
‑
2逆变换时,对量化的等级执行反量化以产生变换系数,然后使用dct
‑
2逆变换对变换系数执行逆变换,从而产生重建的残差信号。当逆变换方法是dst
‑
7逆变换方法时,选择四种翻转方法(不翻转、水平翻转、垂直翻转以及水平和垂直翻转)中的一种来对量化的等级执行翻转,然后对已经执行翻转的量化的等级执行反量化,从而产生变换系数。使用dst
‑
7逆变换对变换系数执行逆变换,从而产生重建的残差信号。将帧间或帧内预测信号与重建的残差信号相加,从而产生重建信号。
[0654]
另外,可基于从编码器用信号传送的关于翻转位置的信息来确定在解码器中执行翻转方法的位置。
[0655]
图32是示出对残差块执行翻转的示图。
[0656]
参照图32,可对残差块执行“不翻转”、“水平翻转”、“垂直翻转”以及“水平和垂直翻转”中的至少一个。如图32所示出的,残差块内的样点的位置可依据翻转类型而变化。
[0657]
图33是示出用于将对尺寸为8
×
8的残差块执行翻转实现为硬件的实施例的示图。
[0658]
参照图33,在对m
×
n残差块进行垂直翻转的硬件实现中,通过将用于从残差块存储器读取数据的地址值(addr)改变为m
‑1‑
addr来对m
×
n块执行垂直翻转。也就是说,代替垂直翻转操作,改变m
×
n块的存储器行地址以读取残差块内的数据,从而实现垂直翻转。
[0659]
在对m
×
n残差块进行水平翻转的硬件实现中,通过按照针对读取的相反的顺序改变残差块存储器中的数据值来对m
×
n块执行水平翻转。也就是说,代替水平翻转操作,改变读取针对m
×
n块的数据值的顺序,从而实现水平翻转。例如,当数据a、b、c、d、e、f、g和h按照此顺序被存储在存储器中时,数据值h、g、f、e、d、c、b和a按照此顺序被读取,从而执行水平翻转。
[0660]
图34是示出对残差块执行翻转和变换的示图。
[0661]
参照图34,可对残差块执行“不翻转(no
‑
flip)”、“水平翻转(h
‑
flip)”、“垂直翻转(v
‑
flip)”、以及“水平和垂直翻转(hv
‑
flip)”中的至少一个,并且可执行dst
‑
7变换。如图34中所示出的,残差块内的样点的位置可依据翻转类型而变化,并且可执行dst
‑
7变换。
[0662]
以下示出使用自适应多重变换(amt)方法的示例,其中,在amt方法中,使用在本说明书中使用的变换中的至少一个。
[0663]
可使用在说明书中使用的变换中的至少一个来构建amt集合。例如,除了诸如dct
‑
2、dct
‑
5、dct
‑
8、dst
‑
1、dst
‑
7等的变换之外,可将针对帧内和帧间编码/解码的每一个块的至少一个变换添加到amt变换集合。具体地,可将dst
‑
4和恒等变换添加到针对帧间编码/解码的块的amt变换集合,并且可以将klt
‑
1和klt
‑
2添加到针对帧内编码/解码的块的amt变换集合。
[0664]
可添加与除2的幂以外的尺寸(诸如,4
×
24和8
×
48)的块相应的变换。例如,在帧内编码/解码处理时,可如下表14所示定义各具有四个变换对的七个变换集合。
[0665]
[表14]
[0666][0667]
在表14中,变换对的第一项可指垂直方向上的变换,并且第二项可指水平方向上的变换。可按照基于不同帧内预测模式和不同块尺寸分配七个变换集合中的每一个的方式来定义表14中的变换对集合。在表14中,t0至t6可表示与各个块尺寸相应的可用变换对集合。例如,t0可被用于2
×
2块尺寸,t1可被用于4
×
4块尺寸,t2可被用于8
×
8块尺寸,t3可被用于16
×
16块尺寸,t4可被用于32
×
32块尺寸,t5可被用于64
×
64块尺寸,并且t6可被用于128
×
128块尺寸。恒等变换可被应用于尺寸不超过16
×
16的块。此外,恒等变换可在接近水平帧内预测方向和垂直帧内预测方向的模式下被应用于块。接近水平帧内预测方向和/或垂直帧内预测方向的模式可被定义为基于块尺寸的阈值。例如,当变换索引为3并且块满足上述条件时,应用水平和/或垂直恒等变换。
[0668]
另外,在帧间编码/解码处理时,可如下表15所示定义各具有四个变换对的两个变换集合。
[0669]
[表15]
[0670]
t
0,inter
{(dct
‑
8,dct
‑
8),(dct
‑
8,dst
‑
7),(dst
‑
7,dct
‑
8),(dst
‑
7,dst
‑
7)}t
1,inter
{(klt
‑
1,klt
‑
1),(klt
‑
1,klt
‑
2),(klt
‑
2,klt
‑
1),(klt
‑
2,klt
‑
2)}
[0671]
在表15中,t0和t1可表示与块尺寸相应的可用变换对集合。例如,在表15中,包括klt的变换集合(即,t
1,inter
)可被应用于尺寸等于或小于16
×
16的块,并且t
0,inter
可被应用于尺寸大于16
×
16的块。此外,可使用仅使用dct
‑
2变换和调整步骤来近似amt变换的方法。可使用用于将dct
‑
2变换变换为与amt变换类似的形式的块带(block
‑
band)正交矩阵来定义调整步骤。
[0672]
在本说明书中使用的用于amp的初级变换集合可由dct
‑
2、dct
‑
8、dst
‑
4、dst
‑
7变换等组成,并且初级变换集合可由dct
‑
8、dst
‑
4和dst
‑
7变换组成。此外,可通过基于dct
‑
8变换矩阵执行翻转、正负符号改变等来实现dst
‑
7变换矩阵。
[0673]
例如,变换被用于构建二维变换集合(即,水平和垂直变换)以在帧间编码/解码处理中使用结果。在帧内编码/解码处理时,可使用如下表16所示的二维变换集合。
[0674]
[表16]
[0675][0676]
表16示出针对每一个预测模式(predmodidx)和每一个变换索引(tridx)的垂直和水平变换的变换集合。此外,amt变换集合可被使用dct
‑
8和dst
‑
7的变换集合替换。
[0677]
此外,当块的水平或垂直尺寸超过32个像素时,不将amt变换应用于该块,并且不将amt变换使用信息(amt标志)和变换索引信息(amt索引)中的至少一个用信号传送到解码器。
[0678]
在本说明书中所使用的amt变换集合中包括的dct
‑
8、dst
‑
1和dct
‑
5的变换矩阵可被其它变换矩阵替换。可使用翻转的dst
‑
7代替dct
‑
8。可使用dst
‑
6代替dst
‑
1。可使用dct
‑
2代替dct
‑
5。
[0679]
如以下等式7所示出的,可从dst
‑
7推导翻转的dst
‑
7和dst
‑
6的变换矩阵。
[0680]
[等式7]
[0681]
翻转的dst
‑
7:
[0682]
dst
‑
6:
[0683]
这里,表示dst
‑
7的n
×
n变换矩阵中的第k基矢量的第l分量。
[0684]
此外,包括dct
‑
8、dst
‑
1和dct
‑
5的变换矩阵的amt变换可被应用于亮度分量和色度分量两者。
[0685]
可基于模式相关变换集合和指示水平和垂直变换的显式地信号传送的amt索引来确定针对亮度分量的变换。
[0686]
在色度分量/帧内模式的情况下,可按照与确定用于亮度分量的变换的方法相同的方式确定变换,变换候选的数量可小于用于亮度分量的变换候选的数量。
[0687]
在色度分量/帧间模式的情况下,可由指示amt索引是否与亮度分量的同位块或默认变换(dct
‑2×
dct
‑
2)相同的一个比特的标志确定变换。
[0688]
此外,amt可在dct
‑
2、dst
‑
7和翻转的dst
‑
7(fdst
‑
7)中选择水平变换和垂直变换。此外,可定义amt标志。当amt标志为零时,其指示dct
‑
2用于水平变换和垂直变换两者。当amt标志为1时,其指示根据amt索引使用另一变换。仅当块的宽度和高度两者均等于或小于64时,才允许使用amt。可由帧内预测模式确定amt标志。在偶数帧内预测模式中,可将amt标志隐式地分配为1。在奇数帧内预测模式中,可将amt标志隐式地分配为0。此外,在奇数帧内预测模式中,可将amt标志隐式地分配为1。在偶数帧内预测模式中,可将amt标志隐式地分配为0。
[0689]
可使用添加了两个变换dst
‑
7和dct
‑
8的变换集,并且应用amt的最大块尺寸可限于32
×
32的尺寸。可实现具有长度为2n 1的离散傅里叶变换(dft)的前向n
×
n dst
‑
7以获得n
×
n dst
‑
7。2n 1fft可被重建为二维fft。可通过紧接在dst
‑
7计算之前和之后的正负符号改变和重新排序而从dst
‑
7推导dct
‑
8。因此,可重用dst
‑
7以实现dct
‑
8。
[0690]
可仅对当前块内的子块执行当前块的变换或逆变换。例如,子块可以是当前块中的左上方位置处的子块。可独立地确定子块的水平长度(宽度)和垂直长度(高度)。例如,可根据应用于水平变换或逆变换(或者垂直变换或逆变换)的变换核的类型来确定子块的水平长度(宽度)(或垂直长度(高度))。例如,当应用于水平变换或逆变换的变换核为dct
‑
2时,水平长度(宽度)为32个样点。例如,当应用于水平变换或逆变换的变换核不是dct
‑
2而是例如dst
‑
7或dct
‑
8时,水平长度(宽度)是16个样点。类似地,例如,当应用于垂直变换或逆变换的变换核是dct
‑
2时,垂直长度(高度)是32个样点。例如,当应用于垂直变换或逆变换的变换核不是dct
‑
2而是例如dst
‑
7或dct
‑
8时,垂直长度(高度)是16个样点。此外,由于子块不能大于当前块,因此,在当前块的长度短于推导出的子块的长度(例如,32个样点或16个样点)时,将执行变换或逆变换的块的长度确定为当前块的长度。可以不对当前块内的区域中的不被包括在子块中的样点执行变换或逆变换。可将样点的所有样点值设置为“零”。这里,子块可包括作为输入信号与预测信号之间的差的残差信号,或者可包括通过对残差信号进行变换产生的变换系数。
[0691]
在帧内和帧间编码/解码处理中,可隐式地确定amt变换。
[0692]
亮度分量和色度分量的帧内预测模式相关变换可分别被表示为下表17和表18。
[0693]
[表17]
[0694][0695][0696]
[表18]
[0697]
帧内预测模式水平变换垂直变换块尺寸限制lm模式dst
‑
7dst
‑
7宽度<=8&&高度<=8平面dst
‑
7dst
‑
7宽度<=16&&高度<=16水平dst
‑
7dct
‑
2宽度<=16&&高度<=32垂直、vdiadct
‑
2dst
‑
7宽度<=32&&高度<=16
[0698]
这里,表17示出用于亮度分量的变换映射表,并且表18示出用于色度分量的变换映射表。此外,位置相关变换可被用于合并模式中的残差信号。合并模式中的残差信号的变换可根据用于当前块的运动补偿的空间运动矢量预测器(mvp)候选而变化。
[0699]
下表19示出mvp位置与变换之间的映射表。
[0700]
[表19]
[0701]
mvp位置水平变换垂直变换块尺寸限制l(左侧)dst
‑
7dct
‑
2宽度<=32&&高度<=32a(上方)dct
‑
2dst
‑
7宽度<=32&&高度<=32
[0702]
在表19中,针对左侧mvp候选,dst
‑
7和dct
‑
2可分别用作水平变换和垂直变换。此外,针对上方mvp候选,dct
‑
2和dst
‑
7可分别用作水平变换和垂直变换。在其它情况下,dct
‑
2可用作默认变换。可对amt变换使用信息(初级变换)和不可分离次级变换(nsst)使用信息(次级变换)被组合的变换使用信息进行熵编码/解码。可由单个变换索引表示对amt和nsst的使用,并且可由一个变换索引将初级变换和次级变换组合以用于用信号传送来代替单独地用信号传送初级变换和次级变换的索引。此外,组合变换索引可被用于亮度分量和色度分量两者。
[0703]
此外,可从针对每一个块的n个预定义变换候选集合中选择说明书中使用的变换。
这里,n可以是正整数。变换候选中的每一个可指定初级水平变换、初级垂直变换和次级变换(其可与恒等变换相同)。变换候选的列表可依据块尺寸和预测模式而变化。可如下用信号传送所选择的变换。当编码块标志为1时,发送指示是否使用候选列表的第一变换的标志。当指示是否使用候选列表的第一变换的标志为0时,应用以下内容:当非零变换系数等级的数量大于阈值时,发送指示所使用的变换候选的变换索引;否则,使用列表的第二变换。
[0704]
此外,仅当作为初级变换的dct
‑
2用作默认变换时,才使用作为次级变换的nsst。此外,关于水平变换或垂直变换,当宽度或高度独立地等于或小于4时,选择dst
‑
7而无需用信号传送。
[0705]
此外,当非零变换系数的数量大于阈值时,用信号传送amt标志。在帧间块的情况下,可将阈值设置为2。在帧内块的情况下,可将阈值设置为0。当非零变换系数的数量大于2时,用信号传送amt索引。否则,将阈值估计为0。在nsst的情况下,关于帧内亮度分量的块,当左上方8
×
8或4
×
4亮度分量的非零变换系数的数量与左上方8
×
8或4
×
4色度分量的非零ac系数的数量的总和大于2时,用信号传送nsst索引。
[0706]
关于残差块,当块的宽度等于或小于k时,将dst
‑
7代替dst
‑
2用于一维水平变换。当块的高度等于或小于l时,将dst
‑
7代替dct
‑
2用于一维垂直变换。此外,即使块的宽度或高度等于或小于k,但当帧内预测模式是线性模型(lm)色度模式时,也使用dct
‑
2。这里,k和l可以是正整数,例如,4。此外,k和l可相同或可具有不同的值。此外,残差块可以是在帧内模式下编码的块。此外,残差块可以是色度块。
[0707]
作为对残差信号执行翻转方法的代替,可使用已执行翻转的变换核或变换矩阵来执行变换/逆变换。这里,已经执行翻转的变换/逆变换核或变换/逆变换矩阵可以是已经经过翻转并且在编码器/解码器中预定义的核或矩阵。在这种情况下,由于已经执行翻转的变换/逆变换矩阵被用于执行变换/逆变换,因此,可获得与对残差信号执行翻转相同的效果。这里,翻转可以是不翻转、水平翻转、垂直翻转、以及水平和垂直翻转中的至少一种。在这种情况下,可用信号传送关于是否使用已经执行了翻转的变换/逆变换的信息。此外,可针对水平方向上的变换/逆变换和垂直方向上的变换/逆变换中的每一个用信号传送关于是否使用已执行翻转的变换/逆变换的信息。
[0708]
此外,作为对残差信号执行翻转方法的代替,可在编码/解码处理时对变换核或变换矩阵执行翻转以执行变换/逆变换。在这种情况下,由于对变换/逆变换矩阵执行翻转以执行变换/逆变换,因此可获得与对残差信号执行翻转相同的效果。这里,翻转可以是不翻转、水平翻转、垂直翻转、以及水平和垂直翻转中的至少一种。在这种情况下,可用信号传送关于是否对变换/逆变换矩阵执行翻转的信息。此外,可针对水平方向上的变换/逆变换和垂直方向上的变换/逆变换中的每一个用信号传送关于是否对变换/逆变换矩阵执行翻转的信息。
[0709]
当基于帧内预测模式确定翻转方法并且使用当前块的两个或更多个帧内预测模式时,在当前块的变换/逆变换之前/之后执行翻转作为用于非方向模式的翻转方法。
[0710]
此外,当基于帧内预测模式确定翻转方法并且使用当前块的两个或更多个帧内预测模式时,在当前块的变换/逆变换之前/之后执行翻转作为主方向模式的翻转方法。这里,主方向模式可以是垂直模式、水平模式和对角线模式中的至少一种。
[0711]
当变换的尺寸等于或大于m
×
n时,在变换期间或在变换之后将存在于m/2至m和n/2至n的区域中的所有变换系数设置为0值。这里,m和n可以是正整数,例如64
×
64。
[0712]
为了降低存储器要求,可对在执行变换之后产生的变换系数执行右移位k的运算。此外,可对在执行水平变换之后产生的临时变换系数执行右移位k的运算。此外,可对在执行垂直变换之后产生的临时变换系数执行右移位k的运算。这里,k是正整数。
[0713]
为了降低存储器要求,可对在执行逆变换之后产生的重建残差信号执行右移位k的运算。此外,可对在执行水平逆变换之后产生的临时变换系数执行右移位k的运算。此外,可对在执行垂直逆变换之后产生的临时变换系数执行右移位k的运算。这里,k是正整数。
[0714]
可对在水平方向上执行变换/逆变换之前、在水平方向上执行变换/逆变换之后、在垂直方向上执行变换/逆变换之前、以及在垂直方向上执行变换/逆变换之后产生的信号中的至少一个信号执行翻转方法中的至少一个翻转方法。在这种情况下,可用信号传送在水平方向上的变换/逆变换或垂直方向上的变换/逆变换中使用的翻转方法信息。
[0715]
此外,可使用dct
‑
4代替dst
‑
7。从2
n
尺寸的dct
‑
2变换/逆变换矩阵中提取2
n
‑1尺寸的dct
‑
4变换/逆变换矩阵以供使用,因此仅dct
‑
2变换/逆变换矩阵而不是dct
‑
4存储在编码器/解码器中,由此降低了编码器/解码器的存储器要求。此外,从2
n
尺寸的dct
‑
2变换/逆变换逻辑利用2
n
‑1尺寸的dct
‑
4变换/逆变换逻辑,因此减小了实现编码器/解码器所需的芯片面积。这里,上述示例不仅仅应用于dct
‑
2和dct
‑
4,并且当存在在dst变换/逆变换的类型中的至少一种与dct变换/逆变换的类型中的至少一种之间共享的变换矩阵或变换逻辑时,应用上述示例。也就是说,可从一个变换/逆变换矩阵或逻辑提取另一变换/逆变换矩阵或逻辑以供使用。此外,在特定变换/逆变换尺寸的情况下,可从一个变换/逆变换矩阵或逻辑提取另一变换/逆变换矩阵或逻辑以供使用。此外,可以以矩阵单元、基矢量单元和矩阵系数单元中的至少一个单元来从一个变换/逆变换矩阵提取另一变换/逆变换矩阵。
[0716]
此外,在当前块小于m
×
n的尺寸时,将另一变换/逆变换作为对特定变换/逆变换的代替来用于当前块的变换/逆变换。此外,在当前块大于m
×
n的尺寸时,将另一变换/逆变换作为对特定变换/逆变换的代替来用于当前块的变换/逆变换。这里,m和n是正整数。特定变换/逆变换和另一变换/逆变换可以是在编码器/解码器中预定义的变换/逆变换。
[0717]
此外,可由基于dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换所计算的变换中的至少一个替换在本说明书中使用的dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换中的至少一个。这里,所计算的变换可以是通过修改dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换矩阵内的系数值而计算的变换。此外,dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换矩阵内的系数值可具有整数值。也就是说,dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换可以是整数变换。此外,所计算的变换矩阵内的系数值可以具有整数值。也就是说,所计算的变换可以是整数变换。此外,所计算的变换可以是对dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换矩阵内的系数值执行左移位n的运算的结果。这里,n可以是正整数。
[0718]
dct
‑
q和dst
‑
w变换可表示包括dct
‑
q和dst
‑
w变换以及dct
‑
q和dst
‑
w逆变换。这里,q和w可具有1或更大的正整数,并且例如,数字1至9可具有与罗马数字i至ix相同的含义。
[0719]
此外,在本说明书中使用的dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7等的变换不
限于此,并且可通过替换dct
‑
4、dct
‑
8、dct
‑
2、dst
‑
4、dst
‑
1、dst
‑
7的变换来使用dct
‑
q变换和dst
‑
w变换中的至少一个。这里,q和w可具有1或更大的正整数,并且例如,数字1至9可具有与罗马数字i至ix相同的含义。
[0720]
此外,在正方形块的情况下,可以以正方形变换形式执行本说明书中使用的变换。在非正方形块的情况下,可以以非正方形变换形式执行变换。在包括正方形块和非正方形块中的至少一个的正方形形状区域的情况下,可以以正方形变换形式对该区域执行变换。在包括正方形块和非正方形块中的至少一个的非正方形形状区域的情况下,可以以非正方形变换形式对该区域执行变换。
[0721]
此外,在本说明书中,关于重排方法的信息可以是翻转方法信息。
[0722]
此外,在本说明书中使用的变换可表示变换和逆变换中的至少一个。
[0723]
编码器可针对残差块执行变换以产生变换系数,对变换系数进行量化以产生量化的系数等级,并且对量化的系数等级进行熵编码,以便改善图像的主观/客观图像质量。
[0724]
解码器可对量化的系数等级进行熵解码,对量化的系数等级进行反量化以产生变换系数,并且对变换系数进行逆变换以产生重建的残差块。
[0725]
可显式地对关于哪个变换被用作变换和逆变换的变换类型信息进行熵编码/解码。另外,可基于编码参数中的至少一个来隐式地确定关于哪个变换被用作变换和逆变换的变换类型信息,而无需进行熵编码/解码。
[0726]
在下文中,将描述本发明中用于执行变换或逆变换中的至少一个的图像编码/解码方法和设备以及用于存储比特流的记录介质的实施例。
[0727]
使用以下实施例中的至少一个,可将块分区为n个子块,并且可执行预测、变换/逆变换、量化/反量化或熵编码/解码中的至少一个。此模式可被称为第一子块分区模式(例如,isp模式或帧内子分区模式)。
[0728]
块可表示编码块、预测块或变换块。例如,块可以是变换块。
[0729]
另外,分区的子块可表示编码块、预测块或变换块中的至少一个。例如,分区的子块可以是变换块。
[0730]
另外,块或分区的子块可以是帧内块、帧间块或帧内块复制块中的至少一个。例如,块和子块可以是帧内块。
[0731]
另外,块或分区的子块可以是帧内预测块、帧间预测块或帧内块复制预测块中的至少一个。例如,块和子块可以是帧内预测块。
[0732]
另外,块或分区的子块可以是亮度信号块或色度信号块中的至少一个。例如,块和子块可以是亮度信号块。
[0733]
当块被分区为n个子块时,在分区之前的块可以是编码块,并且分区的子块可以是预测块或变换块中的至少一个。也就是说,可利用分区的子块尺寸执行变换系数的预测、变换/逆变换、量化/反量化、熵编码/解码。
[0734]
另外,当块被分区为n个子块时,在分区之前的块可以是编码块或预测块中的至少一个,并且分区的子块可以是变换块。也就是说,可利用分区之前的块的尺寸执行预测,并且可利用分区的子块尺寸执行变换系数的变换/逆变换、量化/反量化、熵编码/解码。
[0735]
可基于块的面积(宽度与高度的乘积等)、尺寸(宽度、高度或宽度或高度的组合)和形状/形式(矩形(非正方形)、正方形等)中的至少一个来确定是否将块分区为多个子块。
[0736]
例如,在当前块为64
×
64块时,可将当前块分区为多个子块。
[0737]
作为另一示例,在当前块为32
×
32块时,可将当前块分区为多个子块。
[0738]
作为另一示例,在当前块为32
×
16块时,可将当前块分区为多个子块。
[0739]
作为另一示例,在当前块为16
×
32块时,可将当前块分区为多个子块。
[0740]
作为另一示例,在当前块为4
×
4块时,可以不将当前块分区为多个子块。
[0741]
作为另一示例,在当前块为2
×
4块时,可以不将当前块分区为多个子块。
[0742]
作为另一示例,在当前块的面积等于或大于32时,可将当前块分区为多个子块。
[0743]
作为另一示例,在当前块的面积小于32时,可以不将当前块分区为多个子块。
[0744]
作为另一示例,在当前块的面积为256并且当前块的形状为矩形时,可将当前块分区为多个子块。
[0745]
作为另一示例,在当前块的面积为16并且当前块的形状为正方形时,可以不将当前块分区为多个子块。
[0746]
当对块进行分区时,可沿垂直方向或水平方向中的至少一个分区方向将块分区为多个子块。
[0747]
例如,可沿垂直方向将当前块分区为两个子块。
[0748]
作为另一示例,可沿水平方向将当前块分区为两个子块。
[0749]
作为另一示例,可沿水平方向将当前块分区为四个子块。
[0750]
作为另一示例,可沿垂直方向将当前块分区为四个子块。
[0751]
当块被分区为n个子块时,n可以是正整数,并且例如可以是2或4。另外,可使用块的面积、尺寸、形状或分区方向中的至少一个来确定n。
[0752]
例如,在当前块是4
×
8或8
×
4块时,可沿水平方向将当前块分区为两个子块或者沿垂直方向将当前块分区为两个子块。
[0753]
作为另一示例,在当前块为16
×
8或16
×
16块时,可沿垂直方向将当前块分区为四个子块或者沿水平方向将当前块分区为四个子块。
[0754]
作为另一示例,在当前块为8
×
32或32
×
32块时,可沿水平方向将当前块分区为四个子块或者沿垂直方向将当前块分区为四个子块。
[0755]
作为另一示例,在当前块为16
×
4、32
×
4或64
×
4块时,可沿垂直方向将当前块分区为四个子块。另外,在当前块是16
×
4、32
×
4或64
×
4块时,可沿水平方向将当前块分区为两个子块。
[0756]
作为另一示例,在当前块为4
×
16、4
×
32或4
×
64块时,可沿水平方向将当前块分区为四个子块。另外,在当前块是4
×
16、4
×
32或4
×
64块时,可沿垂直方向将当前块分区为两个子块。
[0757]
作为另一示例,在当前块为j
×
4块时,可沿水平方向将当前块分区为两个子块。这里,j可以是正整数。
[0758]
作为另一示例,在当前块为4
×
k块时,可沿垂直方向将当前块分区为两个子块。这里,j可以是正整数。
[0759]
作为另一示例,在当前块为j
×
k(k>4)块时,可沿水平方向将当前块分区为四个子块。这里,j可以是正整数。
[0760]
作为另一示例,在当前块为j
×
k(j>4)块时,可沿垂直方向将当前块分区为四个子
块。这里,j可以是正整数。
[0761]
作为另一示例,在当前块为j
×
k(k>4)块时,可沿垂直方向将当前块分区为四个子块。这里,j可以是正整数。
[0762]
作为另一示例,在当前块的面积为64时,可沿水平方向或垂直方向将当前块分区为四个子块。
[0763]
作为另一示例,在当前块为16
×
4块并且当前块的形状为矩形时,可沿垂直方向将当前块分区为四个子块。
[0764]
作为另一示例,在当前块的面积为1024并且当前块的形状为正方形时,可沿水平方向或垂直方向将当前块分区为四个子块。
[0765]
另外,子块可具有最小面积、最小宽度或最小高度中的至少一个。
[0766]
例如,子块可具有s作为最小面积。这里,s可以是正整数,并且例如可以是16。
[0767]
作为另一示例,子块可具有j作为最小宽度。这里,j可以是正整数,并且例如可以是4。
[0768]
作为另一示例,子块可具有k作为最小高度。这里,k可以是正整数,并且例如可以是4。
[0769]
在每一个分区的子块中,可通过将残差块(或重建的残差块)与预测块相加来产生重建块。这里,每一个重建的子块中的至少一个重建样点可被用作稍后编码/解码的子块的帧内预测中的参考样点。
[0770]
可根据分区方向中的至少一个来确定从块分区出的子块的编码/解码顺序。
[0771]
例如,可将水平分区出的子块的编码/解码顺序确定为从上方方向到下方方向的顺序。
[0772]
作为另一示例,可将垂直分区出的子块的编码/解码顺序确定为从左侧方向到右侧方向的顺序。
[0773]
针对分区出的子块,可共享并使用帧内预测模式。
[0774]
此时,可在分区之前在块中仅对针对每一个子块的关于帧内预测模式的信息进行熵编码/解码一次。
[0775]
针对分区出的子块,可共享并使用帧内块复制模式。
[0776]
此时,可在分区之前在块中仅对针对每一个子块的关于块内复制模式的信息进行熵编码/解码一次。
[0777]
为了指示块被分区为n个子块并且执行预测、变换/逆变换、量化/反量化或熵编码/解码中的至少一个的子块分区模式,可对子块分区模式信息或分区方向信息中的至少一个进行熵编码/解码。
[0778]
这里,子块分区模式信息可用于指示子块分区模式。当指示使用子块分区模式(第二值)时,可将块分区为子块,并且可执行预测、变换/逆变换、量化/反量化或熵编码/解码中的至少一个。当指示不使用子块分区模式(第一值)时,可以不将块分区为子块,并且可执行预测、变换/逆变换、量化/反量化或熵编码/解码中的至少一个。这里,第一值可以是0,并且第二值可以是1。
[0779]
另外,可将分区方向信息用于指示子块分区模式是垂直分区还是水平分区。当分区方向信息具有第一值时,可沿水平方向对块进行分区,并且第一值可以是0。另外,当分区
方向信息具有第二值时,可沿垂直方向对块进行分区,并且第二值可以是1。
[0780]
在当前块不使用最接近的参考样点线(第一参考样点线)作为参考样点行时,可以不对子块分区模式信息或分区方向信息中的至少一个进行熵编码/解码。此时,可从子块分区模式信息推断出当前块未被分区为子块。
[0781]
这里,当前块不使用最接近的参考样点线(第一参考样点线)作为参考样点线可意味着第二或更大参考样点线可被用作当前块周围的重建参考样点线。
[0782]
也就是说,仅在当前块使用最接近的参考样点线作为参考样点线时,可对子块分区模式信息或分区方向信息中的至少一个进行熵编码/解码。
[0783]
可基于子块的面积、尺寸、形状或分区方向中的至少一个来确定在变换系数的熵编码/解码期间使用的系数组的面积、尺寸、形状或分区方向中的至少一个。
[0784]
例如,当子块的面积为16时,可将系数组的面积确定为16。
[0785]
作为另一示例,当子块的面积为32时,可将系数组的面积确定为16。
[0786]
作为另一示例,当子块的尺寸为1
×
16或16
×
1时,可将系数组的尺寸确定为1
×
16或16
×
1。
[0787]
作为另一示例,当子块的尺寸为2
×
8或8
×
2时,可将系数组的尺寸确定为2
×
8或8
×
2。
[0788]
作为另一示例,当子块的尺寸为4
×
4时,可将系数组的尺寸确定为4
×
4。
[0789]
作为另一示例,当子块的宽度为2时,可将系数组的宽度确定为2。
[0790]
作为另一示例,当子块的宽度为4时,可将系数组的宽度确定为4。
[0791]
作为另一示例,当子块的高度为2时,可将系数组的高度确定为2。
[0792]
作为另一示例,当子块的高度为4时,可将系数组的高度确定为4。
[0793]
作为另一示例,当子块的形状为矩形(非正方形)时,可将系数组的形状确定为矩形(非正方形)。
[0794]
作为另一示例,当子块的形状为正方形时,可将系数组的形状确定为正方形。
[0795]
作为另一示例,当子块的尺寸为16
×
4并且其形式为矩形时,可将系数组的尺寸确定为4
×
4或8
×
2中的至少一个。
[0796]
作为另一示例,子块的尺寸为4
×
8并且其形式为矩形,可将系数组的尺寸确定为4
×
4或2
×
8中的至少一个。
[0797]
作为另一示例,子块的尺寸为32
×
4并且其形式为矩形,可将系数组的尺寸确定为4
×
4或8
×
2中的至少一个。
[0798]
作为另一示例,子块的尺寸为8
×
64并且其形式为矩形,可将系数组的尺寸确定为4
×
4或2
×
8中的至少一个。
[0799]
作为另一示例,子块的尺寸为16
×
4并且分区方向为垂直方向,可将系数组的尺寸确定为4
×
4。
[0800]
作为另一示例,子块的尺寸为4
×
8并且分区方向为水平方向,可将系数组的尺寸确定为4
×
4。
[0801]
作为另一示例,子块的尺寸为32
×
4并且分区方向为水平方向,可将系数组的尺寸确定为8
×
2。
[0802]
作为另一示例,子块的尺寸为8
×
64并且分区方向为垂直方向,可将系数组的尺寸
确定为2
×
8。
[0803]
针对每一个分区出的子块,可对指示子块单元中是否存在具有非零值的至少一个变换系数的编码块标志进行熵编码/解码。
[0804]
例如,编码块标志可指示在子块单元中的至少一个子块中存在具有非零值的至少一个变换系数。
[0805]
作为另一示例,当m表示子块的总数并且从子块前面起的m
‑
1个子块的编码块标志指示不存在具有非零值的变换系数时,可推断第m个子块的编码块标志指示存在具有非零值的至少一个变换系数。
[0806]
作为另一示例,当在子块单元中对编码块标志进行熵编码/解码时,可在分区之前以块为单位对编码块标志进行熵编码/解码。
[0807]
作为另一示例,当在分区之前以块为单位对编码块标志进行熵编码/解码时,可以不以子块为单位对编码块标志进行熵编码/解码。
[0808]
另外,在当前块处于第一子块分区模式并且当前块的尺寸是预定义尺寸时,用于帧内预测的子块的尺寸和用于变换的子块的尺寸可彼此不同。也就是说,用于帧内预测的子块分区和用于变换的子块分区可彼此不同。这里,预定义尺寸可以是4
×
n或8
×
n(n>4)。这里,子块分区可表示垂直分区。
[0809]
例如,在当前块处于第一子块分区模式并且当前块的尺寸为4
×
n(n>4)时,可将当前块垂直分区为尺寸为4
×
n的子块以用于帧内预测,并且可将当前块垂直分区为尺寸为1
×
n的子块以用于变换。此时,可执行一维变换/逆变换以便执行尺寸为1
×
n的变换。也就是说,可基于当前块的分区模式或当前块的尺寸中的至少一个来执行一维变换/逆变换。
[0810]
作为另一示例,在当前块处于第一子块分区模式并且当前块的尺寸为8
×
n(n>4)时,可将当前块垂直分区为尺寸为4
×
n的子块以用于帧内预测,并且可将当前块垂直分区为尺寸为2
×
n的子块以用于变换。此时,可执行二维变换/逆变换以便执行尺寸为2
×
n的变换。也就是说,可基于当前块的分区模式或当前块的尺寸中的至少一个来执行二维变换/逆变换。
[0811]
这里,n可表示正整数,并且可以是小于64或128的正整数。
[0812]
另外,当前块的尺寸可表示当前块的编码块的尺寸、预测块的尺寸或变换块的尺寸中的至少一个。
[0813]
如在图35的示例中,根据第一子块分区模式的实施例,可沿水平方向将当前块分区为两个子块,并且可沿垂直方向将当前块分区为两个子块。
[0814]
如在图36的示例中,根据第一子块分区模式的实施例,可沿水平方向将当前块分区为两个子块,并且可沿垂直方向将当前块分区为两个子块。
[0815]
如在图37的示例中,根据第一子块分区模式的实施例,可沿水平方向将当前块分区为四个子块,并且可沿垂直方向将当前块分区为四个子块。
[0816]
使用以下实施例中的至少一个,可将块分区为n个子块以执行变换/逆变换、量化/反量化或熵编码/解码中的至少一个。这样的模式可被称为第二子块分区模式(例如,sbt模式或子块变换模式)。
[0817]
块可表示编码块、预测块或变换块中的至少一个。例如,块可以是变换块。
[0818]
另外,分区出的子块可表示编码块、预测块或变换块中的至少一个。例如,分区出
的子块可以是变换块。
[0819]
另外,块或分区出的子块可以是帧内块、帧间块或帧内块复制块中的至少一个。例如,块或分区出的子块可以是帧间块。
[0820]
另外,块或分区出的子块可以是帧内预测块、帧间预测块或帧内块复制预测块中的至少一个。例如,块可以是帧间预测块。
[0821]
另外,块或分区出的子块可以是亮度信号块或色度信号块中的至少一个。例如,块和子块可以是亮度信号块。
[0822]
当块被分区为n个子块时,在分区之前的块可以是编码块,并且分区出的子块可以是预测块或变换块中的至少一个。也就是说,可利用分区出的子块尺寸执行变换系数的变换/逆变换、量化/反量化和熵编码/解码。
[0823]
另外,当块被分区为n个子块时,在分区之前的块可以是编码块或预测块中的至少一个,并且分区出的子块可以是变换块。也就是说,在分区之前利用块的尺寸执行预测,并且可利用分区出的子块的尺寸执行变换系数的变换/逆变换、量化/反量化和熵编码/解码。
[0824]
可基于块的面积(宽度与高度的乘积)、尺寸(宽度或高度或者宽度与高度的组合)或形状/形式(矩形、正方形等)中的至少一个来确定块是否被分区为多个子块。
[0825]
例如,在当前块为64
×
64块时,可将当前块分区为多个子块。
[0826]
作为另一示例,在当前块为32
×
32块时,可将当前块分区为多个子块。
[0827]
作为另一示例,在当前块为32
×
16块时,可将当前块分区为多个子块。
[0828]
作为另一示例,在当前块为16
×
32块时,可将当前块分区为多个子块。
[0829]
作为另一示例,在当前块为4
×
4块时,可以不将当前块分区为多个子块。
[0830]
作为另一示例,在当前块为2
×
4块时,可以不将当前块分区为多个子块。
[0831]
作为另一示例,在当前块的宽度或高度中的至少一个大于变换块的最大尺寸时,可以不将当前块分区为多个子块。也就是说,在当前块的宽度或高度中的至少一个小于或等于变换块的最大尺寸时,当前块可使用第二子块分区模式。
[0832]
另外,在当前块的宽度或高度中的至少一个小于或等于变换块的最大尺寸时,可对指示第二子块分区模式的信息(子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息)中的至少一个进行熵编码/解码。这里,可基于在更高等级单元中用信号传送的变换块最大尺寸信息来确定变换块的最大尺寸。例如,可基于变换块最大尺寸信息将变换块的最大尺寸确定为64或32中的任一个。
[0833]
作为另一示例,在当前块的面积等于或大于32时,可将当前块分区为多个子块。
[0834]
作为另一示例,在当前块的面积小于32时,可以不将当前块分区为多个子块。
[0835]
作为另一示例,在当前块的面积为256并且当前块的形状为矩形时,可将当前块分区为多个子块。
[0836]
作为另一示例,在当前块的面积为16并且当前块的形状为正方形时,可以不将当前块分区为多个子块。
[0837]
在当前块的宽度或高度中的至少一个大于或等于预定义值时,可将当前块分区为多个子块。
[0838]
例如,在当前块的宽度或高度中的至少一个等于或大于8时,可将当前块分区为多个子块。
[0839]
相反地,在当前块的宽度和高度两者小于预定义值时,可以不将当前块分区为多个子块。
[0840]
在当前块处于gpm(几何分区模式)时,可以不将当前块的变换块分区为多个子块。这里,gpm可以是预测模式,其中,在该预测模式下,将当前块的预测块分区为两个子块以执行预测。在当前块在gpm下时,可将当前块的预测块分区为两个子块。此时,可对关于用于将当前块的预测块分区为两个子块的分区方向的信息进行熵编码/解码。可针对两个子块执行帧间预测,从而产生针对两个子块的预测样点。另外,可对所产生的两个子块的预测样点进行加权求和以推导当前块的预测样点。也就是说,在当前块的预测块被分区为至少两个子块时,可以不将当前块的变换块分区为至少两个子块。类似地,在当前块的预测块未被分区为至少两个子块时,可将当前块的变换块分区为至少两个子块。
[0841]
当对块进行分区时,可沿垂直方向或水平方向中的至少一个将块分区为多个子块。
[0842]
例如,可沿垂直方向将当前块分区为两个子块。
[0843]
作为另一示例,可沿水平方向将当前块分区为两个子块。
[0844]
当块被分区为n个子块时,n可以是正整数,并且可以是例如2。另外,可使用块的面积、尺寸、形状或分区方向中的至少一个来确定n。
[0845]
例如,在当前块为4
×
8或8
×
4块时,可沿水平方向将当前块分区为两个子块或者沿垂直方向将当前块分区为两个子块。
[0846]
作为另一示例,在当前块为16
×
8或16
×
16块时,可沿垂直方向将当前块分区为两个子块或者沿水平方向将当前块分区为两个子块。
[0847]
作为另一示例,在当前块为8
×
32或32
×
32块时,可沿水平方向将当前块分区为两个子块或者沿垂直方向将当前块分区为两个子块。
[0848]
作为另一示例,在当前块为j
×
8块时,可沿水平方向将当前块分区为两个子块。这里,j可以是正整数。
[0849]
作为另一示例,在当前块为8
×
k块时,可沿垂直方向将当前块分区为两个子块。这里,j可以是正整数。
[0850]
作为另一示例,在当前块为j
×
k(k>8)块时,可沿水平方向将当前块分区为两个子块。这里,j可以是正整数。此时,分区出的子块的高度可具有1:3或3:1的比例。
[0851]
作为另一示例,在当前块为j(j>8)
×
k块时,可沿垂直方向将当前块将当前块分区为两个子块。这里,j可以是正整数。此时,分区出的子块的宽度可具有1:3或3:1的比例。
[0852]
作为另一示例,在当前块的面积为64时,可沿水平方向或垂直方向将当前块分区为两个子块。
[0853]
作为另一示例,在当前块为16
×
4块并且当前块的形状为矩形时,可沿垂直方向将当前块分区为两个子块。
[0854]
作为另一示例,在当前块的面积为1024并且当前块的形状为正方形时,可沿水平方向或垂直方向将当前块分区为两个子块。
[0855]
另外,子块可具有最小面积、最小宽度或最小高度中的至少一个。
[0856]
例如,子块可具有s作为最小面积。这里,s可以是正整数,并且例如可以是16。
[0857]
作为另一示例,子块可具有j作为最小宽度。这里,j可以是正整数,并且例如可以
是4。
[0858]
作为另一示例,子块可具有k作为最小高度。这里,k可以是正整数,并且例如可以是4。
[0859]
为了指示将块分区为n个子块以执行变换/逆变换、量化/反量化或熵编码/解码中的至少一个的子块分区模式,可对子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息中的至少一个进行熵编码/解码。
[0860]
这里,子块分区模式信息可用于指示子块分区模式。当其指示使用子块分区模式(第二值)时,可将块分区为子块,并且可执行变换/逆变换、量化/反量化或熵编码/解码中的至少一个。当其指示不使用子块分区模式(第一值)时,可以不将块分区为子块,并且可执行变换/逆变换、量化/反量化或熵编码/解码中的至少一个。这里,第一值可以是0,第二值可以是1。
[0861]
另外,分区方向信息可用于指示子块分区模式是沿垂直方向被分区还是沿水平方向被分区。当分区方向信息具有第一值时,可沿垂直方向对子块进行分区,并且第一值可以是0。另外,当分区方向信息具有第二值时,可沿水平方向对子块进行分区,并且第二值可以是1。
[0862]
另外,子块位置信息可用于指示将分区出的子块中的哪一个子块的残差信号被编码/解码。当子块位置信息具有第一值时,可对第一子块的残差信号进行编码/解码,并且第一值可以是0。另外,当子块位置信息具有第二值时,可对第二子块的残差信号进行编码/解码,并且第二值可以是1。另外,当子块位置信息具有第一值时,可对第一子块的亮度信号的编码块标志或色度信号的编码块标志中的至少一个进行熵编码/解码。另外,当子块位置信息具有第二值时,可对第二子块的亮度信号的编码块标志或色度信号的编码块标志中的至少一个进行熵编码/解码。
[0863]
另外,子块尺寸信息可用于指示分区出的子块的宽度或高度是块的宽度或高度的1/2还是1/4。当子块尺寸信息具有第一值时,其可指示由子块位置信息指示的残差信号被编码/解码的子块的宽度或高度是块的宽度或高度的1/2,并且第一值可以是0。另外,当子块尺寸信息具有第二值时,其可指示由子块位置信息指示的残差信号被编码/解码的子块的宽度或高度是块的宽度或高度的1/4,并且第二值可以是1。例如,当仅存在分区出的子块的尺寸是块的宽度或高度的1/2的情况时,可以不对子块尺寸信息进行熵编码/解码。
[0864]
在每一个分区出的子块中,可通过将残差块(或重建残差块)与预测块相加来产生重建块。
[0865]
可根据分区方向中的至少一个来确定从块分区出的子块的编码/解码顺序。
[0866]
例如,可将沿水平方向分区出的子块的编码/解码顺序确定为从上方方向至下方方向的顺序。
[0867]
作为另一示例,可将沿垂直方向分区出的子块的编码/解码顺序确定为从左侧方向至右侧方向的顺序。
[0868]
在分区出的子块中,可在子块单元中对指示是否存在具有非零值的变换系数中的至少一个的编码块标志进行熵编码/解码。
[0869]
例如,编码块标志可指示在子块单元中的至少一个子块中存在具有非零值的变换系数中的至少一个。
[0870]
作为另一示例,当在子块单元中对编码块标志进行熵编码/解码时,在分区之前,可以不以块为单位对编码块标志进行熵编码/解码。
[0871]
作为另一示例,当在分区之前以块为单位对编码块标志进行熵编码/解码时,可以不以子块为单位对编码块标志进行熵编码/解码。
[0872]
可仅针对由子块位置信息指示的子块对残差信号进行熵编码/解码。
[0873]
此时,由于在由子块位置信息指示的子块中可始终存在残差信号,因此可推断出编码块标志指示存在具有非零值的至少一个变换系数。
[0874]
另外,由于在未由子块位置信息指示的子块中可以不始终存在残差信号,因此可推断出编码块标志指示不存在具有非零值的至少一个变换系数。
[0875]
可基于子块的面积、尺寸、形状或分区方向中的至少一个来确定在对变换系数进行熵编码/解码时使用的系数组的面积、尺寸、形状或分区方向中的至少一个。
[0876]
例如,当子块的面积为16时,可将系数组的面积确定为16。
[0877]
作为另一示例,当子块的面积为32时,可将系数组的面积确定为16。
[0878]
作为另一示例,当子块的尺寸为1
×
16或16
×
1时,可将系数组的尺寸确定为1
×
16或16
×
1。
[0879]
作为另一示例,当子块的尺寸为2
×
8或8
×
2时,可将系数组的尺寸确定为2
×
8或8
×
2。
[0880]
作为另一示例,当子块的尺寸为4
×
4时,可将系数组的尺寸确定为4
×
4。
[0881]
作为另一示例,当子块的宽度为2时,可将系数组的宽度确定为2。
[0882]
作为另一示例,当子块的宽度为4时,可将系数组的宽度确定为4。
[0883]
作为另一示例,当子块的高度为2时,可将系数组的高度确定为2。
[0884]
作为另一示例,当子块的高度为4时,可将系数组的高度确定为4。
[0885]
作为另一示例,当子块的形状为矩形(非正方形)时,系数组的形状可确定为矩形(非正方形)。
[0886]
作为另一示例,当子块的形状为正方形时,系数组的形状可确定为正方形。
[0887]
作为另一示例,当子块的尺寸为16
×
4并且其形式为矩形时,可将系数组的尺寸确定为4
×
4或8
×
2中的至少一个。
[0888]
作为另一示例,当子块的尺寸为4
×
8并且其形式为矩形时,可将系数组的尺寸确定为4
×
4或2
×
8中的至少一个。
[0889]
作为另一示例,当子块的尺寸为32
×
4并且其形式为矩形时,可将系数组的尺寸确定为4
×
4或8
×
2中的至少一个。
[0890]
作为另一示例,当子块的尺寸为8
×
64并且其形式为矩形时,可将系数组的尺寸确定为4
×
4或2
×
8中的至少一个。
[0891]
作为另一示例,当子块的尺寸为16
×
4并且分区方向为垂直方向时,可将系数组的尺寸确定为4
×
4。
[0892]
作为另一示例,当子块的尺寸为4
×
8并且分区方向为水平方向时,可将系数组的尺寸确定为4
×
4。
[0893]
作为另一示例,当子块的尺寸为32
×
4并且分区方向为水平方向时,可将系数组的尺寸确定为8
×
2。
[0894]
作为另一示例,当子块的尺寸为8
×
64且分区方向为垂直方向时,可将系数组的尺寸确定为2
×
8。
[0895]
另外,可将变换系数被熵编码/解码时使用的系数组的面积确定为预定义值。这里,预定义值可以是4或16。
[0896]
另外,可基于当前块的尺寸确定变换系数组的面积或尺寸,而不管当前块的颜色分量如何。此时,当前块的尺寸可包括当前块的宽度或高度中的至少一个。
[0897]
例如,在当前块的宽度和高度为2时,可将系数组的尺寸确定为2
×
2。
[0898]
作为另一示例,在当前块的尺寸为2
×
4或4
×
2时,可将系数组的尺寸确定为2
×
2。
[0899]
如在图38的示例中,根据第二子块分区模式的实施例,可沿水平方向将当前块分区为两个子块(高度的1/2或1/4),并且可沿垂直方向将当前块分区为两个子块(宽度的1/2或1/4)。在图38的示例中,灰色阴影可表示子块中的残差信号被编码/解码的块,并且可使用子块位置信息来指示该块。
[0900]
可在参数集或报头中的至少一个中对子块分区模式使用信息进行熵编码/解码,其中,子块分区模式使用信息指示是否使用将块分区为n个子块并且执行预测、变换/逆变换、量化/反量化或熵编码/解码中的至少一个的模式。
[0901]
这里,子块分区模式使用信息可表示第一子块分区模式或第二子块分区模式中的至少一个。
[0902]
此时,参数集或报头中的至少一个可以是视频参数集、解码参数集、序列参数集、自适应参数集、画面参数集、画面头、条带头、并行块组头或并行块头中的至少一个。
[0903]
例如,为了指示在视频内是否使用子块分区模式,可在视频参数集中对子块分区模式使用信息进行熵编码/解码。
[0904]
作为另一示例,为了指示在解码处理内是否使用子块分区模式,可在序列参数集中对子块分区模式使用信息进行熵编码/解码。
[0905]
作为另一示例,为了指示在序列内是否使用子块分区模式,可在序列参数集中对子块分区模式使用信息进行熵编码/解码。
[0906]
作为另一示例,为了指示在若干个画面内是否使用子块分区模式,可在自适应参数集或自适应报头中对子块分区模式使用信息进行熵编码/解码。
[0907]
作为另一示例,为了指示在画面内是否使用子块分区模式,可在画面参数集或画面头中对子块分区模式使用信息进行熵编码/解码。
[0908]
作为另一示例,为了指示在条带内是否使用子块分区模式,可在条带头中对子块分区模式使用信息进行熵编码/解码。
[0909]
作为另一示例,为了指示在并行块组内是否使用子块分区模式,可在并行块组头中对子块分区模式使用信息进行熵编码/解码。
[0910]
作为另一示例,为了指示在并行块内是否使用子块分区模式,可在并行块头中对子块分区模式使用信息进行熵编码/解码。
[0911]
可使用以下实施例中的至少一个来确定每一个块或子块的变换/逆变换类型。
[0912]
可基于针对块或子块的预测模式、帧内预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换性能信息或基于矩阵的帧内预测性能信息中的至少一个来确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个。
[0913]
例如,可基于针对块或子块的预测模式、帧内预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换性能信息或基于矩阵的帧内预测性能信息中的至少一个来确定指示水平变换类型或垂直变换类型中的至少一个的一维变换类型。
[0914]
作为另一示例,可基于针对块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个来确定指示水平变换类型和垂直变换类型的组合的二维变换组合。
[0915]
作为另一示例,可基于针对块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个来确定指示是否执行变换的是否使用变换。
[0916]
此时,一维变换类型、二维变换组合或者是否使用变换中的至少一个可根据针对块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状或子块分区相关信息中的至少一个而彼此不同。
[0917]
另外,当基于针对块或子块的帧内预测模式、预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换性能信息或基于矩阵的帧内预测性能信息中的至少一个确定用于块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个时,可以不对关于一维变换类型的信息、关于二维变换组合的信息或关于是否使用变换的信息进行熵编码/解码。
[0918]
也就是说,可根据编码器/解码器中的预定规则隐式地确定用于块或子块的一维变换类型、二维变换组合或是否使用变换中的至少一个。可基于编码器/解码器中的编码参数来设置预定规则。
[0919]
这里,基于矩阵的帧内预测可表示执行边界平均处理、矩阵矢量乘法处理或线性内插处理中的至少一个以产生预测块的帧内预测模式。
[0920]
这里,变换可表示变换或逆变换中的至少一个。
[0921]
另外,块可表示从块分区出的每一个子块。
[0922]
初级变换可表示针对残差块执行初级变换以产生变换系数的基于dct
‑
j或dst
‑
k的整数变换(诸如,dct
‑
2、dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个。这里,j和k可以是正整数。
[0923]
可使用从基于dct
‑
j或dst
‑
k的整数变换(诸如dct
‑
2、dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个的变换矩阵提取的变换矩阵来执行初级变换。也就是说,可使用提取的变换矩阵执行初级变换。另外,提取的变换矩阵中的系数中的至少一个可等于基于dct
‑
j或dst
‑
k的整数变换(诸如,dct
‑
2、dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个的变换矩阵中的系数中的至少一个。另外,提取的变换矩阵可被包括在将被提取的变换矩阵中。另外,可通过针对将被提取的变换矩阵中的特定系数执行翻转或正负号改变中的至少一个来获得提取的变换矩阵。
[0924]
例如,可从dct
‑
2的变换矩阵中提取基于dct
‑
j或dst
‑
k的整数变换(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个并且将所述至少一个用于初级变换。
[0925]
这里,基于dct
‑
j或dst
‑
k的整数变换(诸如,dct
‑
2、dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个可与基于dct
‑
j或dst
‑
k的整数变换(诸如,dct
‑
2、dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)中的至少一个在变换矩阵中具有不同的系数。
[0926]
例如,可通过针对基于dst
‑
7的整数变换矩阵执行水平翻转或者针对dst
‑
7变换矩
阵系数中的至少一个执行正负号改变中的至少一个来推导基于dct
‑
8的整数变换矩阵。此时,可使用垂直翻转来代替水平翻转。
[0927]
作为另一示例,可通过针对基于dct
‑
8的整数变换矩阵执行水平翻转或者针对dct
‑
8变换矩阵系数中的至少一个执行正负号改变中的至少一个来推导基于dst
‑
7的整数变换矩阵。此时,可使用垂直翻转来代替水平翻转。
[0928]
作为另一示例,可通过针对基于dst
‑
4的整数变换矩阵执行水平翻转或者针对dst
‑
4变换矩阵系数中的至少一个执行正负号改变中的至少一个来推导基于dct
‑
4的整数变换矩阵。此时,可使用垂直翻转来代替水平翻转。
[0929]
作为另一示例,可通过针对基于dct
‑
4的整数变换矩阵执行水平翻转或者针对dct
‑
4变换矩阵系数中的至少一个执行正负号改变中的至少一个来推导基于dst
‑
4的整数变换矩阵。此时,可使用垂直翻转来代替水平翻转。
[0930]
次级变换可表示用于基于角度旋转至少一个变换系数的变换中的至少一个。可在初级变换之后执行次级变换。
[0931]
在编码器中,可对经过初级变换的变换系数的左上侧的低频区域的系数执行次级变换。可基于变换块的尺寸来确定应用次级变换的低频区域的尺寸。
[0932]
在解码器中,可在执行初级逆变换之前执行次级逆变换。在以下描述中,次级变换可包括次级逆变换。
[0933]
因为使用不可分离变换核而不是使用水平和垂直可分离变换核(或类型),所以次级变换可被称为lfnst(低频不可分离变换)。
[0934]
可仅针对帧内预测编码/解码执行次级变换,并且可基于帧内预测模式来确定次级变换核。具体地,可基于帧内预测模式来确定包括多个变换核的变换集合。另外,可在基于索引信息所确定的变换集合中确定将被应用于次级变换的变换核。这里,变换集合可包括四种类型的变换集合。
[0935]
另外,在当前块的帧内预测模式为cclm模式时,可基于与色度块相应的亮度块的帧内预测模式来确定色度块的变换集合。这里,当与色度块相应的亮度块处于基于矩阵的帧内预测模式时,这可被认为是平面模式,并且可确定针对色度块的变换集合。另外,当与色度块相应的亮度块处于ibc模式时,这可被视为dc模式,并且可确定针对色度块的变换集合。
[0936]
作为另一示例,当与色度块相应的亮度块处于基于矩阵的帧内预测模式、ibc模式或调色板(palette)模式时,此可被视为平面模式并且可确定针对色度块的变换集合。
[0937]
作为另一示例,当与色度块相应的亮度块处于基于矩阵的帧内预测模式、ibc模式或调色板模式时,此可被视为dc模式并且可确定针对色度块的变换集合。
[0938]
另外,可使用次级变换索引信息来确定变换集合中的次级变换核。
[0939]
是否使用变换可表示是否在残差块中使用初级变换或次级变换中的至少一个。是否使用变换可包括是否使用初级变换或者是否使用次级变换中的至少一个。
[0940]
例如,当作为指示是否使用初级变换或次级变换中的至少一个的信息的transform_skip_flag具有第一值(例如,0)时,这可指示使用初级变换或次级变换中的至少一个。
[0941]
作为另一示例,当作为指示是否使用初级变换或次级变换中的至少一个的信息的
transform_skip_flag具有第二值(例如,1)时,这可指示不使用初级变换或次级变换中的至少一个。
[0942]
一维变换类型可表示初级变换的类型,并且表示用于基于dct
‑
j或dst
‑
k的整数变换类型中的至少一个的水平变换类型trtypehor或垂直变换类型trtypever。这里,j和k可以是正整数。
[0943]
作为初级变换的类型,可使用第一变换至第n变换。这里,n可以是2或更大的正整数。
[0944]
例如,第一变换可表示基于dct
‑
2的整数变换。
[0945]
作为另一示例,当第一变换被用于水平变换和垂直变换时,作为用于水平变换的变换类型的trtypehor和作为用于垂直变换的变换类型的trtypever可分别具有值q和值r。这里,q和r可以是负整数、0或正整数中的至少一个。例如,q和r可分别是0和0。
[0946]
例如,当trtypehor具有第一值时,这可表示基于dct
‑
2的整数水平变换。
[0947]
作为另一示例,当trtypever具有第一值时,这可表示基于dct
‑
2的整数垂直变换。
[0948]
第一值可以是0。
[0949]
例如,第二变换可表示基于除dct
‑
2之外的dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。这里,j和k可以是正整数。也就是说,第二变换可表示除第一变换之外的变换中的至少一个。
[0950]
作为另一示例,当第二变换被用于水平变换或垂直变换中的至少一个时,作为用于水平变换的变换类型的trtypehor和作为用于垂直变换的变换类型的trtypever可分别具有值t和值u。这里,t和u可以是负整数、0或正整数中的至少一个。例如,t和u可分别是等于或大于1的值和等于或大于1的值。此外,t和u可分别大于q和r。
[0951]
例如,当trtypehor具有第二值时,这可表示基于dst
‑
7的整数水平变换。
[0952]
作为另一示例,当trtypehor具有第三值时,这可表示基于dct
‑
8的整数水平变换。
[0953]
作为另一示例,当trtypever具有第二值时,这可表示基于dst
‑
7的整数垂直变换。
[0954]
作为另一示例,当trtypever具有第三值时,这可表示基于dct
‑
8的整数垂直变换。
[0955]
第二值可以是1。另外,第三值可以是2。
[0956]
可使用dst
‑
4代替dst
‑
7。另外,可使用dct
‑
4代替dct
‑
8。
[0957]
例如,第一变换可以是基于dct
‑
2的整数变换。另外,第二变换可以是基于dst
‑
7的整数变换。另外,第三变换可以是基于dct
‑
8的整数变换。另外,第二变换可表示第二变换或第三变换中的至少一个。
[0958]
作为另一示例,第一变换可以是基于dct
‑
2的整数变换。另外,第二变换可以是基于dst
‑
4的整数变换。另外,第三变换可以是基于dct
‑
4的整数变换。另外,第二变换可表示第二变换或第三变换中的至少一个。
[0959]
也就是说,第一变换可以是基于dct
‑
2的整数变换,并且第二变换至第n变换可表示基于除dct
‑
2之外的dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。这里,n可以是等于或大于3的正整数。
[0960]
例如,第一变换可以是基于dct
‑
2的整数变换。另外,第二变换可以是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
7的整数变换。另外,第三变换可以是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
8的整数变换。另外,第二变换可表示第二变换或第三变换中的至
少一个。
[0961]
作为另一示例,第一变换可以是基于dct
‑
2的整数变换。另外,第二变换可以是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
4的整数变换。另外,第三变换可以是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
4的整数变换。另外,第二变换可表示第二变换或第三变换中的至少一个。
[0962]
也就是说,第一变换可以是基于dct
‑
2的整数变换,并且第二变换至第n变换可表示从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。这里,n可以是等于或大于3的正整数。另外,第二变换可表示第二变换至第n变换中的至少一个。
[0963]
作为dct
‑
2的代替,可使用基于dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。
[0964]
二维变换组合可表示初级变换的组合,并且表示针对基于dct
‑
j或dst
‑
k的整数变换类型中的至少一个的水平变换类型trtypehor和垂直变换类型trtypever的组合。另外,二维变换组合可表示作为多变换选择索引的mts_idx。
[0965]
例如,当第一变换被用于水平变换和垂直变换时,作为多变换选择索引的mts_idx可具有值p。这里,p可以是负整数、0或正整数中的至少一个。例如,p可以是0。
[0966]
例如,当mts_idx为0时,trtypehor和trtypever可分别具有第一值(例如,0)。也就是说,当mts_idx为0时,这可表示基于dct
‑
2的整数水平变换和基于dct
‑
2的整数垂直变换。
[0967]
作为另一示例,当第二变换被用于水平变换或垂直变换中的至少一个时,作为多变换选择索引的mts_idx可具有s或更大的值。这里,s可以是负整数、0或正整数中的至少一个。例如,s可以是1。此外,s可大于p。
[0968]
例如,当mts_idx为1时,trtypehor和trtypever可分别具有第二值(例如,1)。也就是说,当mts_idx为1时,这可表示基于dst
‑
7的整数水平变换和基于dst
‑
7的整数垂直变换。
[0969]
作为另一示例,当mts_idx为2时,trtypehor和trtypever可分别具有第三值(例如,2)和第二值(例如,1)。也就是说,当mts_idx为2时,这可表示基于dct
‑
8的整数水平变换和基于dst
‑
7的整数垂直变换。
[0970]
作为另一示例,当mts_idx为3时,trtypehor和trtypever可分别具有第二值(例如,1)和第三值(例如,2)。也就是说,当mts_idx为3时,这可表示基于dst
‑
7的整数水平变换和基于dct
‑
8的整数垂直变换。
[0971]
作为另一示例,当mts_idx为4时,trtypehor和trtypever可分别具有第三值(例如,3)。也就是说,当mts_idx为4时,这可表示基于dct
‑
8的整数水平变换和基于dct
‑
8的整数垂直变换。
[0972]
在上述实施例中,可使用dst
‑
4代替dst
‑
7。另外,可使用dct
‑
4代替dct
‑
8。
[0973]
例如,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换。另外,在第二变换中,水平变换和垂直变换可分别是基于dst
‑
7的整数变换和基于dst
‑
7的整数变换。另外,在第三变换中,水平变换和垂直变换可分别是基于dct
‑
8的整数变换和基于dst
‑
7的整数变换。另外,在第四变换中,水平变换和垂直变换可分别是基于dst
‑
7的整数变换和基于dct
‑
8的整数变换。另外,在第五变换中,水平变换和垂直变换可分别是基于dct
‑
8的整数变换和基于dct
‑
8的整数变换。另外,第二变换可表示第二变换、第三变换、第四变换或第
五变换中的至少一个。
[0974]
作为另一示例,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换。另外,在第二变换中,水平变换和垂直变换可分别是基于dst
‑
4的整数变换和基于dst
‑
4的整数变换。另外,在第三变换中,水平变换和垂直变换可分别是基于dct
‑
4的整数变换和基于dst
‑
4的整数变换。另外,在第四变换中,水平变换和垂直变换可分别是基于dst
‑
4的整数变换和基于dct
‑
4的整数变换。另外,在第五变换中,水平变换和垂直变换可分别是基于dct
‑
4的整数变换和基于dct
‑
4的整数变换。另外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
[0975]
也就是说,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换,并且在第二变换至第n变换中,水平变换和垂直变换可表示基于除dct
‑
2之外的dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。这里,n可以是等于或大于3的整数。
[0976]
例如,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换。另外,在第二变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
7的整数变换和基于dst
‑
7的整数变换。另外,在第三变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
8的整数变换和从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
7的整数变换。另外,在第四变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
7的整数变换和从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
8的整数变换。另外,在第五变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
8的整数变换和基于dct
‑
8的整数变换。另外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
[0977]
作为另一示例,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换。另外,在第二变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
4的整数变换和基于dst
‑
4的整数变换。另外,在第三变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
4的整数变换和从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
4的整数变换。另外,在第四变换中,水平变换和垂直变换可分别是从基于dct
‑
2的整数变换矩阵提取的基于dst
‑
4的整数变换和从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
4的整数变换。另外,在第五变换中,水平变换和垂直变换可以是从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
4的整数变换和基于dct
‑
4的整数变换。另外,第二变换可表示第二变换、第三变换、第四变换或第五变换中的至少一个。
[0978]
也就是说,在第一变换中,水平变换和垂直变换可分别是基于dct
‑
2的整数变换,并且在第二变换至第n变换中,水平变换和垂直变换可表示从基于dct
‑
2的整数变换矩阵提取的基于dct
‑
j或dst
‑
k(诸如,dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。这里,n可以是等于或大于3的正整数。在这种情况下,第二变换可表示第二变换到第n变换中的至少一个。
[0979]
作为dct
‑
2变换的代替,可使用基于dct
‑
j或dst
‑
k(例如dct
‑
8、dst
‑
7、dct
‑
4或dst
‑
4)的整数变换中的至少一个。
[0980]
预测模式可表示块的预测模式,并且表示将帧内预测模式、帧间预测模式和ibc(帧内块复制)模式中的哪一个用于执行编码/解码。
[0981]
例如,当在特定模式中执行帧内预测和帧间预测两者以产生预测块时,特定模式可表示帧间预测模式。
[0982]
例如,当在特定模式中,当前图像被用作参考图像并且矢量被用于预测时,特定模式可表示帧内块复制预测模式。帧内块复制预测模式可以是ibc模式。这里,ibc模式可表示在当前图像/条带/并行块/并行块组/ctu内设置参考区域,参考区域中的位置由块矢量指示,并且使用由块矢量指示的区域执行预测的模式。
[0983]
颜色分量可表示块的颜色分量并且可表示亮度(y)或色度分量。
[0984]
例如,色度分量可表示cb分量或cr分量中的至少一个。也就是说,颜色分量可表示y分量、cb分量或cr分量。
[0985]
作为另一示例,颜色分量可表示r分量、g分量或b分量中的至少一个。
[0986]
作为另一示例,当图像被分解为多个分量并被编码/解码时,颜色分量可表示分解出的分量。
[0987]
子块分区相关信息可表示指示块被分区为多个子块的信息。
[0988]
例如,子块分区相关信息可包括子块分区模式信息或分区方向信息中的至少一个。
[0989]
作为另一示例,子块分区相关信息可包括子块分区模式信息、分区方向信息、子块位置信息或子块尺寸信息中的至少一个。
[0990]
尺寸可表示块尺寸、子块尺寸或变换尺寸中的至少一个。这里,尺寸可表示宽度、高度或宽度和高度的组合中的至少一个。
[0991]
变换尺寸可表示在相应块中使用的变换尺寸。变换尺寸可小于或等于块尺寸。
[0992]
尺寸可以是m
×
n,诸如,2
×
2、4
×
2、2
×
4、4
×
4、8
×
4、8
×
2、2
×
8、8
×
8、8
×
8、16
×
8、16
×
4、16
×
2、2
×
16、4
×
16、8
×
16、16
×
16、32
×
16、32
×
8、32
×
4、32
×
2、2
×
32、4
×
32、8
×
32、16
×
32、32
×
32、64
×
32、64
×
16、64
×
8、64
×
4、64
×
2、2
×
64、4
×
64、8
×
64、16
×
64、32
×
64、64
×
64、128
×
64、128
×
32、32
×
128、64
×
128或128
×
128。这里,m和n可以是正整数,并且可相同或不同。此外,m可以是s*n。n可以是s*m。这里,s可以是正整数。
[0993]
这里,m可表示宽度,n可表示高度。
[0994]
例如,在块的尺寸为64
×
64的情况下,可在块的左上方区域中执行尺寸为32
×
32的变换。此时,可使用尺寸为32
×
32的量化矩阵。
[0995]
作为另一示例,在块的尺寸为64
×
32的尺寸的情况下,可在块的左上方区域中执行尺寸为32
×
32的变换。此时,可使用尺寸为32
×
32的量化矩阵。
[0996]
作为另一示例,在块的尺寸为32
×
64的情况下,可在块的左上方区域中执行尺寸为16
×
32的变换。此时,可使用尺寸为16
×
32的量化矩阵。
[0997]
作为另一示例,在块的尺寸为32
×
32的情况下,可在块中执行尺寸为32
×
32的变换。此时,可使用尺寸为32
×
32的量化矩阵。
[0998]
形式(或形状)可表示块的形式、子块的形式或变换的形式中的至少一种。
[0999]
形式可以是正方形或非正方形形式。
[1000]
正方形形式可表示正方形形式。
[1001]
非正方形形式可表示矩形形式。
[1002]
变换的形式可表示在相应块中使用的变换的形式。当水平变换尺寸和垂直变换尺
寸彼此不同时,变换的形式可以是非正方形。另外,当水平变换尺寸和垂直变换尺寸相同时,变换的形式可以是正方形。变换的形式可等于或不同于相应块的形式。
[1003]
量化矩阵的形式可表示在相应块中使用的量化矩阵的形式。当水平变换尺寸和垂直变换尺寸彼此不同时,量化矩阵的形式可以是非正方形的。另外,当水平变换尺寸和垂直变换尺寸相同时,量化矩阵的形式可以是正方形的。量化矩阵的形式可与相应块的形式相同或不同。量化矩阵的形式可等于变换的形式或不同于变换的形式。
[1004]
例如,在尺寸为64
×
64的正方形块的情况下,可在块的左上方区域中执行尺寸为32
×
32的正方形变换。此时,可使用尺寸为32
×
32的正方形量化矩阵。
[1005]
作为另一示例,在尺寸为16
×
16的正方形块的情况下,可在块中执行尺寸为16
×
16的正方形变换。此时,可使用尺寸为16
×
16的正方形量化矩阵。
[1006]
作为另一示例,在尺寸为16
×
4的非正方形块的情况下,可在块中执行尺寸为16
×
4的非正方形变换。此时,可使用尺寸为16
×
4的量化矩阵。
[1007]
作为另一示例,在尺寸为2
×
8的非正方形块的情况下,可在块中执行尺寸为2
×
8的变换。此时,可使用尺寸为2
×
8的量化矩阵。
[1008]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第一实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1009]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1010]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。这里,x可以是正整数,并且例如可以是2或4。
[1011]
当块或子块的宽度或高度大于y时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。这里,y可以是正整数,并且可以是例如16、32或64。
[1012]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dst
‑
7的整数变换的第二变换。
[1013]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1014]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。这里,z可以是包括0的正整数,并且例如可以是1。
[1015]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区的所有子块进行变换。
[1016]
另外,可确定针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。也就是说,可确定针对块或子块的水平变换或垂直变换中的至少一个的变换类型,而不管帧内预测模式如何。变换类型可选自至少两种变换类型。
[1017]
在当前块处于子块分区模式时,可基于当前块的宽度或高度来确定针对水平变换或垂直变换中的至少一个的变换类型,而不管帧内预测模式如何。这里,子块分区模式可以
是第一子块分区模式(isp模式)或第二子块分区模式(sbt模式)。
[1018]
如在表20的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1019]
[表20]
[1020]
trtypehortrtypever(w>=4&&w<=16)?1:0(h>=4&&h<=16)?1:0
[1021]
例如,在当前块处于子块分区模式时,可基于表20确定水平变换或垂直变换中的至少一个的变换类型,而不管帧内预测模式如何。
[1022]
另外,为了降低编码器/解码器的实现复杂度,可根据块的宽度和块的高度以相同标准确定用于水平变换和垂直变换的一维变换类型。
[1023]
用于确定水平变换和垂直变换的条件可相同,而不管块的宽度或块的高度如何。也就是说,用于确定水平变换的条件和用于确定垂直变换的条件可相同。
[1024]
上述条件可表示当前块的宽度或高度与特定正整数之间的比较。
[1025]
这里,由于可共享用于确定水平变换和垂直变换的条件的逻辑,因此可降低编码器/解码器的实现复杂度。
[1026]
另外,如表20的示例中所示出的,可在不执行当前块的宽度与高度之间的比较的情况下确定在子块中所使用的水平变换或垂直变换中的至少一个的变换类型,以便降低计算复杂度。
[1027]
与下面的表23和24相比,在表20中,由于可在不执行当前块的宽度和高度之间的比较的情况下确定在子块中使用的水平变换或垂直变换中的至少一个的变换类型,因此可降低计算复杂度。
[1028]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二实施例。这里,可确定针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1029]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1030]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1031]
这里,x可以是正整数,并且例如可以是2或4。
[1032]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1033]
这里,y可以是正整数,并且可以是例如16、32或64。
[1034]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
8的整数变换的第二变换。
[1035]
此时,第二变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1036]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1037]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1038]
这里,z可以是包括0的正整数,并且例如可以是1。
[1039]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块
进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1040]
如在表21的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1041]
[表21]
[1042]
trtypehortrtypever(w>=4&&w<=16)?2:0(h>=4&&h<=16)?2:0
[1043]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第三实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1044]
可将水平变换类型trtypehor或垂直变换类型trtypever中的至少一个确定为指示基于dct
‑
2的整数变换的第一变换。
[1045]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1046]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1047]
这里,z可以是包括0的正整数,并且例如可以是1。
[1048]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1049]
如表22的示例中所示出的,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1050]
[表22]
[1051]
trtypehortrtypever00
[1052]
下面示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第四实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1053]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1054]
此时,第一变换可以指示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1055]
这里,x可以是正整数,并且例如可以是2或4。
[1056]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1057]
这里,y可以是正整数,并且可以是例如16、32或64。
[1058]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1059]
当宽度小于或等于高度时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换。否则,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1060]
当高度小于或等于宽度时,可将垂直变换类型确定为指示基于dst
‑
7的整数变换
的第二变换。否则,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1061]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1062]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1063]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1064]
这里,z可以是包括0的正整数,并且例如可以是1。
[1065]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1066]
如在表23的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1067]
[表23]
[1068][1069]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第五实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1070]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1071]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1072]
这里,x可以是正整数,并且例如可以是2或4。
[1073]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1074]
这里,y可以是正整数,并且可以是例如16、32或64。
[1075]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1076]
当宽度小于或等于高度时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换。否则,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1077]
当高度小于或等于宽度时,可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。否则,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1078]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1079]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1080]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1081]
这里,z可以是包括0的正整数,并且例如可以是1。
[1082]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块
进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1083]
如在表24的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1084]
[表24]
[1085]
trtypehortrtypever(w>=4&&w<=16)?((w<=h)?0:1):0(h>=4&&h<=16)?((h<=w)?0:1):0
[1086]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第六实施例。这里,可确定用于针对块或子块的水平变换和垂直变换的二维变换组合。
[1087]
可对作为多变换选择索引的mts_idx进行熵编码/解码,以确定块或子块的二维变换组合。可使用在编码器和解码器中预定的二维变换组合表来确定水平变换类型trtypehor和垂直变换类型trtypever。此时,二维变换组合可表示二维变换组合表中的每一项。
[1088]
当块不被分区为子块时,可对作为多变换选择索引的mts_idx进行熵编码/解码。
[1089]
如在表25的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。如在表25的示例中,可预定二维变换组合表,并且可确定由多变换选择索引指示的二维变换组合。
[1090]
[表25]
[1091]
mts_idx[x0][y0]01234trtypehor01212trtypever01122
[1092]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第七实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1093]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1094]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1095]
这里,x可以是正整数,并且例如可以是2或4。
[1096]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1097]
这里,y可以是正整数,并且可以是例如16、32或64。
[1098]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1099]
当分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1100]
当分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示
基于dst
‑
7的整数变换的第二变换。
[1101]
当分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1102]
当分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1103]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1104]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1105]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1106]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1107]
这里,z可以是包括0的正整数,并且例如可以是1。
[1108]
如在表26的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1109]
[表26]
[1110]
分区方向信息子块位置信息trtypehortrtypever0021011110121111
[1111]
以下示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第八实施例。这里,可确定针对块或子块的水平变换和垂直变换的一维变换类型。
[1112]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1113]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1114]
这里,x可以是正整数,并且例如可以是2或4。
[1115]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1116]
这里,y可以是正整数,并且可以是例如16、32或64。
[1117]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1118]
当分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1119]
当分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1120]
当分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1121]
当分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1122]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1123]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1124]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1125]
这里,z可以是包括0的正整数,并且例如可以是1。
[1126]
如在表27的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1127]
[表27]
[1128]
分区方向信息子块位置信息trtypehortrtypever0001011110101111
[1129]
下面示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第九实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1130]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1131]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1132]
这里,x可以是正整数,并且例如可以是2或4。
[1133]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1134]
这里,y可以是正整数,并且可以是例如16、32或64。
[1135]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1136]
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1137]
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1138]
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且
可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1139]
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1140]
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1141]
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1142]
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1143]
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1144]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1145]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1146]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1147]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1148]
这里,z可以是包括0的正整数,并且例如可以是1。
[1149]
如在表28的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1150]
[表28]
[1151]
子块尺寸信息分区方向信息子块位置信息trtypehortrtypever0002100111010120111110001101111101011111
[1152]
下面示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第十实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1153]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1154]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1155]
这里,x可以是正整数,并且例如可以是2或4。
[1156]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1157]
这里,y可以是正整数,并且可以是例如16、32或64。
[1158]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1159]
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1160]
当子块尺寸信息具有第一值(0)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1161]
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1162]
当子块尺寸信息具有第一值(0)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1163]
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1164]
当子块尺寸信息具有第二值(1)、分区方向信息具有第一值(0)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1165]
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1166]
当子块尺寸信息具有第二值(1)、分区方向信息具有第二值(1)并且子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1167]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1168]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1169]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1170]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1171]
这里,z可以是包括0的正整数,并且例如可以是1。
[1172]
如在表29的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1173]
[表29]
[1174][1175][1176]
以下示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第十一实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1177]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1178]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1179]
这里,x可以是正整数,并且例如可以是2或4。
[1180]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1181]
这里,y可以是正整数,并且可以是例如16、32或64。
[1182]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1183]
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1184]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1185]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1186]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1187]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1188]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1189]
这里,z可以是包括0的正整数,并且例如可以是1。
[1190]
如在表30的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1191]
[表30]
[1192]
分区方向信息trtypehortrtypever
021112
[1193]
下面示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第十二实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1194]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1195]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1196]
这里,x可以是正整数,并且例如可以是2或4。
[1197]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1198]
这里,y可以是正整数,并且可以是例如16、32或64。
[1199]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1200]
分区方向信息具有第一值(0),可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1201]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1202]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1203]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1204]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1205]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1206]
这里,z可以是包括0的正整数,并且例如可以是1。
[1207]
如在表31的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1208]
[表31]
[1209]
分区方向信息trtypehortrtypever021111
[1210]
下面示出确定针对块或子块的一维变换类型、二维变换组合以及是否使用变换中的至少一个的第十三实施例。可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1211]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1212]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1213]
这里,x可以是正整数,并且例如可以是2或4。
[1214]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1215]
这里,y可以是正整数,并且可以是例如16、32或64。
[1216]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1217]
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1218]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1219]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1220]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1221]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1222]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1223]
这里,z可以是包括0的正整数,并且例如可以是1。
[1224]
如在表32的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1225]
[表32]
[1226]
分区方向信息trtypehortrtypever012111
[1227]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第十四实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1228]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1229]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1230]
这里,x可以是正整数,并且例如可以是2或4。
[1231]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1232]
这里,y可以是正整数,并且可以是例如16、32或64。
[1233]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1234]
可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1235]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1236]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1237]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1238]
这里,z可以是包括0的正整数,并且例如可以是1。
[1239]
如在表33的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换
类型trtypever中的至少一个。
[1240]
[表33]
[1241]
trtypehortrtypever11
[1242]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第十五实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1243]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1244]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1245]
这里,x可以是正整数,并且例如可以是2或4。
[1246]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1247]
这里,y可以是正整数,并且可以是例如16、32或64。
[1248]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1249]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1250]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1251]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1252]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1253]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1254]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1255]
这里,z可以是包括0的正整数,并且例如可以是1。
[1256]
如在表34的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1257]
[表34]
[1258]
分区方向信息trtypehortrtypever021111
[1259]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第十六实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1260]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1261]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1262]
这里,x可以是正整数,并且例如可以是2或4。
[1263]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1264]
这里,y可以是正整数,并且可以是例如16、32或64。
[1265]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1266]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1267]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1268]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1269]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1270]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1271]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1272]
这里,z可以是包括0的正整数,并且例如可以是1。
[1273]
如在表35的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1274]
[表35]
[1275]
分区方向信息trtypehortrtypever012111
[1276]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第十七实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1277]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1278]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1279]
这里,x可以是正整数,并且例如可以是2或4。
[1280]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1281]
这里,y可以是正整数,并且可以是例如16、32或64。
[1282]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1283]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
8的整数变换的第三变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1284]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
8的整数变换的第三变换。
[1285]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1286]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1287]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1288]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1289]
这里,z可以是包括0的正整数,并且例如可以是1。
[1290]
如在表36的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1291]
[表36]
[1292]
分区方向信息trtypehortrtypever021112
[1293]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第十八实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1294]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1295]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1296]
这里,x可以是正整数,并且例如可以是2或4。
[1297]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1298]
这里,y可以是正整数,并且可以是例如16、32或64。
[1299]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1300]
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1301]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1302]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1303]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1304]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1305]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1306]
这里,z可以是包括0的正整数,并且例如可以是1。
[1307]
如在表37的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1308]
[表37]
[1309]
分区方向信息trtypehortrtypever001110
[1310]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中
的至少一个的第十九实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1311]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1312]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1313]
这里,x可以是正整数,并且例如可以是2或4。
[1314]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1315]
这里,y可以是正整数,并且可以是例如16、32或64。
[1316]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1317]
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1318]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1319]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1320]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1321]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1322]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1323]
这里,z可以是包括0的正整数,并且例如可以是1。
[1324]
如在表38的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1325]
[表38]
[1326]
分区方向信息trtypehortrtypever001111
[1327]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1328]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1329]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1330]
这里,x可以是正整数,并且例如可以是2或4。
[1331]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1332]
这里,y可以是正整数,并且可以是例如16、32或64。
[1333]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1334]
当分区方向信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1335]
当分区方向信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1336]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1337]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1338]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1339]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1340]
这里,z可以是包括0的正整数,并且例如可以是1。
[1341]
如在表39的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1342]
[表39]
[1343]
分区方向信息trtypehortrtypever010111
[1344]
下面示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十一实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1345]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1346]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1347]
这里,x可以是正整数,并且例如可以是2或4。
[1348]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1349]
这里,y可以是正整数,并且可以是例如16、32或64。
[1350]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1351]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1352]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1353]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1354]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1355]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1356]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1357]
这里,z可以是包括0的正整数,并且例如可以是1。
[1358]
如在表40的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换
类型trtypever中的至少一个。
[1359]
[表40]
[1360]
子块位置信息trtypehortrtypever001111
[1361]
下面示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十二实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1362]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1363]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1364]
这里,x可以是正整数,并且例如可以是2或4。
[1365]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1366]
这里,y可以是正整数,并且可以是例如16、32或64。
[1367]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1368]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1369]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1370]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1371]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1372]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1373]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1374]
这里,z可以是包括0的正整数,并且例如可以是1。
[1375]
如在表41的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1376]
[表41]
[1377]
子块位置信息trtypehortrtypever010111
[1378]
下面示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十三实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1379]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1380]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1381]
这里,x可以是正整数,并且例如可以是2或4。
[1382]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1383]
这里,y可以是正整数,并且可以是例如16、32或64。
[1384]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可根据以下条件确定水平变换类型或垂直变换类型。
[1385]
当子块位置信息具有第一值(0)时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换,并且可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1386]
当子块位置信息具有第二值(1)时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换,并且可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1387]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1388]
此时,第三变换可表示trtypehor或trtypever具有第三值。这里,第三值可以是2。
[1389]
这里,x可以是正整数,并且例如可以是2或4。这里,y可以是正整数,并且可以是例如16、32或64。
[1390]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1391]
这里,z可以是包括0的正整数,并且例如可以是1。
[1392]
如在表42的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1393]
[表42]
[1394][1395][1396]
下面示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十四实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1397]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1398]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1399]
这里,x可以是正整数,并且可以是例如2、4或8。
[1400]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1401]
这里,y可以是正整数,并且可以是例如8、16、32或64。
[1402]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可将水平变换类型或垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1403]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1404]
这里,x可以是正整数,并且可以是例如2、4或8。这里,y可以是正整数,并且可以是例如8、16、32或64。
[1405]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1406]
这里,z可以是包括0的正整数,并且例如可以是1。
[1407]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1408]
如在表43的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1409]
[表43]
[1410][1411]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十五实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1412]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1413]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。
[1414]
这里,x可以是正整数,并且可以是例如2、4或8。
[1415]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1416]
这里,y可以是正整数,并且可以是例如8、16、32或64。
[1417]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可将水平变换类型或垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1418]
此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1419]
这里,x可以是正整数,并且可以是例如2、4或8。这里,y可以是正整数,并且可以是例如8、16、32或64。
[1420]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1421]
这里,z可以是包括0的正整数,并且例如可以是1。
[1422]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块进行变换。另外,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型,而不管帧内预测模式如何。
[1423]
如在表44的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1424]
[表44]
[1425]
trtypehortrtypever(w>=4&&w<=32)?1:0(h>=4&&h<=32)?1:0
[1426]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中
的至少一个的第二十六实施例。这里,可确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1427]
可根据块或子块的帧内预测模式、块或子块的宽度w或块或子块的高度h中的至少一个来确定一维变换类型、二维变换组合或者是否使用变换中的至少一个。
[1428]
当块或子块的帧内预测模式与intra_planar、intra_angular31、intra_angular32、intra_angular34、intra_angular36或intra_angular37中的至少一个相应时,可执行以下操作。
[1429]
当块或子块的宽度w或高度h小于x时,可将水平变换类型trtypehor或垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1430]
当块或子块的宽度或高度大于y时,可将水平变换类型或垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1431]
当块或子块的宽度或高度大于或等于x或者块或子块的宽度或高度小于或等于y时,可将水平变换类型或垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1432]
当块或子块的帧内预测模式与intra_angular2、intra_angular4、
……
、intra_angular28、intra_angular30、intra_angular39、intra_angular41、
……
、intra_angular63或intra_angular65中的至少一个相应时,可以执行以下操作。
[1433]
当块或子块的宽度w小于x时,可将水平变换类型trtypehor确定为指示基于dct
‑
2的整数变换的第一变换。
[1434]
当块或子块的宽度大于y时,可将水平变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1435]
当块或子块的宽度大于或等于x且小于或等于y时,可将水平变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1436]
当块或子块的帧内预测模式相应于intra_angular3、intra_angular5、
…
、intra_angular27、intra_angular29、intra_angular38、intra_angular40、
…
、intra_angular64或intra_angular66中的至少一个时,可以执行以下操作。
[1437]
当块或子块的高度h小于x时,可将垂直变换类型trtypever确定为指示基于dct
‑
2的整数变换的第一变换。
[1438]
当块或子块的高度大于y时,可将垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换。
[1439]
当块或子块的高度大于或等于x且小于或等于y时,可将垂直变换类型确定为指示基于dst
‑
7的整数变换的第二变换。
[1440]
在除上述情况之外的情况下,可将水平变换类型或垂直变换类型中的至少一个确定为指示基于dct
‑
2的整数变换的第一变换。
[1441]
此时,第一变换可表示trtypehor或trtypever具有第一值。这里,第一值可以是0。此时,第二变换可表示trtypehor或trtypever具有第二值。这里,第二值可以是1。
[1442]
这里,x可以是正整数,并且可以是例如2、4或8。这里,y可以是正整数,并且可以是例如8、16、32或64。
[1443]
另外,当块或子块的宽度或高度为z时,可以不执行水平变换或垂直变换。
[1444]
这里,z可以是包括0的正整数,并且例如可以是1。
[1445]
这里,可使用相同水平变换类型或相同垂直变换类型来对从块分区出的所有子块进行变换。
[1446]
这里,帧内预测模式可表示帧内预测模式值、帧内预测模式方向等。
[1447]
如在表45的示例中,可确定针对块或子块的水平变换类型trtypehor或垂直变换类型trtypever中的至少一个。
[1448]
[表45]
[1449]
[1450][1451]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十七实施例。这里,可根据块或子块的预测模式确定用于块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1452]
当块或子块的预测模式是帧内预测模式或帧内块复制预测模式时,可基于第一实施例至第二十六实施例中的至少一个来确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1453]
当块或子块的预测模式是帧间预测模式时,可基于第三实施例和第二十六实施例中的至少一个来确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1454]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十八实施例。这里,可根据块或子块的颜色分量确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1455]
当块或子块的颜色分量为亮度分量时,可基于第一实施例至第二十六实施例中的至少一个确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1456]
当块或子块的颜色分量为色度分量时,可基于第三实施例和第二十六实施例中的至少一个确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1457]
当块或子块的颜色分量为色度分量时,可将用于块或子块的水平变换类型trtypehor或垂直变换类型trtypever确定为预定义变换类型,而不管帧内预测模式如何。这里,预定义变换类型可以是指示基于dct
‑
2的整数变换的第一变换。
[1458]
以下示出确定针对块或子块的一维变换类型、二维变换组合或者是否使用变换中的至少一个的第二十九实施例。这里,可根据块或子块的形状确定用于针对块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1459]
当块或子块的形状是正方形或矩形(非正方形)时,可基于第一实施例至第二十六实施例中的至少一个来确定用于块或子块的水平变换或垂直变换中的至少一个的一维变换类型。
[1460]
可执行针对块或子块的各种变换/逆变换类型确定方法,并且可在变换之后或逆变换之前执行以下扫描方法中的至少一种。
[1461]
可针对在编码器/解码器中经过至少一次变换或量化的量化的系数等级或量化的等级执行以下扫描方法中的至少一种。
[1462]
这里,量化的系数等级可表示通过对残差块执行变换和量化而产生的结果。另外,量化的等级可表示通过对残差块执行量化而产生的结果。
[1463]
另外,量化的系数等级和量化的等级可具有相同的含义,并且可具有与变换系数相同的含义。也就是说,量化的系数等级、量化的等级和变换系数可表示当对残差块进行熵编码/解码时的对象。
[1464]
如图39的示例中所示出的,可使用对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1465]
此时,如在图11的示例中,对角线扫描方向可以是从左下侧至右上侧或者从右上侧至左下侧。
[1466]
从左下侧至右上侧的扫描方向可被称为右上方对角线扫描。另外,从右上侧至左下侧的扫描方向可被称为左下方对角线扫描。
[1467]
图39的示例示出对角线扫描中的右上扫描。
[1468]
如在图40的示例中,可使用水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1469]
此时,水平扫描可以是优先扫描与第一行相应的系数的方法。
[1470]
如在图41的示例中,可使用垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1471]
此时,垂直扫描可以是优先扫描与第一列相应的系数的方法。
[1472]
如在图42的示例中,可使用基于块的对角线扫描将二维残差块中的量化的系数等
级排列为一维系数等级阵列。另外,可使用基于块的对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1473]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1474]
如在图14的示例中,对角线扫描方向可以是从左下侧至右上侧。另外,对角线扫描方向可以是从右上侧至左下侧。
[1475]
图42的示例示出基于块的对角线扫描中的基于块的右上扫描。
[1476]
此时,块可表示从具有特定尺寸的块分区出的子块。如果使用基于块的扫描,则甚至可使用与块中的扫描方法相同的扫描方法来扫描具有特定尺寸的块中的子块。
[1477]
如在图42的示例中,当使用基于块的对角线扫描时,在将具有8
×
8的尺寸的块分区为各具有4
×
4的尺寸的子块之后,可使用对角线扫描来扫描各具有4
×
4的尺寸的子块,并且可使用对角线扫描来扫描子块中的系数。
[1478]
如在图43的示例中,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。此时,块尺寸可以是4
×
4,并且可优先扫描与第一行相应的块。
[1479]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1480]
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
[1481]
如在图44的示例中,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1482]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1483]
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
[1484]
如在图45的示例中,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1485]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数,并且可以分别是8和2。另外,块尺寸可以等于在变换系数编码/解码中使用的系数组的尺寸。
[1486]
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
[1487]
如在图46的示例中,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1488]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数,并且可以分别是2和8。另外,块尺寸可以等于在变换系数编码/解码中使用的系数组的尺寸。
[1489]
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
[1490]
如在图39至图46的示例中,与(a)相应的扫描可用于针对j
×
k块的尺寸为j
×
k的残差块,并且与(b)相应的扫描可用于针对尺寸为8
×
8/16
×
16/32
×
32/64
×
64中的至少一
个的块的尺寸为m
×
n或更大的残差块或者尺寸为m
×
n的残差块。j、k、m和n可以是正整数。此外,j和k可分别小于m和n。此外,j
×
k可以是4
×
4并且m
×
n可以是8
×
8。
[1491]
如在图39至图46的示例中,尽管仅示出与8
×
8的最大尺寸相应的扫描方法,但是与8
×
8的尺寸相应的扫描方法可应用于与大于8
×
8的尺寸相应的扫描方法,并且上述扫描不仅可应用于具有正方形形式的残差块,而且可应用于具有非正方形形式的残差块。
[1492]
为了在编码器中排列具有正方形/非正方形形式的二维残差块中的量化的系数等级,可扫描残差中的量化的系数等级。另外,为了在解码器中将一维重建系数等级阵列排列为具有正方形/非正方形形式的二维残差块中的量化的系数等级,可扫描系数等级。
[1493]
如在图47的示例中,可扫描量化的系数等级中的至少一个。
[1494]
例如,如在图47的(a)的示例中,可使用对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1495]
此时,如图47的(a)的示例中,对角线扫描方向可以是从左下侧至右上侧或从右上侧至左下侧。
[1496]
从左下侧至右上侧的扫描方向可被称为右上方对角线扫描。另外,从右上侧至左下侧的扫描方向可被称为左下方对角线扫描。
[1497]
图47的(a)的示例示出对角线扫描中的右上扫描。
[1498]
作为另一示例,如在图47的(b)的示例中,可使用垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1499]
此时,垂直扫描可以是优先扫描与第一列相应的系数的方法。
[1500]
作为另一示例,如在图47的(c)的示例中,可使用水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1501]
此时,水平扫描可以是优先扫描与第一行相应的系数的方法。
[1502]
作为另一示例,如在图47的(d)的示例中,可使用基于块的对角线扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,可使用基于块的对角线扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1503]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1504]
如图47的(d)的示例中,对角线扫描方向可以是从左下侧至右上侧。另外,对角线扫描方向可以是从右上侧至左下侧。
[1505]
图47的(d)的示例示出针对整个8
×
4块执行基于块的对角线扫描中的基于块的右上扫描的示例。
[1506]
作为另一示例,如在图47的(e)的示例中,针对整个8
×
4块,可使用基于块的垂直扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,针对整个8
×
4块,可使用基于块的垂直扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1507]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另
外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1508]
此时,基于块的垂直扫描可以是优先扫描与第一列相应的系数的方法。
[1509]
作为另一示例,如在图47的(f)的示例中,针对整个4
×
8块,可使用基于块的水平扫描将二维残差块中的量化的系数等级排列为一维系数等级阵列。另外,针对整个4
×
8块,可使用基于块的水平扫描将一维重建系数等级阵列排列为二维残差块中的量化的系数等级。
[1510]
此时,块尺寸可以是m
×
n。这里,m或n中的至少一个可以是正整数并且可以是4。另外,块尺寸可等于在变换系数编码/解码时使用的系数组的尺寸。
[1511]
此时,基于块的水平扫描可以是优先扫描与第一行相应的系数的方法。
[1512]
如在以上示例中,当残差块具有非正方形形状时,可按照非正方形形状扫描残差块,或者可将残差块分区为作为特定正方形块单元的m
×
n的尺寸,并且可针对每一个特定正方形块单元并且在特定正方形块单元内执行扫描。这里,m和n可以是正整数,并且可相同或不同。
[1513]
图48示出作为具有各种方向的方向帧内预测模式(不包括0和1的
‑
14至80)和非方向帧内预测模式的planar(0)(平面(0))和dc(1)的帧内预测模式值的示例。
[1514]
表46示出与帧内预测模式相应的帧内预测模式值。
[1515]
[表46]
[1516][1517]
在编码器中,可在变换/逆变换处理时使用上述实施例中的至少一个来执行变换/逆变换。另外,在解码器中,可在逆变换处理时使用上述实施例中的至少一个来执行逆变换。
[1518]
在上述实施例中,可基于编码参数(诸如,块的帧内预测模式、预测模式、颜色分量、尺寸、形状(形式)、子块分区相关信息、次级变换性能信息和基于矩阵的帧内预测性能信息)中的至少一个,在变换/逆变换处理中确定一维变换类型、二维变换组合或是否使用变换中的至少一个。
[1519]
图50至图54是示出根据本发明实施例的使用变换的编码处理或解码处理的示例的示图。
[1520]
参照图50,从参数集中的至少一个用信号传送的多变换选择启用信息sps_mts_enabled_flag可指示启用多变换选择,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitmtsenabled设置为指示隐式多变换选择的第一值(例如,1)。
[1521]
‑
当前块处于isp模式(intrasubpartitionssplittype不等于isp_no_split)
[1522]
‑
当前块处于sbt模式,并且当前块的宽度和高度中的较大值小于或等于32(cu_sbt_flag等于1,并且max(ntbw,ntbh)小于或等于32)
[1523]
‑
帧内预测显式多变换选择启用信息和帧间预测显式多变换选择启用信息两者都指示不启用显式多变换选择,并且当前块的预测模式是帧内预测模式(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0,并且cupredmode[xtby][ytby]等于mode_intra)
[1524]
在推导出的隐式多变换选择信息指示隐式多变换选择(implicitmtsenabled=1)的情况下,可如下选择水平变换类型trtypehor和垂直变换类型trtypever。
[1525]
‑
在isp模式的情况下,基于当前块的宽度和高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1526]
‑
在帧内预测显式多变换选择启用信息和帧间预测显式多变换选择启用信息两者都指示不启用显式多变换选择(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0)的情况下,基于当前块的宽度和高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1527]
‑
在sbt模式的情况下,基于分区方向信息和子块位置信息来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,图54)。
[1528]
相反地,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitmtsenabled=0)时,基于用信号传送的多变换选择信息tu_mts_idx和图53的表来选择水平变换类型trtypehor和垂直变换类型trtypever作为水平变换类型trtypehor和垂直变换类型trtypever。
[1529]
另外,在当前块是色度分量(cidx大于0)时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换,而不管推导出的隐式多变换选择信息如何。
[1530]
参照图51,从参数集中的至少一个用信号传送的多变换选择启用信息sps_mts_enabled_flag可指示启用多变换选择,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitmtsenabled设置为指示隐式多变换选择的第一值(例如,1)。
[1531]
‑
当前块处于isp模式(intrasubpartitionssplittype不等于isp_no_split)
[1532]
‑
当前块处于sbt模式,并且当前块的宽度和高度中的较大值小于或等于32(cu_sbt_flag等于1,并且max(ntbw,ntbh)小于或等于32)
[1533]
‑
帧内预测显式多变换选择启用信息和帧间预测显式多变换选择启用信息两者都指示不启用显式多变换选择,并且当前块的预测模式是帧内预测模式(sps_explicit_mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag均等于0,并且cupredmode[xtby][ytby]等于mode_intra)
[1534]
在推导出的隐式多变换选择信息指示隐式多变换选择(implicitmtsenabled=1)的情况下,可如下选择水平变换类型trtypehor和垂直变换类型trtypever。
[1535]
‑
在isp模式的情况下,基于当前块的宽度和高度(例如,上面的表20),选择水平变换类型trtypehor和垂直变换类型trtypever。
[1536]
‑
在帧内预测显式多变换选择启用信息和帧间预测显式多变换选择启用信息两者指示显式多变换选择未被启用并且当前块的预测模式指示帧内预测模式(sps_explicit_
mts_intra_enabled_flag和sps_explicit_mts_inter_enabled_flag两者均等于0并且cupredmode[xtby][ytby]等于mode_intra)的情况下,基于当前块的宽度和高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1537]
‑
在sbt模式的情况下,基于分区方向信息和子块位置信息来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,图54)。
[1538]
相反地,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitmtsenabled=0)时,基于用信号传送的多变换选择信息tu_mts_idx和图53的表来选择水平变换类型trtypehor和垂直变换类型trtypever作为水平变换类型trtypehor和垂直变换类型trtypever。
[1539]
另外,在当前块是色度分量(cidx大于0)时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换,而不管推导出的隐式多变换选择信息如何。
[1540]
根据另一实施例,从参数集中的至少一个用信号传送的多变换选择启用信息sps_mts_enabled_flag可指示启用多变换选择,并且当满足以下条件中的至少一个时,可将隐式多变换选择信息implicitmtsenabled设置为指示隐式多变换选择的第一值(例如,1)。
[1541]
‑
当前块处于isp模式
[1542]
‑
当前块处于sbt模式,并且当前块的宽度和高度中的较大值小于或等于32
[1543]
‑
帧内预测显式多变换选择启用信息指示不启用显式多变换选择,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式。
[1544]
当推导出的隐式多变换选择指示隐式多变换选择(implicitmtsenabled=1)时,可如下选择水平变换类型trtypehor和垂直变换类型trtypever。在上述实施例中,与图50和图51的实施例不同,由于通过仅确定sbt模式来选择水平变换类型和垂直变换类型,因此可降低计算复杂度。
[1545]
‑
在sbt模式的情况下,基于分区方向信息和子块位置信息(例如,图54),选择水平变换类型trtypehor和垂直变换类型trtypever。
[1546]
‑
在非sbt模式的情况下(在isp模式的情况下),基于当前块的宽度和高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1547]
‑
在非sbt模式的情况下(帧内预测显式多变换启用信息指示不启用显式多变换选择,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式),基于当前块的宽度和高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1548]
这里,非sbt模式的情况(isp模式的情况或者帧内预测显式多变换启用信息指示不启用显式多变换选择、当前块的预测模式是帧内预测模式、不对当前块执行次级逆变换、并且当前块不处于基于矩阵的帧内预测模式的情况)可被划分为两种情况,并且在这两种情况下,可通过相同的方法来确定水平变换类型和垂直变换类型。
[1549]
也就是说,在两种情况下,即,1)isp模式的情况以及2)帧内预测显式多变换启用信息指示不启用显式多变换选择,当前块的预测模式是帧内预测模式,不对当前块执行次级逆变换,并且当前块不处于基于矩阵的帧内预测模式的情况下,可基于当前块的宽度和
高度来选择水平变换类型trtypehor和垂直变换类型trtypever(例如,上表20)。
[1550]
相反地,当推导出的隐式多变换选择信息不指示隐式多变换选择(implicitmtsenabled=0)时,基于用信号传送的多变换选择信息和图53的表来选择水平变换类型trtypehor和垂直变换类型trtypever。
[1551]
另外,在当前块是色度分量时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换,而不管推导出的隐式多变换选择信息如何。另外,在当前块处于isp模式并且对当前块执行次级逆变换时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换,而不管推导出的隐式多变换选择信息如何。
[1552]
另外,当多变换选择启用信息sps_mts_enabled_flag指示不启用多变换选择时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换。
[1553]
另外,当多变换选择启用信息sps_mts_enabled_flag指示不启用多变换选择并且隐式多变换选择信息不指示隐式多变换选择(implicitmtsenabled=0)时,可将水平变换类型trtypehor和垂直变换类型trtypever选为指示基于dct
‑
2的整数变换的第一变换。
[1554]
在以上示例中,当多变换选择启用信息sps_mts_enabled_flag指示启用多变换选择时,可将多变换选择启用信息设置为第一值(例如,1)。
[1555]
在以上示例中,当隐式多变换选择信息implicitmtsenabled指示隐式多变换选择时,可将隐式多变换选择信息设置成第一值(例如,1)。另外,当隐式多变换选择信息implicitmtsenabled不指示隐式多变换选择时,可将隐式多变换选择信息设置为第二值(例如,0)。
[1556]
在以上示例中,当帧内预测显式多变换选择启用信息指示启用显式多变换选择时,可将帧内预测显式多变换选择启用信息设置为第一值(例如,1)。另外,当帧内预测显式多变换选择启用信息指示不启用显式多变换选择时,可将帧内预测显式多变换选择启用信息设置为第二值(例如,0)。
[1557]
在以上示例中,当帧间预测显式多变换选择启用信息指示启用显式多变换选择时,可将帧间预测显式多变换选择启用信息设置为第一值(例如,1)。另外,当帧间预测显式多变换选择启用信息指示不启用显式多变换选择时,可将帧间预测显式多变换选择启用信息设置为第二值(例如,0)。
[1558]
图55是示出根据本发明的实施例的图像解码方法的示图。
[1559]
参照图55,图像解码设备可确定当前块的水平变换类型和垂直变换类型(s5501)。
[1560]
例如,在当前块处于isp(帧内子块分区)模式时,可基于当前块的宽度或高度中的至少一个来确定当前块的水平变换类型和垂直变换类型,而不管当前块的帧内预测模式如何。具体地讲,如在上表20的示例中,可确定水平变换类型和垂直变换类型。
[1561]
另外,步骤s5501还可包括设置隐式多变换选择信息的步骤。
[1562]
例如,在当前块处于isp(帧内子块分区)模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
[1563]
另外,当帧内预测显式多变换选择启用信息指示不启用显式多变换选择、当前块的预测模式是帧内预测模式、不对当前块执行次级逆变换、并且当前块不处于基于矩阵的
帧内预测模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
[1564]
这里,当隐式多变换选择信息指示隐式多变换选择时,可基于当前块是否处于sbt(子块变换)模式来确定水平变换类型和垂直变换类型。
[1565]
具体地讲,当隐式多变换选择信息指示隐式多变换选择并且当前块不处于sbt(子块变换)模式时,可确定水平变换类型和垂直变换类型,而不管当前块的帧内预测模式如何。具体地讲,如在上表20的示例中,可确定水平变换类型和垂直变换类型。
[1566]
在当前块处于isp(帧内子块分区)模式并且执行次级逆变换时,可将水平变换类型和垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管隐式多变换选择信息如何。
[1567]
在当前块为色度分量时,可将水平变换类型和垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管隐式多变换选择信息如何。
[1568]
另外,图像解码设备可基于所确定的水平变换类型和垂直变换类型针对当前块执行逆变换以推导当前块的残差块(s5502)。
[1569]
另外,图像解码设备可基于残差块重建当前块(s5503)。
[1570]
图56是示出根据本发明的实施例的图像编码方法的示图。
[1571]
参照图56,图像编码设备可确定当前块的水平变换类型和垂直变换类型(s5601)。
[1572]
例如,在当前块处于isp(帧内子块分区)模式时,可基于当前块的宽度或高度中的至少一个来确定当前块的水平变换类型和垂直变换类型,而不管当前块的帧内预测模式如何。具体地讲,如在上表20的示例中,可确定水平变换类型和垂直变换类型。
[1573]
另外,步骤s5601还可包括设置隐式多变换选择信息的步骤。
[1574]
例如,在当前块处于isp(帧内子块分区)模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
[1575]
另外,当帧内预测显式多变换选择启用信息指示不启用显式多变换选择、当前块的预测模式是帧内预测模式、不对当前块执行次级逆变换、当前块不处于基于矩阵的帧内预测模式时,可将隐式多变换选择信息设置为指示隐式多变换选择的值。
[1576]
这里,当隐式多变换选择信息指示隐式多变换选择时,可基于当前块是否处于sbt(子块变换)模式来确定水平变换类型和垂直变换类型。
[1577]
具体地,当隐式多变换选择信息指示隐式多变换选择并且当前块不处于sbt(子块变换)模式时,可确定水平变换类型和垂直变换类型,而不管当前块的帧内预测模式如何。具体地讲,如在上表20的示例中,可确定水平变换类型和垂直变换类型。
[1578]
在当前块处于isp(帧内子块分区)模式并且执行次级逆变换时,可将水平变换类型和垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管隐式多变换选择信息如何。
[1579]
在当前块为色度分量时,可将水平变换类型和垂直变换类型确定为指示基于dct
‑
2的整数变换的第一变换,而不管隐式多变换选择信息如何。
[1580]
另外,图像编码设备可基于所确定的水平变换类型和垂直变换类型针对当前块的残差块执行变换(s5602)。
[1581]
另外,图像编码设备可基于变换的残差块对当前块进行编码(s5603)。
[1582]
通过在图56中描述的图像编码方法产生的比特流可被存储在非暂时性计算机可
读记录介质中。
[1583]
在编码器中被熵编码和在解码器中被熵解码的用于变换/逆变换的语法元素中的至少一个可使用以下二值化、去二值化、熵编码/解码方法中的至少一种。
[1584]
‑
对具有符号的0阶exp_golomb进行二值化/去二值化的方法(se(v))
[1585]
‑
对具有符号的k阶exp_golomb进行二值化/去二值化的方法(sek(v))
[1586]
‑
对没有符号的正整数的0阶exp_golomb进行二值化/去二值化的方法(ue(v))
[1587]
‑
对没有符号的正整数的k阶exp_golomb进行二值化/去二值化的方法(uek(v))
[1588]
‑
固定长度二值化/去二值化方法(f(n))
[1589]
‑
截断莱斯(truncated rice)二值化/去二值化方法或截断一元二值化/去二值化方法(tu(v))
[1590]
‑
截断二元二值化/去二值化方法(tb(v))
[1591]
‑
上下文自适应算术编码/解码方法(ae(v))
[1592]
‑
字节单元比特串(b(8))
[1593]
‑
对具有符号的整数的二值化/去二值化方法(i(n))
[1594]
‑
对没有符号的正整数的二值化/去二值化方法(u(n))
[1595]
‑
一元二值化/去二值化方法
[1596]
可在编码器和解码器中以相同的方法执行上述实施例。
[1597]
上述实施例中的至少一个或组合可被用于对视频进行编码/解码。
[1598]
仅上述实施例中的任何一个不被应用于对当前块的编码/解码处理,但至少一个实施例或特定实施例的组合适用于对当前块的编码/解码处理。
[1599]
应用于上述实施例的顺序在编码器和解码器之间可以不同,或者应用于上述实施例的顺序在编码器和解码器中可以相同。
[1600]
可对每一个亮度信号和色度信号执行上述实施例,或者可对亮度信号和色度信号相同地执行上述实施例。
[1601]
应用本发明的上述实施例的块形式(形状)可具有正方形形状或非正方形形状。
[1602]
可根据编码块、预测块、变换块、块、当前块、编码单元、预测单元、变换单元、单元和当前单元中的至少一个的尺寸来应用本发明的上述实施例。这里,尺寸可被定义为最小尺寸或最大尺寸或最小尺寸和最大尺寸两者,使得上述实施例被应用,或者可被定义为上述实施例被应用于的固定尺寸。另外,在上述实施例中,第一实施例可被应用于第一尺寸,并且第二实施例可被应用于第二尺寸。换句话说,可根据尺寸组合应用上述实施例。另外,当尺寸等于或大于最小尺寸并且等于或小于最大尺寸时,可应用上述实施例。换句话说,当块尺寸包括在特定范围内时,可应用上述实施例。
[1603]
另外,本发明的实施例仅适用于最小尺寸或更大以及最大尺寸或更小的情况。这里,最小尺寸和最大尺寸可以是块或单元中的一个的尺寸。也就是说,具有最小尺寸的块和具有最大尺寸的块可彼此不同。例如,本发明的实施例仅适用于当前块的尺寸等于或大于块的最小尺寸并且等于或小于块的最大尺寸的情况。
[1604]
例如,在当前块的尺寸为8
×
8或更大时,可应用上述实施例。例如,在当前块的尺寸为4
×
4或更大时,可应用上述实施例。例如,在当前块的尺寸为16
×
16或更大时,可应用上述实施例。例如,在当前块的尺寸等于或大于16
×
16并且等于或小于64
×
64时,可应用上
述实施例。
[1605]
可根据时间层来应用本发明的上述实施例。为了识别可应用上述实施例的时间层,可用信号传送相应标识符,并且可将上述实施例应用于由相应标识符识别的指定时间层。这里,标识符可被定义为可应用上述实施例的最低层或最高层或最低层和最高层两者,或者可被定义为指示应用该实施例的特定层。另外,可定义应用该实施例的固定时间层。
[1606]
例如,在当前图像的时间层是最低层时,可应用上述实施例。例如,在当前图像的时间层标识符是1时,可应用上述实施例。例如,在当前图像的时间层是最高层时,可应用上述实施例。
[1607]
可定义应用本发明的上述实施例的条带类型或并行块组类型,并且可根据相应的条带类型或并行块组类型来应用上述实施例。
[1608]
在上述实施例中,基于具有一系列步骤或单元的流程图描述了方法,但是本发明不限于步骤的顺序,而是可与其他步骤同时执行一些步骤或以不同的顺序执行一些步骤。另外,本领域普通技术人员应当理解的是,流程图中的步骤不彼此排除,并且可将其他步骤添加到流程图中,或者可从流程图中删除一些步骤,而不影响本发明的范围。
[1609]
实施例包括示例的各个方面。可以不描述各个方面的所有可能的组合,但是本领域技术人员将能够认识到不同的组合。因此,本发明可包括在权利要求的范围内的所有替换、修改和改变。
[1610]
本发明的实施例可以以程序指令的形式实现,其中,程序指令可由各种计算机组件执行并且被记录在计算机可读记录介质中。计算机可读记录介质可包括独立的程序指令、数据文件、数据结构等或程序指令、数据文件、数据结构等的组合。记录在计算机可读记录介质中的程序指令可以是针对本发明专门设计和构建的,或者是计算机软件技术领域的普通技术人员所公知的。计算机可读记录介质的示例包括磁记录介质,诸如硬盘、软盘和磁带;光学数据存储介质,诸如cd
‑
rom或dvd
‑
rom;磁最佳介质,例如软磁盘;以及硬件装置,诸如只读存储器(rom)、随机存取存储器(ram)、闪存等,其被具体构建为存储和实现程序指令。程序指令的示例不仅包括由编译器格式化的机械语言代码,还包括可由计算机使用解释器实现的高级语言代码。硬件装置可被配置为由一个或更多个软件模块操作以进行根据本发明的处理,反之亦然。
[1611]
尽管已经根据诸如详细元件的特定项目以及有限的实施例和附图描述了本发明,但提供它们仅是为了帮助更一般地理解本发明,并且本发明不限于上述实施例。本发明所属领域的技术人员将理解的是,可从上述描述进行各种修改和改变。
[1612]
因此,本发明的精神不应限于上述实施例,并且所附权利要求及其等同物的整个范围将落入本发明的范围和精神内。
[1613]
工业适用性
[1614]
本发明可被用于对图像进行编码或解码。
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。