具体实施方式
考虑到本公开中的功能,本说明书中使用的术语可以是当前广泛使用的通用术语,但是可以根据本领域的技术人员的意图、习俗或新技术的出现而改变。另外,在某些情况下,可能存在申请人任意选择的术语,并且在这种情况下,其含义在本公开的相应描述部分中进行了描述。因此,应基于整个说明书中的术语和内容的实质含义来解释本说明书中使用的术语。
在本说明书中,一些术语可以解释如下。在一些情况下,编码可以解释为编码或解码。在本说明书中,通过执行视频信号的编码(编码)来生成视频信号比特流的装置被称为编码装置或编码器,并且执行视频信号比特流的解码(解码)以重构视频信号的装置被称为解码装置或解码器。另外,在本说明书中,视频信号处理装置被用作包括编码器和解码器两者的概念的术语。信息是包括所有值、参数、系数、元素等的术语。在一些情况下,含义被不同地解释,因此本公开不限于此。“单元”被用作指代图像处理的基本单位或图片的特定位置的含义,并且指代包括亮度分量和色度分量两者的图像区域。另外,“块”指代包括亮度分量和色度分量(即,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是示出根据本公开的实施例的帧内子划分(ISP)模式的概念的图。
参考图10中的编译块的帧内预测模式1010,可以预测整个编译块。然而,根据帧内子划分(ISP),编译块可以被划分为一个或多个块。
例如,参考图10中的帧内子划分预测模式1020,可以将一个编译块划分为多个变换块。取决于编译块的大小,可能有2或4个变换块。取决于编译块,可以在水平方向或垂直方向上划分变换块。ISP模式仅在参考线索引为0时操作,并且可以仅由MPM索引来告知帧内预测模式。MPM列表可以除DC模式外被配置。在本公开中,画面内预测模式和帧内预测模式具有相同的含义。
图11是根据本公开的实施例,图示用于使用多个参考样本线进行预测的帧内预测模式以及用于MPM配置的相邻块的位置的图。
在图11中,图1110示出了当前编译块和多个参考样本线之间的关系。在本公开中,当前编译块可以被简称为当前块。当前编译块可以使用多个参考线之一来执行帧内预测。可以使用intra_luma_ref_idx[x0][y0]的语法元素来告知参考样本线索引。intra_luma_ref_idx[x0][y0]的语法元素仅适用于亮度分量,并且如果参考样本线索引大于0,则可以由MPM索引来指示帧内预测模式。
例如,如果参考样本线索引为0,则可以使用参考线0对当前编译块进行帧内预测。例如,如果参考样本线索引为1,则可以使用参考线1对当前编译块进行帧内预测。例如,如果参考样本线索引为2,则可以使用参考线2对当前编译块进行帧内预测。例如,如果参考样本线索引为3,则可以使用参考线3对当前编译块进行帧内预测。
可以不使用参考线2。在这种情况下,如果参考样本线索引是2,则可以使用参考线3对当前编译块进行帧内预测。然而,本公开不限于此,并且如果参考样本线索引是3,则可以使用参考线3对当前编码块进行帧内预测。
在图11中,图1120示出了配置最可能模式(MPM)的方法。可以基于当前编译单元的相邻块的画面内(帧内)预测模式来配置MPM。如图所示,可以参考两个或更多个相邻块。
可以在图1120中的位置A和L处,基于根据画面内模式配置方法确定的模式来配置MPM。位置A可以是(CbW-1,-1),而位置L可以是(-1,CbH-1)。在此,CbW可以是当前编译块的宽度,而CbH可以是当前编译块的高度。可以应用参考样本线索引值以及是否应用ISP模式,因此配置方法可以不同。例如,MPM列表的数量为6,但是也可以使用其他数量的MPM列表。
例如,如果当前块的相邻块的帧内模式是PLANAR(平面)或DC模式而不是角度模式,或者具有与两个模式之一相同的模式,则可以如下配置MPM列表。
对于第一MPM配置集,如果IntraLumaRefLineIdx[xCb][yCb]等于0,并且IntraSubPartitionsSplitType为ISP_NO_SPLIT,则可以使用参考线0。
如果未应用ISP模式,则可以如下配置第一MPM配置集。IntraLumaRefLineIdx[xCb][yCb]可以是指示当前编译块的参考样本线索引的指示符。IntraSubPartitionsSplitType可以是指示ISP的分割方向的指示符。ISP_NO_SPLIT可以是指示未应用ISP的指示符。candModeList[]是用于存储MPM列表的候选的参数并且具有阵列值。帧内预测模式可以被分为角度模式和非角度模式,其中,INTRA_PLANAR和INTRA_DC指示非角度模式的情况。角度模式可以以“INTRA_ANGULAR+数字”的形式显示。该数字可以是指示根据预定规则的角度模式的顺序/角度的数字等。例如,角度模式可以被显示为INTRA_ANGULAR50、INTRA_ANGULAR18、INTRA_ANGULAR46等。下面的伪代码显示了形成第一MPM配置集的过程。
如果IntraLumaRefLineIdx[xCb][yCb]等于0并且IntraSubPartitionsSplitType等于ISP_NO_SPLIT,则以下适用:
candModeList[0]=candIntraPredModeA
candModeList[1]=(candModeList[0]==INTRA_PLANAR)?INTRA_DC:INTRA_PLANAR
candModeList[2]=INTRA_ANGULAR50
candModeList[3]=INTRA_ANGULAR18
candModeList[4]=INTRA_ANGULAR46
candModeList[5]=INTRA_ANGULAR54
以下是第二MPM配置集,其中,IntraLumaRefLineIdx[xCb][yCb]不为0,而可以是1或2,并且所使用的线索引可以是第二或第四参考样本线。在这种情况下,可能无法应用ISP模式。第二MPM配置集可以配置如下。
否则,如果IntraLumaRefLineIdx[xCb][yCb]不等于0,则以下适用:
candModeList[0]=INTRA_ANGULAR50
candModeList[1]=INTRA_ANGULAR18
candModeList[2]=INTRA_ANGULAR2
candModeList[3]=INTRA_ANGULAR34
candModeList[4]=INTRA_ANGULAR66
candModeList[5]=INTRA_ANGULAR26
以下是第三MPM配置集,其是IntraSubPartitionsSplitType为ISP_HOR_SPLIT的情况,并且对应于当ISP模式被应用于当前编译块并且水平地划分该变换块时使用的配置方法。如果参考样本线索引值大于0,则可能无法应用ISP模式。下面的伪代码显示了形成第三MPM配置集的过程。
否则,如果IntraSubPartitionsSplitType等于ISP_HOR_SPLIT,则以下适用:
candModeList[0]=INTRA_PLANAR
candModeList[1]=INTRA_ANGULAR18
candModeList[2]=INTRA_ANGULAR25
candModeList[3]=INTRA_ANGULAR10
candModeList[4]=INTRA_ANGULAR65
candModeList[5]=INTRA_ANGULAR50
下文是第四MPM配置集,其是IntraSubPartitionsSplitType为ISP_VER_SPLIT的情况,并且对应于当ISP模式被应用于当前编译块并且垂直地划分该变换块时使用的配置方法。如果参考样本线索引值大于0,则可能无法应用ISP模式。下面的伪代码显示了形成第四MPM配置集的过程。
否则,如果IntraSubPartitionsSplitType等于ISP_VER_SPLIT,则以下适用:
candModeList[0]=INTRA_PLANAR
candModeList[1]=INTRA_ANGULAR50
candModeList[2]=INTRA_ANGULAR43
candModeList[3]=INTRA_ANGULAR60
candModeList[4]=INTRA_ANGULAR3
candModeList[5]=INTRA_ANGULAR18
在本公开中,考虑参考样本线索引值、是否应用ISP以及相邻块L和A的预测模式来处理简单的MPM配置方法和信令方法。
MPM配置方法的描述如下。当前块很可能具有与相邻块的帧内预测模式相似的模式,并且编码器或解码器可以基于其执行MPM配置。根据相邻块L和A的模式,可以将MPM配置分为三种情况。
在第一相邻块模式的情况下,L和A两者都可以处于平面模式或DC模式,而不是角度模式。
1-1MPM配置方法可以如下。元素可以如下,并且可以不同地配置其顺序。对于1-1MPM配置方法,可以根据参考样本索引、是否应用ISP、ISP的划分方向模式等来使用优化的顺序。
candModeList[0]=INTRA_ANGULAR50
candModeList[1]=INTRA_ANGULAR18
candModeList[2]=INTRA_ANGULAR3
candModeList[3]=INTRA_ANGULAR65
candModeList[4]=INTRA_ANGULAR34
candModeList[5]=INTRA_ANGULAR25
1-2MPM的配置方法如下。元素可以如下,并且可以不同地配置其顺序。对于1-2MPM配置方法,可以根据参考样本索引、是否应用ISP、ISP的划分方向模式等来使用优化的顺序。
candModeList[0]=INTRA_ANGULAR50
candModeList[1]=INTRA_ANGULAR18
candModeList[2]=INTRA_ANGULAR2
candModeList[3]=INTRA_ANGULAR66
candModeList[4]=INTRA_ANGULAR34
candModeList[5]=INTRA_ANGULAR25
可以通过将1-1MPM配置方法中的INTRA_ANGULAR34变更为DC_IDX的组合来配置1-3MPM配置方法。可以不同地配置1-3MPM配置方法的配置顺序。对于1-3MPM配置方法,可以根据参考样本索引、是否应用ISP、ISP的划分方向模式等来使用优化的顺序。
1-4MPM配置方法可以是将1-2MPM配置方法中的INTRA_ANGULAR34变更为DC_IDX的组合。可以不同地配置1-4MPM配置方法的配置序列。对于1-4MPM配置方法,可以根据参考样本索引、是否应用ISP、ISP的划分方向模式等来使用优化的顺序。
在第二相邻块模式的情况下,L和A中的至少一个可以处于DC模式,而另一个可以处于角度模式。
2-1MPM配置方法可以如下,并且可以不同地配置其顺序。maxAB指示在相邻块L和A的帧内预测模式中的较大索引值。在这种情况下,使用一个角度模式和一个DC模式,并且角度模式索引的值大于DC模式索引值。如在下文的示例中,通过将偏移值应用于由maxAB确定的模式索引来创建多个候选。在下文中,作为示例,给出了四个附加模式的生成。提供了将-1、+1、-2和+2应用为偏移值的示例,但是本公开不限于此。例如,偏移值可以是-1、+1、-3、+3、或者可以是-2、+2、-3、+3。
candModeList[0]=maxAB
candModeList[1]=DC_IDX
candModeList[2]=2+((maxAB+61)%64)//-1
candModeList[3]=2+((maxAB-1)%64)//+1
candModeList[4]=2+((maxAB+60)%64)//-2
candModeList[5]=2+((maxAB)%64)//+2
在第三相邻块模式的情况下,L和A两者都可以处于角度模式。L和A的角度模式可以是相同的角度模式或可以是不同的角度模式。
3-1MPM配置方法可以如下,并且可以不同地配置其顺序。maxAB指示在相邻块L和A的帧内预测模式中的较大索引值。minAB指示在相邻块L和A的帧内预测模式中的较小索引值。由于相邻块L和A模式的模式为角度模式,如果通过应用偏移值生成新模式,则相邻块L和A可以处于相同模式,因此可以通过区分maxAB-minAB的差值在特定值内的情况与相反的情况,不同地配置偏移值。在下文的示例中,如果两种模式之间的差在3和61之间,则偏移值被配置为-1、+1和-2,否则,将偏移值配置为-3、+3和-4。用于配置模式之间的差值的范围的区间和偏移值不限于上述示例。leftIntraDir的参数可以指示左相邻块L的帧内预测模式。aboveIntraDir的参数可以指示上相邻块A的帧内预测模式。
candModeList[0]=leftIntraDir
candModeList[1]=aboveIntraDir
candModeList[2]=DC_IDX
如果maxAB-minAB在3至61的范围内
candModeList[3]=2+((maxAB+61)%64)//-1:偏移
candModeList[4]=2+((maxAB-1)%64)//+1:偏移
candModeList[5]=2+((maxAB+60)%64)//-2:偏移
否则
candModeList[3]=2+((maxAB+59)%64)//-3:偏移
candModeList[4]=2+((maxAB+1)%64)//+3:偏移
candModeList[5]=2+((maxAB+58)%64)//-4:偏移
图12是图示根据本公开的实施例的编译单元的语法结构的图。
如果当前编译单元(x0,y0)的CuPredMode[x0][y0]值为MODE_INTRA,并且treeType为SINGLE_TREE或DUAL_TREE_LUMA,则解码器可以从比特流中获得intra_luma_ref_idx[x0][y0]、intra_subpartitions_mode_flag[x0][y0]、intra_subpartitions_split_flag[x0][y0]、Intra_luma_mpm_flag[x0][y0]、intra_luma_mpm_idx[x0][y0]或intra_luma_mpm_remainder[x0][y0]的信息,或者可以使用根据预配置方法推断的值。CuPredMode[x0][y0]值可以指示帧内、帧间或帧内块复制模式,以及treeType可以指示是否将亮度和色度划分为相同的结构。intra_luma_ref_idx[x0][y0]可以指示参考样本线。intra_subpartitions_mode_flag[x0][y0]可以指示是否是经由将编译单元划分为多个变换块来预测的模式。intra_subpartitions_split_flag[x0][y0]可以指示当将编译单元划分为多个变换块并进行预测时,划分方向是水平还是垂直。Intra_luma_mpm_flag[x0][y0]可以指示是否将MPM列表用作编译单元的模式信令方法。intra_luma_mpm_idx[x0][y0]可以是指示mpm列表中的数量的指示符。intra_luma_mpm_remainder[x0][y0]可以指示除了MPM列表模式以外的其余模式中的索引值。
可以使用不同的二进制编译方法来变换/编译每个语法元素。例如,可以通过上下文自适应算术熵编译的语法元素(ae(v))或固定模式比特兔串(f(n))来编码语法元素。
图13是图示根据本公开的实施例,通过使用intra_mode_Planar_flag来表示帧内预测模式的信令的语法结构的图。
图13是使用intra_mode_Planar_flag[x0][y0]的语法结构。intra_mode_Planar_flag[x0][y0]是指示当前编译单元(当前块)的帧内预测模式是否是平面模式的信息。如果intra_mode_Planar_flag[x0][y0]为1,则可以指示使用了平面模式。如果intra_mode_Planar_flag[x0][y0]为0,则可以指示未使用平面模式。解码器可以从比特流获得intra_mode_Planar_flag[x0][y0]。
如果指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0])等于0,并且满足(y0%CtbSizeY)>0,则解码器可以解析intra_luma_ref_idx[x0][y0]。如果指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0])为1,则解码器可以推断参考样本线索引为0,并且如果参考样本线索引大于0,则平面模式可能不被使用。大于0的线索引可能指示线索引不为0。
如果参考样本线索引不为0,则解码器不使用平面模式,因此解码器可能无法从比特流中获得指示是否使用平面模式的信息。如果没有从比特流中获得指示当前块是否使用平面模式的信息,则指示是否使用平面模式的信息可以指示不使用平面模式。解码器可以将指示是否使用平面模式的信息配置为不使用平面模式。解码器和编码器不分别传送或接收指示是否使用平面模式的信息,因此可以提高解码和编码效率。
解码器可以解析两个ISP相关的标志(intra_subpartitions_mode_flag[x0][y0]和intra_subpartitions_split_flag[x0][y0])。如果满足所有下述条件(intra_luma_ref_idx[x0][y0]==0&&intra_subpartitions_mode_flag[x0][y0]==0&&intra_mode_Planar_flag[x0][y0]==0),则可以解析Intra_luma_mpm_flag[x0][y0]。如果不满足条件,则可以推断Intra_luma_mpm_flag[x0][y0]。解码器可以根据Intra_luma_mpm_flag[x0][y0]的值来确定是否解析intra_luma_mpm_idx[x0][y0]。
图14是根据本公开的实施例,图示通过使用intra_mode_Planar_flag和ISP模式标志解析条件来表示帧内预测模式的信令的语法结构的图。
图14是考虑其中在ISP模式中不使用平面模式和DC模式的情况以及intra_mode_Planar_flag[x0][y0]的语法结构。如果在ISP模式中未使用PLANAR和DC模式,并且intra_mode_Planar_flag[x0][y0]为真,则解码器可以推断intra_subpartitions_mode_flag[x0][y0]的值为0。如果满足下述条件,则解码器可以解析intra_subpartitions_mode_flag[x0][y0]。
(intra_luma_ref_idx[x0][y0]==0&&(cbWidth<=MaxTbSizeY||cbHeight<=MaxTbSizeY&&(cbWidth*cbHeight>MinTbSizeY*MinTbSizeY)&&Intra_mode_Planar_flag[x0][y0]==0)
解码器可以在下述条件下解析Intra_luma_mpm_flag[x0][y0]。
(intra_luma_ref_idx[x0][y0]==0&&intra_subpartitions_mode_flag[x0][y0]==0&&intra_mode_Planar_flag[x0][y0]==0)或((intra_luma_ref_idx[x0][y0]==0&&intra_subpartitions_mode_flag[x0][y0]==0)||intra_mode_Planar_flag[x0][y0]==0)或(intra_luma_ref_idx[x0][y0]==0&&intra_subpartitions_mode_flag[x0][y0]==0)
如果在ISP模式中平面模式和DC模式都未被使用,则可以在先前定义的ISP模式中使用的MPM配置方法中排除平面模式来配置新的角度模式。可替代地,可以在本公开中提出的MPM配置方法中排除平面模式,而添加和配置新的角度模式。解码器可以仅用角度模式填充MPM列表。图13或14提供的描述也可以应用于图15及图16。
图15是根据本公开的实施例的通过使用intra_mode_Planar_flag和参考样本线索引条件,图示与帧内预测模式信令有关的语法结构的图。
将省略已经在图12和图13中提供的描述。图15可以是考虑在ISP模式中不使用DC模式的情况以及intra_mode_Planar_flag[x0][y0]的语法结构。
解码器可以从所接收的比特流中获得当前块的参考样本线索引(intra_luma_ref_idx[x0][y0])。解码器可以确定参考样本线索引(intra_luma_ref_idx[x0][y0])是否为0(intra_luma_ref_idx[x0][y0]==0)。解码器可以仅当参考样本线索引为0时解析指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0])。解析可以指解码器从所接收的比特流中获得信息。
如果参考样本线索引不为0,则可以不使用平面模式。因此,如果参考样本线索引不为0,则比特流可以不包括指示是否使用平面模式的信息。如果参考样本线索引不为0,则解码器可以将指示是否使用平面模式的信息配置为不使用平面模式。
解码器可以基于指示是否使用平面模式的信息来确定帧内预测模式。帧内预测模式可以是平面模式、DC模式或角度模式中的一种。解码器可以基于所确定的帧内预测模式来预测当前块。指示是否使用平面模式的信息可以指示“使用平面模式”或“不使用平面模式”。如果指示是否使用平面模式的信息指示使用平面模式,则解码器可以基于平面模式来预测当前块。如果指示是否使用平面模式的信息指示不使用平面模式,则解码器可以基于预测模式而不是平面模式来预测当前块。
可以在下述条件下解析Intra_luma_mpm_flag[x0][y0]。(intra_luma_ref_idx[x0][y0]==0&&intra_subpartitions_mode_flag[x0][y0]==0&&intra_mode_Planar_flag[x0][y0]==0)。即,如果intra_mode_Planar_flag[x0][y0]==0,则解码器可以解析Intra_luma_mpm_flag[x0][y0]。
在上文中,已经描述了基于指示是否使用平面模式的信息,获得指示是否使用最可能模式(MPM)的信息,但是本公开不限于此。解码器可以基于预定条件,从所接收的比特流中获得指示是否使用最可能模式(MPM)的信息。如果确定指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])指示使用MPM,则解码器可以解析指示是否使用平面模式的信息。如果解码器确定指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])指示不使用MPM,则解码器可能不从比特流中获得指示是否使用平面模式的信息,并且可以将指示是否使用平面模式的信息配置为不使用平面模式。将省略与图13或图14的描述重复的描述。
第一相邻块的帧内模式可以使用如上所述定义的MPM配置方法,并且第二相邻块的帧内模式和第三相邻块的帧内模式可以根据2-1MPM配置方法和3-1MPM配置方法来操作。例如,在图11所述的内容中,第一相邻块的帧内模式可以使用从所定义的第一MPM配置集到所定义的第四MPM配置集,并且2-1MPM配置方法和3-1MPM配置方法可以被用于第二相邻块的帧内模式和第三相邻块的帧内模式。
关于第一相邻块的帧内模式,可以仅考虑“参考样本线索引为0并且不使用ISP模式的情况”和“参考样本线索引不为0并且不使用ISP模式的情况”。第二相邻块的帧内模式和第三相邻块的帧内模式可以根据2-1MPM配置方法和3-1MPM配置方法来操作。例如,如图11所述,可以将第一相邻块的帧内模式划分为上述两种情况以便配置MPM,并且第二相邻块的帧内模式和第三相邻块的帧内模式可以根据2-1MPM配置方法和3-1MPM配置方法来操作。
如果参考样本线索引为0,并且不使用ISP模式,解码器可以使用图11中所述的第一MPM配置方法。如果参考样本线索引大于0,以及如果参考样本线索引为0并且使用ISP模式,则解码器可以使用图8中所述的1-1MPM配置方法、1-2MPM配置方法、1-3MPM配置方法和1-4MPM配置方法中的一个。
尽管已经在解码器的方面提供了上述描述,但是这些描述可以以相同的方式应用于编码器。
图16是图示根据本公开的实施例的与MPM信令有关的语法结构的图,其中,通过考虑首先解析/发信号告知参考线索引来获得语法结构。
在图16中,在pcm_flag[x0][y0]为0且CUPredMode[x0][y0]为MODE_INTRA的一般帧内预测模式的情况下,解码器可以确定y0%CtbSizeY>0是否为真。y0%CtbSizeY>0可以表示确定当前块是否被包括在编译树单元的顶部中。y0是当前块的左上像素的y轴坐标。CtbSizeY可以表示编译树单元的大小。此外,(y0%CtbSizeY>0==1)可以是指当前块未被包括在编译树单元的顶部中的情况。
如果当前块未被包括在编译树单元的顶部中,则解码器可以解析参考样本线索引(intra_luma_ref_idx[x0][y0])。解析是指从所接收的比特流中获得语法元素。
如果参考样本线索引为0,则解析指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0]),以确定指示0还是1,并且如果指示1,则帧内预测模式变为平面模式。可替代地,如果指示0,则解析指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0]),然后可以基于intra_luma_mpm_idx[x0][y0]或intra_luma_mpm_remainder[x0][y0]信息,获得/确定帧内预测模式。
当首先发信号告知/获得参考样本线索引(Intra_luma_ref_idx[x0][y0])时,解码器可以确定参考样本线索引(Intra_luma_ref_idx[x0][y0])是否为0。如果参考样本线索引指示大于0的值,则当前块的参考样本线可能不是最近的参考样本线,因此可能不使用平面模式。在这种情况下,解码器可以将指示是否使用平面模式的信息推断为0,并且由此可以知道由该信息指示的值,无需通过信令和解析来获得该信息。这使得能够基于MPM方法或MPM以外的方法来发信号告知/获得预测模式信息,而不是平面模式。
在本公开的实施例中,编码器或解码器可以使用指示是否使用MPM的信息。如果参考样本线索引(Intra_luma_ref_idx[x0][y0])为0,则编码器可以将指示是否使用MPM的信息生成为比特流。如果参考样本线索引(Intra_luma_ref_idx[x0][y0])为0,则解码器可以从比特流中获得指示是否使用MPM的信息。
如果指示是否使用MPM的信息指示使用MPM,并且参考样本线索引为0,则解码器可以从比特流中获得指示是否使用平面模式的信息。如果指示是否使用MPM的信息指示不使用MPM或参考样本线索引不为0,则解码器可能不从比特流中获得指示是否使用平面模式的信息。如果没有从比特流中获得指示是否使用平面模式的信息,则指示是否使用平面模式的信息可以指示不使用平面模式。
解码器可以解析指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0]),然后可以解析intra_subpartitions_mode_flag[x0][y0]、intra_mode_Planar_flag[x0][y0]和intra_suppartitions_split_flag[x0][y0]。可以基于intra_luma_ref_idx[x0][y0]、intra_subpartitions_mode_flag[x0][y0]和intra_luma_Planar_flag[x0][y0]来解析指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])。例如,如果intra_luma_ref_idx[x0][y0]指示使用了第0参考样本线,如果intra_subpartitions_mode_flag[x0][y0]指示未使用ISP模式,并且如果intra_luma_Planar_flag[x0][y0]指示模式不是平面模式,则可以解析指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])。如果intra_luma_Planar_flag[x0][y0]指示0,且intra_luma_ref_idx[x0][y0]指示大于0的值,则可以将指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])推断为1。如果intra_luma_Planar_flag[x0][y0]指示0,如果intra_luma_ref_idx[x0][y0]指示0,以及如果intra_supartitions_mode_flag[x0][y0]指示1,则指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])可以被推断为1。
如果intra_supartitions_mode_flag[x0][y0]指示1,则这可以表示已经应用ISP模式。可替代地,如果intra_luma_Planar_flag[x0][y0]指示0,并且intra_supartitions_mode_flag[x0][y0]指示1,则可以将指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])推断为1。ISP模式对应于参考样本线索引为0的情况,并且仅当使用最接近当前预测块的参考样本线时适用,使得可以省略诸如指示是否使用平面模式的信息之类的指示符。即使当应用于所有参考样本线索引时,也可以省略诸如指示是否使用平面模式的信息之类的指示符。推断mpm标志的方法可以通常应用于图13至图17的语法结构,其中,首先发信号告知/解析平面标志,然后是指示是否使用MPM的信息。可以在语义(semantic)中单独地描述该内容。
CUPredMode[x0][y0]指示预测模式,并且可以指示Intra、Intra和IBC。intra_luma_ref_idx[x0][y0]指示参考样本线索引,并且可以是0、1或2,其可以指代当前预测块的第0、第1和第3相邻参考样本线。intra_mode_Planar_flag[x0][y0]可以是指示是否使用平面模式的信息。Intra_luma_mpm_flag[x0][y0]可以是指示是否使用MPM的信息,或者可以是指示画面内(帧内)预测模式是否被包括在最可能模式(MPM)列表中的参数。intra_subpartitions_mode_flag[x0][y0]可以是指示是否使用ISP模式的参数。intra_suppartitions_split_flag[x0][y0]可以是指示当使用ISP模式时,对应于垂直/水平方向的分割模式的参数。intra_luma_mpm_idx[x0][y0]可以是指示在MPM列表内的位置的参数。intra_luma_mpm_remainder[x0][y0]可以是指示未包括在MPM列表中的帧内预测模式之一的参数。当在整个本公开中使用相同的参数名称时,通常可以将其解释为具有相同的含义。
图17是示出根据本公开的实施例的与MPM信令有关的语法结构的图,其中通过考虑与参考线索引值无关地解析平面标志来获得语法结构。
在图17中,在pcm_flag[x0][y0]为0且CUPredMode[x0][y0]为MODE_INTRA的一般帧内预测模式的情况下,可以解析intra_luma_ref_idx[x0][y0]和intra_mode_Planar_flag[x0][y0]。可以与intra_luma_ref_idx值分开地发信号告知intra_mode_Planar_flag。这可以表示即使由intra_luma_ref_idx指示的值不是最接近当前预测块的参考样本线,也可以使用平面模式。确定由intra_mode_Planar_flag[x0][y0]指示的值是0还是1,并且如果该值是1,则帧内预测模式变为平面模式。如果该值为0,则解析Intra_luma_mpm_flag[x0][y0],然后可以基于intra_luma_mpm_idx[x0][y0]或intra_luma_mpm_remainder[x0][y0]信息获得/确定帧内预测模式。解析intra_mode_Planar_flag[x0][y0]之后,可以解析intra_subpartitions_mode_flag[x0][y0]、intra_mode_Planar_flag[x0][y0]和intra_suppartitions_split_flag[x0][y0]。可以基于intra_luma_ref_idx[x0][y0]、intra_subpartitions_mode_flag[x0][y0]和intra_luma_Planar_flag[x0][y0]来解析Intra_luma_mpm_flag[x0][y0]。例如,如果intra_luma_ref_idx[x0][y0]指示使用第0参考样本线,如果intra_subpartitions_mode_flag[x0][y0]指示不使用ISP模式,并且如果intra_luma_Planar_flag[x0][y0]指示模式不是平面模式,则可以解析Intra_luma_mpm_flag[x0][y0]。
图18是示出根据本公开的实施例的用于发信号告知/解析指示是否使用平面标志和MPM的信息的语法结构的图。
在图18中,在pcm_flag[x0][y0]为0且CUPredMode[x0][y0]为MODE_INTRA的一般帧内预测模式的情况下,解码器可以解析参考样本线索引(intra_luma_ref_idx[x0][y0]),并且如果参考样本线索引指示0,则解码器可以解析指示是否使用平面模式的信息(intra_mode_Planar_flag[x0][y0])。确定由指示是否使用平面模式的信息(Intra_mode_Planar_flag[x0][y0])所指示的值是0还是1,并且如果该值为1,则帧内预测模式变为平面模式。如果该值为0,则解析指示是否使用了MPM的信息(Intra_luma_mpm_flag[x0][y0]),然后可以基于intra_luma_mpm_idx[x0][y0]或intra_luma_mpm_remainder[x0][y0]信息获得/确定帧内预测模式。
例如,如果指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])指示不使用MPM,则解码器可以从比特流中获得指示帧内预测模式的索引(intra_luma_mpm_remainder[x0][y0])。解码器可以通过基于指示帧内预测模式的索引执行帧内预测,来预测当前块。解码器可以在除用于MPM的帧内模式之外的帧内模式当中基于intra_luma_mpm_remainder[x0][y0]来选择一个帧内模式。解码器可以基于所选择的帧内模式来预测当前块。
在解析intra_mode_Planar_flag[x0][y0]之后,可以解析intra_subpartitions_mode_flag[x0][y0]和intra_suppartitions_split_flag[x0][y0]。可以基于intra_luma_Planar_flag[x0][y0]值来解析Intra_luma_mpm_flag[x0][y0]。例如,如果intra_luma_Planar_flag[x0][y0]指示模式不是平面模式,则可以解析Intra_luma_mpm_flag[x0][y0]。在参考样本索引不为0的情况下,以及在使用ISP模式的情况下,代替对于指示是否使用MPM的信息推断值为1,如果即使对每种情况,平面标志都指示0,使得指示模式不是平面模式,则可以发信号告知/解析指示是否使用MPM的信息。
在本公开的实施例中,可以包括指示在MPM方法中是否使用MPM的信息。如果参考样本线索引(Intra_luma_ref_idx[x0][y0])为0,则解码器可以从比特流中获得指示是否使用MPM的信息。如果参考样本线索引(Intra_luma_ref_idx[x0][y0])为0,则编码器可能不会将指示是否使用MPM的信息生成为比特流。解码器可以通过基于指示是否使用MPM的信息来执行帧内预测以预测当前块。通过省略指示是否使用平面模式的信息,解码器和编码器可以提高解码和编码的效率。
图19是图示了根据本公开的实施例的语法结构的图,该语法结构图示了发信号告知/解析指示是否使用基于平面标志的MPM和参考样本线索引的信息。
在图19中,在pcm_flag[x0][y0]为0且CUPredMode[x0][y0]为MODE_INTRA的一般帧内预测模式的情况下,可以解析intra_mode_Planar_flag[x0][y0],并且如果其值指示0,则可以解析intra_luma_ref_idx[x0][y0]。如果intra_mode_Planar_flag[x0][y0]指示1,则可以将intra_luma_ref_idx[x0][y0]推断为0,因此可能不需要单独的发信号告知/解析。确定由Intra_mode_Planar_flag[x0][y0]指示的值是0还是1,并且如果该值是1,则帧内预测模式变为平面模式。如果该值为0,则解析Intra_luma_mpm_flag[x0][y0],然后可以基于intra_luma_mpm_idx[x0][y0]或intra_luma_mpm_remainder[x0][y0]信息来获得/确定帧内预测模式。在解析intra_mode_Planar_flag[x0][y0]之后,可以解析intra_subpartitions_mode_flag[x0][y0]和intra_suppartitions_split_flag[x0][y0]。可以基于intra_luma_Planar_flag[x0][y0]值来解析Intra_luma_mpm_flag[x0][y0]。例如,如果intra_luma_Planar_flag[x0][y0]指示模式不是平面模式,则可以解析Intra_luma_mpm_flag[x0][y0]。在参考样本索引不为0的情况下,并且在使用ISP模式的情况下,代替对于指示是否使用MPM的信息推断值为1,如果即使对于每种情况,平面标志都指示为0,使得指示模式不是平面模式,则可以发信号告知/解析指示是否使用MPM的信息。
在所提出的方法中,一种用于配置MPM列表的方法可以包括:在所有MRL情况、ISP情况以及没有应用MRL和ISP的一般情况下,以相同的方式配置MPM列表,其中,可以通过预先配置的MPM列表的数量来配置MPM列表。预告配置的MPM配置的数量可能是六。但是,预配置的MPM配置的数量不限于六。在以这种方式配置的MPM列表中,仅平面模式经由单独的标志被用信号发送,并且可以通过intra_luma_ref_idx值推断为0。可以经由Intra_luma_mpm_flag和intra_luma_mpm_idx来发信号告知除了平面模式之外的MPM列表。在语法结构上,Intra_mode_Planar_flag和两个ISP相关的标志的位置可以独立地包括信息,并且可以彼此不依赖地被获得。
图20是图示根据本公开的实施例的编译单元语法结构中的intra_luma_Planar_flag的图。
图20的语法结构和用信号发送/解析的方法在大框架方面与图12的描述相同,并且当MPM标志为真时的操作可以如下。
实施例20-1
If(Intra_luma_mpm_flag[x0][y0]){
If(intra_luma_ref_idx[x0][y0]==0)
Intra_luma_Planar_flag[x0][y0]
If(Intra_luma_Planar_flag[x0][y0]==0)
Intra_luma_mpm_idx[x0][y0]
}else{
Intra_luma_mpm_remainder[x0][y0]
}
在实施例20-1中,如果指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])为真(例如,如果该值等于1),则确定参考样本线索引(intra_luma_ref_idx[x0][y0])值是否等于0,并且如果该值等于0,则可以确定指示是否使用平面模式的信息(intra_luma_Planar_flag[x0][y0])。如果由指示是否使用平面模式的信息(intra_luma_Planar_flag[x0][y0])指示的值为真,则可以指示帧内亮度平面模式。
平面模式可以是MPM列表中的第一个。MPM列表可以具有6个元素,或者可以具有预先配置的最大大小。另外,可以通过划分为使用帧内子划分(ISP)模式的情形和相反的情形,使用上下文模型来熵编译intra_luma_Planar_flag。
在另一种情况下,如果intra_luma_ref_idx[x0][y0]>0,则可以将指示是否使用平面模式的信息(Intra_luma_Planar_flag[x0][y0])推断为值0。在此,如果指示是否使用平面模式的信息为0,则可以指示不使用平面模式。解码器可以不从比特流中解析指示是否使用平面模式的信息,并且可以将指示是否使用平面模式的信息确定为不使用平面模式。
解码器可以确定指示是否使用平面模式的信息是否指示使用平面模式。如果指示是否使用平面模式的信息指示不使用平面模式,则解码器可以从比特流中获得MPM索引(intra_luma_mpm_idx[x0][y0])。解码器可以从比特流中解析MPM索引(intra_luma_mpm_idx[x0][y0]),以便确定相应的画面内(帧内)预测模式。如果指示是否使用平面模式的信息指示不使用平面模式,则解码器可以将至少一个角度模式添加到MPM列表。
解码器可以基于当前块的先前重构的左块或先前重构的上块中的至少一个来生成MPM列表,该MPM列表包括帧内预测中包括的至少一个角度模式。MPM列表可以包括至少一个候选帧内预测模式。MPM列表可以包括至少一个角度模式。解码器可以基于MPM索引,从MPM列表中选择一种角度模式。
可以对MPM索引(Intra_luma_mpm_idx)进行绕过编译(bypass-code)。如果MPM列表包括六个帧内模式,则MPM索引(Intra_luma_mpm_idx[x0][y0])可以指示第二帧内模式至第六帧内模式之一。解码器可以基于MPM索引,从MPM列表的第二模式至第六模式中选择一个帧内预测模式。即,MPM索引(Intra_luma_mpm_idx[x0][y0])可以选择包括在MPM中的五个候选之一。五个候选中的至少一个可以是角度模式。如已经描述的,MPM列表不限于六个。例如,MPM列表可以包括五个帧内模式。
解码器可以基于MPM索引,从MPM列表中选择一个帧内预测模式。解码器可以通过基于所选择的帧内预测模式来执行帧内预测以预测当前块。
如果指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])表示不使用MPM,则解码器可以从比特流中获得指示帧内预测模式的索引(Intra_luma_mpm_remainder[x0][y0])。如果指示是否使用MPM的信息(Intra_luma_mpm_flag[x0][y0])指示不使用MPM,则这可以表示指示是否使用MPM的信息为假或具有等于0的值。解码器可以通过基于指示帧内预测模式的索引(Intra_luma_mpm_remainder[x0][y0])来执行帧内预测以预测当前块。
可替代地,如果指示是否使用MPM的信息为真,则解码器可以发信号告知/解析指示是否使用平面模式的信息。如果指示是否使用平面模式的信息不为真,则解码器可以经由MPM索引(intra_luma_mpm_idx[x0][y0])知道帧内预测模式。如果指示是否使用MPM的信息为真,则这表示指示是否使用MPM的信息指示“使用MPM”。如果指示是否使用平面模式的信息为真,则这表示指示是否使用平面模式的信息指示“使用平面模式”。
这样的操作可以与实施例20-1相同。区别在于MPM索引(intra_luma_mpm_idx[x0][y0])可能具有预先配置的最大大小。预先配置的值可以是大于0的整数值,并且在该示例中,该值假定为6。可以对最大大小6,绕过编译MPM索引(intra_luma_mpm_idx[x0][y0])。然而,MPM索引不限于此,并且可以具有各种值。
与实施例20-1不同,可以将用于发信号告知/解析intra_luma_Planar_flag[x0][y0]的条件细分如下。
实施例20-2
示例20-2示出了基于上下文模型的语法结构,该上下文模型取决于当熵编译intra_luma_Planar_flag[x0][y0]时,参考样本线索引为0的情况以及参考样本线索引为0且使用ISP模式的情况而有所不同。与实施例20-1不同,可以通过在发信号告知/解析intra_luma_Planar_flag时同时确定是否使用ISP来区分相应的信息值和上下文模型。
尽管已经提供了在解码器方面的上述描述,但是这些描述可以以相同的方式应用于编码器。在描述中,已经主要关于从比特流获得信息来描述术语“解析”。然而,就编码器而言,“解析”可以被解释为在比特流中配置信息。因此,术语“解析”不限于解码器的操作,并且可以被解释为编码器配置比特流的动作。
例如,在基于帧内预测对视频信号进行编码的方法中,当当前块使用最可能模式(MPM)时,编码器可以生成指示当前块是否使用平面模式的信息,并且当前块的参考样本线索引为0。编码器可以生成包括指示是否使用平面模式的信息的比特流。编码器可以包括处理器和存储器,其中,处理器基于存储在存储器中的指令来执行操作。
在包括存储在非暂时性计算机可读介质中的视频比特流的设备中:当当前块使用最可能模式(MPM)并且当前块的参考样本线索引为0时,编码器可以生成指示当前块是否使用平面模式的信息;以及编码器可以基于指示是否使用平面模式的信息来生成比特流。比特流可以被存储在非暂时性计算机可读介质中。
图21是图示根据本公开的实施例的用于帧内预测的多个参考样本线(多参考线帧内预测(MRL))的图。
编码器或解码器基本上使用最接近当前块的参考样本线,并且可以附加地使用单个参考样本线或多个参考样本线用于帧内预测。定义了要使用的参考样本线的数量,并且如果使用了所有参考样本线,则将省略附加的信息传输。然而,在使用一些参考样本线的情况下,编码器需要将要使用的参考样本线信息指示符告知解码器。
这可以用于所有帧内预测模式,并且可以用于除单独模式之外的其他模式。为了减少编码器和解码器的复杂度/计算量,可以仅在特定模式下执行帧内预测。例如,可以使用仅在最可能模式(MPM)列表中的多个参考样本线来执行帧内预测。可以仅在除了DC模式和平面模式之外的角度模式中执行帧内预测。在这种情况下,编码器可以首先应用指示用于预测的参考样本线的参考样本线索引(MRL索引),然后可以将MPM索引包括在比特流中。在确定了MRL索引之后,解码器可以知道指示是否使用MPM的信息(MPM标志)为真,并且可以通过MPM索引知道相应的模式。
编码器可以在比特流中包括指示是否使用MPM的信息和MPM索引。解码器可以从比特流中获得指示当前块是否使用MPM的信息(MPM标志)。解码器可以基于MPM索引,从MPM列表确定帧内预测模式。
图22是图示根据本公开的实施例的考虑到在与当前预测块相邻的块中使用的预测模式,创建MPM列表所需的相邻块的位置的图。
如图22所示,从相邻块中仅考虑左块L和上块A,并且其位置也可以固定到如图22中的特定位置。基于大小为W×H的当前块的左上坐标,L可以位于(-1,H-1),而A可以位于(W-1,-1)。
包括在相邻块中的左块和上块可以是当前块之前的先前重构的块。在重构期间,可以基于帧内预测模式来预测左块或上块。解码器可以考虑L和A的预测模式,通过划分为三种情况来配置MPM列表。如果仅在MPM列表中使用MRL,则需要考虑其的MPM配置方法。使用MRL和不使用MRL时的MPM配置方法应该不同。除了平面模式和DC模式之外,还可以使用MRL,因此MPM列表配置方法应当不同,使得在使用MRL时,这两种模式不被包括在MPM列表中。MPM列表的大小可以是3至6,并且不限于特定的MPM大小。在本公开中,假定MPM列表的大小为6来描述示例。
当编码器或解码器取决于是否应用了MRL而不同地配置MPM列表配置时,未应用MRL的情况的MPM列表被假定为MPM_LIST_NO_MRL。当应用了MRL时,通过应用下述方案,可以与MPM_LIST_NO_MRL不同地配置MPM_LIST_MRL。编码器或解码器可以通过从在MPM_LIST_NO_MRL中包括平面或DC模式的MPM列表中删除相应模式来减少MPM列表的元素。例如,编码器或解码器可以通过从包括平面和DC模式的6个模式的MPM列表中删除平面和DC模式来配置4个模式的MPM列表。在这种配置中,考虑到所删除的平面或DC模式,编码器或解码器可以将MPM_LIST_NO_MRL的MPM列表的索引配置为先前值。在MPM_LIST_NO_MRL配置方法中,如果在MPM列表中填充了平面模式和DC模式,则将后续轮到的MPM填充在相应索引中,而不包括平面和DC模式。如果创建现有MPM列表的方法包括平面模式和DC模式两者或仅包括平面模式和DC模式之一,则编码器或解码器不将平面/DC模式添加到相应的索引中,填充后续轮到的MPM,并且也以MPM总数中丢失一个或两个模式的形式确定MPM的总大小。从所确定的MPM总数中省略了一个或两个模式,使得可以就发信号告知MPM而言减少信息量。例如,在使用截断一元码(TU)方案进行二值化的情况下,如果将大小从6减少到4,则可以减少1比特。
可以将相应的模式变更为角度模式,并且将其添加到MPM_LIST_NO_MRL中包括平面或DC模式的MPM列表。即,MPM列表可以仅包括角度模式。通过替代非角度模式的平面模式或DC模式来添加新的角度模式,并且可以通过使用在MPM_LIST_NO_MRL中定义的角度模式来应用附加偏移以配置相应的模式。偏移值可以被配置为接近MPM列表的角度模式值的角度模式,诸如((-/+)或(+/-))1,2,3,4等。可替代地,可以从剩余模式中填充丢失模式。编码器或解码器可以通过固定特定位置或按索引的升/降顺序选择一个或两个模式来填充丢失模式。当将剩余模式进一步分为选择的模式和非选择的模式时,可以在所选模式中的特定位置处选择和填充一个或两个模式。可以按索引的升/降顺序进行选择。
基于相邻块(诸如L和A)的角度模式,可以通过优先化L和A的特定位置,使用角度模式值,附加地配置与MPM_LIST_NO_MRL相比的非角度模式(诸如平面模式和DC模式)的值。例如,如果L和A都具有角度模式,并且优先于A应用L,则作为平面或DC模式的替代的新角度模式是在L中定义的角度模式的相邻模式,并且可以通过应用偏移来进行配置。相反也是可能的。
可以通过优先化角度模式当中的特定角度模式的值,使用特定角度模式来替换MPM_LIST_NO_MRL的平面/DC模式。例如,可以通过优先化特定角度模式(诸如VER_IDX或HOR_IDX),将偏移(包括0)应用于相应的模式来替换平面/DC模式。在预先包括的MPM列表的情况下,可以应用不同的偏移值,并且可以替代地填充该值。
可以通过根据当前块的形状,优先化特定角度模式或L和A中的特定位置来替换平面/DC模式。例如,如果当前块是非正方形的,则平面/DC模式可以使用位于长边的A或L的角度模式来替换,或者可以使用VER/HOR的角度模式来替换。例如,如果该块具有较大的宽度,则优先考虑VER或A的角度模式,并且可以通过将偏移(包括0)应用于相应的值来替换平面/DC模式。作为另一示例,如果当前块是非正方形的,则可以使用位于短边的A或L的角度模式来替换平面/DC模式。
可以通过组合一种或多种方案来应用根据是否应用MRL来配置MPM列表的所述方法,其中,可以将MPM列表固定为具有6种模式并使用,或者可以将各种数量应用于MPM列表。在假设MPM列表的情况下提供了描述,但是相同的方案可以被扩展并应用于非MPM列表的配置。
下文是考虑了MRL来配置MPM列表的方法,并且通过考虑用在L和A中的预测模式将其分为三种情况。
情况1:当L和A中没有角度模式时、当相邻的L和A均不存在时、或者当两个中的一个不存在而剩余一个也不处于角度模式时,配置MPM列表的示例:
mpm[0]=VER_IDX;
mpm[1]=HOR_IDX;
mpm[2]=VER_IDX-4;
mpm[3]=VER_IDX+4;
mpm[4]=HOR_IDX-4;
mpm[5]=HOR_IDX+4;
情况2:当在L和A中存在一个角度模式时,配置MPM列表的示例。
基于下述顺序,生成MPM列表:
顺序:{左模式、上模式、左模式-1、左模式+1、左模式-2、左模式+2、垂直模式、水平模式}
如果L和A处于相同的角度模式,则从上述顺序中排除上块模式(上模式)。左块模式(左模式)可以是角度模式(AngMode)。
leftIntraDir=左模式
aboveIntraDir=上模式
AngMode是检查左和上模式后的可用角度模式。
偏移=62;
mod=偏移+3;
mpm[0]=AngMode;
mpm[1]=((AngMode+偏移)%mod)+2;//角度模式的-1模式
mpm[2]=((AngMode-1)%mod)+2;//角度模式的+1模式;
mpm[3]=((AngMode+偏移-1)%mod)+2;//角度模式的-2模式
mpm[4]=((AngMode)%mod)+2;//角度模式的+2模式
mpm[5]=(AngMode>48&&AngMode<52)?HOR_IDX:VER_IDX;
情况3:L和A可以是不同的角度模式。
顺序可以如下。
顺序1:{左模式,上模式,左模式-1,左模式+1,上模式-1,上模式+1,左模式-2,左模式+2,};
顺序2:{左模式,上模式,左模式-1,左模式+1,上模式-1,上模式+1,左模式-2,上模式+2};或者
顺序3:{左模式,上模式,左模式1,左模式+1,上模式-1,上模式+1,垂直模式,水平模式}
如果通过基于顺序1,将-1与左块模式(左模式)的索引相加所获得的值与上块的帧内预测模式(上模式)相同,则通过将-1与上块的帧内预测模式(上模式)的索引相加获得的值可以具有高于通过将+1与左块的左模式(左模式)的索引相加获得的值的优先级。即,如果当前操作的计算出的模式与已经在先前操作中计算出并包括在MPM列表中的模式相同,则确定该模式是用于L还是A,例如,如果该模式是L模式,则应用L模式序列中的后续轮到的值。可替代地,根据如在顺序1中的预定顺序,执行计算以填充MPM,其中,如果所计算出的模式与已经计算出的MPM列表中的模式相同,则对后续轮到的执行计算以填充MPM。
mpm[0]=leftIntraDir;
mpm[1]=aboveIntraDir;
对于mpm[2]至mpm[5],通过MPM配置顺序1至3中的一个确定其值,其中,如果模式与已填充的MPM相同,则使用后续计算方法执行配置,以便避免彼此重叠。
当使用MRL时的MPM配置的另一个示例
MPM_set_0以与上述情况1相同的顺序配置MPM。
MPM_set_1:如果左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)相同且为角度模式,或者如果左模式和上模式中的仅一个为角度模式,则执行配置如下。角度模式称为AngMode。
mpm[0]=AngMode
mpm[1]=2+((AngMode+62)%65)//A-1
mpm[2]=2+((AngMode-1)%65)//A+1
mpm[3]=2+((AngMode+61)%65)//A-2
mpm[4]=2+((AngMode)%65)//A+2
mpm[5]=2+((AngMode+60)%65)//A-3
如上所述,解码器可以从所接收的比特流中获得指示当前块是否使用MPM的信息。解码器可以基于指示是否使用MPM的信息来确定生成MPM列表。可以如在MPM_set_1中一样生成MPM列表。上文的MPM_set_1是偏移是62并且mod是65的示例。然而,MPM_set_1不限于此。偏移可以是61。mod可以是64。
如果当前块的左块的帧内预测模式或当前块的上块的帧内预测模式中的至少一个是角度模式,则解码器可以通过仅使用角度模式来生成MPM列表。可以如在MPM_set_1中一样生成MPM列表。AngMode可以是左块的帧内预测模式(左模式)或上块的帧内预测模式(上模式)。MPM_set_1是左块的帧内预测模式(左模式)或上块的帧内预测模式(上模式)相同,因此可以使用左块的帧内预测模式(左模式)或上块的帧内预测模式(上模式)之一来确定MPM列表的情况。
如在上述MPM_set_1中一样,如果上块的帧内预测模式或左块的帧内预测模式中的至少一个是角度模式,则MPM列表可以仅包括角度模式。即,MPM列表可以不包括DC模式和平面模式。解码器可以基于所生成的MPM列表来确定帧内预测模式。解码器可以基于所确定的帧内预测模式来预测当前块。
根据本公开的实施例来生成MPM列表的过程如下。如果左块的帧内预测模式和上块的帧内预测模式相同,并且左块的帧内预测模式是角度模式,则解码器可以基于下述中的至少一个来生成MPM列表:左块的帧内预测模式(AngMode);与比左块的帧内预测模式的索引小1的索引(2+((AngMode+偏移)%mod))相对应的角度模式;与比左块的帧内预测模式的索引大1的索引(2+((AngMode-1)%mod))相对应的角度模式;与比左块的帧内预测模式的索引小2的索引(2+((AngMode+偏移-1)%mod))相对应的角度模式;以及与比左块的帧内预测模式的索引大2的索引(2+(AngMode%mod))相对应的角度模式。在此,偏移可以是61,并且mod可以是偏移+3。
如果左块的帧内预测模式和上块的帧内预测模式不相同,并且如果左块的帧内预测模式或上块的帧内预测模式中的仅一个是角度模式,则解码器可以基于下述中的至少一个来生成MPM列表:角度模式中的块的帧内预测模式(AngMode),与比角度模式中的块的帧内预测模式的索引小1的索引(2+((AngMode+偏移)%mod))相对应的角度模式;与比角度模式中的块的帧内预测模式的索引大1的索引(2+((AngMode-1)%mod))相对应的角度模式;与比角度模式中的块的帧内预测模式的索引小2的索引(2+((AngMode+偏移-1)%mod))相对应的角度模式;以及与比角度模式中的块的帧内预测模式的索引大2的索引(2+(AngMode%mod))相对应的角度模式。在此,偏移可以是61,并且mod可以是偏移+3。解码器可以使用下述等式来从左块的帧内预测模式或上块的帧内预测模式中确定作为角度模式的预测模式。
角度模式中的块的帧内预测模式的索引=Max(左块的帧内预测模式的索引,上块的帧内预测模式的索引)
如果平面模式的索引为1、DC模式的索引为0、角度模式的索引大于1,并且左块的帧内预测模式和上块的帧内预测模式中的仅一个是角度模式,则左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较大者为角度模式。
MPM_set_2:如果左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)不相同,并且两者的值均大于1,则可以如下执行配置。在此,帧内预测模式两者的值均大于1表示其帧内预测模式不是DC模式或平面模式。
mpm[0]=leftIntraDir;
mpm[1]=aboveIntraDir;
通过比较leftIntraDir和upperIntraDir的索引大小并假设较大值为leftIntraDir,提供了如下描述。
mpm[2]=(leftIntraDir+62)%65+2;//leftIntraDir-1;
mpm[3]=(leftIntraDir-1)%65+2;//leftIntraDir+1;
mpm[4]=(leftIntraDir+61)%65+2;//leftIntraDir-2;
mpm[5]=(leftIntraDir)%65+2;//leftIntraDir+2;
当填充mpm序列时,如果mpm与预先填充的mpm相同,则偏移值(诸如-1和+1)的绝对值可以增加1或2,或者增加预先配置的大小。
可以通过比较leftIntraDir和upperIntraDir的索引大小并且基于其中的较大值或较小值,如上所述应用偏移值来配置mpm[2]至mpm[5]。
根据本公开的实施例,如果左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)不相同,并且左块的帧内预测模式和上块的帧内预测模式是角度模式,解码器可以基于左块的帧内预测模式的索引和上块的帧内预测模式的索引的大小的比较,生成MPM列表。例如,可以使用左块的帧内预测模式的索引和上块的帧内预测模式的索引中的小值或大值来生成MPM列表。
更具体地,如果左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)不相同,并且左块的帧内预测模式和上块的帧内预测模式是角度模式,则解码器可以将左块的帧内预测模式和上块的帧内预测模式添加到MPM列表中。此外,解码器可以基于下述中的至少一个帧内预测模式来生成MPM列表:与比左块的预测模式的索引大1的索引相对应的角度模式;与比上块的帧内预测模式的索引大1的索引相对应的角度模式;与比左块的帧内预测模式的索引小1的索引相对应的角度模式;与比上块的帧内预测模式的索引小1的索引相对应的角度模式;与比左块的帧内预测模式的索引大2的索引相对应的角度模式;与比上块的帧内预测模式的索引大2的索引相对应的角度模式;与比左块的帧内预测模式的索引小2的索引相对应的角度模式;或与比上块的帧内预测模式的索引小2的索引相对应的角度模式。
如上所述,如果解码器将比左块的帧内预测模式的索引或上块的帧内预测模式的索引的值大1或小1的值添加到MPM列表,或者如果将比左块的帧内预测模式的索引或上块的帧内预测模式的索引的值大2或小2的值添加到MPM列表,则存在MPM列表包括重叠角度模式的可能性。即,如果左块的帧内预测模式的索引或上块的帧内预测模式的索引的差是1、2或大于62,则存在MPM列表包括重叠角度模式的可能性。因此,解码器可以以下文所述的方式生成MPM列表。
如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差等于1,则解码器可以基于下述中的至少一个来生成MPM列表:与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者小1的索引相对应的模式;与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较大者大1的索引相对应的角度模式;或者与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者小2的索引相对应的角度模式。
如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差等于或大于62,则解码器可以基于下述中的至少一个来生成MPM列表:与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者大1的索引相对应的角度模式;与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较大者小1的索引相对应的角度模式;或与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者大2的索引相对应的角度模式。
如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差等于2,则解码器可以基于下述中的至少一个来生成MPM列表:与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者大1的索引相对应的角度模式;与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者小1的索引相对应的角度模式;或与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较大者大1的索引相对应的角度模式。
如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差不等于1,如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差小于62,并且如果左块的帧内预测模式的索引与上块的帧内预测模式的索引之差不等于2,则解码器基于下述中的至少一个来生成MPM列表:与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者小1的索引相对应的角度模式;与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较小者大1的索引相对应的角度模式;或者与比左块的帧内预测模式的索引和上块的帧内预测模式的索引中的较大者小1的索引相对应的角度模式。
作为使用MRL时的MPM配置的另一示例2,用于从现有的MPM列表配置方法中排除平面模式和/或DC模式的确定方法如下。
如果左模式和上模式都不是角度模式,
mpm[0]=VER_IDX;
mpm[1]=HOR_IDX;
mpm[2]=VER_IDX-4;
mpm[3]=VER_IDX+4;
如果左模式和上模式中至少存在一个角度模式,则可以如下执行配置。在这种情况下,可以如下给出插入MPM列表中的模式的顺序。
{左模式,上模式,平面,DC,左模式-1,左模式+1,垂直模式,水平模式}
以上顺序中的较早轮到的可以表示要较早轮到被包含在MPM列表中。左模式表示左块的帧内预测模式,而上模式表示上块的帧内预测模式。垂直模式是角度模式之一,并且是指垂直模式。水平模式是指水平模式。
如果左块的帧内预测模式和上块的帧内预测模式相同,则可能会发生特殊情况。在这种情况下,上块的帧内预测模式可以不被包括在MPM列表中。
例如,假定下述内容。
leftIntraDir=左模式
aboveIntraDir=上模式
AngMode可以是在确定左帧内预测模式和上帧内预测模式之后可用的角度模式。
availNonAngMode可以是在确定左帧内预测模式和上帧内预测模式之后可用的非角度模式。如果非角度模式不可用,则availNonAngMode可以为-1(availNonAngMode=-1)。
基于上述假设,可以如下生成MPM列表。
偏移=62;
mod=偏移+3;
mpm[0]=AngMode;
mpm[1]=((AngMode+偏移)%mod)+2;//角度模式的-1模式
mpm[2]=((AngMode-1)%mod)+2;//角度模式的+1模式
mpm[3]=(AngMode>48&&AngMode<52)?HOR_IDX:VER_IDX;
如果左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)是不同的角度模式,则可以如下配置MPM列表。
根据定义,左块的帧内预测模式(左模式)和上块的帧内预测模式(上模式)两者都是角度模式并且彼此不同。可以如下给出插入MPM列表中的模式顺序。
{左模式,上模式,平面,DC,左模式-1,左模式+1,上模式1,上模式+1}
上述顺序中的较早轮到的可以表示要较早轮到被包括在MPM列表中。
可能出现比左块的帧内预测模式的索引小1的索引相对应的角度模式与上块的帧内预测模式相同的情况。在这种情况下,在比左块的帧内预测模式的索引大1的索引相对应的角度模式之前,比上块的帧内预测模式的索引小1的索引相对应的角度模式可以被包括在MPM列表中。
例如,可以通过下述过程来生成MPM列表。
leftIntraDir=左模式
aboveIntraDir=上模式
mode=leftIntraDir;
angMinus=((mode+偏移)%mod)+2;//角度-1;
angPlus=((mode-1)%mod)+2;//角度+1;
mpm[0]=leftIntraDir;m[0]=AngMode;
mpm[1]=aboveIntraDir;
if(angMinus==aboveIntraDir)
{
mpm[2]=((aboveIntraDir+偏移)%mod)+2;//上;角度-1;
mpm[3]=angPlus;
}
else
{
mpm[2]=angMinus;
if(aboveIntraDir==angPlus)mpm[3]=((aboveIntraDir-1)%mod)+2;
else mpm[3]=angPlus;
}
作为使用MRL时的MPM配置的另一示例3,将用于从现有的MPM列表配置方法中排除平面模式和/或DC模式的确定方法被表示为下述伪代码。
1.如下导出具有x=0..5的candModeList[x]:
-CandModeList[0]=candIntraPredModeA CandModeList[1]=!candIntraPredModeA
CandModeList[2]=INTRA_ANGULAR50
CandModeList[3]=INTRA_ANGULAR18
CandModeList[4]=INTRA_ANGULAR46
CandModeList[5]=INTRA_ANGULAR54
-如果candIntraPredModeB等于candIntraPredModeA,则以下适用:
-如果candIntraPredModeA大于1,则如下导出具有x=0..5的candModeList[x]:
candModeList[0]=candIntraPredModeA
CandModeList[1]=2+((candIntraPredModeA+62)%65)
CandModeList[2]=2+((candIntraPredModeA-1)%65)
CandModeList[3]=2+((candIntraPredModeA+61)%65)
-否则(candIntraPredModeB不等于candIntraPredModeA),则以下适用:
-将变量biggerIdx设置为等于biggerIdx=candModeList[0]>candModeList[1]?0:1
-如果candIntraPredModeA和candIntraPredModeB都大于1,则如下导出具有x=2..5的candModeList[x]:
candModeList[0]=candIntraPredModeA
candModeList[1]=candIntraPredModeB
-如果candModeList[biggerIdx]-candModeList[biggerIdx]既不等于64也不等于1,则以下适用:
candModeList[2]=2+((candModeList[biggerIdx]+62)%65)
candModeList[3]=2+((candModeList[biggerIdx]-1)%65)
-否则,以下适用:
candModeList[2]=2+((candModeList[biggerIdx]+61)%65)
candModeList[3]=2+(candModeList[biggerIdx]%65)
图23是示出根据本公开的实施例的通过将诸如+1和-1的偏移应用于最可能模式(MPM)来推导新的MPM的方法的图。
在MPM配置方法中,可以基于相邻块中使用的角度模式,通过应用偏移1来创建新的MPM。在此,偏移1是-1、+1、-2、+2等,并且大小和顺序可以取决于方法而改变。
例如,可以通过下述方法来执行配置。
示例1:
偏移2=61,Mod=偏移2+3
AngMod:角度模式
示例1-1:((Angmod+偏移)%Mod)+2:与将-1应用于角度模式相同
示例1-2:((Angmod-1)%Mod)+2:与将+1应用于角度模式相同
示例1-3:((Angmod+偏移-1)%Mod)+2:与将-2应用于角度模式相同
示例1-4:(Angmod%Mod)+2:与将+2应用于角度模式相同
示例1-5:((Angmod+偏移-2)%Mod)+2:与将-3应用于角度模式相同
重新组织上述等式如下。
可以通过下述等式来获得比帧内预测模式的索引小1的索引。
比帧内预测模式的索引小1的索引=((帧内预测模式的索引+偏移)%(偏移+3))+2
可以通过下述等式来获得比帧内预测模式的索引大1的索引。
比帧内预测模式的索引大1的索引=((帧内预测模式的索引-1)%(偏移+3))+2
可以通过下述等式来获得比帧内预测模式的索引小2的索引。
比帧内预测模式的索引小2的索引=((帧内预测模式的索引+偏移-1)%(偏移+3))+2
可以通过下述等式来获得比帧内预测模式的索引大2的索引。
比帧内预测模式的索引大2的索引=((帧内预测模式的索引)%(偏移+3))+2
在此,偏移可以是61。
在存在65个角度模式的情况下,如果对于角度模式索引使用从2到66的信令是可能的,则当在示例1的角度模式66中增加1时,导出角度模式3。这可以在图23a中看出。在示例1中,如果角度模式为2,则当应用-1时,角度模式变为65,这可以在图23b中看出。如果在当前角度模式中增加某一数字(角度模式+偏移),并且其索引变为大于66,则可能无法如示例1的预期进行操作,并且示例1的一些情况可以具有结果值+1。如果从当前角度模式中减去某一数字(角度模式2-偏移),并且其索引变为小于2,则可能无法如示例1的预期进行操作,并且一些情况可以具有示例1的结果值-1。
示例2:
偏移3=62,Mod=偏移3+3
AngMod:角度模式
AngMod:角度模式
示例2-1:((Angmod+偏移)%Mod)+2:与将-1应用于角度模式相同
示例2-2:((Angmod-1)%Mod)+2::与将+1应用于角度模式相同
示例2-3:((Angmod+偏移-1)%Mod)+2:与将-2应用于角度模式相同
示例2-4:(Angmod%Mod)+2:与将+2应用于角度模式相同
示例2-5:((Angmod+偏移-2)%Mod)+2:与将-3应用于角度模式相同
示例2是使用偏移3值62代替示例1中的偏移2值61的示例。在这种情况下,如果(角度模式+偏移值)大于66,则在图23c中可以看出如示例2预期地执行操作,与示例1的情况不同。即使(角度模式-偏移值)小于2,可以在图7d中看出如示例2预期地执行操作。
图24是示出根据本公开的实施例的通过将诸如+1和-1的偏移应用于最可能模式(MPM)来将用于推导新的MPM的方法应用于非正方形块的示例的图。
非正方形块可以使用所增加的广角度模式。比现有角度模式2至66更大的绝对角度是可用的。如果用于该非正方形块的MPM配置方法与示例1中的相同,则可以如下进行配置。在相邻块的一个角度模式的情况下,该模式为2。
偏移2=61,Mod=偏移2+3
AngMod=2,
示例1-1:((Angmod+偏移)%Mod)+2=65:与将-1应用于角度模式相同
示例1-2:((Angmod-1)%Mod)+2=3:与将+1应用于角度模式相同
示例1-3:((Angmod+偏移-1)%Mod)+2=64:与将-2应用于角度模式相同
示例1-4:(Angmod%Mod)+2=4:与将+2应用于角度模式相同
示例1-5:((Angmod+偏移-2)%Mod)+2=63:与将-3应用于角度模式相同
从角度模式2依次导出的角度模式是65、3、64、4和63,并且6MPM可以包括下述角度模式中的至少一个。
6MPM=[2,65,3,64,4,63]
这可以在图8a中看出,其中,模式2指示模式67,模式3指示68,以及模式4指示扩展到69的角度模式。因此,在矩形块中,6MPM变为[67,65,68,64,69,63]。在使用扩展角度模式的情况下,应用-2、+1、-3、+2和-4,而不是如示例1所预期的,应用从参考角度模式67得出的-1、+1、-2、+2和+3。这偏离了充分利用参考角度模式的周边角度的意图。
作为另一示例,当角度模式为66时,如下提供示例1。
偏移2=61,Mod=偏移2+3
AngMod=66,
示例1-1:((Angmod+偏移)%Mod)+2=65:与将-1应用于角度模式相同
示例1-2:((Angmod-1)%Mod)+2=3:与将+2应用于角度模式相同
示例1-3:((Angmod+偏移-1)%Mod)+2=64:与将-2应用于角度模式相同
示例1-4:(Angmod%Mod)+2=4:与将+3应用于角度模式相同
示例1-5:((Angmod+偏移-2)%Mod)+2=63:与将-3应用于角度模式相同
从角度模式66依次导出的角度模式是65、3、64、4和63,并且6MPM可以包括下述角度模式中的至少一个。
6MPM=[66,65,3,64,4,63]
在如图8b所示的垂直矩形块的情况下,如果使用广角,则模式66指示模式-1、模式65指示-2,模式64指示-3,并且模式63指示-4。因此,相应块中的6MPM可以包括下述角度模式中的至少一个。
6MPM=[-1,-2,3,-3,4,-4]
代替将-1,+1,-2,+2和+3值应用于块的广角度模式-1而使用-1,3,-2,+3和-3。这偏离了充分利用角度模式-1的周边角度模式的意图。
为此,根据是否存在正方形块,使用示例1的方法或示例2的方法来配置MPM。示例1的方法应用于正方形块,并且如果不是正方形块,则使用示例2的方法。
图25是用于根据本公开的实施例,描述用于对其应用了MRL的矩形块的参考样本的图。
如上所述,解码器可以基于所接收的比特流,获得当前块的帧内预测模式的索引。更具体地,解码器可以从比特流中获得语法元素,并且可以基于语法元素获得当前块的帧内预测模式的索引。
解码器可以从所接收到的比特流中获得当前块的参考样本线索引。解码器可以通过解析比特流来获得参考样本线索引。
解码器可以基于帧内预测模式的索引或参考样本线索引中的至少一个来生成多个参考样本和附加参考样本。
图25示出了其中W:H=2:1的矩形情况。当前块的宽度和长度在图21中是相同的,而在图25中,当前块的宽度和高度可以彼此不同。
在图25中,段B、段C、段D或段E可以是指多个参考样本。可以与参考样本线索引无关地确定多个参考样本的数量。例如,可以基于当前块的宽度和高度来确定多个参考样本的数量。
在图25中,段A或段F可以是指附加的参考样本。可以基于帧内预测模式的索引或参考样本线索引中的至少一个来确定多个参考样本的数量。例如,可以基于当前块的宽度和高度来确定多个参考样本的数量。这将在下文更详细地描述。
与图21的段A和段F相比,图25的段A和段F在样本数量上可以不同。W:H的比率的较大差异可能会导致样本数量的较大差异。如果将大于45度的角度模式应用于水平或垂直矩形预测块,则与正方形预测块不同,可能会生成附加参考样本。
编码器或解码器可以基于参考样本线索引或当前块的宽度与高度的比率来确定附加参考样本的数量。
例如,在段A中,可以生成与参考样本线索引(MRL索引)一样多的附加参考样本。更具体地,可以将段A的附加参考样本的数量定义为MRL索引+偏移。预定数量的样本可以被用于偏移。在图25中,在具有MRL_index为2的3个参考样本的情况下,可以生成与3+偏移一样多的附加参考样本。
在段F中,可以生成与(MRL_index×whRatio)一样多的附加参考样本。在此,MRL_index可以表示参考样本线索引,而whRatio可以表示当前块的宽度和高度的比率。编码器或解码器可以将附加参考样本的数量确定为参考样本线索引×当前块的宽度和高度的比率+偏移。编码器或解码器可以在段F中生成与(MRL_index×whRatio+(MRL_index或偏移))一样多的附加参考样本。在此,偏移可以是2或3。即,可以生成与((2或3)+MRL_index×whRatio)一样多的附加参考样本。变量whRatio可以是Min(Abs(Log2(nTbW/nTbH)),2)。然而,whRatio不限于此,并且可以是max(nTbW/nTbH,1)。
图25示出了水平矩形预测块的形式,因此段F可能需要比段A更多的样本。相反,在垂直矩形预测块类型中,段A可能需要比段F更多的样本。
图26是根据本公开的实施例的用于描述用于向其应用MRL的矩形块的参考样本的图。
图26示出了W:H=1:2的矩形的情况。与图25不同,图26示出了垂直矩形预测块。解码器或编码器可以将应用于图25的段F的方法应用于图26的段A。
图27是根据本公开的实施例的用于描述用于向其应用MRL的矩形块的参考样本的图。
图27示出了W:H=1:4的矩形的情况。解码器或编码器可以将应用于图25的段F的方法应用于图27的1:4块的段A。解码器或编码器可以将应用于图25的段A的方法应用于图27的段F。基于在图25至图27中所述的方法,可以针对所有比率生成附加参考样本,而不限制垂直/水平矩形预测块的宽高比。
在下文中,将更详细地描述多个参考样本和附加参考样本的生成。
如果帧内预测模式的索引大于或等于34,并且映射到帧内预测模式的索引的帧内预测模式的角度大于或等于0,则编码器或解码器可以基于与当前块相邻的先前重构的上块,生成多个第一参考样本和第一附加参考样本。
帧内预测模式的索引是指与帧内预测模式相对应的索引。如已经描述过,可能存在67个帧内预测模式。可以基于当前块的大小来扩展帧内预测模式。
帧内预测模式的角度是映射到帧内预测模式的索引的元素。编码器或解码器可以基于预定表,将帧内预测模式的索引映射到帧内预测模式的角度。帧内预测模式的索引可以以一对一的方式对应于帧内预测模式。然而,帧内预测模式的角度可以以一对多的方式对应于帧内预测模式。即,帧内预测模式的角度可以表示不同的帧内预测模式。例如,如果帧内预测模式的索引是18,以及帧内预测模式的索引是50,则帧内预测模式的角度可以是0。
多个第一参考样本可以被包括在参考样本中。第一附加参考样本可以被包括在附加样本中。可以基于位于当前块的左上、上或右上的至少一个上的先前重构的块来获得多个第一参考样本和第一附加参考样本。
如果帧内预测模式的索引小于34,并且帧内预测模式的角度大于或等于0,则编码器或解码器可以基于与当前块相邻的先前重构的左块,生成多个第二参考样本和第二附加参考样本。
多个第二参考样本可以被包括在多个参考样本中。第二附加参考样本可以被包括在附加样本中。可以基于位于当前块的左下、左或左上的至少一个上的先前重构的块来获得多个第二参考样本和第二附加参考样本。
更具体地,编码器或解码器可以基于先前重构的上块中包括的样本中当,与多个第一参考样本的位置相对应的样本,来获得多个第一参考样本。对应于第一参考样本的位置的样本可以是包括在当前块的左上、上或右上块中的至少一个先前重构的块中的样本。
当当前块的左上像素的位置被配置为(0,0)时,与第一参考样本的位置相对应的先前重构的样本的位置可以包括(-1-refIdx+x,-1-refIdx)。在此,x可以是0至nTbW+refIdx+1。refIdx可以是参考样本线索引。nTbW可以是指当前块的宽度。
与第一参考样本的位置相对应的先前重建的样本的位置可以进一步包括(-1-refIdx+x,-1-refIdx)。在此,x可以是nTbW+2+refIdx至refW+refIdx。refIdx可以是参考样本线索引。nTbW可以是指当前块的宽度。refW可以是指第一参考样本的宽度。
编码器或解码器可以通过在多个第一参考样本当中的最右位置处填充样本来获得第一附加参考样本。第一参考样本当中最右样本的位置可以包括(-1+refW,-1-refIdx)。如果存在多个第一附加参考样本,则第一附加参考样本可以全部具有相同的值。编码器和解码器可以基于参考样本线索引、当前块的宽度和高度的比率以及偏移来确定第一附加参考样本的数量。上文已经对此进行了描述,因此将省略冗余的描述。
编码器或解码器可以基于先前重构的左块中包括的样本当中,与多个第二参考样本的位置相对应的样本,来获得多个第二参考样本。与第二参考样本的位置相对应的样本可以是包括在当前块的左下、左或左上块中的至少一个先前重构的块中包括的样本。
当当前块的左上像素的位置被配置为(0,0)时,与第二参考样本的位置相对应的先前重建的样本的位置可以包括(-1-refIdx,-1-refIdx+x)。在此,x可以包括0至nTbH+refIdx+1。refIdx可以是参考样本线索引。nTbH可以是指当前块的高度。
与第二参考样本的位置相对应的先前重建的样本的位置可以进一步包括(-1-refIdx,-1-refIdx+x)。在此,x可以是nTbH+2+refIdx至refH+refIdx。refIdx可以是参考样本线索引。nTbH可以是指当前块的高度。refH可以是指第二参考样本的高度。
编码器和解码器可以通过在多个第二参考样本中的最低位置处填充样本来获得第二附加参考样本。第二参考样本当中的最低样本的位置可以包括(-1-refIdx,-1+refH)。如果存在多个第二附加参考样本,则第二附加参考样本可以全部具有相同的值。编码器和解码器可以基于参考样本线索引、当前块的宽度和高度的比率以及偏移来确定第二附加参考样本的数量。上文已经对此进行了描述,因此将省略冗余的描述。
在下文中,将更详细地描述应用在图25至图27中提出的方法的情况。
编码器或解码器可以生成predSamples[x][y]如下(其中x=0..nTbW-1,y=0..nTbH-1),其是预测样本的值。
如果帧内预测模式的索引大于或等于34,则编码器或解码器执行下述过程。
1.参考样本阵列ref[x]被指定如下:
-以下适用:
ref[x]=p[-1-refIdx+x][-1-refIdx],其中,x=0..nTbW+refIdx
-如果intraPredAngle小于0,则将主参考样本阵列扩展如下:
-当(nTbH*intraPredAngle)>>5小于-1时,
ref[x]=p[-1-refIdx][-1-refIdx+((x*invAngle+128)>>8)],
其中,x=-1..(nTbH*intraPredAngle)>>5(8 35)
-否则,
ref[x]=p[-1-refIdx+x][-1-refIdx],其中,x=nTbW+refIdx+1..refW
-当refIdx大于0时,可以如下填充附加参考样本,其中,x=1..(3*refIdx)。
考虑到矩形块,对于填充样本的数量,如果满足W/H>1而不是(3*refIdx),则应用被应用于图25的段F的方法之一,以及如果满足W/H<1,则可以应用被应用到图25的段A的方法之一。编码器或解码器可以如下执行填充。
ref[refW+x]=p[-1-refIdx+refW][-1-refIdx]
2.如下导出预测样本predSamples[x][y]的值,其中,x=0..nTbW-1,y=0..nTbH-1:
-索引变量iIdx和乘法因子iFact被导出如下:
iIdx=((y+1+refIdx)*intraPredAngle)>>5
iFact=((y+1+refIdx)*intraPredAngle)&31
-取决于iFact的值,以下适用:
-如果iFact不等于0,则如下导出预测样本predSamples[x][y]的值:
predSamples[x][y]=
((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)>>5
-否则,如下导出预测样本predSamples[x][y]的值:
predSamples[x][y]=ref[x+iIdx+1]
然而,本公开不限于上述方法。如果帧内预测模式的索引大于或等于34,则编码器或解码器执行下述过程。
1-1.参考样本阵列ref[x]被指定如下:
-以下适用:
ref[x]=p[-1-refIdx+x][-1-refIdx],其中,x=0..nTbW+refIdx+1
-如果intraPredAngle小于0,则扩展主参考样本阵列如下:
ref[x]=p[-1-refIdx][-1-refIdx+Min((x*invAngle+256)>>9,nTbH)],其中,x=-nTbH..1
-否则,
ref[x]=p[-1-refIdx+x][-1-refIdx],其中,x=nTbW+2+refIdx..refW+refIdx
-当refIdx大于0时,可以如下填充附加参考样本ref[refW+refIdx+x],其中,x=1..(Max(1,nTbW/nTbH)*refIdx+1)。
考虑到矩形块,填充样本的数量可以是(Max(1,nTbW/nTbH)*refIdx+1)。编码器或解码器可以如下执行填充。
ref[refW+refIdx+x]=p[-1+refW][-1-refIdx]
2-1.如下导出预测样本predSamples[x][y]的值,其中,x=0..nTbW-1,y=0..nTbH-1:
-索引变量iIdx和乘法因子iFact被导出如下:
iIdx=(((y+1+refIdx)*intraPredAngle)>>5)+refIdx
iFact=((y+1+refIdx)*intraPredAngle)&31
如果cIdx等于0,则以下适用:
j=0..3的插值滤波器系数fT[j]被导出如下:
fT[j]=filterFlag?fG[iFact][j]:fC[iFact][j]
预测样本predSamples[x][y]的值被导出如下:
否则(cIdx不等于0),取决于iFact的值,以下适用:
如果iFact不等于0,则预测样本predSamples[x][y]的值被导出如下:
predSamples[x][y]=
((32-iFact)*ref[x+iIdx+1]+iFact*ref[x+iIdx+2]+16)>>5
否则,预测样本predSamples[x][y]的值被导出如下:
predSamples[x][y]=ref[x+iIdx+1]
与上文不同,如果帧内预测模式的索引小于34,则编码器或解码器执行下述过程。
1.参考样本阵列ref[x]被指定如下:
-以下适用:
ref[x]=p[-1-refIdx][-1-refIdx+x],其中,x=0..nTbH+refIdx
-如果intraPredAngle小于0,则扩展主参考样本阵列如下:
-当(nTbW*intraPredAngle)>>5小于-1时,
ref[x]=p[-1-refIdx+((x*invAngle+128)>>8)][-1-refIdx],
其中,x=-1..(nTbW*intraPredAngle)>>5
-否则,
ref[x]=p[-1-refIdx][-1-refIdx+x],其中,x=nTbH+refIdx+1..refH
-当refIdx大于0时,可以如下填充附加参考样本ref[refH+x],其中,x=1..(3*refIdx)。
考虑到矩形块,对于填充样本的数量,如果满足W/H>1而不是(3*refIdx),则应用被应用于图25的段A的方法之一,并且如果满足W/H<1,则应用被应用于图25的段F的方法之一。编码器或解码器可以如下执行填充。
ref[refH+x]=p[-1-refIdx][-1-refIdx+refH]
然而,本公开不限于此。如果帧内预测模式的索引小于34,则编码器或解码器执行下述过程。
1-1.参考样本阵列ref[x]被指定如下:
-以下适用:
ref[x]=p[-1-refIdx][-1-refIdx+x],其中,x=0..nTbH+refIdx+1
-如果intraPredAngle小于0,则扩展主参考样本阵列如下:
ref[x]=p[-1-refIdx+Min((x*invAngle+256)>>9,nTbW)][-1-refIdx],其中,x=-nTbW..-1
-否则,
ref[x]=p[-1-refIdx][-1-refIdx+x],其中x=nTbH+2+refIdx..refH+refIdx
-当refIdx大于0时,可以填充附加参考样本ref[refH+x]如下,其中,x=1..(Max(1,nTbW/nTbH)*refIdx+1)
考虑到矩形块,填充样本的数量可以是(Max(1,nTbW/nTbH)*refIdx+2)。编码器或解码器可以如下执行填充。
ref[refH+refIdx+x]=p[-1+refH][-1-refIdx]
可以通过各种手段来实现本发明的上述实施例。例如,可以通过硬件、固件、软件或其组合来实现本发明的实施例。
对于通过硬件实现的情况,可以通过专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等中的一个或多个来实现根据本发明的实施例的方法。
在通过固件或软件实现的情况下,可以以执行上述功能或操作的模块、过程或函数的形式来实现根据本发明的实施例的方法。可以将软件代码存储在存储器中并由处理器驱动。存储器可以位于处理器内部或外部,并且可以通过各种已知的方式与处理器交换数据。
还可以以诸如由计算机执行的程序模块的包括计算机可执行指令的记录介质的形式来实现某些实施例。计算机可读介质可以是可由计算机访问的任何可用介质,并且可以包括所有易失性、非易失性、可移除和不可移除的介质。另外,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的方法或技术实现的所有易失性、非易失性、可移动和不可移动介质。通常,通信介质包括计算机可读指令、调制数据信号的其他数据(诸如数据结构或程序模块)或其他传输机制,并且包括任何信息传输介质。
本发明的上述描述仅用于说明目的,并且将会理解,本发明所属的本领域的普通技术人员可以在不改变本发明的技术思想或者基本特征的情况下对本发明进行改变,并且本发明可以以其他特定形式容易地被修改。因此,上述实施例是说明性的,并且在所有方面均不受限制。例如,被描述为单个实体的每个组件可以被分布和实现,并且同样,被描述为被分布的组件也可以以关联的方式被实现。
本发明的范围由所附权利要求书而不是上述详细描述来限定,并且从所附权利要求书的含义和范围及其等效物导出的所有改变或修改都应解释为包括在本发明的范围内。