具体实施方式
考虑到本公开中的功能,本说明书中使用的术语可以是当前广泛使用的通用术语,但是可以根据本领域的技术人员的意图、习俗或新技术的出现而改变。另外,在某些情况下,可能存在申请人任意选择的术语,并且在这种情况下,其含义在本公开的相应描述部分中进行了描述。因此,应基于整个说明书中的术语和内容的实质含义来解释本说明书中使用的术语。
在本说明书中,一些术语可以解释如下。在一些情况下,编码可以解释为编码或解码。在本说明书中,通过执行视频信号的编码(编码)来生成视频信号比特流的装置被称为编码装置或编码器,并且执行视频信号比特流的解码(解码)以重构视频信号的装置被称为解码装置或解码器。另外,在本说明书中,视频信号处理装置被用作包括编码器和解码器两者的概念的术语。信息是包括所有值、参数、系数、元素等的术语。在一些情况下,含义被不同地解释,因此本公开不限于此。“单元”被用作指代图像处理的基本单位或图片的特定位置的含义,并且指代包括亮度分量和色度分量两者的图像区域。另外,“块”指代包括亮度分量和色度分量(即,Cb和Cr)当中的特定分量的图像区域。然而,取决于实施例,诸如“单元”、“块”、“分区(partition)”和“区域”的术语可以互换使用。另外,在本说明书中,单元可以用作包括编译单元、预测单元和变换单元的全部的概念。图片指示场或帧,并且根据实施例,这些术语可以互换使用。
图1是根据本公开的实施例的视频信号编码装置的示意性框图。
参考图1,本公开的编码装置100包括变换单元110、量化单元115、逆量化单元120、逆变换单元125、滤波单元130、预测单元150和熵编译单元160。
变换单元110通过对残差信号进行变换来获得变换系数的值,该残差信号是输入的视频信号与由预测单元150生成的预测信号之间的差。例如,可以使用离散余弦变换(DCT)、离散正弦变换(DST)或小波变换。DCT和DST通过将输入图像信号分割成多个块来执行变换。在变换中,编码效率可以根据变换区域中的值的分布和特性而变化。量化单元115对从变换单元110输出的变换系数值的值进行量化。
为了改进编码效率,代替照原样对图像信号进行编码的方法,使用一种方法,其使用通过预测单元150已经编码的区域来预测图片,并通过将在原始图片和预测的图片之间的残差值添加到预测的图片来获得重构图像。为了防止编码器和解码器中的不匹配,当在编码器中执行预测时,应该使用可以在解码器中使用的信息。为此,编码器再次执行重构编码的当前块的处理。逆量化单元120对变换系数的值进行逆量化,并且逆变换单元125使用逆量化的变换系数值来重构残差值。同时,滤波单元130执行滤波操作以改善重构图片的质量并改善编码效率。例如,可以包括去块滤波器、样本自适应偏移(SAO)和自适应环路滤波器。滤波后的图片被输出或存储在解码图片缓冲器(DPB)156中,以用作参考图片。
为了提高编译效率,不原样编译图片信号,而是使用通过使用已编译的区域并且将原始图片和预测图片之间的残差值与预测图片相加来经由预测单元150预测图片,从而获得重构图片的方法。帧内预测单元152在当前图片内执行帧内预测,并且帧间预测单元154通过使用存储在解码图片缓冲器156中的参考图片来预测当前图片。帧内预测单元152从当前图片中的重构区域执行帧内预测,并且将帧内编译信息传送到熵编译单元160。帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a通过参考特定的重构区域来获得当前区域的运动矢量值。运动估计单元154a将参考区域的位置信息(参考帧、运动矢量等)传递到熵编译单元160,以使得将该位置信息包括在比特流中。运动补偿单元154b通过使用从运动估计单元154a传递的运动矢量值来执行帧间运动补偿。
预测单元150包括帧内预测单元152和帧间预测单元154。帧内预测单元152在当前图片内执行帧内预测,并且帧间预测单元154执行帧间预测以通过使用存储在DBP 156中的参考图片来预测当前图片。帧内预测单元152从当前图片中的重构样本执行帧内预测,并且将帧内编码信息传送到熵编译单元160。帧内编码信息可以包括帧内预测模式、最可能模式(MPM)标志和MPM索引中的至少一个。帧内编码信息可以包括关于参考样本的信息。帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a通过参考重构参考图片的特定区域来获得当前区域的运动矢量值。运动估计单元154a将用于参考区域的运动信息集(参考图片索引、运动矢量信息等)传递到熵编译单元160。运动补偿单元154b通过使用从运动估计单元154a传递的运动矢量值来执行运动补偿。帧间预测单元154将包括关于参考区域的运动信息的帧间编码信息传递到熵编译单元160。
根据另一实施例,预测单元150可以包括帧内块复制(BC)预测单元(未示出)。帧内BC预测单元基于当前图片中的重构样本来执行帧内BC预测,并将帧内BC编码信息传送到熵编译单元160。帧内BC预测单元获得参考当前图片中的特定区域,指示用于预测当前区域的参考区域的块矢量值。帧内BC预测单元可以使用所获得的块矢量值来执行帧内BC预测。帧内BC预测单元将帧内BC编码信息传送到熵编译单元160。帧内BC编码信息可以包括块矢量信息。
当执行上述图片预测时,变换单元110变换在原始图片和预测图片之间的残差值以获得变换系数值。在这种情况下,可以以图片内的特定块为单位执行变换,并且可以在预设范围内改变特定块的大小。量化单元115对在变换单元110中生成的变换系数值进行量化,并将其发送到熵编译单元160。
熵编译单元160对指示量化的变换系数的信息、帧内编码信息、帧间编码信息等进行熵编译,以生成视频信号比特流。在熵编译单元160中,可以使用可变长度编译(VLC)方案、算术编译方案等。可变长度编译(VLC)方案包括将输入符号变换成连续的码字,并且码字的长度可以是可变的。例如,频繁出现的符号由短码字表示,而很少出现的符号由长码字表示。基于上下文的自适应可变长度编译(CAVLC)方案可以被用作可变长度编译方案。算术编译可以将连续数据符号变换成单个质数,其中,算术编译可以获得表示每个符号所需的最佳比特。基于上下文的自适应二进制算术编译(CABAC)可以被用作算术编译。例如,熵编译单元160可以二值化指示量化的变换系数的信息。熵编译单元160可以通过算术编译二进制信息来生成比特流。
使用网络抽象层(NAL)单元作为基本单位来封装所生成的比特流。NAL单元包括整数个编译的编译树单元。为了在视频解码器中对比特流进行解码,首先,必须将比特流分离成NAL单元,并且然后必须对每个分离的NAL单元进行解码。同时,可以通过诸如图片参数集(PPS)、序列参数集(SPS)、视频参数集(VPS)等等的高层集合的原始字节序列有效载荷(RBSP)来发送对视频信号比特流进行解码所需的信息。
同时,图1的框图示出根据本发明的实施例的编码装置100,并且分开显示的块在逻辑上区分并示出编码装置100的元件。因此,取决于设备的设计上述编码装置100的元件可以被安装为一个芯片或多个芯片。根据实施例,上述编码装置100的每个元件的操作可以由处理器(未示出)执行。
图2是根据本公开的实施例的视频信号解码装置200的示意性框图。参考图2,本发明的解码装置200包括熵解码单元210、逆量化单元220、逆变换单元225、滤波单元230和预测单元250。
熵解码单元210对视频信号比特流进行熵解码,以提取每个区域的变换系数信息、帧内编码信息、帧间编码信息等。例如,熵解码单元210可以从视频信号比特流中获得用于特定区域的变换系数信息的二值化代码。熵解码单元210通过对二进制码进行逆二值化来获得量化的变换系数。逆量化单元220对量化的变换系数进行逆量化,并且逆变换单元225通过使用逆量化的变换系数来重构残差值。视频信号处理设备200通过将由逆变换单元225获得的残差值与由预测单元250获得的预测值相加来重构原始像素值。
同时,滤波单元230对图片执行滤波以改善图像质量。这可以包括用于减少块失真的去块滤波器和/或用于去除整个图片的失真的自适应环路滤波器。滤波后的图片被输出或存储在DPB 256中,以用作下一个图片的参考图片。
预测单元250包括帧内预测单元252和帧间预测单元254。预测单元250通过使用通过上述熵解码单元210解码的编码类型、每个区域的变换系数和帧内/帧间编码信息来生成预测图片。为了重构其中执行解码的当前块,可以使用当前图片或包括当前块的其他图片的解码区域。在重构中,仅将当前图片,即,仅执行帧内预测或者帧内BC预测的图片(或图块/切片)称为帧内图片或I图片(或图块/切片),并且将能够执行所有帧内预测、帧间预测以及帧内BC预测的图片(或图块/切片)称为帧间图片(或图块/切片)。为了预测帧间图片(或图块/切片)当中的每个块的样本值,使用最多一个运动矢量和参考图片索引的图片(或者图块/切片)被称为预测图片或P图片(或图块/切片),并且使用最多两个运动矢量和参考图片索引的图片(或图块/切片)称为双向预测图片或B图片(或图块/切片)。换句话说,P图片(或图块/切片)使用最多一个运动信息集来预测每个块,并且B图片(或图块/切片)使用最多两个运动信息集来预测每个块。这里,运动信息集包括一个或多个运动矢量和一个参考图片索引。
帧内预测单元252使用帧内编码信息和当前图片中的重构的样本来生成预测块。如上所述,帧内编码信息可以包括帧内预测模式、最可能模式(MPM)标志和MPM索引中的至少一种。帧内预测单元252通过使用位于当前块的左边和/或上边的重构的样本作为参考样本来预测当前块的样本值。在本公开中,重构的样本、参考样本和当前块的样本可以表示像素。而且,样本值可以表示像素值。
根据实施例,参考样本可以是当前块的邻近块中包括的样本。例如,参考样本可以是与当前块的左边界相邻的样本和/或样本可以是与上边界相邻的样本。而且,参考样本可以是当前块的邻近块的样本当中的位于距当前块的左边界预定距离内的线上的样本和/或位于距当前块的上边界预定距离内的线上的样本。在这种情况下,当前块的邻近块可以包括左(L)块、上(A)块、左下(BL)块、右上(AR)块或左上(AL)块。
帧间预测单元254使用存储在DPB 256中的参考图片和帧间编码信息来生成预测块。帧间编译信息可以包括用于参考块的当前块的运动信息集(参考图片索引、运动矢量信息等)。帧间预测可以包括L0预测、L1预测和双向预测。L0预测意指使用L0图片列表中包括的一个参考图片进行预测,而L1预测意指使用L1图片列表中包括的一个参考图片进行预测。为此,可能需要一个运动信息集合(例如,运动矢量和参考图片索引)。在双向预测方法中,可以使用最多两个参考区域,并且两个参考区域可以存在于同一参考图片中或可以存在于不同图片中。即,在双向预测方法中,可以使用最多两个的运动信息集合(例如,运动矢量和参考图片索引),并且两个运动矢量可以对应于相同的参考图片索引或不同的参考图片索引。在这种情况下,在时间方面,可以在当前图片之前和之后显示(或输出)参考图片。根据实施例,在双向预测方案中使用的两个参考区域可以是分别从图片列表L0和图片列表L1中选择的区域。
帧间预测单元254可以使用运动矢量和参考图片索引来获得当前块的参考块。参考块在与参考图片索引相对应的参考图片中。而且,由运动矢量指定的块的样本值或其内插值可以用作当前块的预测器。对于具有子像素(sub-pel)单位像素准确度的运动预测,例如,可以使用用于亮度信号的8抽头内插滤波器和用于色度信号的4抽头内插滤波器。然而,以子像素为单位的用于运动预测的内插滤波器不限于此。以这种方式,帧间预测单元254执行运动补偿以根据先前使用运动信息重构的运动图片来预测当前单元的纹理。在这样的情况下,帧间预测单元可以使用运动信息集。
根据另一实施例,预测单元250可以包括帧内BC预测单元(未示出)。帧内BC预测单元可以通过参考包括当前图片内的重构样本的特定区域来重构当前区域。帧内BC预测单元从熵解码单元210获得当前区域的帧内BC编码信息。帧内BC预测单元获得指示当前图片中的特定区域的当前区域的块矢量值。帧内BC预测单元可以通过使用所获得的块矢量值来执行帧内BC预测。帧内BC编码信息可以包括块矢量信息。
通过将从帧内预测单元252或帧间预测单元254输出的预测值与从逆变换单元225输出的残差值相加生成重构的视频图片。即,视频信号解码装置200使用由预测单元250生成的预测块和从逆变换单元225获得的残差来重构当前块。
同时,图2的框图示出根据本公开的实施例的解码装置200,并且分开显示的块在逻辑上区分并示出解码装置200的元件。因此,取决于设备的设计上述解码装置200的元件可以被安装为一个芯片或多个芯片。根据实施例,上述解码装置200的每个元件的操作可以由处理器(未示出)执行。
图3图示其中在图片中编译树单元(CTU)被分割成编译单元(CU)的实施例。
在视频信号的编译过程中,可以将图片分割成一系列编译树单元(CTU)。编译树单元由亮度样本的NXN块和与其相对应的色度样本的两个块组成。编译树单元可以被分割成多个编译单元。编译树单元可以不被分割,并且可以是叶节点。在这种情况下,编译树单元本身可以是编译单元。编译单元指代在上述视频信号的处理过程中,即,帧内/帧间预测、变换、量化和/或熵编译中用于处理图片的基本单元。一个图片中编译单元的大小和形状可能不恒定。编译单元可以具有正方形或矩形形状。矩形编译单元(或矩形块)包括垂直编译单元(或垂直块)和水平编译单元(或水平块)。在本说明书中,垂直块是其高度大于宽度的块,并且水平块是其宽度大于高度的块。此外,在本说明书中,非正方形块可以指代矩形块,但是本公开不限于此。
参考图3,首先将编译树单元分割成四叉树(QT)结构。即,在四叉树结构中具有2NX2N大小的一个节点可以被分割成具有NXN大小的四个节点。在本说明书中,四叉树也可以称为四元树。可以递归地执行四叉树分割,并非所有节点都需要以相同的深度分割。
同时,上述四叉树的叶节点可以进一步被分割成多类型树(MTT)结构。根据本公开的实施例,在多类型树结构中,一个节点可以被分割成水平或垂直划分的二叉或三叉树结构。即,在多类型树结构中,存在四个分割结构,诸如垂直二元分割、水平二元分割、垂直三元分割和水平三元分割。根据本公开的实施例,在每个树结构中,节点的宽度和高度都可以具有2的幂。例如,在二叉树(BT)结构中,2NX2N大小的节点可以通过垂直二元分割被分割成两个NX2N节点,并通过水平二元分割将其分割成两个2NXN节点。另外,在三叉树(TT)结构中,将2NX2N大小的节点通过垂直三元分割被分割成(N/2)X2N、NX2N和(N/2)X2N节点,并通过水平三元分割被分割成2NX(N/2)、2NXN和2NX(N/2)节点。可以递归地执行此多类型树分割。
多类型树的叶节点可以是编译单元。如果未指示用于编译单元的分割或针对最大变换长度该编译单元不大,则无需进一步划分就将编译单元用作预测和变换的单元。另一方面,可以通过诸如PPS、SPS、VPS等的高层集合的RBSP来预定义或发送上述四叉树和多类型树中的以下参数中的至少一个。1)CTU大小:四叉树的根节点大小,2)最小QT大小MinQtSize:允许的最小QT叶节点大小,3)最大BT大小MaxBtSize:允许的最大BT根节点大小,4)最大TT大小MaxTtSize:允许的最大TT根节点大小,5)最大MTT深度MaxMttDepth:从QT的叶节点分割而来的MTT的最大允许深度,6)最小BT大小MinBtSize:允许的最小BT叶节点大小,7)最小TT大小MinTtSize:允许的最小TT叶节点大小。
图4示出用于用信号发送四叉树和多类型树的分割的方法的实施例。可以使用预设标志来用信号发送上述四叉树和多类型树的分割。参考图4,指示是否分割四叉树节点的标志“qt_split_flag”、指示是否分割多类型树节点的标志“mtt_split_flag”、指示多类型树节点的分割方向的标志“mtt_split_vertical_flag”或者指示多类型树节点的分割类型的标志“mtt_split_binary_flag”中的至少一个可以被使用。
根据本公开的实施例,编译树单元是四叉树的根节点,并且可以首先被分割成四叉树结构。在四叉树结构中,为每个节点“QT_node”用信号发送“qt_split_flag”。如果“qt_split_flag”的值为1,则将该节点分割成4个正方形节点,并且如果“qt_split_flag”的值为0,则相应的节点成为四叉树的叶节点“QT_leaf_node”。
每个四叉树叶节点“QT_leaf_node”可以进一步被分割成多类型树结构。在多类型树结构中,为每个节点“MTT_node”用信号发送“mtt_split_flag”。当“mtt_split_flag”的值是1时,相应的节点被分割成多个矩形节点,并且当“mtt_split_flag”的值是0时,相应的节点是多类型树的叶节点“MTT_leaf_node”。当将多类型树节点“MTT_node”分割成多个矩形节点时(即,当“mtt_split_flag”的值是1时),可以附加地用信号发送节点“MTT_node”的“mtt_split_vertical_flag”和“mtt_split_binary_flag”。当“mtt_split_vertical_flag”的值是1时,指示节点“MTT_node”的垂直分割,并且当“mtt_split_vertical_flag”的值是0时,指示节点“MTT_node”的水平分割。另外,当“mtt_split_binary_flag”的值为1时,节点“MTT_node”被分割成2个矩形节点,并且当“mtt_split_binary_flag”的值为0时,节点“MTT_node”被分割成3个矩形节点。
对不再被划分的编译单元(即,编译单元树的叶节点)上执行用于编码的图片预测(运动补偿)。在下文中,用于执行预测的基本单元将被称为“预测单元”或“预测块”。
在下文中,在此使用的术语“单元”可以代替预测单元,该预测单元是用于执行预测的基本单元。然而,本公开不限于此,并且“单元”可以被理解为广泛地涵盖编译单元的概念。
图5更加具体地图示根据本公开的实施例的帧内预测方法。图6更加具体地图示根据本公开的实施例的帧内预测方法。
如上所述,帧内预测单元通过使用位于当前块的左边和/或上边的重构的样本作为参考样本来预测当前块的样本值。
首先,图5示出在帧内预测模式中用于当前块的预测的参考样本的实施例。根据实施例,参考样本可以是与当前块的左边界相邻的样本和/或与上边界相邻的样本。如图5中所示,当当前块的大小是WXH并且与当前块相邻的单个参考线的样本被用于帧内预测时,可以使用位于当前块的左边和上边的最大2W+2H+1个邻近样本来配置参考样本。
当尚未重构要用作参考样本的至少一些样本时,帧内预测单元可以通过执行参考样本填充过程来获得参考样本。帧内预测单元可以执行参考样本滤波过程以减少帧内预测中的误差。也就是说,可以对通过参考样本填充过程获得的相邻样本和/或参考样本执行滤波,以便获得滤波的参考样本。帧内预测单元通过使用如上获得的参考样本来预测当前块的样本。帧内预测单元通过使用未滤波的参考样本或滤波的参考样本来预测当前块的样本。在本公开中,相邻样本可以包括至少一个参考线上的样本。例如,相邻样本可以包括在与当前块的边界相邻的线上的相邻样本。
接下来,图6示出用于帧内预测的预测模式的实施例。对于帧内预测,可以用信号发送指示帧内预测方向的帧内预测模式信息。帧内预测模式信息指示被包括在帧内预测模式集中的多个帧内预测模式中的一个。当当前块是帧内预测块时,解码器从比特流接收当前块的帧内预测模式信息。解码器的帧内预测单元基于提取的帧内预测模式信息对当前块执行帧内预测。
根据本公开的实施例,帧内预测模式集合可以包括在帧内预测中使用的所有帧内预测模式(例如,总共67个帧内预测模式)。更具体地说,帧内预测模式集合可以包括平面模式、DC模式以及多个(例如65个)角度模式(即,定向模式)。可以通过预设索引(即,帧内预测模式索引)来指示每个帧内预测模式。例如,如图6所示,帧内预测模式索引0指示平面模式,而帧内预测模式索引1指示DC模式。此外,帧内预测模式索引2至66可以分别指示不同的角度模式。角度模式分别指示在预设角度范围内彼此不同的角度。例如,角度模式可以指示在顺时针方向的45度和-135度之间的角度范围(即,第一角度范围)内的角度。可以基于12点钟方向来定义角度模式。在这种情况下,帧内预测模式索引2指示水平对角线(HDIA)模式,帧内预测模式索引18指示水平(水平,HOR)模式,帧内预测模式索引34指示对角(DIA)模式,帧内预测模式索引50指示垂直(VER)模式,而帧内预测模式索引66指示垂直对角(VDIA)模式。
在下文中,将参考图7描述根据本公开的实施例的帧间预测方法。在本公开中,帧间预测方法可以包括为平移运动而优化的一般帧间预测方法,以及基于仿射模型的帧间预测方法。运动矢量可以包括根据一般帧间预测方法的用于运动补偿的一般运动矢量和用于仿射运动补偿的控制点运动矢量中的至少一个。
图7示出根据本公开的实施例的帧间预测方法。如上所述,解码器可以通过参考另一解码图片的重构样本来预测当前块。参考图7,解码器基于当前块701的运动信息集来获得参考图片720中的参考块702。运动信息集可以包括参考图片索引和运动矢量703。参考图片索引指示参考图片列表中的包括用于当前块的帧间预测的参考块的参考图片720。根据实施例,参考图片列表可以包括前述的L0图片列表和L1图片列表中的至少一个。运动矢量703表示当前图片710中的当前块701的坐标值与参考图片720中的参考块702的坐标值之间的偏移。解码器基于参考块702的样本值,获得当前块701的预测器并且通过使用该预测器来重构当前块701。
具体地,编码器可以通过从具有较早的重构顺序的图片中搜索与当前块相似的块来获得上述参考块。例如,编码器可以搜索参考块,其中,当前块和样本值之间的差之和在预配置的搜索区域内最小。为了测量当前块和参考块的样本之间的相似性,可以使用绝对差之和(SAD)或哈达玛变换差之和(SATD)中的至少之一。SAD可以是通过对两个块中包括的样本值之间的各个差的所有绝对值求和而获得的值。SATD可以是将通过对包括在两个块中的样本值之间的差进行哈达玛变换而获得的哈达玛变换系数的所有绝对值相加而获得的值。
可以使用一个或多个参考区域来预测当前块。如上所述,可以使用两个或更多个参考区域,经由双向预测方案对当前块进行帧间预测。根据实施例,解码器可以基于当前块的两个运动信息集来获得两个参考块。解码器可以基于相应的两个所获得的参考块的样本值来获得当前块的第一预测器和第二预测器。解码器可以通过使用第一预测器和第二预测器来重构当前块。例如,解码器可以基于第一预测器和第二预测器的每个样本的平均值来重构当前块。
如上所述,为了当前块的运动补偿,可以用信号发送一个或多个运动信息集。可以使用用于多个块中的每个块的运动补偿的运动信息集之间的相似性。例如,可以从用于预测先前重构的其他样本之一的运动信息集导出用于当前块的预测的运动信息集。因此,编码器和解码器可以减少信令开销。
例如,可能存在已经基于与当前块的运动信息集相同或相似的运动信息集预测过的多个候选块。解码器可以基于多个候选块来生成合并候选列表。合并候选列表可以包括与在当前块之前重构的样本当中的可能已经基于与当前块的运动信息集有关的运动信息集预测过的样本相对应的候选。编码器和解码器可以根据预定规则来配置当前块的合并候选列表。由编码器和解码器中的每一个配置的合并候选列表可以彼此相同。例如,编码器和解码器可以基于当前块在当前图片内的位置来配置当前块的合并候选列表。稍后将参考图9描述由编码器和解码器配置当前块的合并候选列表的方法。在本公开中,特定块的位置指示在包括该特定块的图片内的该特定块的左上样本的相对位置。
同时,为了提高编译效率,可以使用量化对残差信号进行变换获得的变换系数值并且编译量化的变换系数的方法,而不是原样编译上述残差。如上所述,变换单元可以通过对残差信号进行变换来获得变换系数值。在这种情况下,特定块的残差信号可以分布在当前块的整个区域上。因此,可以通过残差信号的频域转换,将能量集中在低频区域中,从而提高编译效率。在下文中,将详细地描述变换或逆变换残差信号的方法。
图8是具体示出用于通过编码器变换残差信号的方法的图。如上所述,可以将空间域中的残差信号变换成频域。编码器可以通过变换所获得的残差信号来获得变换系数。首先,编码器可以获得包括用于当前块的残差信号的至少一个残差块。残差块可以是当前块,也可以是从当前块划分的块之一。在本公开中,残差块可以被称为残差阵列或残差矩阵,其包括当前块的残差样本。在本公开中,残差块可以表示变换单元或具有与变换块相同大小的块。
接下来,编码器可以通过使用变换核来变换残差块。用于变换残差块的变换核可以是具有垂直变换和水平变换的可分离特性的变换核。在这种情况下,可以将用于残差块的变换分别执行为垂直变换和水平变换。例如,编码器可以通过在残差块的垂直方向上应用变换核来执行垂直变换。编码器可以通过在残差块的水平方向上应用变换核来执行水平变换。在本公开中,变换核可以被用作指代用于残差信号的变换的参数集的术语,诸如变换矩阵、变换阵列、变换函数和变换。根据实施例,变换核可以是多个可用核中的任何一个。基于不同变换类型的变换核可以被用于垂直变换和水平变换中的每一个。
编码器可以将从残差块变换的变换块传递到量化单元,并且量化该变换块。变换块可以包括多个变换系数。具体地,变换块可以包括以二维排列的多个变换系数。与残差块的情况一样,变换块的大小可以与当前块或从当前块划分的块的大小相同。传递到量化单元的变换系数可以被表示为量化值。
编码器可以在对变换系数进行量化之前执行附加变换。如图8所示,上述变换方法可以被称为初次变换,以及附加变换可以被称为二次变换。对于每个残差块,二次变换是可选择的。根据实施例,编码器可以通过对仅通过初次变换难以将能量集中在低频区域中的区域执行二次变换来提高编译效率。例如,可以将二次变换添加到其中在除了残差块的水平或垂直方向外的方向中残差值显示出较大的块。与帧间预测块的残差值相比,帧内预测块的残差值在除了水平或垂直方向以外的方向上具有更高的变换概率。因此,编码器可以对帧内预测块的残差信号附加地执行二次变换。编码器可以省略用于帧间预测块的残差信号的二次变换。
作为另一示例,可以取决于当前块的大小或残差块的大小来确定是否执行二次变换。可以取决于当前块的大小或残差块的大小,使用具有不同大小的变换核。例如,可以将8×8二次变换应用于宽度或高度之间的较短边的长度比第一预配置长度短的块。此外,可以将4×4二次变换应用于宽度或高度之间的较短边的长度大于第二预配置长度的块。在此,第一预配置长度可以是比第二预配置长度更大的值,但是本公开不限于此。不同于初次变换,二次变换可能不被分别执行为垂直变换和水平变换。该二次变换可以被称为低频带不可分离变换(低频不可分离变换,LFNST)。
在特定区域中的视频信号的情况下,即使由于亮度的突然改变而执行了频率变换,也不会减少高频带中的能量。因此,可能劣化归因于量化的压缩性能。当对残差值很少存在的区域执行变换时,可能会不必要地增加编码时间和解码时间。因此,可以省略对特定区域的残差信号的变换。可以通过与特定区域的变换有关的语法元素来确定是否对特定区域的残差信号执行变换。例如,语法元素可以包括变换跳过信息。变换跳过信息可以是变换跳过标志。如果关于残差块的变换跳过信息指示变换跳过,则不执行对残差块的变换。在这种情况下,编码器可以立即量化未对其执行相应区域的变换的残差信号。可以经由图1的变换单元,执行参考图8描述的编码器的操作。
上述变换相关语法元素可以是从视频信号比特流解析的信息。解码器可以对视频信号比特流进行熵解码,以便获得变换相关语法元素。编码器可以对变换相关语法元素进行熵编译,以便生成视频信号比特流。
图9是具体图示用于通过编码器和解码器,对变换系数进行逆变换来获得残差信号的方法的图。为了便于描述,将描述经由编码器和解码器中的每一个的逆变换单元执行逆变换操作。逆变换单元可以通过对逆量化的变换系数进行逆变换来获得残差信号。首先,逆变换单元可以从区域的变换相关语法元素中检测是否对特定区域执行逆变换。根据实施例,当用于特定变换块的变换相关语法元素指示变换跳过时,可以省略对变换块的变换。在这种情况下,可以省略上述关于变换块的初次逆变换和二次逆变换。可以将逆量化的变换系数用作残差信号。例如,解码器可以通过将逆量化的变换系数用作残差信号来重构当前块。
根据另一实施例,用于特定变换块的变换相关语法元素可以不指示变换跳过。在这种情况下,逆变换单元可以确定是否对二次变换执行二次逆变换。例如,当变换块是帧内预测块的变换块时,可以对变换块执行二次逆变换。可以基于与变换块相对应的帧内预测模式来确定用于变换块的二次变换核。作为另一示例,可以基于变换块的大小来确定是否执行二次逆变换。可以在逆量化之后并且在初次逆变换之前执行二次逆变换。
逆变换单元可以对逆量化的变换系数或二次逆变换的变换系数执行初次逆变换。在初次逆变换的情况下,与初次变换的情况一样,可以单独地执行垂直变换和水平变换。例如,逆变换单元可以通过对变换块执行垂直逆变换和水平逆变换来获得残差块。逆变换单元可以基于用于对变换块进行变换的变换核来对变换块进行逆变换。例如,编码器可以显式地或隐式地用信号发送指示多个可用变换核当中的被应用于当前变换块的变换核的信息。解码器可以通过使用指示用信号发送的变换核的信息,从多个可用变换核当中选择要用于变换块的逆变换的变换核。逆变换单元可以通过使用经由对变换系数进行逆变换而获得的残差信号来重构当前块。
图10图示根据本公开的实施例的交叉分量线性模型(CCLM)方法。
使用与当前块相邻的重构亮度和色度来获得亮度的最小值和最大值,并且使用这两个值,由等式(2)和等式(3)推导等式(1)。最后,通过等式(4),使用当前块的重构亮度值来预测色度。当图像格式为4:2:0时,通过应用下采样滤波器,将亮度样本调整为色度样本的数量。
更具体地,编码器或解码器可以执行对与当前块相邻的重构块的亮度分量进行下采样的步骤。与当前块相邻的重构块可以是当前块的上块或左块中的至少一个。
在YCbCr图像系统中,子采样的类型可以包括8:4:4、4:4:4、4:2:2、4:1:1、4:2:0。在4:4:4的情况下,亮度分量和两个色度分量可以具有相同的样本数量,但是在4:2:2或4:2:0的情况下,亮度分量的样本数量可以大于色度分量的样本数量。因此,编码器或解码器可以对亮度分量进行下采样,以使得亮度分量的样本数量适合于色度分量的样本数量。即,编码器或解码器可以使亮度分量和色度分量一一对应,并且导出亮度分量和色度分量的线性等式。例如,线性等式可以是图10的等式(1)。
编码器或解码器可以比当前块更早地重构当前块的上块或当前块的左块中的至少一个。编码器或解码器可以基于重构的上块或左块的样本值来预测当前块的色度样本的值。
图10的纵轴表示当前块的上块或当前块的左块中包括的像素的色度值。此外,水平轴表示当前块的上块或当前块的左块中包括的像素的亮度值。
本公开中的色度值可以指示包括在该块中的像素的色度分量的样本值。在本公开中,亮度值可以指示包括在该块中的像素的亮度分量的样本值。
编码器或解码器可以从上块或左块中的至少一个获取两个像素,以便获得等式(2)或等式(2)。例如,编码器或解码器可以获取像素A和像素B。编码器或解码器可以获取作为点像素A的亮度分量的xA,以及获取作为像素A的色度分量的yA。编码器或解码器可以获取作为点像素B的亮度分量的xB,并且获取作为像素B的色度分量的yB。
编码器或解码器可以使用像素A和像素B的亮度分量和色度分量来导出等式(1)至(4)。此外,编码器或解码器可以通过将等式(4)应用于当前块的重建亮度分量来预测当前块的色度分量。
图11图示了根据本公开的实施例的确定CCLM的线性模型的方法。
不同于图10的方法,在图11中,基于图11的F(其为亮度的最大值(图11的C)和次高值(图11的D)的平均值)和图11的E(其为亮度的最小值(图11的A)和次低最小值(图11的B)的平均值),使用图10中使用的等式(2)和(3)来推导等式(1)。这可以减轻最大值/最小值可能具有的失真。尽管图11已经描述了对最大值/最小值和次高值/次低值的两个样本值求平均的示例,但是也可以使用预定数量的最大值组和最小值组内的平均值,并且可以对特定值范围内的值取平均值。
更具体地,编码器或解码器可以执行对与当前块相邻的重构块的亮度分量进行下采样的步骤。相邻重构块可以是当前块的上块或左块。编码器或解码器可以对相邻块的亮度分量进行下采样,以使得亮度分量的样本数量适合于色度分量的样本数量。即,编码器或解码器可以使亮度分量和色度分量一一对应并且导出亮度分量和色度分量的线性等式。
编码器或解码器可以执行基于第一索引,获取下采样的亮度分量当中的最大亮度值的步骤。例如,如在下述等式中所示,获取最大亮度值。
最大亮度值=下采样的亮度分量[第一索引]
在本公开中,亮度值可以指示包括在该块中的像素的亮度分量的样本值。第一索引可以对应于图11的C。编码器或解码器可以基于预定过程来获取第一索引。第一索引可以是指示下采样的亮度分量当中的最大亮度值的索引。例如,参考图11,编码器或解码器可以基于第一索引来获取下采样的亮度分量当中的Cx。
编码器或解码器可从重构的上块或左块获取下采样的亮度分量。编码器或解码器可以仅使用下采样的亮度分量中的一些。例如,可以基于左块的最右样本或上块的最下样本中的至少一个中包括的样本来获取下采样的亮度分量。此外,可以基于从左块的最右样本或上块的最下样本中,以固定间隔选择的样本来获取下采样的亮度分量。
编码器或解码器可以执行基于第二索引,获取下采样的亮度分量当中的次高亮度值的步骤。例如,如下述等式所示,获取次高亮度值。
次高亮度值=下采样的亮度分量[第二索引]
第二索引可以对应于图11的D。编码器或解码器可以基于预定过程来获取第二索引。第二索引可以是指示下采样的亮度分量当中的次高亮度值的索引。例如,参考图11,编码器或解码器可以基于第二索引来获取下采样的亮度分量当中的Dx。
编码器或解码器可以执行基于最大亮度值和次高亮度值的平均值来获取最大亮度平均值的步骤。最大亮度平均值可以对应于图11的亮度值F。
编码器或解码器可以基于式“(最大亮度值+次高亮度值)>>1”或“(最大亮度值+次高亮度值+1)>>1”来获取最大亮度平均值。平均值可以是整数。编码器或解码器可以基于“(最大亮度值+次高亮度值)>>1”来获取通过不对小数点以下进行四舍五入而获得的平均值。此外,编码器或解码器可以基于“(最大亮度值+次高亮度值+1)>>1”来获取通过在小数点以下四舍五入而获得的平均值。
编码器或解码器可以执行基于第三索引来获取下采样的亮度分量当中的次低亮度值的步骤。例如,如在下述等式中所示,获取次低亮度值。
次低亮度值=下采样的亮度分量[第三索引]
第三索引可以对应于图11的B。编码器或解码器可以基于预定过程来获取第三索引。第三索引可以是指示下采样的亮度分量当中的次低亮度值的索引。例如,参考图11,编码器或解码器可以基于第三索引来获取下采样的亮度分量当中的Bx。
编码器或解码器可以执行基于第四索引来获取下采样的亮度分量中的最小亮度值的步骤。例如,如在下述等式中所示,获取最小亮度值。
最大亮度值=下采样的亮度分量[第四索引]
第四索引可以对应于图11的A。编码器或解码器可以基于预定过程来获取第四索引。第四索引可以是指示下采样的亮度分量当中的最小亮度值的索引。例如,参考图11,编码器或解码器可以基于第四索引来获取下采样的亮度分量当中的Ax。
编码器或解码器可以执行基于次低亮度值和最小亮度值来获取最小亮度平均值的步骤。编码器或解码器可以执行基于次低亮度值和最小亮度值来获取最小亮度平均值的步骤。最小亮度平均值可以对应于图11中的E的亮度值。编码器或解码器可以基于式“(次低亮度值+最小亮度值)>>1”或“(次低亮度值+最小亮度值+1)>>1”来获取最小亮度平均值。因为已经描述了获取平均值的方法,所以将省略其描述。
在下文中,描述了获取第一索引至第四索引的方法。编码器或解码器可以将第一索引至第四索引配置为初始值,以便获取第一索引至第四索引。第三索引至第四索引可以具有不同的值。编码器或解码器可以基于第三索引来获取下采样的亮度分量当中的第三值,并且基于第四索引来获取下采样的亮度分量当中的第四值。如果第四值大于第三值,则编码器或解码器可以交换第三索引和第四索引的值。即,编码器或解码器可以确定交换后的第三索引的值是交换前的第四索引的值以及交换后的第四索引的值是交换前的第三索引的值。
此外,在上述过程之后,编码器或解码器可以基于第一索引来获取下采样的亮度分量当中的第一值,并且基于第二索引来获取下采样的亮度分量当中的第二值。当第二值大于第一值时,编码器或解码器可以交换第一索引和第二索引的值。即,编码器或解码器可以确定交换后的第一索引的值是交换前的第二索引的值并且交换后的第二索引的值是交换前的第一索引的值。
此外,在上述过程之后,编码器或解码器可以基于第一索引来获取下采样的亮度分量当中的第一值,并且基于第四索引来获取下采样的亮度分量当中的第四值。当第四值大于第一值时,编码器或解码器可以交换第一索引和第三索引的值并且交换第二索引和第四索引的值。即,编码器或解码器可以确定交换后的第一索引的值是交换前的第三索引的值、交换后的第三索引的值是交换前的第一索引的值、交换后的第二索引的值是交换前的第四索引的值,以及交换后的第四索引的值是交换前的第二索引的值。
此外,在上述过程后,编码器或解码器可以基于第二索引来获取下采样的亮度分量当中的第二值,并且基于第三索引来获取下采样的亮度分量当中的第三值。当第三值大于第二值时,编码器或解码器可以交换第二索引和第三索引的值。即,编码器或解码器可以确定交换后的第二索引的值是交换前的第三索引的值,以及交换后的第三索引的值是交换前的第二索引的值。
上文已经描述了确定第一索引至第四索引的过程。然而,由编码器或解码器执行的过程不限于上述过程。编码器或解码器可以使用布置索引和亮度值,使得第一索引至第四索引依次指示下采样的亮度分量当中的最大亮度值、次高亮度值、次低亮度值和最小亮度值的各种方法。
编码器或解码器可以执行基于第一索引来获取与下采样的亮度分量相对应的色度分量当中的第一色度值的步骤。例如,如在下述等式中所示,获取第一色度值。
第一色度值=色度分量[第一索引]
如上所述,在本公开中色度值可以指示包括在该块中的像素的色度分量的样本值。此外,第一索引可以对应于图11的A。参考图11,编码器或解码器可以基于第一索引来获取色度分量当中的Cy。
第一索引可以是指示下采样的亮度分量当中的最大亮度值的索引。但是,与下采样的亮度分量相对应的色度分量中,基于第一索引获取的第一色度值可能是色度分量的最大值也可能不是色度分量的最大值。即,第一索引不指示第一色度值是色度分量的最大值。
编码器或解码器可以执行基于第二索引来获取色度分量当中的第二色度值的步骤。例如,如在下述等式中所示,获取第二色度值。
第二色度值=色度分量[第二索引]
如上所述,第二索引可以对应于图11的D。参考图11,编码器或解码器可以基于第二索引来获取色度分量当中的Dy。
第二索引可以是指示下采样的亮度分量当中的次高亮度值的索引。但是,与下采样的亮度分量相对应的色度分量当中,基于第二索引获取的第二色度值可能是色度分量的次高值也可能不是色度分量的次高值。即,第二索引不指示第二色度值是色度分量的次高值。例如,第二色度值可以大于、等于或小于第一色度值。
编码器或解码器可以执行基于第一色度值和第二色度值的平均值来获取最大色度平均值的步骤。编码器或解码器可以执行基于第一色度值和第二色度值的平均值来获取最大色度平均值的步骤。最小色度平均值可以对应于图11中的F的色度值。
编码器或解码器可以基于式“(第一色度值+第二色度值)>>1”或“(第一色度值+第二色度值+1)>>1”来获取最大色度平均值。由于已经描述了获取平均值的方法,将省略其描述。
编码器或解码器可以执行基于第三索引来获取色度分量当中的第三色度值的步骤。例如,如下述等式中所示,获取第三色度值。
第三色度值=色度分量[第三索引]
如上所述,第三索引可以对应于图11的B。参考图11,编码器或解码器可以基于第三索引来获取色度分量当中的By。
第三索引可以是指示下采样的亮度分量当中的次低亮度值的索引。但是,与下采样的亮度分量相对应的色度分量当中,基于第三索引获取的第三色度值可能是色度分量的次低值也可能不是色度分量的次低值。即,第三索引并不指示第三色度值是色度分量的次低值。
编码器或解码器可以执行基于第四索引来获取色度分量当中的第四色度值的步骤。例如,如在下述等式中所示,获取第四色度值。
第四色度值=色度分量[第四索引]
如上所述,第四索引可以对应于图11的A。参考图11,编码器或解码器可以基于第四索引来获取色度分量当中的Ay。
第四索引可以是指示下采样的亮度分量当中的最小亮度值的索引。但是,与下采样的亮度分量相对应的色度分量当中,基于第四索引获取的第四色度值可能是色度分量的最小值也可能不是色度分量的最小值。即,第四索引不指示第四色度值是色度分量的最小值。例如,第四色度值可以大于、等于或小于第三色度值。
编码器或解码器可以执行基于第三色度值和第四色度值的平均值来获取最小色度平均值的步骤。编码器或解码器可以执行基于第三色度值和第三色度值的平均值来获取最小色度平均值的步骤。最小色度平均值可以对应于图11中的E的色度值。
编码器或解码器可以基于式“(第三色度值+第四色度值)>>1”或“(第三色度值+第四色度值+1)>>1”来获取最小色度平均值。由于已经描述了获取平均值的方法,因此将省略其描述。
编码器或解码器可以执行基于最大亮度平均值、最小亮度平均值、最大色度平均值和最小色度平均值来获取指示在亮度和色度之间的对应关系的函数的元素的步骤。指示在亮度和色度之间的对应关系的函数可以是图10的等式(1)或等式(4)。
在等式(1)中,可以基于当前块的重构亮度分量来获取x。为了使当前块中包括的亮度分量的样本数量适合于当前块中包括的色度分量的样本数量,编码器或解码器可以对当前块的重构亮度分量进行下采样。编码器或解码器可以通过将当前块的下采样的亮度分量(X)应用于等式(1)来预测色度分量(Y)。
在等式(4)中,recL可以表示当前块的下采样的亮度分量。S可以是预定常数,或者可以是基于最大亮度平均值、最小亮度平均值、最大色度平均值和最小色度平均值获取的值。predC可以表示预测的色度分量。在等式(4)中,可以通过等式(2)和等式(3)来导出α和β。
在等式(2)和等式(3)中,yB可以指示最大色度平均值。yA可以指示最小色度平均值。xB可以指示最大亮度平均值。xA可以指示最小亮度平均值。
为了获取指示在亮度和色度之间的对应关系的函数的元素,编码器或解码器可以执行获取作为在最大亮度平均值和最小亮度平均值之间的差的第一差分值的步骤。此外,编码器或解码器可以执行获取作为在最大色度平均值和最小色度平均值之间的差的第二差分值的步骤。
编码器或解码器可以执行获取与第二差分值与第一差分值的比率有关的第一元素(α)的步骤。例如,编码器或解码器可以基于等式(2)来获取第一元素(α)。
编码器或解码器可以执行基于第一元素、最小亮度平均值和最小色度平均值来获取第二元素(β)的步骤。例如,编码器或解码器可以基于等式(3)来获取第二元素(β)。
编码器或解码器可以执行基于当前块的重构亮度值、第一元素(α)和第二元素(β)来预测当前块的色度值的步骤。编码器或解码器可以基于等式(1)或等式(4)来预测当前块的色度值。亮度值可以是包括在当前块的亮度分量中的样本值,并且色度值可以是包括在当前块的预测的色度分量中的样本值。
编码器或解码器可以执行通过将当前块的重构亮度值应用于函数来预测当前块的色度值的步骤。如上所述,编码器或解码器可以重构当前块的亮度分量。此外,编码器或解码器可以使当前块中包括的亮度分量的样本数量适合于色度分量的样本数量。即,编码器或解码器可以执行对当前块的重构亮度分量进行下采样的步骤。另外,编码器或解码器可以通过将下采样的亮度分量应用于等式(1)或等式(4)来预测色度分量。更具体地,编码器或解码器可以执行基于下述等式,预测当前块的色度值的步骤。下述等式详细地描述了等式(4)。
(当前块的色度值)=(((当前块的下采样亮度分量中包括的亮度值)*α)>>S)+β;
如上所述,S可以是预定常数。但是不限于此,并且S可以是基于最大亮度平均值、最小亮度平均值、最大色度平均值或最小色度平均值而获取的值。
然而,不限于此,并且编码器或解码器可以执行基于通过修改等式(4)而获得的下述等式来预测色度值的步骤。
(当前块的色度值)=Clip1C((((当前块的下采样的亮度分量中包括的亮度值)*α)>>S)+β)
可以如下给出Clip1C。
Clip1C(x)=Clip3(0,(1<<BitDepthC)-1,x)
Clip3(x,y,z)=
x;当z<x时
y;当z>y时
z;否则
BitDepthC表示色度分量的比特深度。
图12图示根据本公开的实施例的确定CCLM的线性模型的方法。
描述了确定CCLM的线性模型的方法。可以实现使用亮度的最大值(图12的C)和最小值(图12的A)的线性模型1和使用次高最大值(图12的D)和次低最小值(图12的B)的线性模型2。线性模型2可以用线性模型1代替。如上所述,可以基于特性排名的最大值/最小值来实现和使用线性模型。在图11和图12中,可以使用色度样本而不是亮度样本来实现线性模型。
另外,在图8中向其应用了MRL的亮度块中,当应用了CCLM时,将相应的亮度样本用作线性模型所需的亮度样本。在色度的情况下,当MRL索引为3时,可以使用对应于MRL索引0的色度样本、对应于MRL索引3的色度样本以及对应于向其应用平均值/加权值的平均值/固定MRL索引的色度样本。在色度预测方法中,使用亮度预测的方法可以获取特定位置的亮度的预测模式信息。在这种情况下,与亮度模式一样,还存储MRL索引。此外,色度可以像基于多个参考样本的使用亮度的MRL的预测一样操作。可以单独地用信号发送用于色度的MRL索引。可替代地,可以使用亮度的MRL索引。
可以如图10至12所示,基于重构的亮度和色度,通过等式(1)至(4)以及各种线性回归方法来配置用于色度预测的亮度和色度之间的映射关系。在这种情况下,尽管通常使用重构的右相邻亮度和色度样本之间的映射关系,但是根据MRL应用,可以考虑其他相邻的亮度和色度样本来导出用于预测的亮度和色度之间的映射关系。可以通过将由MRL添加的相邻样本添加到重构的正好相邻的亮度和色度样本之间的映射,通过增加样本数量来应用该方法。可替代地,可以通过在MRL添加的相邻样本与正好相邻的样本之间将单独的映射等式(例如等式(1)至(4))单独地应用于正好相邻的重构亮度-色度样本(例如MRL0)和由MRL添加的重构亮度-色度样本(例如,MRL3)来配置各个线性映射关系,以及可以通过应用参数(诸如导出的α/β等)的平均值或权重平均值来导出综合参数,其可以用作色度预测等式。
图13图示了当通过应用交叉分量线性模型(CCLM)来执行色度帧内预测时所需的亮度样本的下采样滤波器的示例。
当编码器或解码器通过将CCLM应用于4×4预测块的色度分量来执行预测时,在图像格式为4∶2∶0的情况下,应当以2x2色度块的形式对亮度样本进行下采样。为了检测当前块的相邻块的亮度和色度之间的关系,编码器或解码器可以对相邻块的亮度分量进行下采样,并且在下文中,描述其处理。
编码器或解码器可以执行获取指示与当前块相邻的左块是否可用的第一信息(availL)和指示与当前块相邻的上块是否可用的第二信息(availT)的步骤。
当指示与当前块相邻的左块是否可用的信息(availL)指示左块可用时,如下导出下采样的相邻左亮度分量pLeftDsY[y](其中,y=0..nTbH-1)。
pLeftDsY[y]=(pY[-1][2*y]+pY[-1][2*y+1]+2*pY[-2][2y]+2*pY[-2][2*y+1]+pY[-3][2*y]+pY[-3][2*y+1]+4)>>3
等式(1)
即,当第一信息指示左块可用时,编码器或解码器可以执行基于左块来获取下采样的亮度分量的步骤。
当指示与当前块相邻的上块是否可用的信息(availT)指示上块可用时,可以如下导出下采样的相邻上亮度分量pTopDsY[x](其中,x=0..nTbH-1)。
pTopDsY[x]=(pY[2*x-1][-2]+pY[2*x-1][-1]+2*pY[2*x||-2]+2*pY[2*x][-1]+pY[2*x+1][-2]+pY[2*x+1][-1]+4)>>3
等式(2)
即,当第二信息指示上块可用时,编码器或解码器可以执行基于上块来获取下采样的亮度分量的步骤。
如果availTL等于真,则如下导出pTopDsY[0]:
pTopDsY[0]=(pY[-1][-2]+pY[-1][-1]+2*pY[o][-2]+2*pY[0][-1]+pY[1][-2]+pY[1][-1]+4)>>3
等式(3)
此外,当第一信息指示左块可用并且第二信息指示上块可用时,编码器或解码器可以基于左块和上块两者来获取下采样的亮度分量。
否则,如下导出pTopDsY[0]:
pTopDsY[0]=(pY[0][-2]+pY[0][-1]+1)>>
等式(4)
图13的b图示了当应用MRL时,应当将CCLM的不同的下采样滤波器应用于MRL索引。当MRL索引为3时,通过在等式(1)中,X轴移动-1来导出等式(5)。
pLeftDsY[y]=(pY[-2][2*y]+pY[-2][2*y+1]+2*pY[-3][2*y]+2*pY[-3][2*y+1]+pY[-4][2*y]+pY[-4][2*y+1]+4)>>3
等式(5)
通过在等式(2)中,Y轴移动-1来导出等式(6)。
pTopDsY[X]=(pY[2*x-1][-4]+pY[2*X-1][-3]+2*pY[2*x][-4]+2*pY[2*x][-3]+pY[2*x+1][-4]+pY[2*x+1][-3]+4)>>3
等式(6)
通过将相同的方法应用于等式(3)和(4)来导出等式(7)和(8)。
pTopDsY[0]=(pY[-1][-4]+pY[1][-3]+2*pY[0][-4]+2*pY[0][-3]+pY[1][-4]+pY[1][-3]+4)>>3
等式(7)
pTopDsY[0]=(pY[0][-4]+pY[0][-3]+1)>>1
等式(8)
图14图示了当使用MRL时应用CCLM滤波器的实施例。
为了应用如图14的a中所示的CCLM滤波器,编码器和解码器可以将等式(1)、(2)、(3)和(4)改变为等式(9)、(10)、(11)和(12),并且将其用作下采样滤波器。
pLeftDsY[y]=(pY[-1][2*y]+pY[-1][2*y+1]+2*pY[-3][2*y]+2*pY[-3][2*y+1]+pY[-4][2*y]+pY[-4][2*y+1]+4)>>3
等式(9)
pTopDsY[x]=(pY[2*x-1][-4]+pY[2*x-1][-1]+2*pY[2*x][-4]+2*pY[2*x][-1]+pY[2*X+1][-4]+pY[2*x+1][-1]+4)>>3
等式(10)
pTopDsy[0]=(pY[-1][-4]+pY[-1][-1]+2*pY[0][-4]+2*pY[0][-1]+pY[1][-4]+pY[1][-1]+4)>>3
等式(11)
pTopDsY[0]=(pY[0][-4]+pY[0][-1]+1)>>1
等式(12)
为了应用如图14的b中所示的CCLM滤波器,编码器和解码器可以将等式(1)、(2)、(3)和(4)改变为等式(13)、(14)、(15)和(16),并且使用下采样滤波器。
pLeftDsY[y]=(pY[-1][2*y]+pY[-1][2*y+1]+2*pY[-2][2*y]+2*pY[-2][2*y+1]+pY[-4][2*y]+pY[-4][2*y+1]+4)>>3
等式(13)
等式(14)与等式(10)相同。
等式(15)与等式(11)相同。
等式(16)与等式(12)相同。
图15图示了当使用MRL时应用CCLM滤波器的实施例。
为了应用如图15的a中所示的CCLM滤波器,编码器和解码器可以将等式(1)、(2)、(3)和(4)改变为等式(17)至(20),并使用下采样滤波器。
pLeftDsY[y]=(pY[-1][2*y]+pY[-1][2*y+1]+pY[-3][2*y]+pY[-3][2*y+1]+2*pY[-4][2*y]+2*pY[-4][2*y+1]+4)>>3
等式(17)
等式(18)与等式(10)相同。
等式(19)与等式(11)相同。
等式(20)与等式(12)相同。
为了应用如图15的b中所示的CCLM滤波器,编码器和解码器可以将等式(1)、(2)、(3)和(4)改变为等式(21)至(24),并且使用下采样滤波器。
pLeftDsY[y]=(pY[-1][2*y]+pY[-1][2*y+1]+pY[-2][2*y]+pY[-2][2*y+1]+2*pY[-4][2*y]+2*pY[-4][2*y+1]+4)>>3
等式(21)
等式(22)与等式(10)相同。
等式(23)与等式(11)相同。
等式(24)与等式(12)相同。
这些方法对应于MRL为0、1和3之一(即MRL索引=3)的情况,但是当使用其他MRL索引(诸如0和1)时可以应用常规滤波器。当MRL索引为2,可以在常规方法中,在应用于上侧的等式中在y轴中使用(-1,x轴样本)和(-3,x轴样本)来使用和应用常规滤波器系数。此外,在左侧,可以将与x轴上-1、-2和-3相对应的权重值1、2和1改变为1、1和2并应用。
回到图10,编码器或解码器使用与当前预测块相邻的重构的亮度和色度来找到亮度的最小值和最大值,并且使用这两个值由等式(2)和等式(3)推导等式(1)。最后,通过等式(4),使用当前块的重构亮度值来预测色度。
当图像格式为4:2:0时,通过应用下采样滤波器,将亮度样本调整为色度样本的数量。当为了应用图10的等式(1),在图13的a中所有上参考样本和左参考样本有效时,应当推导最小亮度值(MinLuma)、最大亮度值(MaxLuma)、用于最小亮度的色度值(ChromaForMinLuma)和用于最大亮度的色度值(ChromaForMaxLuma)。如参考图11所述,编码器或解码器可以推导最大亮度平均值、最小亮度平均值、最大色度平均值和最小色度平均值,并且应用等式(1)。最小亮度值(MinLuma)可以对应于最小亮度平均值,最大亮度值(MaxLuma)可以对应于最大亮度平均值,用于最小亮度的色度值(ChromaForMinLuma)可以对应于最小色度平均值,以及用于最大亮度的色度值(ChromaForMaxLuma)可以对应于最大色度平均值。
在这种情况下,首先在上侧获得的值是识别左样本时的参考值,并且与左样本值进行比较。在识别出上侧和左侧中的所有样本后,确定MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma的值。在下文中,描述用于导出MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma的伪代码。
1.如下导出变量MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma:
–将变量MinLuma设置为等于1<<(BitDepthY)+1并且将变量MaxLuma设置为等于-1,将1<<(BitDepthY)+1变更为(1<<BitDepthY)+1。
–如果availT等于真,则如下导出变量MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma,其中,x=0..nS–1:
–如果(MinLuma>pTopDsY[x*xS]),则以下适用:
MinLuma=pTopDsY[x*xS]
ChromaForMinLuma=p[x*xS][-1]
–如果(MaxC<pTopDsY[x*xS]),则以下适用:
MaxLuma=pTopDsY[x*xS]
ChromaForMaxLuma=p[x*xS][-1]
–如果availL等于真,则如下导出变量MinLuma,MaxLuma,ChromaForMinLuma和ChromaForMaxLuma,其中,y=0..nS-1:
–如果(MinLuma>pTopDsY[y*yS]),则以下适用:
将(MinLuma>pTopDsY[y*yS]变更为(MinLuma>pLeftDsY[y*yS]。
将MinLuma=pTopDsY[y*yS]:MinLuma=pTopDsY[y*yS]变更为MinLuma=pLeftDsY[y*yS]。
ChromaForMinLuma=p[-1][y*yS]
–如果(MaxLuma<pTopDsY[y*yS]),则以下适用:
将(MaxLuma<pTopDsY[y*yS]变更为(MaxLuma<pLeftDsY[y*yS]。
将MaxLuma=pTopDsY[y*yS]:MaxLuma=pTopDsY[y*yS]变更为MaxLuma=pLeftDsY[y*yS]。
ChromaForMaxLuma=p[-1][y*yS]
图16图示根据本公开的实施例的交叉分量线性模型(CCLM)方法。
如参考图10所述,使用与当前预测块相邻的重构亮度和色度来获得亮度的最小值和最大值,并且使用这两个值从等式(2)和等式(3)推导等式(1)。最后,通过等式(4),使用当前块的重构亮度值来预测色度。
参考图16,当图像格式为4:2:0时,亮度样本的数量可以大于色度样本的数量。因此,编码器或解码器可以通过将下采样滤波器应用于亮度样本来使亮度样本的数量适合于色度样本的数量。参考图10,当上参考样本和左参考样本均有效时,应当推导最小亮度值(MinLuma)、最大亮度值(MaxLuma)、用于最小亮度的色度值(ChromaForMinLuma)和用于最大亮度的色度值(ChromaForMaxLuma)。如参考图11所述,编码器或解码器可以推导最大亮度平均值、最小亮度平均值、最大色度平均值和最小色度平均值,并且应用等式(1)。最小亮度值(MinLuma)可以对应于最小亮度平均值,最大亮度值(MaxLuma)可以对应于最大亮度平均值,用于最小亮度的色度值(ChromaForMinLuma)可以对应于最小色度平均值和用于最大亮度的色度值(ChromaForMaxLuma)可以对应于最大色度平均值。
在这种情况下,首先在上侧获得的值是识别左样本时的参考值,并且与左样本进行比较。在识别出上侧和左侧中的所有样本后,确定MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma的值。
编码器或解码器可以通过下面的伪代码获取MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma。
如下导出变量MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma:
将变量MinLuma设置为等于1<<(BitDepthY)+1,以及将变量MaxLuma设置为等于-1,将1<<(BitDepthY)+1变更为(1<<BitDepthY)+1。
如果availT等于真,则可以如下导出变量MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma,其中,x=0..nS–1:
如果(MinLuma>pTopDsY[x*xS]),则以下适用:
MinLuma=pTopDsY[x*xS]
ChromaForMinLuma=p[x*xS][-1]
如果(MaxC<pTopDsY[x*xS]),则以下适用:
MaxLuma=pTopDsY[x*xS]
ChromaForMaxLuma=p[x*xS][-1]
如果availL等于真,则如下导出变量MinLuma、MaxLuma、ChromaForMinLuma和ChromaForMaxLuma,其中,y=0..nS-1:
如果(MinLuma>pTopDsY[y*yS]),则以下适用:
MinLuma=pLeftDsY[y*yS]
ChromaForMinLuma=p[-1][y*yS]
如果(MaxLuma<pTopDsY[y*yS]),则以下适用:
MaxLuma=pLeftDsY[y*yS]
ChromaForMaxLuma=p[-1][y*yS]
图17图示根据本公开的实施例,在CCLM方法中确定参考样本的数量的方法。
参考图17的A,在常规CCLM中不是正方形块的块的情况下,编码器或解码器将与短边的数量相对应的样本用作长边的参考样本。代替该方法,编码器或解码器可以将长边的所有样本用作长边的参考样本。编码器或解码器可以使用所有下采样的参考样本,应用图17的方法。
参考图17的B,当色度块大小为W×H时,编码器或解码器可以将仅一些样本,即,2W样本(左图)和2H样本(右图)中的一些,而不是全部用作CCLM参考样本。
例如,编码器或解码器可以基于包括在与当前块相邻的左块或上块中的至少一个中的像素(样本)来获取下采样的亮度分量。
此外,参考图17,编码器或解码器可以基于包括在左块的最右样本1120或上块的最下样本1110中的至少一个中的样本来获取下采样的亮度分量。编码器或解码器可以基于左块的最右样本1120或上块的最下样本1110中的一些,获取下采样的亮度分量。
一些样本的数量可以是样本1110和1120的总数的1/2或1/4。在这种情况下,当配置了一半样本时,可以使用以固定间隔放置的样本。可替代地,仅在具有预定大小或更大的块中进行应用。即,编码器或解码器可以基于从左块的最右样本或上块的最下样本中以固定间隔选择的样本来获取下采样的亮度分量。
对其应用CCLM的当前块的边的长度可以是16、32、62和128中的一个。例如,当使用上块中包含的样本并且当前块的宽度为32个样本或更大时,可以应用CCLM。当使用左块中包括的样本并且当前块的高度为32或更大时,可以应用CCLM。
在图17的C中,当色度块大小是W×H时,编码器或解码器可以使用作为CCLM参考样本的所有2W+H样本来计算在CCLM中定义的α和β。可替代地,编码器或解码器可以通过使用短边中的所有样本和长边中仅与短边的样本相对应的样本来计算α和β。
在这种情况下,编码器或解码器可以仅以固定间隔使用样本。
图18图示根据本公开的实施例的用于色度帧内预测的预测模式信令。
当变量sps_cclm_enabled_flag等于1时,与CCLM有关的模式可以操作。模式的数量可以是3。图18的[表1]和[表2]示出了指示色度帧内预测模式的intra_chroma_pred_mode。
[表1]可以示出基于索引信息0至7的色度模式。与[表2]中的信息一样,在编码输入前,[表1]中的信息可以以二进制形式示出值,在这种情况下,其信息量可以取决于每种使用模式而变化。例如,频繁使用的模式具有高优先级和少量信息。
在[表2]中,值为4的情况可以对应于CCLM,值为5的情况可以对应于MDLM_L模式,而值为6的情况可以对应于MDLM_T。intra_chroma_pred_mode的值为5或6时,如果编码器或解码器使用上下文建模,则编码效率可能会根据顺序而提高。因此,编码器或解码器使MDLM_T的优先级高于[表2]中的MDLM_L。可替代地,可以基于当前预测块的色度大小来确定优先级。在W(宽度)>H(高度)的情况下,MDLM_T的优先级可能高于MDLM_L,而在W<H的情况下,MDLM_L的优先级可能高于MDLM_T。MDLM_T可以是仅使用上样本的CCLM模式,如图17的左图(b)所示,而MDLM_L可以是仅使用左样本的CCLM模式之一,如图17的右图B所示。
已经在解码器的方面中描述了本公开的一些内容,但是可以在编码器中进行相同的操作。例如,包括处理器和存储器的编码装置可以执行下述步骤:对与当前块相邻的块的重构亮度分量进行下采样;基于第一索引,获取下采样的亮度分量当中的最大亮度值;基于第二索引,获取所述下采样的亮度分量当中的次高亮度值;基于所述最大亮度值和所述次高亮度值的平均值,获取最大亮度平均值;基于第三索引,获取所述下采样的亮度分量当中的次低亮度值;基于第四索引,获取所述下采样的亮度分量当中的最小亮度值;基于所述次低亮度值和所述最小亮度值,获取最小亮度平均值;基于所述第一索引,获取与所述下采样的亮度分量相对应的色度分量当中的第一色度值;基于所述第二索引,获取所述色度分量当中的第二色度值;基于所述第一色度值和所述第二色度值的平均值,获取最大色度平均值;基于所述第三索引,获取所述色度分量当中的第三色度值;基于所述第四索引,获取所述色度分量当中的第四色度值;基于所述第三色度值和所述第四色度值的平均值,获取最小色度平均值;基于所述最大亮度平均值、所述最小亮度平均值、所述最大色度平均值和所述最小色度平均值,获取指示在亮度和色度之间的对应关系的函数的元素;以及通过将所述当前块的重构亮度值应用于所述函数来预测所述当前块的色度值。
可以通过各种手段来实现本发明的上述实施例。例如,可以通过硬件、固件、软件或其组合来实现本发明的实施例。
对于通过硬件实现的情况,可以通过专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等中的一个或多个来实现根据本发明的实施例的方法。
在通过固件或软件实现的情况下,可以以执行上述功能或操作的模块、过程或函数的形式来实现根据本发明的实施例的方法。可以将软件代码存储在存储器中并由处理器驱动。存储器可以位于处理器内部或外部,并且可以通过各种已知的方式与处理器交换数据。
还可以以诸如由计算机执行的程序模块的包括计算机可执行指令的记录介质的形式来实现某些实施例。计算机可读介质可以是可由计算机访问的任何可用介质,并且可以包括所有易失性、非易失性、可移除和不可移除的介质。另外,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的方法或技术实现的所有易失性、非易失性、可移动和不可移动介质。通常,通信介质包括计算机可读指令、调制数据信号的其他数据(诸如数据结构或程序模块)或其他传输机制,并且包括任何信息传输介质。
本发明的上述描述仅用于说明目的,并且将会理解,本发明所属的本领域的普通技术人员可以在不改变本发明的技术思想或者基本特征的情况下对本发明进行改变,并且本发明可以以其他特定形式容易地被修改。因此,上述实施例是说明性的,并且在所有方面均不受限制。例如,被描述为单个实体的每个组件可以被分布和实现,并且同样,被描述为被分布的组件也可以以关联的方式被实现。
本发明的范围由所附权利要求书而不是上述详细描述来限定,并且从所附权利要求书的含义和范围及其等效物导出的所有改变或修改都应解释为包括在本发明的范围内。