本发明的实施方式
本发明可以以各种方式进行改变和修改,并且可以参考不同的示例性实施方式进行说明,其中一些实施方式将在附图中描述和示出。然而,这些实施方式不旨在限制本发明,而是被理解为包括属于本发明的精神和技术范围的所有修改、等同方案和替换方案。在附图中,相同附图标记始终指代相同元件。
虽然可以使用术语第一、第二等来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不偏离本发明的教导的情况下,第一元件可以被称为第二元件,并且同样地第二元件可以被称为第一元件。术语“和/或”包括多个关联列出项的任何组合和所有组合。
将要理解,当元件被称为“连接至”或“耦接至”另一元件时,该元件可以直接连接或耦接至另一元件或中间元件。相反,当元件被称为“直接连接至”或“直接耦接至”另一元件时,不存在中间元件。
本文中使用的术语仅出于描述特定实施方式的目的,并不旨在限制本发明。如本文中所使用的,除非上下文另有明确指出,否则单数形式“一(a)”、“一个(an)”和“该(the)”也旨在包括复数形式。还将要理解,当在本说明书中使用时,术语“包括”和/或“具有”指定所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是不排除一个或更多个其他特征、整体、步骤、操作、元件、部件和/或它们的组的存在或添加。
在下文中,将参照附图详细地描述本发明的示例性实施方式。在附图中,相同附图标记始终指代相同元件,并且在本文中将省略对相同元件的冗余描述。
图1是示出根据本发明的实施方式的编码装置的框图。
参照图1,编码装置100包括图片划分单元110、预测单元120和125、变换单元130、量化单元135、重排单元160、熵编码单元165、逆量化单元140、逆变换单元145、滤波器单元150和存储器155。
图1所示的元件中的每一个被独立地示出以表示编码装置中的不同特征功能,并且可以意指每个元件由单独的硬件组成。但是,为了便于描述,元件被独立地布置,其中,至少两个元件可以被组合成单个元件,或者单个元件可以被划分成多个元件以执行功能。要注意的是,在不偏离本发明的实质的情况下,一些元件被集成为一个组合元件以及/或者元件被划分为多个单独的元件的实施方式包括在本发明的范围内。
一些元件对于本发明中的实质功能并非是必要的,而是仅可以用于提高性能的可选构成元件。可以通过仅包括除了仅用于提高性能的构成元件之外的对于本发明的实施方式必要的构成元件来实施本发明。仅包括除了仅用于提高性能的可选构成元件之外的必要构成元件的结构属于本发明的范围。
图片划分单元110可以将输入图片划分成至少一个块。在这种情况下,块可以意指编码单元(CU)、预测单元(PU)或变换单元(TU)。可以基于四叉树、二叉树或三叉树中的至少一个来执行划分。四叉树是将上层块划分成其宽度和高度为上层块的一半的子块的方法。二叉树是将上层块划分成其宽度或高度为上层块的一半的子块的方法。在二叉树中,通过基于上述基于二叉树的划分来划分上层块,块可以具有非正方形形状以及正方形形状。
在本发明的实施方式中,CU不仅可以用来指代编码单元而且还可以指代解码单元。
预测单元120和125可以包括用于执行帧间预测的帧间预测单元120和用于执行帧内预测的帧内预测单元125。预测单元120和125可以确定对PU执行帧间预测和帧内预测中的哪一个,并且可以确定所确定的预测方法的具体信息(例如,帧内预测模式、运动矢量和参考图片)。在此,对其执行预测的处理单元可以与对其确定了预测方法和具体信息的处理单元不同。例如,可以针对每个PU来确定预测方法和预测模式,而可以针对每个TU来执行预测。可以将所生成的预测块与原始块之间的残差值(残差块)输入至变换单元130。此外,用于预测的预测模式信息、运动矢量信息等可以与残差值一起被熵编码单元165编码并且被发送至解码装置。当使用特定编码模式时,原始块可以没有由预测单元120和125生成的预测块的情况下被编码并且被发送至解码装置。
帧间预测单元120可以基于关于当前图片的先前图片和当前图片的后续图片中的至少一个图片的信息来预测PU。在一些情况下,帧间预测单元120可以基于当前图片中的部分编码区域的信息来预测PU。帧间预测单元120可以包括参考图片插值单元、运动预测单元和运动补偿单元。
可以向参考图片插值单元提供来自存储器155的参考图片信息,并且参考图片插值单元可以生成小于或等于参考图片上的整数像素的像素信息。在亮度像素的情况下,可以使用具有可变滤波器系数的基于DCT的8-抽头插值滤波器以1/4像素为单位生成小于或等于整数像素的像素信息。在色度像素的情况下,可以使用具有可变滤波器系数的基于DCT的4-抽头插值滤波器以1/8像素为单位生成小于或等于整数像素的像素信息。
运动预测单元可以基于由参考图片插值单元插值的参考图片来执行运动预测。可以使用各种方法例如基于全搜索的块匹配算法(FBMA)、三步搜索(TSS)算法和新三步搜索(NTS)算法来计算运动矢量。基于插值像素,运动矢量具有以1/2或1/4像素为单位的运动矢量值。运动预测单元可以使用不同的运动预测方法来预测当前PU。可以将各种方法例如跳过模式、合并模式和高级运动矢量预测(AMVP)模式等用作为运动预测方法。
帧内预测单元125可以基于关于与当前块邻近的参考像素的信息来生成PU。当参考像素是由于与当前PU邻近的块是已经被执行帧间预测的块而成为已经被执行帧间预测的像素时,可以用关于已经执行了帧内预测的块中的参考像素的信息替换关于已经执行了帧间预测的块中的参考像素的信息。也就是说,当参考像素不可用时,可以用关于可用参考像素中的至少一个参考像素的信息来替换关于不可用参考像素的信息。
帧内预测的预测模式包括其中根据预测方向使用参考像素信息的方向预测模式和其中在执行预测时不使用关于方向的信息的非方向预测模式。用于预测亮度分量的模式与用于预测色度分量的模式可以彼此不同。此外,可以通过使用用于获得亮度分量或经预测/经重构的亮度分量的帧内预测模式来预测色度分量。
在帧内预测方法中,可以通过根据帧内预测模式将自适应帧内平滑(AIS)滤波器应用于参考像素来生成预测块。可以将不同类型的AIS滤波器应用于参考像素。在帧内预测方法中,可以根据与当前PU邻近的PU的帧内预测模式来预测当前PU的帧内预测模式。在使用根据邻近PU预测的模式信息来预测当前PU的预测模式时,在当前PU与邻近PU具有相同的帧内预测模式时,可以使用预定标记信息来发送指示当前PU与邻近PU具有相同的帧内预测模式的信息。在当前PU与邻近PU具有不同的帧内预测模式时,可以通过熵编码对关于当前块的帧内预测模式的信息进行编码。
可以生成包括残差信息的残差块。残差信息是原始块与由预测单元120和125生成的预测块之间的差。可以将生成的残差块输入至变换单元130。
变换单元130可以通过使用诸如DCT、DST等的变换类型来对包括残差数据的残差块进行变换。在这种情况下,可以基于用于生成残差块的预测单元的帧内预测模式来确定变换类型。
量化单元135可以对通过变换单元130变换至频域的值进行量化。量化系数可以根据图像的重要性或块而改变。可以将从量化单元135输出的值提供至逆量化单元140和重排单元160。
重排单元160可以对经量化的残差块执行系数值的重排。
重排单元160可以通过系数扫描方法将二维(2D)块的系数改变成一维(1D)矢量的系数。例如,重排单元160可以使用预定的扫描类型将DC系数扫描成高频区域中的系数,并且将其改变成一维矢量形式。
熵编码单元165可以基于由重排单元160获得的值来执行熵编码。针对熵编码,可以使用各种编码方法,例如指数哥伦布(Golomb)编码、上下文自适应可变长度编码(CAVLC)或上下文自适应二进制算术编码(CABAC)。
熵编码单元165可以对来自重排单元160以及预测单元120和125的各种信息例如关于CU的残差系数信息和块类型信息、预测模式信息、分割单元信息、PU信息、传输单元信息、运动矢量信息、参考帧信息、块插值信息和滤波信息进行编码。
熵编码单元165可以对从重排单元160输入的CU的系数进行熵编码。
逆量化单元140和逆变换单元145对由量化单元135量化的值进行去量化,以及对由变换单元130变换的值进行逆变换。可以通过将残差值添加到经预测的PU来生成重构块。残差值可以由逆量化单元140和逆变换单元145生成。经预测的PU可以由预测单元120和125的运动矢量预测单元、运动补偿单元和帧内预测单元来预测。
滤波器单元150可以包括去块滤波器、偏移单元和自适应环内滤波器(ALF)中的至少一个。
去块滤波器可以去除由重构图片中的块之间的边界生成的块失真。可以基于块的若干行或列中包括的像素来确定是否将去块滤波器应用于当前块。当将去块滤波器应用于块时,可以根据所需的去块滤波强度来应用强滤波器或弱滤波器。当在应用去块滤波器时执行水平滤波和垂直滤波时,可以并行地执行水平滤波和垂直滤波。
偏移单元可以以像素为单位将相对于原始图像的偏移施加至经去块滤波的图像。可以在将图片的像素分割成预定数目的区域之后确定可以向其施加偏移的区域。可以考虑关于每个像素的边缘信息或将偏移施加至确定区域的方法来将偏移施加至确定区域。
ALF可以基于经滤波的重构图像与原始图像的比较结果来执行滤波。可以将图像中包括的像素分割成预定组,可以确定要应用于每个组的滤波器,以及可以针对每个组执行差分滤波。可以由每个编码单元(CU)传输关于是否应用ALF的信息,并且要应用于每个块的ALF的形状和滤波器系数可以变化。此外,可以对块应用具有相同形式(固定形式)的ALF,而不管块的特征如何。
存储器155可以存储从滤波器单元150输出的重构块或重构图片,并且当执行帧间预测时,可以将存储的重构块或重构图片提供至预测单元120和125。
图2是示出根据本发明的示例性实施方式的解码装置的框图。
参照图2,解码装置200可以包括熵解码单元210、重排单元215、去量化单元220、逆变换单元225、预测单元230和235、滤波器单元240以及存储器245。
图2所示的元件中的每一个都被独立地示出以表示解码装置中的不同特征功能,并且可以意指每个元件由单独的硬件组成。但是,为了便于描述,元件被独立地布置,其中,至少两个元件可以被组合成单个元件,或者单个元件可以被划分成多个元件以执行功能。要注意的是,在不偏离本发明的实质的情况下,一些元件被集成为一个组合元件以及/或者元件被划分为多个单独的元件的实施方式包括在本发明的范围内。
熵解码单元210可以对输入比特流执行熵解码。例如,针对熵编码,可以使用各种方法,如指数哥伦布编码、CAVLC或CABAC。
熵解码单元210可以对与由编码装置执行的帧内预测和帧间预测相关联的信息进行解码。
重排单元215可以对由熵解码单元210熵解码的比特流执行重排。重排单元215可以将1D矢量的系数重构并重排为2D块的系数。可以向重排单元215提供关于由编码装置执行的系数扫描的信息,并且重排单元215可以基于由编码装置执行的扫描顺序使用对系数进行逆向扫描的方法来执行重排。
去量化单元220可以基于量化参数以及块的重排系数来执行去量化。
逆变换单元225可以基于预定的变换类型执行对去量化的变换系数的逆变换。在这种情况下,可以基于预测模式(帧间/帧内预测)、块的大小/形状、帧内预测模式、分量类型(亮度/色度分量)或分割类型(QT、BT、TT等)来确定变换类型。
预测单元230和235可以基于提供的用于生成预测块的信息以及关于先前解码的块或图片的信息来生成预测块。可以从熵解码单元210提供用于生成预测块的信息。可以从存储器245提供关于先前解码的块或图片的信息。
预测单元230和235可以包括PU确定单元、帧间预测单元和帧内预测单元。PU确定单元可以从熵解码单元210接收各种信息,如PU信息、帧内预测方法的帧内预测模式相关信息以及帧间预测方法的运动预测相关信息等,PU确定单元可以确定当前CU的PU。PU确定单元可以确定对PU执行帧间预测和帧内预测中的哪一个。帧间预测单元230可以基于关于包括当前PU的当前图片的先前图片和后续图片中的至少一个图片的信息对当前PU执行帧间预测。帧间预测单元230可以使用针对从编码装置提供的当前PU进行帧间预测所需的信息。可以基于包括当前PU的当前图片中的预重构的部分区域的信息来执行帧间预测。为此,可以将预重构的部分区域添加至参考图片列表。
为了执行帧间预测,可以以CU为单位来确定CU中包括的用于PU的运动预测方法是跳过模式、合并模式、AMVP模式还是当前图片参考模式。
帧内预测单元235可以基于当前图片中的像素信息来生成预测块。当PU是对其执行帧内预测的PU时,可以基于从编码装置提供的关于PU的帧内预测模式信息来执行帧内预测。帧内预测单元235可以包括AIS(自适应帧内平滑)滤波器、参考像素插值单元和DC滤波器。AIS滤波器对当前块的参考像素执行滤波。AIS滤波器可以根据当前PU的预测模式来判定是否应用该滤波器。可以使用从编码装置提供的PU的预测模式和关于AIS滤波器的信息来对当前块的参考像素执行AIS滤波。当当前块的预测模式是不执行AIS滤波的模式时,可以不应用AIS滤波器。
当PU的预测模式指示基于通过对参考像素进行插值而获得的像素值来执行帧内预测的预测模式时,参考像素插值单元可以通过对参考像素进行插值以小于整数像素(即全像素)的分数像素为单位生成参考像素。当当前PU的预测模式指示在不对参考像素进行插值的情况下生成预测块的预测模式时,可以不对参考像素进行插值。在当前块的预测模式是DC模式时,DC滤波器可以通过滤波来生成预测块。
可以将重构块或重构图片提供至滤波器单元240。滤波器单元240包括去块滤波器、偏移单元和ALF。
编码装置可以提供关于是否将去块滤波器应用于相应的块或图片的信息以及关于在使用去块滤波器时应用强滤波器和弱滤波器中的哪一个的信息。可以向解码装置的去块滤波器提供来自编码装置的关于去块滤波器的信息,并且去块滤波器可以对相应的块执行去块滤波。
偏移单元可以基于关于在编码过程中应用于图片的偏移类型和偏移值的信息来对重构图片施加偏移。
可以基于从编码装置提供的关于是否应用ALF的信息和ALF系数信息等来将ALF应用于CU。ALF信息可以包括在特定参数集中并在特定参数集中提供。
存储器245可以存储用作参考图片或参考块的重构图片或重构块,并且可以将重构图片提供至输出单元。
图3示出了根据应用本发明的实施方式的块划分类型。
一个块(在下文中称为第一块)可以通过垂直线或水平线中的至少一个被划分成多个子块(在下文中称为第二块)。垂直线和水平线中的每一个的数目可以为一个、两个或更多个。在此,第一块可以是作为图像编码/解码的基本单元的编码块(CU)、作为预测编码/解码的基本单元的预测块(PU)或者作为变换编码/解码的基本单元的变换块(TU)。第一块可以是正方形块或非正方形块。
可以基于四叉树、二叉树、三叉树等来执行第一块的划分,并且将参照图3进行详细描述。
图3(a)示出了四叉树划分(QT)。QT是其中第一块被划分成四个第二块的划分类型。例如,当通过QT来划分2N×2N的第一块时,第一块可以被划分成具有N×N大小的四个第二块。QT可以被限制成适用于仅正方形块,但也可适用于非正方形块。
图3(b)示出了水平二叉树(在下文中称为水平BT)划分。水平BT是其中第一块被一条水平线划分成两个第二块的划分类型。该划分可以对称地或不对称地执行。例如,当基于水平BT来划分2N×2N的第一块时,第一块可以被划分成具有(a:b)的高度比的两个第二块。在此,a和b可以为相同的值,而a可以大于或小于b。
图3(c)示出了垂直二叉树(在下文中称为垂直BT)划分。垂直BT是其中第一块被一条垂直线划分成两个第二块的划分类型。该划分可以对称地或不对称地执行。例如,当基于垂直BT来划分2N×2N的第一块时,第一块可以被划分成具有(a:b)的宽度比的两个第二块。在此,a和b可以是相同的值,而a可以大于或小于b。
图3(d)示出了水平三叉树(在下文中称为水平TT)划分。水平TT是其中第一块被两条水平线划分成三个第二块的划分类型。例如,当基于水平TT来划分2N×2N的第一块时,第一块可以被划分成具有(a:b:c)的高度比的三个第二块。在此,a、b和c可以是相同的值。替选地,a和c可以相同,并且b可以大于或小于a。
图3(e)示出了垂直三叉树(在下文中称为垂直TT)划分。垂直TT是其中第一块被两条垂直线划分成三个第二块的划分类型。例如,当基于垂直TT来划分2N×2N的第一块时,第一块可以被划分成具有(a:b:c)的宽度比的三个第二块。在此,a、b和c可以是相同值或不同值。替选地,a和c可以相同,而b可以大于或小于a。替选地,a和b可以相同,而c可以大于或小于a。替选地,b和c相同,而a可以大于或小于b。
可以基于从编码装置信令通知的划分信息来执行上述划分。划分信息可以包括划分类型信息、划分方向信息或划分比率信息中的至少一个。
划分类型信息可以指定在编码/解码装置中预定义的划分类型的任一个。预定义的划分类型可以包括QT、水平BT、垂直BT、水平TT、垂直TT或非划分模式(无分割)中的至少一个。替选地,划分类型信息可以意指关于是否应用QT、BT或TT的信息,并且可以以标记或索引的形式编码。在BT或TT的情况下,划分方向信息可以指示其是水平划分还是垂直划分。在BT或TT的情况下,划分比率信息可以指示第二块的宽度和/或高度的比率。
图4示出了根据应用本发明的实施方式的基于树结构的块划分方法。
图4所示的块400被假定为大小为8N×8N且划分深度为k的正方形块(在下文中称为第一块)。当第一块的划分信息指示QT划分时,第一块可以被划分成四个子块(在下文中称为第二块)。第二块的大小可以为4N×4N,并且划分深度可以为(k+1)。
可以基于QT、BT、TT或非划分模式来再次划分四个第二块。例如,当第二块的划分信息指示水平二叉树(水平BT)时,第二块被划分成作为图4中的第二块410的两个子块(在下文中称为第三块)。在这种情况下,第三块的大小可以为4N×2N,并且划分深度可以为(k+2)。
还可以基于QT、BT、TT或非划分模式再次划分第三块。例如,当第三块的划分信息指示垂直二叉树(垂直BT)时,第三块被划分成如图4所示的两个子块411和412。在这种情况下,子块411和412的大小可以为2N×2N并且划分深度为(k+3)。替选地,当第三块的划分信息指示水平二叉树(水平BT)时,第三块可以被划分成如图4所示的两个子块413和414。在这种情况下,子块413和414的大小可以为4N×N并且划分深度为(k+3)。
划分可以独立地执行或者与邻近块并行地执行,或者可以根据预定的优先级顺序来顺序地执行。
可以根据当前块的上层块的划分信息或邻近块的划分信息中的至少一个来确定当前块的划分信息。例如,当基于水平BT来划分第二块并且基于垂直BT来划分上层第三块时,不需要基于垂直BT来划分下部第三块。如果通过垂直BT来划分下部第三块,则这与通过QT来划分第二块的结果相同。因此,可以跳过对下部第三块的划分信息(特别是划分方向信息)的编码,并且解码装置可以被设置成在水平方向上来划分下部第三块。
上层块可以意指具有比当前块的划分深度小的划分深度的块。例如,在当前块的划分深度为(k+2)时,上层块的划分深度可以为(k+1)。邻近块可以是与当前块的顶部或左侧相邻的块。邻近块可以是具有与当前块相同的划分深度的块。
可以重复地执行上述划分,直到编码/解码的最小单元。当划分为最小单元时,不再从编码装置信令通知该块的划分信息。关于最小单元的信息可以包括最小单元的大小或形状中的至少一个。最小单元的大小可以由宽度、高度、宽度和高度的最小值或最大值、宽度和高度的总和、像素数或划分深度表示。关于最小单元的信息可以以视频序列、图片、条带或块单元中的至少一个来信令通知。替选地,关于最小单元的信息可以是在编码/解码装置中预定义的值。可以针对CU、PU和TU中的每一个信令通知关于最小单元的信息。关于一个最小单元的信息可以均等地应用于CU、PU和TU。
图5示出了根据本发明的实施方式的重构残差样本的方法。
参照图5,可以通过对比特流进行熵编码来导出残差块的残差系数(S500)。
编码装置可以对残差块的残差样本执行变换和/或量化以导出残差系数,并且可以基于预定的编码方案对所导出的残差系数进行编码。编码方案可以包括扫描顺序、熵编码方案或二值化方案中的至少一种。熵编码方案的示例可以包括指数Golomb、CAVLC、CABAC等。二值化方案的示例可以包括截断莱斯(TR)二值化、第k阶Exp-Colomb(EGk)二值化、固定长度(FL)二值化等。
在这种情况下,可以将残差块划分为一个或更多个组(在下文中,称为熵组),并且每个熵组可以包括至少一个残差系数。熵组可以意指具有相同/相似频带的一组残差系数。频带可以被划分为低频带和高频带,或者可以被划分为三个频带,诸如低频带、中频带和高频带。然而,这仅是示例,并且可以考虑频率特性来进一步细分频带。可以针对残差块中的每个熵组执行残差系数的编码。
解码装置可以基于预定的解码方案根据比特流导出残差系数。解码方案基于上述编码方案,并且将省略其详细描述。
可以针对每个熵组执行残差块的解码。例如,可以识别要被解码的残差系数所属的熵组,并且可以基于与该熵组对应的解码方案来导出残差系数。与多个熵组中的一个熵组有关的扫描顺序、熵解码方案或二值化方案中的至少一个可以与多个熵组中的另一个熵组不同。将参照图12至图15来描述基于熵组的残差系数导出方法。
残差系数的导出过程还可以包括:将残差块中的部分区域(例如,高频区域)的残差系数设置为在解码装置中预定义的默认值。将参照图16对此进行描述。
可以通过对关于存在或不存在非零残差系数、经编码的残差系数的绝对值(abs)或符号的信息中的至少一个进行解码来执行残差系数的导出。
导出还可以包括将残差块中的高频区域的残差系数设置为0的处理。高频区域可以被定义为排除从残差块的左边起的n列或从残差块的顶部起的m行中的至少一者的区域。n和m可以是在编码/解码装置中被预先赋予的值,或者可以根据残差块的大小/类型来不同地确定。例如,当残差块是64×32时,可以将排除从残差块的左边起的32列(在此,n=32,m=0)的区域定义为高频区域。当残差块是32×64时,可以将排除从残差块的顶部起的32行(在此,n=0,m=32)的区域定义为高频区域。替选地,可以基于编码的信息来导出n和m以指定高频区域。
另外,可以考虑残差块的大小或形状中的至少一个来选择性地执行将残差系数设置为0的处理。例如,可以仅当残差块的大小大于或等于预定阈值时才应用以上处理。残差块的大小可以表示为残差块的宽度或高度中的至少一个。阈值可以意指允许将残差系数设置为0的最小大小。阈值可以是在残差块的编码/解码中被预先赋予的值,或者可以通过残差块的编码来编码并且信令通知。阈值可以为32、64、128、256或更大。
可以基于标记信息选择性地执行将残差系数设置为0的处理。标记信息可以指示是否将残差块中的高频区域的残差系数设置为0。可以基于残差块的大小/类型从解码装置导出标记信息,或者可以由编码装置对标记信息进行编码并且信令通知。然而,可以将上述处理限制为仅在未以变换跳过模式对残差块进行编码时执行。因此,当以变换跳过模式对残差块进行编码时,编码装置不会对将残差系数设置为0所需的信息进行编码。
参照图5,可以计算残差块的量化参数(S510)。
可以使用量化参数预测值(QPpred)或量化参数差值(deltaQP)中的至少一个来导出量化参数。换言之,可以将量化参数设置为量化参数预测值(QPpred),或者可以通过将量化参数差值(deltaQP)与量化参数预测值(QPpred)相加来导出量化参数。
例如,当对于块不需要去量化时(例如,合并模式、跳过模式、无变换模式、PCM模式、在该块中不存在非零系数的情况(即,编码块标记=0)等),则不会对量化参数差值(deltaQP)进行编码。在这种情况下,可以将量化参数预测值(Qppred)设置成等于量化参数。
将参照图6至图7描述导出量化参数预测值(QPpred)的方法。同时,可以以预定单位信令通知量化参数差值(deltaQP),并且将参照图8描述基于量化参数差值(deltaQP)的信号发送单元的量化参数导出方法。
量化参数的计算还可以包括基于预定量化参数偏移(QPoffset)来修改导出的量化参数的过程。
量化参数偏移(QPoffset)可以是对于编码/解码装置预定义的固定值,或者可以由编码装置编码并且信令通知。可以在视频序列、图片、条带、图块(tile)或块单元的至少一级中信令通知量化参数偏移(QPoffset)。信令通知量化参数偏移的单位可以比信令通知量化参数差值的单位大。可以根据块大小/形状、划分数、预测模式、帧内预测模式、分量类型(例如,亮度、色度)等来自适应地确定量化参数偏移(Qpoffset)的值和数目。
量化参数偏移的数目可以是一个、两个、三个或更多个。例如,可以在图片级、条带级或块级中的至少一个中定义量化参数偏移。可以针对帧内模式和帧间模式中的每一个来定义量化参数偏移,或者可以针对亮度分量和色度分量中的每一个来定义量化参数偏移。替选地,可以定义针对帧内预测模式的LM模式的单独偏移。在此,LM模式可以意指其中使用亮度块的预测/重建样本来预测色度块的模式。
参照图5,可以使用所计算的量化参数来对残差系数执行去量化(S520)。
具体地,可以基于量化参数或预定级标度值中的至少一个来执行去量化。级标度值可以是对于编码/解码装置预定义的值,或者可以由编码装置编码并且信令通知。级标度值可以由一维阵列的k个整数值组成。例如,可以将级标度值定义为{40、45、51、57、64、72}。然而,这并不限制级标度值和整数值的数目。也就是说,可以将级标度值定义为另一个值,并且可以将级标度值的数目定义为4个、5个、7个、8个或更多个。
同时,还可以将预定的量化权重m应用于去量化的结果,并且该处理被称为缩放。将参照图10和图11来描述该缩放。
此外,当残差块包括多个熵组时,可以对于每个熵组应用不同的量化参数。例如,残差块中的每个熵组共享相同的量化参数差值,但是可以使用不同的量化参数预测值。相反地,残差块的每个熵组共享相同的量化参数预测值,但是可以使用不同的量化参数差值。也就是说,用于计算量化参数预测值的单元可以与用于计算量化参数差值的单元不同。在这种情况下,可以针对每个熵组执行去量化。对于仅具有零残差系数的熵组,可以跳过去量化过程。
参照图5,可以通过对去量化的残差系数执行逆变换来重构残差样本(S530)。
可以基于预定的变换类型来执行逆变换,并且可以基于变换候选集来确定残差块的变换类型。变换候选集可以包括n个变换类型。例如,变换候选集可以包括DCT-II、DCT-V、DCT-VIII、DST-I或DST-VII中的至少一个。
在编码/解码装置中,可以定义m个变换候选集。在此,m可以是1、2、3或更多。属于m个变换候选集之一(以下称为第一变换候选集)的变换类型的数目和/或种类可以与另一个(以文称为第二变换候选集)不同。例如,第一变换候选集可以由p个变换类型组成,并且第二变换候选集可以由小于p的q个变换类型组成。替选地,即使当第一转换候选集和第二转换候选集由相同数目的变换类型组成时,属于第一转换候选集的至少一个变换类型也可以与属于第二转换候选集的变换类型不同。
可以选择性地使用m个变换候选集中的任一个。
可以基于残差块的大小来执行变换候选集的选择。例如,如果残差块的大小小于或等于阈值,则选择由p个变换类型组成的第一变换候选集,并且如果残差块的大小大于阈值,则可以选择由q个变换类型组成的第二变换候选集。阈值可以为32、64、128、256或更大,并且p可以为比q大的值。
替选地,可以基于要从编码装置信令通知的信息来执行变换候选集的选择。该信息可以指定m个变换候选集中的任一个。可以在图片、条带或块的至少一级中信令通知该信息。
当所选择的变换候选集包括多个变换类型时,编码装置可以对指定多个变换类型中的任一个的信息进行编码。解码装置可以通过对编码信息进行解码来确定残差块的变换类型。
同时,可以基于预定标记来选择性地执行逆变换。在此,该标记可以指示针对残差块是否跳过逆变换。例如,如果标记为1,则不对残差块执行逆变换,并且如果标记为0,则可以对残差块执行逆变换。因此,可以仅当标记为0时导出残差块的变换类型。替选地,可以基于残差块的特性来选择性地执行逆变换。基于残差块的特性,解码装置可以确定是否跳过逆变换。这些特性可以指代残差块的大小/类型、划分类型、预测模式、分量类型或其他与编码参数有关的残差系数。
可以执行除了逆变换(以下称为第一逆变换)之外的附加的逆变换(以下称为第二逆变换),并且这将参照图9进行描述。
图6示出了根据本发明的实施方式的导出量化参数预测值(QPpred)的方法。
参照图6,可以基于邻近块的量化参数来导出针对块T的量化参数预测值(QPpred)。块T是N×M大小的块,并且可以是正方形或非正方形。
邻近块可以是在空间/时间上与块T相邻的块,并且可以是在块T之前先前解码的块。例如,邻近块可以包括块T的左块、上块、左上块、右上块或左下块中的至少一个。替选地,邻近块还可以包括在时间上对应于块T的并置块。该并置块可以被定义为属于与块T不同的图片并且包括块T的左上角样本、右下角样本或中心样本中的至少一个的位置的块。
邻近块的位置可以是编码/解码装置中的预定义位置。例如,预定义位置可以是左块和上块,或者可以是左块、上块和左上块。然而,本发明不限于此,并且还可以包括左下块、右上块等。可以基于块T或邻近块中的至少一个的至少一个特性(例如,大小、形状、划分深度、划分类型、分量类型等)来不同地确定邻近块的位置。例如,可以将邻近块确定为与块T相邻的块中具有最大面积的块,或者可以将邻近块确定为彼此相邻的边界的长度最长的块。这可以针对块T的上块和左块分别执行。
替选地,指定邻近块的位置的信息可以由编码装置编码并且信令通知。该信息可以以标记、索引等的形式被编码。例如,如果信息是索引0,则可以使用左块的量化参数来导出块T的量化参数预测值(QPpred)。如果信息是索引1,则可以使用上块的量化参数来导出块T的量化参数预测值(QPpred)。
邻近块的数目为n,其中n可以为1、2、3、4或更大的自然数。该数目可以是在编码/解码装置中预定义的固定值。替选地,可以基于块T或邻近块中的至少一个的特性(例如,大小、类型、划分深度、划分类型、分量类型等)来不同地确定数目。替选地,可以通过编码装置对针对用于导出块T的量化参数预测值(QPpred)的邻近块的最大数目信息进行编码并且信令通知。也就是说,块T可以根据最大数目信息使用在数目范围内的邻近块。可以在视频序列、图片和其他片段区域(例如,条带、切片、编码树块行、块)中的至少一个的级上信令通知最大数目信息。
如上所述,可以使用一个或更多个邻近块来导出块T的量化参数预测值(QPpred)。
当使用多个邻近块时,可以通过诸如多个邻近块的量化参数的中间值、平均值、最小值、最大值或众数值的运算处理来导出块T的量化参数预测值(QPpred)。
替选地,可以通过从上块的QP和左块的QP之和中减去左上块的QP来导出块T的量化参数预测值(QPpred)。在这种情况下,如果存在多个上块或左块,则可以通过诸如中间值、平均值、最小值、最大值或众数值的运算处理来确定上块或左块的QP。
如果邻近块中存在不可用块,则可以仅使用可用邻近块来导出块T的量化参数预测值。替选地,当邻近块不可用时,可以基于在预定片段区域中定义的量化参数来导出邻近块的量化参数。片段区域可以是条带、切片、编码树块行、块等。片段区域可以表示在块T之前的编码/解码区域或者要被编码/解码的块T所属的区域。不可用可能是物理上不存在邻近块的情况,或者是根据编码/解码装置的规则无法进行参考的情况。例如,如果块T和邻近块属于不同的并行处理区域(例如,条带、切片等),则可能不允许块T参考该邻近块。
图7示出根据本发明的实施方式的导出针对块T的色度分量的量化参数预测值的方法。
在下文中,块T的亮度分量和色度分量将分别被称为亮度块和色度块。
在4:2:0颜色格式的情况下,色度块TC可以对应于亮度块TY。可以使用对应的亮度块的量化参数来导出色度块的量化参数预测值。
然而,如图7所示,亮度块与色度块之间的划分结构可以不同。在这种情况下,色度块可以对应于多个亮度块。可以使用多个亮度块中的一个的量化参数来导出色度块的量化参数预测值。在这种情况下,可以使用与色度块的中心样本的位置或左上样本的位置对应的亮度块。可以使用具有与色度块交叠的最大区域的亮度块。替选地,可以通过计算多个亮度块的量化参数的平均值、中值、最小值、最大值、众数值等来导出色度块的量化参数预测值。
可以使用邻近块的量化参数来导出色度块的量化参数预测值,这已经参照图6进行了详细描述,并且这里将省略其详细描述。
如以上所描述的,可以通过利用使用对应的亮度块的量化参数的方法(第一方法)和使用色度块的邻近块的量化参数的方法(第二方法)两者来导出色度块的量化参数预测值。替选地,可以通过选择第一方法或第二方法来导出色度块的量化参数预测值。
可以考虑亮度块和色度块是否具有相同的划分结构、预测模式、帧内预测模式、颜色格式或与块T有关的大小/形状来执行选择。例如,如果块T以帧间模式编码并且色度块的划分结构与亮度块的划分结构相同,则可以使用第一方法来预测色度块的量化参数。替选地,如果色度块的划分结构与亮度块的划分结构相同,则使用第一方法;否则,可以使用第二方法。替选地,如果块T的帧内预测模式是LM模式,则可以使用第一方法来预测色度块的量化参数。
替选地,可以基于指定第一方法或第二方法的信息来执行选择。该信息可以由编码装置编码并信令通知。可以在视频序列、图片或其他片段区域(例如,条带、切片、编码树块行和块)的至少一个级中信令通知该信息。
色度块的量化参数可以被导出为与色度块的所导出的量化参数预测值相同,或者可以通过向量化参数预测值添加量化参数差值来导出色度块的量化参数。另外,如图5所示,可以使用预先确定的量化参数偏移来修改所导出的量化参数。
例如,在以LM模式编码的色度块的情况下,可以将量化参数预测值设置为等于量化参数。在这种情况下,可以不信令通知量化参数差值,或者可以省略添加信令通知的量化参数差值的处理。替选地,在以LM模式编码的色度块的情况下,可以使用一个、两个或更多个量化参数偏移来修改量化参数。
图8示出根据本发明的实施方式的基于量化参数差值(deltaQP)的信号发送单元的量化参数导出方法。
编码装置可以确定用于对deltaQP进行编码的块的单元,并且对指示块的大小的信息进行编码。这里,大小可以由以下中的至少一个来表示:块的宽度或高度、宽度与高度的乘积、宽度与高度的总和以及宽度和高度的最小值/最大值。解码装置对信号发送的信息进行解码以获得其中允许信令通知deltaQP的块的最小大小。可以以视频序列、图片、条带、或切片中的至少一个的级来信令通知该信息。替选地,最小大小可以被导出作为变换块的最小大小,或者可以被定义为在编码/解码装置中预定义的固定大小。例如,最小大小可以被定义为4×4、8×4、4×8、8×8等。可以分别针对亮度分量和色度分量信令通知指示块的大小的信息。替选地,可以基于亮度块的最小大小来导出色度块的最小大小。例如,在4:2:0颜色格式中,可以将色度块的最小大小确定为是亮度块的最小大小的一半。在帧间模式中,色度块的划分结构可以与亮度块的划分结构不同,并且可以将色度块的最小大小确定为是亮度块的一半。
参照图8,可以基于当前块的大小与最小大小之间的比较结果来导出当前块的量化参数。这里,当前块可以是未被诸如QT、BT、TT等块划分类型进一步划分的块。
图8(a)示出其中当前块的大小是2M×2N并且最小大小是M×N的情况。如图8(a)所示,当当前块的大小大于最小大小时,可以使用QPpred和信令通知的deltaQP来导出当前块的量化参数。
可以基于以上描述的第一方法或第二方法中的至少一个来导出QPpred。可以在块a处信令通知deltaQP,并且其余块b、c、d可以共享从块a信令通知的deltaQP。在这种情况下,当前块具有一个量化参数。替选地,可以针对具有最小大小的块a至d中的每一个信令通知deltaQP。在这种情况下,可以针对属于当前块的块a至d中的每一个导出量化参数,并且块a至d可以具有不同的量化参数。
同时,如果当前块的大小等于最小大小,则可以使用QPpred和信令通知的deltaQP来导出当前块的量化参数。
图8(b)示出其中最小大小是M×N并且当前块(a至d)小于最小大小的情况。如图8(b)所示,如果当前块的大小小于最小大小,则可以使用QPpred和信令通知的deltaQP来导出当前块的量化参数。
可以使用以上描述的第一方法或第二方法中的至少一个基于当前块来导出QPpred。例如,可以针对块a至d中的每一个导出QPpred。替选地,可以针对块a导出QPpred,并且其余的块b至d可以共享从块a导出的QPpred。替选地,可以使用以上描述的第一方法或第二方法中的至少一个基于当前块的上块来导出QPpred。这里,上层块可以是包括当前块的块和具有比当前块小的深度的块。例如,当当前块的划分深度是k时,上块的划分深度可以是(k-1)、(k-2)等。上层块可以被定义为共享QPpred的块的单元。上层块可以被设置为等于最小大小的大小(M×N)。替选地,编码装置可以确定共享QPpred的块的单元,并且可以对指定该块的单元的信息进行编码。解码装置可以基于编码信息来指定上块的位置、大小、形状等。
可以在当前块的上层块中信令通知deltaQP。这里,上层块可以是包括当前块的块和具有比当前块小的深度的块。即,当当前块的划分深度是k时,上层块的划分深度可以是(k-1)、(k-2)等。这里,假设上层块是图8(b)所示的M×N。因此,可以针对块a至d导出单个且相同的量化参数,并且可以针对块a至d中的每一个导出不同的量化参数。替选地,如果如图8(b)所示当前块的大小小于最小大小,则可以使用QPpred导出当前块的量化参数。在这种情况下,可以省略针对deltaQP的解码。如以上描述的,可以使用第一方法和第二方法中的至少一个基于当前块或上块来导出QPpred,并且将省略其详细描述。类似地,可以针对属于M×N块的块a至d导出单个且相同的量化参数,并且可以针对块a至d中的每一个导出不同的量化参数。
另一方面,在与图片、条带或图块的边界相邻的块的情况下,块可能不满足最小大小。在这种情况下,可以仅使用QPpred来导出块的量化参数,并且可以省略针对deltaQP的解码。
图9示出根据本发明的实施方式的残差系数的逆变换过程。
参照图9,可以通过对残差系数执行第一逆变换或第二逆变换中的至少一个来重构残差块的残差样本。
第二逆变换可以应用于残差块的整个区域或残差块内的部分区域。部分区域可以意指残差块中的低频区域。可以考虑残差块的大小/形状或第二逆变换的变换矩阵的大小/形状中的至少一个来不同地确定应用第二逆变换的区域。
例如,如果残差块的宽度或高度等于或大于8,则可以应用具有8×8变换矩阵的第二逆变换。当残差块的大小是8×8时,将第二逆变换应用于残差块的整个区域,而当残差块的大小是16×16时,可以将第二逆变换仅应用于残差块的部分区域。该部分区域可以是位于残差块的左上处的8×8区域、位于残差块顶端处的16×8区域、位于残差块左侧处的8×16区域或者位于残差块的右下处的排除8×8的区域的区域。
替选地,如果残差块的宽度或高度为4,则可以应用具有4×4变换矩阵的第二逆变换。当残差块的大小是4×8或8×4时,可以将第二逆变换仅应用于残差块的部分区域(例如,位于残差块的左上处的4×4区域),并且可以将第二逆变换应用于属于残差块的两个4×4区域中的每个区域。
第二逆变换的变换矩阵的大小可以是4×4、8×8、16×16、32×32或更大。变换矩阵的形状不限于正方形,而是可以实现为非正方形。然而,为了降低变换的复杂度,可以将第二逆变换所允许的变换矩阵的大小限制为N×M或更小。N和M可以分别为4、8或16,并且N和M可以彼此相同或不同。
在第二逆变换处理中,可以通过图5中描述的变换类型导出方法来确定残差块的变换类型。替选地,可以在编码/解码装置中预先定义第二逆变换中的变换类型。例如,作为第二逆变换中的变换类型,可以固定地使用以上提及的五种变换类型之一。
可以基于指示在残差块中是否跳过第一逆变换的标记(在下文中称为第一标记)来选择性地执行第二逆变换。即,当根据第一标记在残差块中跳过第一逆变换时,可以跳过第二逆变换的执行。
替选地,可以单独地信令通知指示是否跳过第二逆变换的标记(在下文中称为第二标记)。如果第二标记为1,则不执行第二逆变换,并且如果标记为0,则可以执行第二逆变换。第一标记和第二标记可以被独立地编码并信令通知。替选地,可以根据第一标记和第二标记中的一个来信令通知第一标记和第二标记中的另一个。例如,只有当第一标记和第二标记中的任何一个为1时,才可以信令通知另一个。相反,只有当第一标记和第二标记中的任何一个为0时,才可以信令通知另一个。
当属于残差块的非零残差系数的数目小于n时,可以不应用第二逆变换。其中,n可以是对于编码/解码装置预定义的值。例如,n可以是1、2、3或8或更小的自然数。替选地,可以基于残差块的大小来不同地确定n。
同时,图9示出在第一逆变换之前执行第二逆变换,但是不限制执行逆变换的顺序。也就是说,可以在第一逆变换之前执行第二逆变换,或者可以在第一逆变换之后执行第二逆变换。当在第一逆变换之前执行第二逆变换时,可以在去量化与第二逆变换之间执行图5所述的缩放,或者可以在第一逆变换与第二逆变换之间执行图5所述的缩放。相反,当在第一逆变换之后执行第二逆变换时,可以在去量化与第一逆变换之间执行图5所述的缩放,或者可以在第一逆变换与第二逆变换之间执行图5所述的缩放。
图10示出了根据本发明的实施方式的与缩放过程有关的缩放列表的形状。
如在图5中提到的,缩放可以指将预定的量化权重(m)应用于残差块的残差系数的过程。残差块的残差系数可以是正方形或NxM的非正方形。可以针对残差块中的每个频率定义量化权重,并且针对每个频率定义的量化权重的阵列将被称为缩放列表。
可以在编码装置处信令通知缩放列表的量化权重(方法A)。
关于方法A,可以针对残差块中的残差系数的每个位置或频率分量信令通知量化权重。可以在视频序列、图片或其他片段区域(例如,条带、图块、编码树块行和块)的至少一级中信令通知量化权重。
如图10所示,可以信令通知具有由N和M的组合确定的各种大小/形状的缩放列表。在此,N和M可以是大于或等于1的整数。可以以NxM的二维形式信令通知缩放列表,或者可以通过将NxM的二维阵列以一维方式排列来信令通知该缩放列表。替选地,可以通过划分为Nx1的水平缩放列表和1xM的垂直缩放列表来信令通知缩放列表。
缩放列表的形状可以根据缩放是否在根据图9的第二逆变换之前执行而不同。例如,当在第二逆变换之前执行缩放时,以一维形式信令通知缩放列表,否则可以以二维形式信令通知缩放列表。
缩放列表的量化权重可以是在编码/解码装置中预先设置的值(方法B)。关于方法B,量化权重可以是一个且相同的值,而不管残差块中残差系数的位置如何。替选地,可以基于在编码/解码装置中预定义的表格信息来导出量化权重。表格信息可以根据残差系数的位置、块大小、分量类型和预测模式中的至少一个来定义量化权重。
可以通过参考先前使用或信令通知的缩放列表的全部或一部分来确定缩放列表的量化权重(方法C)。要参考的缩放列表可以最近使用的或以编码/解码顺序信令通知,或者可以在先前的片段区域(例如,条带、图块、编码树块(CTB)行、CTB、其他子块)中使用或信令通知。为此,指示是否参考先前的缩放列表的信息可以被编码并信令通知。指定在先前的缩放列表中重复使用的量化权重的信息可以被编码并信令通知。
可以通过选择性地使用上述方法A至方法C之一来确定量化权重。可以基于残差块的大小/类型、划分类型、预测模式、分量类型、变换类型或预定标志信息中的至少一个来执行选择。标志信息可以包括与是否应用量化权重有关的标志、与是否执行变换跳过有关的标志等。
在上述方法A至方法C中,可以针对亮度块和色度块中的每一个确定缩放列表的量化权重。例如,如果颜色格式是4:2:0或4:2:2,则可以信令通知亮度块和色度块中的每一个的缩放列表。替选地,可以通过以预定比率对亮度块的缩放列表进行采样来确定色度块的缩放列表。可以基于作为亮度分量与色度分量之间的比率的颜色格式来确定该比率。替选地,在上述方法A至方法C中,可以根据残差块的变换类型来可变地确定缩放列表。可以分别针对垂直变换和水平变换来确定残差块的变换类型。可以根据所确定的垂直/水平变换的变换类型来可变地确定缩放列表。可以在根据图9的第一逆变换或第二逆变换中的至少一个中确定残差块的变换类型。
图11示出了根据本发明的实施方式的基于量化权重的缩放和逆变换过程。
可以通过划分为水平方向和垂直方向来执行基于量化权重的缩放或逆变换中的至少一个。
如图10中提到的,可以通过划分为Nx1的水平缩放列表和1xM的垂直缩放列表来信令通知缩放列表。在这种情况下,解码装置可以执行基于水平缩放列表的水平缩放(在下文中,称为1D水平缩放)和基于垂直缩放列表的垂直缩放(在下文中,称为1D垂直缩放)中的每一个。并且,可以对应用缩放的残差系数执行逆变换。在这种情况下,可以对应用1D水平缩放的残差系数执行水平变换(在下文中,称为1D水平变换)。并且,可以对应用1D垂直缩放的残差系数执行垂直变换(在下文中,称为1D垂直变换)。替选地,可以对应用缩放的残差系数执行水平变换和垂直变换(在下文中,称为2D逆变换)。
例如,如图11中所示,针对残差系数的缩放和逆变换可以包括:在1D水平(垂直)缩放之后执行1D水平(垂直)变换(在下文中,称为第一步骤),以及在1D垂直(水平)缩放之后执行1D垂直(水平)变换(在下文中,称为第二步骤)。可以按照第一步骤到第二步骤的顺序来顺序地执行缩放和逆变换,并且可以并行地执行第一步骤和第二步骤。
替选地,可以在关于残差系数的水平/垂直缩放之后执行水平/垂直变换。也就是说,可以按照1D水平(垂直)缩放->1D垂直(水平)缩放->1D水平(垂直)变换->1D垂直(水平)变换的顺序执行残差系数的缩放和逆变换。可以顺序地或并行地执行1D水平(垂直)缩放和1D垂直(水平)缩放。同样地,可以顺序地或并行地执行1D水平(垂直)变换和1D垂直(水平)变换。
另一方面,可以以NxM的二维形式信令通知缩放列表。在这种情况下,可以执行基于缩放列表的缩放(在下文中,称为2D缩放),并且可以对缩放后的残差系数执行逆变换。替选地,可以以NxM二维阵列的一维阵列的形式信令通知缩放列表,或者可以通过划分为Nx1的水平缩放列表和1xM的垂直缩放列表来信令通知缩放列表。在这种情况下,解码装置可以将信令通知的缩放列表重排为NxM的二维。解码装置可以在对残差系数进行2D缩放之后执行逆变换。在此,可以通过划分为1D水平变换和1D垂直变换来执行逆变换,或者逆变换可以是2D逆变换。
当在根据图9的第二逆变换之前执行缩放时,该实施方式中的逆变换可以意指第二逆变换。另一方面,当在根据图9的第一逆变换与第二逆变换之间执行缩放时,该实施方式中的逆变换可以意指第一逆变换。
图12和图13示出了根据本发明的实施方式的确定残差块的熵组的方法。
属于残差块的熵组的数目可以是n。例如,可以将残差块划分为两个熵组:作为低频区域的第一组和作为高频区域的第二组。替选地,可以将残差块划分为三个熵组:作为低频区域的第一组、作为中频区域的第二组以及作为高频区域的第三组。然而,这仅是示例,并且n可以是1或者可以是大于或等于4的整数。
值n可以是在编码/解码装置中预定义的值或者可以基于从编码装置信令通知的信息来导出。该信息可以包括:指示是否将残差块划分为多个熵组的信息,指示属于残差块的熵组的数目的信息等。可以在视频序列、图片或其他片段区域(例如,条带、图块、编码树块行、编码块、变换块)的至少一个级中信令通知该信息。
替选地,可以基于关于残差块的编码信息来可变地确定值n。编码信息不仅可以包括由编码装置进行编码并信令通知的信息,还可以包括在解码装置中基于信令通知的信息导出的信息。
例如,编码信息可以包括以下项中的至少一个:块大小/形状、块可用性、划分类型、划分的数目、分量类型、预测模式、关于帧内预测模式的信息、帧间模式、运动信息、变换类型、变换跳过模式、关于非零残差系数的信息、扫描顺序、颜色格式、环内滤波器信息等。
可以通过宽度和高度、宽度和高度的最小值/最大值、宽度和高度的总和、属于块的样本的数目等中之一来表达块大小。可以考虑块位置、并行处理区域的范围、解码顺序等来确定块的可用性。预测模式可以意指指示帧内模式或帧间模式的信息。关于帧内预测模式的信息包括与以下项有关的信息:帧内预测模式是否是非方向性模式,帧内预测模式是否是垂直/水平模式,帧内预测模式的方向性,在编码/解码装置中预定义的帧内预测模式的数目等。帧间模式可以意指指示合并/跳过模式、AMVP模式或当前图片参考模式的信息。当前图片参考模式是指使用当前图片的预重构区域来预测当前块的方法。当前图片可以是当前块所属的图片。可以将当前图片添加到用于帧间预测的参考图片列表,并且可以将当前图片在短期参考图片或长期参考图片之后排列在参考图片列表中。运动信息可以包括预测方向标志、运动矢量、参考图片索引等。编码信息可以与当前块、当前块的相邻块或当前块的上层块中的至少一个有关。上层块可以意指与当前块相比具有更小划分深度的块。
参照图12,可以基于扫描顺序或属于熵组的残差系数的数目(在下文中,称为系数数目信息)中的至少一个来确定熵组。可以针对每个熵组定义系数数目信息。
例如,假设第一组和第二组的系数数目信息分别指示3和7,并且扫描顺序是之字形(zigzag)扫描。在这种情况下,如图12所示,根据之字形扫描,第一组可以被确定为三个残差系数的组(也就是,位置0至位置2处的一组残差系数),以及第二组可以被确定为七个残差系数的组(也就是,位置3至位置9处的一组残差系数),并且第三组可以被确定为在残差块中排除第一组和第二组的一组残差系数。
如上所述,第一组被定义为从残差块的左上残差系数到在通过第一组的系数数目信息偏移的位置处的残差系数C1的组。类似地,第二组被定义为从残差系数C1到在通过第二组的系数数目信息偏移的位置处的残差系数C2的组。第三组被定义为在残差块中排除第一组和第二组的一组残差系数。偏移是根据残差块或每个组的(逆)扫描顺序进行。
系数数目信息可以是在编码/解码装置(第一实施方式)中预定义的值。替选地,可以在视频序列、图片和其他片段区域(例如,条带、图块、编码树块行、编码块、变换块)的至少一级中信令通知系数数目信息(第二实施方式)。替选地,可以基于关于残差块的编码信息来可变地确定系数数目信息(第三实施方式)。在此,编码信息与上述编码信息相同,并且将省略其详细描述。可以基于预定参考块的系数数目信息来导出系数数目信息(第四实施方式)。在此,参考块可以是残差块的相邻块或上层块。相邻块是指残差块之前的预解码的块,并且可以是与残差块的左侧/右侧或上侧/下侧相邻的块中的至少一个。上层块可以是与残差块相比具有更小划分深度的块。
另一方面,可以基于上述第一四实施方式至第四实施方式中的一个实施方式来确定多个熵组中的一些组的系数数目信息,并且可以基于上述第一实施方式至第四实施方式中的另一个实施方式来确定一些其他组的系数数目信息。
可以基于一条、两条或更多条位置信息来确定一个熵组。位置信息可以指示属于残差块的特定残差系数的位置,并且可以是用于指定熵组的大小、形状、位置等的信息。
参照图13(a),可以基于一个残差系数的位置信息来区分熵组。在这种情况下,当属于残差块的熵组的数目为n时,位置信息的数目可以为(n-1)。
例如,当第一组的位置信息指定残差系数A的位置(XA,YA)时,可以将第一组确定为位置(x1,y1)处的一组残差系数(其中,0=<x1=<XA,0=<y1=<YA)。当第二组的位置信息指定残差系数B的位置(XB,YB)时,第二组可以被确定为在位置(x2,y2)处的残差系数中排除第一组的组(其中,0=<x2=<XB,0=<y2=<YB)。第三组可以被确定为在残差块中排除第一组和第二组的一组残差系数。
参照图13(b),可以基于多条位置信息来区分熵组。
例如,当第一组的位置信息指定残差系数A1和A2的位置时,第一组可以被确定为位于穿过A1和A2的线的左侧的残差系数的组。也就是说,第一组可以由10个残差系数组成。当第二组的位置信息指定残差系数B1和B2的位置时,第二组可以被确定为位于穿过B1和B2的线的左侧的残差系数的组中排除第一组的组。也就是说,第二组可以由26个残差系数组成。第三组可以被确定为在残差块中排除第一组和第二组的一组残差系数。
可以使用分别指定A1和A2的位置的两条位置信息来确定第一组,并且可以使用分别指定B1和B2具有的位置的两条位置信息来确定第二组。然而,如图13(b)所示,可以基于残差块的对角线L以对称形式实现熵组。在这种情况下,可以基于另一个位置信息来导出两条位置信息中的任何一个。例如,可以基于A1的位置信息来导出A2的位置信息。类似地,可以基于B1的位置信息来导出B2的位置信息。
此外,可以基于一条位置信息来确定多个熵组中的一些熵组,并且可以基于两条或更多条位置信息来确定其余的熵组。例如,基于如图13(a)的实施方式中的一条位置信息来确定第一组,并且基于如图13(b)的实施方式中的两条位置信息来确定第二组。相反,基于如图13(b)的实施方式中的两条位置信息来确定第一组,并且基于如图13(a)的实施方式中的一条位置信息来确定第二组。
位置信息可以是在编码/解码装置中预定义的值(第一实施方式)。替选地,可以在视频序列、图片、其他片段区域(例如,条带、图块、编码树块行、编码块、变换块)的至少一级中信令通知位置信息(第二实施方式)。在这种情况下,块级可以是具有固定大小诸如4x4、8x8或16x16的单元。然而,这并不限制块级的形状,并且块级可以是具有固定大小的非正方形单元。替选地,可以基于关于残差块的编码信息来可变地确定位置信息(第三实施方式)。在此,编码信息与上述编码信息相同,并且将省略其详细描述。替选地,可以基于预定的参考块中的位置信息来导出位置信息(第四实施方式)。在此,参考块与上述参考块相同,并且将省略详细描述。
另一方面,可以基于第一实施方式至第四实施方式中的一个实施方式来确定多个熵组中的一些组的位置信息,并且可以基于第一实施方式至第四实施方式中的另一个实施方式来确定其他组的位置信息。
图14示出了根据本发明的实施方式的残差系数的扫描与熵组之间的关系。
解码装置可以根据预定的扫描顺序通过扫描来导出残差块的残差系数。扫描顺序包括之字形扫描、z扫描、右上对角线扫描、左下对角线扫描、水平扫描和垂直扫描。在此,右上对角线扫描可以意指从残差块的右上端到左下端的对角线扫描,以及左下对角线扫描可以意指从残差块的左下端到右上端的对角线扫描。
当残差块包括多个熵组时,可以在不考虑熵组的情况下执行扫描,或者可以针对每个熵组执行扫描。残差块可以使用仅一个扫描顺序用于扫描,或者可以针对每个熵组使用不同的扫描顺序。
具体地,参照图14(a),残差块可以包括三个熵组。属于残差块的三个熵组可以使用一个且相同的扫描顺序,即之字形扫描。然而,基于之字形扫描的扫描不是以熵组为单位执行的,而是可以以残差块为单位执行。因此,可以比第二熵组的残差系数中的至少一个更早地扫描位于残差块的左上处的第一熵组的残差系数中的至少一个。
另一方面,参照图14(b),残差块可以包括两个熵组。可以分别以熵组为单位执行残差系数的扫描。在这种情况下,第一熵组的扫描顺序可以与第二熵组的扫描顺序不同。例如,第一熵组的扫描顺序可以是之字形扫描,并且第二熵组的扫描顺序可以是垂直扫描。可以从残差块的右下到左上执行残差系数的扫描。可以在针对第二熵组的所有残差系数完成扫描之后执行针对第一熵组的扫描。
参照图14(c),残差块可以包括两个熵组。可以分别以熵组为单位执行残差系数的扫描。在这种情况下,第一熵组的扫描顺序可以与第二熵组的扫描顺序相同。例如,第一熵组和第二熵组两者的扫描顺序可以是垂直扫描。可以从残差块的右下到左上执行残差系数的扫描。可以在针对第二熵组的所有残差系数完成扫描之后执行针对第一熵组的扫描。
在下文中,将描述用于确定残差块的扫描顺序的方法。如上所述,以残差块为单位,可以使用一个或更多个扫描顺序。在这种情况下,可以选择性地使用之字形扫描、z扫描、右上对角线扫描、左下对角线扫描、水平扫描和垂直扫描中的至少一种。
扫描顺序可以被设置为在编码/解码装置中预定义的默认模式(第一实施方式)。例如,预定义的默认模式可以是之字形扫描或z扫描。可以基于从编码装置信令通知的信息来导出扫描顺序(第二实施方式)。该信息可以意指指定残差块的扫描顺序的信息。可以在视频序列、图片和其他片段区域(例如,条带、图块、编码树块行、编码块、变换块)的至少一级中信令通知该信息。可以针对每个熵组信令通知该信息,或者可以以残差块为单位信令通知该信息。
替选地,可以基于关于残差块的编码信息来确定扫描顺序(第三实施方式)。编码信息不仅可以包括由编码装置进行编码并信令通知的信息,而且还包括基于信令通知的信息在解码装置中导出的信息。例如,编码信息可以包括以下项中的至少一个:块大小/类型、块可用性、划分类型、划分的数目、分量类型、预测模式、关于帧内预测模式的信息、帧间模式、运动信息、变换类型、变换跳过模式、关于非零残差系数的信息、颜色格式、熵组的大小/形状等。将参照图12对此进行描述,并且将省略详细描述。
替选地,可以基于预定参考块的扫描顺序来导出扫描顺序(第四实施方式)。在此,参考块可以是残差块的相邻块或上层块。相邻块是指残差块之前的预解码块,并且可以是与残差块的左端/右端或上端/下端相邻的块中的至少一个。上层块可以是与残差块相比具有更小划分深度的块。
另一方面,当一个残差块使用多个扫描顺序时,基于上述第一实施方式至第四实施方式中的一个实施方式来确定多个扫描顺序中的一部分,并且基于第一实施方式至第四实施方式中的另外一个实施方式来确定其他部分。
图15示出了根据本发明的实施方式的扫描残差系数的方法。
可以从残差块中的扫描的起始位置执行扫描。起始位置可以指示残差块的特定残差系数的位置。特定残差系数可以意指具有非零整数值(在下文中,称为非零值)的残差系数。特定残差系数可以按逆扫描顺序位于属于残差块的非零值的末端处。相反地,特定残差系数可以按扫描顺序位于属于残差块的非零值的起始处。
例如,可以基于指示扫描的起始位置的信息(在下文中,称为第一信息)来执行扫描。第一信息可以由编码装置进行编码并信令通知。可以从由第一信息指定的位置执行扫描。如图15(a)所示,可以基于第一信息将扫描的起始位置指定为A位置而不是残差块的右下位置。在这种情况下,在扫描顺序中存在于残差块的A位置与右下位置之间的残差系数可以被设置为等于零。残差块的右下位置处的残差系数也可以被设置为等于零。
替选地,可以基于指定包括扫描的起始位置的熵组的信息(在下文中,称为第二信息)来执行扫描。第二信息可以由编码装置进行编码并信令通知。基于第二信息,包括扫描的起始位置的熵组被指定,并且可以从所指定的熵组执行扫描。在这种情况下,熵组之间的扫描顺序取决于残差系数的扫描顺序。根据第二信息,对于残差块的某个熵组可以跳过扫描。跳过扫描的熵组的残差系数可以被设置为等于零。
参照图15(b),残差块由包括左上残差系数的第一熵组、位于中心处的第二熵组和包括左下残差系数的第三熵组组成。基于第二信息,第二熵组可以被确定为包括扫描的起始位置的熵组。在这种情况下,从第二熵组执行扫描,并且第三熵组的残差系数可以被设置为等于零。
替选地,可以通过第一信息和第二信息的组合来确定扫描的起始位置。也就是说,可以基于第二信息来指定多个熵组中的一个熵组,并且可以基于第一信息来指定所指定的熵组中的起始位置。此外,图15没有限制熵组的数目、大小或形状,并且熵组的数目可以是四个或更多,并且熵组的形状可以具有正方形或非正方形。
图16示出了根据本发明的实施方式的对残差块中的部分区域的残差系数进行处理的方法。
编码装置可以对残差块的残差样本执行变换和/或量化,以导出残差系数。在这种情况下,可以不对残差块中的部分区域的残差系数进行熵编码,并且可以仅对残差区域的残差系数进行熵编码并发送给解码装置。
解码装置可以仅对从编码装置发送的残差系数进行解码,并且将部分区域的残差系数设置为解码装置中的预定义默认值。默认值可以包括残差系数或符号的绝对值(abs)中的至少一个。绝对值可以是零,或者可以是大于或等于二或三的值。
在下文中,将描述用于确定解码装置中的部分区域的方法。
参照图16,部分区域(灰色区域)可以是残差块中排除从左侧起的N列或从上侧起的M行中的至少一者的区域。替选地,部分区域可以是残差块中排除NxM区域的区域。
N和M可以是在编码/解码装置中预定义的值,或者可以根据残差块的大小/类型来可变地确定N和M。例如,当残差块是64x32时,排除从残差块的左侧起的32列(其中N=32,M=0)的区域可以被定义为部分区域。当残差块是32x64时,排除从残差块的上侧起的32行的区域(其中N=0,M=32)可以被定义为部分区域。然而,N和M的值仅是示例。N可以是大于或等于残差块的宽度(W)的一半的整数,并且M可以是大于或等于残差块的高度(H)的一半的整数。
替选地,可以基于被编码以指定部分区域的信息来导出N和M。例如,可以将残差块划分为预定的子区域(例如,三角形、矩形、正方形或任何其他形状)。与部分区域对应的子区域的索引或坐标信息可以被编码并信令通知。替选地,与NxM区域对应的子区域的索引可以被编码并信令通知,或者指定NxM区域的大小/形状的坐标信息可以被编码并信令通知。
具体地,可以基于垂直线或水平线中的至少一个将残差块划分为k个子区域。值k可以是2、3、4或更大的整数。值k可以是在编码/解码装置中预定义的固定值,或者可以基于垂直线/水平线可变地确定值k。可以将索引分配给每个子区域。在此,索引可以是0至(k-1)的值。在这种情况下,可以信令通知与图16所示的部分区域对应的子区域的索引,或者可以信令通知与部分区域对应的子区域的坐标信息。相反,可以信令通知与NxM区域——该NxM区域是由编码装置对残差系数进行编码并发送的区域——对应的子区域的索引,或者可以信令通知指定NxM区域的大小/形状的坐标信息。
替选地,指示坐标(N,M)的x坐标或y坐标的信息可以被编码并信令通知。在这种情况下,部分区域可以被确定为以下组之一:包括位置为(x1,y1)(其中,N=<x1<W,0=<y1<H)的残差系数的第一组,包括位置为(x2,y2)(其中,0=<x2<W,M=<y2<H)的残差系数的第二组,或者包括位置为(x3,y3)(其中,N=<x3<W,M=<y3<H)的残差系数的第三组。
替选地,指示坐标(N,M)的信息可以被编码并信令通知。在这种情况下,可以指定一组残差系数,该组残差系数位于穿过坐标(N,M)的垂直线/水平线的右侧和下侧处,并且所指定的组可以被确定为部分区域。
在上述实施方式中,可以基于编码信息中的至少一个来确定部分区域,并且可以将部分区域的残差系数设置为预定义的默认值。对于残差块的NxM区域,可以应用图5和图12至图15中描述的残差系数导出方法。
同时,可以考虑残差块的大小或形状中的至少一个来选择性地执行将残差系数设置为默认值的过程。例如,仅当残差块的大小大于或等于预定阈值时才可以应用以上过程。可以由残差块的宽度或高度中的至少一个来表达残差块的大小。阈值可以意指允许将残差系数设置为默认值(例如0)的最小大小。阈值可以是在编码/解码装置中预定义的值,或者可以由编码装置进行编码并信令通知。阈值可以是32、64、128、256或更大。
可以基于标志信息选择性地执行将残差系数设置为默认值的过程。标记信息可以指示是否将残差块中的部分区域(例如,高频区域)的残差系数设置为默认值。可以在解码装置中基于残差块的大小/形状来导出标志信息,或者可以由编码装置对标志信息进行编码并信令通知。然而,以上过程可以被限制为仅当没有以变换跳过模式对残差块进行编码时才被执行。因此,当以变换跳过模式对残差块进行编码时,编码装置可以不对将残差系数设置为默认值所需的信息进行编码。
尽管为了说明的清楚起见,本公开内容的示例性方法由一系列动作表示,但是它们并不旨在限制执行步骤的顺序,并且如果需要,可以同时或者以不同的顺序执行每个步骤。为了实施根据本公开内容的方法,说明性步骤可以另外包括其他步骤,包括除一些步骤之外的其余步骤,或者可以包括除一些步骤以外的其他步骤。
本公开内容的各种实施方式不旨在包括一切,并且旨在示出本公开内容的代表性方面,并且各种实施方式中描述的特征可以独立地或以两个或更多个的组合来应用。
另外,本公开内容的各种实施方式可以通过硬件、固件、软件或其组合来实现。在硬件实现的情况下,可以通过一个或更多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、通用处理器、控制器、微控制器、微处理器等来实现硬件。
本公开内容的范围包括:软件或机器可执行指令(例如,操作系统、应用、固件、程序等),所述软件或机器可执行指令使根据各种实施方式的方法的操作在装置或计算机上执行;以及非暂态计算机可读介质,其中储存有可在装置或计算机上执行的这样的软件或指令。
工业适用性
本公开内容可以用于对视频信号进行编码/解码。