具体实施方式
考虑到本发明中的功能,本说明书中使用的术语可以是当前广泛使用的通用术语,但是可以根据本领域的技术人员的意图、习俗或新技术的出现而改变。另外,在某些情况下,可能存在申请人任意选择的术语,并且在这种情况下,其含义在本发明的相应描述部分中进行了描述。因此,应基于整个说明书中的术语和内容的实质含义来解释本说明书中使用的术语。
在本说明书中,一些术语可以解释如下。在一些情况下,编译可以解释为编码或解码。在本说明书中,通过执行视频信号的编码(编译)来生成视频信号比特流的装置被称为编码装置或编码器,并且执行视频信号比特流的解码(解码)以重构视频信号的装置被称为解码装置或解码器。另外,在本说明书中,视频信号处理装置被用作包括编码器和解码器两者的概念的术语。信息是包括所有值、参数、系数、元素等的术语。在一些情况下,含义被不同地解释,因此本发明不限于此。“单元”被用作指代图像处理的基本单位或图片的特定位置的含义,并且指代包括亮度分量和色度分量两者的图像区域。另外,“块”指代包括亮度分量和色度分量(即,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。帧内预测单元152在当前图片中执行帧内预测,并且帧间预测单元154执行帧间预测以通过使用存储在DPB 156中的参考图片来预测当前图片。帧内预测单元152根据当前图片中的重构样本执行帧内预测,并将帧内编译信息发送到熵编译单元160。帧内编码信息可以包括帧内预测模式、最可能模式(MPM)标记和MPM索引中的至少一种。帧间预测单元154可以包括运动估计单元154a和运动补偿单元154b。运动估计单元154a参考重构的参考图片的特定区域以获得当前区域的运动矢量值。运动估计单元154a将关于参考区域的运动信息(参考图片索引、运动矢量信息等)发送到熵编译单元160。运动补偿单元154b使用从运动估计单元154a发送的运动矢量值来执行运动补偿。帧间预测单元154将包括关于参考区域的运动信息的帧间编码信息发送到熵编译单元160。
当执行上述图片预测时,变换单元110变换在原始图片和预测图片之间的残差值以获得变换系数值。在这种情况下,可以以图片内的特定块为单位执行变换,并且可以在预设范围内改变特定块的大小。量化单元115对在变换单元110中生成的变换系数值进行量化,并将其发送到熵编译单元160。
熵编译单元160对量化的变换系数、帧内编译信息和帧间编译信息进行熵编译以生成视频信号比特流。在熵编译单元160中,可以使用可变长度编译(VLC)方法、算术编译方法等。VLC方法将输入的符号变换成连续的码字,并且码字的长度可以是可变的。例如,频繁出现的符号被表达为短码字,而不太频繁出现的符号被表达为长码字。作为VLC方法,可以使用基于上下文的自适应可变长度编译(CAVLC)方法。算术编译将连续的数据符号变换成单个小数,并且算术编译可以获得表示每个符号所需的最佳小数比特数。作为算术编译,可以使用基于上下文的自适应算术编译(CABAC)。
使用网络抽象层(NAL)单元作为基本单位来封装所生成的比特流。NAL单元包括整数个编译的编译树单元。为了在视频解码器中对比特流进行解码,首先,必须将比特流分离成NAL单元,并且然后必须对每个分离的NAL单元进行解码。同时,可以通过诸如图片参数集(PPS)、序列参数集(SPS)、视频参数集(VPS)等等的较高级别集合的原始字节序列有效载荷(RBSP)来发送对视频信号比特流进行解码所需的信息。
同时,图1的框图示出根据本发明的实施例的编码装置100,并且分开显示的块在逻辑上区分并示出编码装置100的元件。因此,取决于设备的设计上述编码装置100的元件可以被安装为一个芯片或多个芯片。根据实施例,上述编码装置100的每个元件的操作可以由处理器(未示出)执行。
图2是根据本发明的实施例的视频信号解码装置200的示意性框图。参考图2,本发明的解码装置200包括熵解码单元210、逆量化单元220、逆变换单元225、滤波单元230和预测单元250。
熵解码单元210对视频信号比特流进行熵解码,并提取每个区域的变换系数、帧内编码信息和帧间编码信息。逆量化单元220对熵解码的变换系数进行逆量化,并且逆变换单元225使用逆量化的变换系数来重构残差值。视频信号处理装置200通过将在逆变换单元225中获得的残差值与在预测单元250中获得的预测值相加来重构原始像素值。
同时,滤波单元230对图片执行滤波以改善图像质量。这可以包括用于减少块失真的去块滤波器和/或用于去除整个图片的失真的自适应环路滤波器。滤波后的图片被输出或存储在DPB 256中,以用作下一个图片的参考图片。
预测单元250包括帧内预测单元252和帧间预测单元254。预测单元250通过使用通过上述熵解码单元210解码的编码类型、每个区域的变换系数和帧内/帧间编码信息来生成预测图片。为了重构其中执行解码的当前块,可以使用当前图片或包括当前块的其他图片的解码区域。在重构中,仅将当前图片,即,仅执行帧内预测的图片(或图块/切片)称为帧内图片或I图片(或图块/切片),并且将能够执行帧内预测和帧间预测的图片(或图块/切片)称为帧间图片(或图块/切片)。为了预测帧间图片(或图块/切片)当中的每个块的样本值,使用最多一个运动矢量和参考图片索引的图片(或者图块/切片)被称为预测图片或P图片(或图块/切片),并且使用最多两个运动矢量和参考图片索引的图片(或图块/切片)称为双向预测图片或B图片(或图块/切片)。换句话说,P图片(或图块/切片)使用最多一个运动信息集来预测每个块,并且B图片(或图块/切片)使用最多两个运动信息集来预测每个块。这里,运动信息集包括一个或多个运动矢量和一个参考图片索引。
帧内预测单元252使用帧内编码信息和当前图片中的重构的样本来生成预测块。如上所述,帧内编码信息可以包括帧内预测模式、最可能模式(MPM)标记和MPM索引中的至少一种。帧内预测单元252通过使用位于当前块的左侧和/或上侧的重构的样本作为参考样本来预测当前块的样本值。在本说明书中,样本和样本值可以分别指代像素和像素值。根据一个实施例,参考样本可以是与当前块的左边界线相邻的样本和/或与上边界线相邻的样本。根据另一实施例,参考样本可以是在距当前块的左边界预定距离之内的相邻的样本和/或在距当前块的上边界预定距离之内的相邻的样本。帧内预测单元252基于当前块的帧内预测模式来确定参考样本,并且使用所确定的参考样本来预测当前块的样本。可以通过单独用信号发送的索引(例如,帧内预测模式索引、MPM索引等)来确定当前块的帧内预测模式。当用信号发送MPM索引时,帧内预测单元252可以使用应用于邻近块的帧内预测模式或预定帧内预测模式来执行帧内预测。在这种情况下,当前块的邻近块可以包括左(L)块、上(A)块、左下(BL)块、右上(AR)块或左上(AL)块。
帧间预测单元254使用参考图片和存储在DPB 256中的帧间编码信息来生成预测块。帧间编译信息可以包括用于参考块的当前块的运动信息(参考图片索引、运动矢量信息等)。帧间预测可以包括L0预测、L1预测和双向预测。L0预测意指使用L0图片列表中包括的一个参考图片进行预测,并且L1预测意指使用L1图片列表中包括的一个参考图片进行预测。为此,可能需要一个运动信息集(例如,运动矢量和参考图片索引)。在双向预测方法中,可以使用多达两个参考区域,并且两个参考区域可以存在于同一参考图片中或可以存在于不同图片中。即,在双向预测方法中,可以使用多达两个运动信息集(例如,运动矢量和参考图片索引),并且两个运动矢量可以对应于相同的参考图片索引或不同的参考图片索引。在这种情况下,参考图片可以在时间方面在当前图片之前和之后显示(或输出)。
帧间预测单元254可以使用运动矢量和参考图片索引来获得当前块的参考块。参考块在与参考图片索引相对应的参考图片中。而且,由运动矢量指定的块的样本值或其内插值可以用作当前块的预测器。对于具有子像素(sub-pel)单位像素精度的运动预测,例如,可以使用用于亮度信号的8抽头内插滤波器和用于色度信号的4抽头内插滤波器。然而,以子像素为单位的用于运动预测的内插滤波器不限于此。以这种方式,帧间预测单元254执行运动补偿以根据先前使用运动信息重构的运动图片来预测当前单元的纹理。
通过将从帧内预测单元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示出根据本发明的实施例的帧间预测。如上所述,解码器通过参考另一个解码图片的重构样本来预测当前块。参考图5,解码器基于当前块32的运动信息来获得参考图片中的参考块42。在这种情况下,运动信息可以包括参考图片索引和运动矢量50。参考图片索引指示参考图片列表中的当前块的参考图片。另外,运动矢量50表示当前图片中的当前块32的坐标值与参考图片中的参考块42的坐标值之间的偏移。解码器基于参考块42的样本值来获得当前块32的预测器,并使用该预测器来重构当前块32。
同时,根据本发明的实施例,可以使用基于子块的运动补偿。即,当前块32被划分为多个子块,并且独立的运动矢量可以用于每个子块。因此,可以使用不同的参考块来预测当前块32中的每个子块。根据一个实施例,子块可以具有预定大小,诸如4X4或8X8。解码器使用每个子块的运动矢量来获得当前块32的每个子块的预测器。可以通过组合每个子块的预测器来获得当前块32的预测器,并且解码器可以使用所获得的当前块32的预测器来重构当前块32。
根据本发明的实施例,可以执行各种方法的基于子块的运动补偿。基于子块的运动补偿可以包括基于仿射模型的运动补偿(在下文中,仿射运动补偿或仿射运动预测)和基于子块的时间运动矢量预测(SbTMVP)。在下文中,将参考每个附图描述仿射运动补偿和SbTMVP的各种实施例。
图6示出根据本发明的实施例的仿射运动补偿。根据现有的帧间预测方法,因为对于当前块的每个L0预测和L1预测仅使用一个运动矢量来执行帧间预测,所以针对平移运动的预测进行了优化。然而,为了有效地执行用于放大/缩小、旋转和其他不规则运动的运动补偿,需要使用各种形状和大小的参考块44。
参考图6,在仿射运动补偿中,可以使用具有与当前块34不同的大小、形状和/或方向的参考块44来执行对当前块34的预测。也就是说,参考块44可以具有非矩形形状,并且其大小可以大于或小于当前块34。可以通过对当前块34执行仿射变换来获得参考块44。仿射变换可以包括使用三个控制点运动矢量(CPMV)的六参数仿射变换和使用两个控制点运动矢量的四参数仿射变换。将在后面描述与此相关的具体实施例。
图7示出4参数仿射运动补偿方法的实施例。为了减少仿射变换的计算量和信令开销,可以使用预定数量的控制点运动矢量(CPMV)来执行仿射运动预测。控制点运动矢量(CPMV)是与当前块的特定控制点(或样本位置)相对应的运动矢量。特定控制点可以包括当前块的边缘中的至少一个。在本发明的一个实施例中,将与当前块的左上角相对应的CPMV称为v0(或第一CPMV),将与当前块的右上角相对应的CPMV称为v1(或第二CPMV),并且将与当前块的左下角相对应的CPMV称为v2(或第三CPMV)。包括至少两个CPMV的CPMV集可以用于仿射运动预测。
根据图7的实施例,可以使用v0和v1来执行4参数仿射运动预测。由实线指示的当前块36可以使用在由虚线指示的位置处的参考块46来预测。当前块36的每个样本可以通过仿射变换被映射到不同的参考样本。更具体地,可以通过下面的等式1导出当前块36的样本位置(x,y)处的运动矢量(vx,vy)。
[等式1]
这里,(v0x,v0y)是与当前块36的左上角相对应的第一CPMV,并且(v1x,v1y)是与当前块的右上角相对应的第二CPMV。另外,w是当前块36的宽度。
图8示出基于子块的仿射运动补偿方法的实施例。如上所述,当使用仿射运动变换时,可以导出当前块的每个样本位置处的运动矢量(即,运动矢量场)。然而,为了减少计算量,根据本发明的实施例,可以执行基于子块的仿射运动补偿。如图8中所示,当前块可以包括多个子块,并且基于CPMV集获得每个子块的代表性运动矢量。根据实施例,每个子块的代表运动矢量可以是与子块的中心的样本位置相对应的运动矢量。根据又一实施例,可以将比一般运动矢量具有更高精度的运动矢量用作子块的运动矢量。为此,可以应用运动补偿内插滤波器。
可以以各种方式设置对其执行仿射运动补偿的子块的大小。根据本发明的一个实施例,子块可以具有预定的大小,诸如4X4或8X8。根据本发明的另一实施例,子块的大小MXN可以由下面的等式2确定。
[等式2]
这里,w是当前块的宽度,并且MvPre是运动矢量的分数精度。(v2x,v2y)是与当前块的左下角相对应的第三CPMV,并且可以根据实施例通过等式1来计算。max(a,b)是返回a和b中较大者的函数,并且abs(x)是返回x的绝对值的函数。另外,clip3(x,y,z)是如果z<x则返回x,如果z>y则返回y,否则返回z的函数。
解码器使用CPMV集的CPMV获得当前块的每个子块的运动矢量。另外,解码器使用每个子块的运动矢量来获得每个子块的预测器,并且组合每个子块的预测器以获得当前块的预测器。解码器可以使用所获得的当前块的预测器来重构当前块。
图9和10示出用于获得控制点运动矢量集以预测当前块的本发明的实施例。根据本发明的实施例,可以以各种方式获得用于当前块的预测的CPMV集。更具体地,可以通过参考一个或多个邻近块的运动矢量信息集来获得用于当前块的预测的CPMV集。在本发明的实施例中,运动矢量信息可以指示相应块的运动矢量或相应块的CPMV。另外,运动矢量信息集是指一个或多个块的运动矢量信息的集合。邻近块可以指包括当前块的预定邻近位置的块。在这种情况下,邻近块可以是包括预定邻近位置的编译单元,或者是包括邻近位置的预定单位(例如4X4、8X8)的区域。
可以存在可以被参考以导出当前块的CPMV的多个候选。因此,关于要被参考的邻近块的信息可以被单独地用信号发送以导出当前块的CPMV。根据本发明的实施例,可以用信号发送指示将被参考的动矢量信息的集合的指示符,以导出当前块的每个子块的运动矢量。指示符可以指示要被参考以导出当前块的每个子块的运动矢量的邻近块的运动矢量信息集。解码器可以获得指示符,并且可以通过参考由指示符指示的邻近块的运动矢量信息集来获得用于当前块的CPMV集的每个CPMV。根据更具体的实施例,解码器可以生成由一个或多个运动矢量信息集候选组成的候选列表。组成候选列表的每个运动矢量信息集候选是可用于导出当前块的运动矢量信息的邻近块的运动矢量集。在这种情况下,指示符可以是从候选列表中指示任何一个运动矢量信息集的索引。通过参考候选列表当中的基于指示符(即,索引)选择的运动矢量信息集,可以获得当前块的CPMV。在下文中,将描述可以被包括在用于导出当前块的运动矢量信息(或CPMV集)的候选列表中的运动矢量信息集候选的各种实施例。
图9示出获得当前块的CPMV集的实施例。在图9的实施例中,假定当前块的CPMV集包括两个CPMV,即,v0和v1。根据本发明的实施例,当前块的CPMV可以从与对应点相邻的邻近块的运动矢量中导出。参考图9,可以从与对应点相邻的邻近块A、B和C之一的运动矢量中导出v0,并且可以从与对应点相邻的邻近块D和E之一的运动矢量中导出v1。当将邻近块A、B、C、D和E的运动矢量分别称为vA、vB、vC、vD和vE时,可以如下面的等式3导出可以被包括在候选列表中的运动矢量信息集。
[等式3]
{(v0,v1)|v0={vA,vB,vC},v1={vD,vE}}
也就是说,可以获得由选自vA、vB和vC的v0和选自vD和vE的v1组成的对(v0,v1)。在这种情况下,从与当前块的左上角相邻的块的运动矢量中导出v0,并且从与当前块的右上角相邻的块的运动矢量中导出v1。根据又一实施例,可以基于当前块的图片顺序计数(POC)、邻近块的参考图片的POC以及当前块的参考图片的POC来执行运动矢量缩放。
可以生成包括所获得的运动矢量信息集候选的候选列表,并且可以用信号发送指示候选列表中的一个运动矢量信息集的指示符。根据本发明的又一实施例,候选列表可以包括用于其他方法的帧间预测的运动矢量信息集候选。例如,候选列表可以包括用于基于子块的时间运动矢量预测(SbTMVP)的运动矢量信息集候选。
解码器可以基于从候选列表中获得的运动矢量信息集来导出当前块的CPMV。根据实施例,解码器可以在没有单独的运动矢量差值的情况下通过将从候选列表中获得的运动矢量信息集的运动矢量作为当前块的CPMV使用来执行仿射合并预测。根据另一实施例,解码器可以获得用于当前块的CPMV的单独的运动矢量差值。解码器可以通过将从候选列表中获得的运动矢量信息集的运动矢量与运动矢量差值相加来获得当前块的CPMV。可以单独用信号发送指示解码器是否将单独的运动矢量差值用于当前块的仿射运动补偿的标记或索引。
图10示出获得当前块的CPMV集的另一实施例。根据本发明的另一实施例,可以从在其上执行仿射运动补偿的邻近块的运动矢量信息,即,邻近块的CPMV或运动矢量中,导出当前块的CPMV。在这种情况下,邻近块可以包括当前块的左邻近块和当前块的上邻近块。参考图10(a),左邻近块包括与当前块的左下角相邻的块,即,左块A和左下块D。此外,上邻近块包括与当前块的左上角相邻的块,即,左上块E,以及与当前块的右上角相邻的块,即,上块B和右上块C。解码器检查是否以预定顺序在邻近块上执行仿射运动补偿。当找到在其上执行仿射运动补偿的邻近块时,解码器使用邻近块的CPMV集(或运动矢量)来获得当前块的CPMV集。参考图10(b)的实施例,左块A的CPMV集可以被用于导出当前块的CPMV集。即,可以基于左块A的CPMV集(v2、v3、v4)来获得当前块的CPMV集(v0,v1)。
根据本发明的实施例,可以单独用信号发送关于要被参考的邻近块的信息,以导出当前块的CPMV。在这种情况下,当前块的邻近块的CPMV集可以是根据预定顺序组成上述候选列表的运动矢量信息集候选。更具体地,运动矢量信息集候选可以包括从当前块的左邻近块的CPMV(或运动矢量)中导出的第一候选,以及从当前块的上邻近块的CPMV(或运动矢量)中导出的第二候选。在这种情况下,左邻近块是与当前块的左下角相邻的块,而上邻近块是与当前块的左上角相邻的块或与当前块的右上角相邻的块。可以生成包括所获得的运动矢量信息集候选的候选列表,并且可以用信号发送指示候选列表中的一个运动矢量信息集的指示符。根据实施例,指示符可以指示被参考以导出当前块的每个子块的运动矢量的邻近块的位置信息。解码器可以通过参考由指示符指示的邻近块的CPMV集(或运动矢量)来获得当前块的CPMV集。
根据本发明的又一实施例,可以基于靠近对应点的邻近块的CPMV来导出当前块的CPMV。例如,可以通过参考左邻近块的CPMV来获得v0,并且可以通过参考上邻近块的CPMV来获得v1。可替选地,可以通过参考邻近块A、D或E的CPMV来获得v0,并且可以通过参考邻近块B或C的CPMV来获得v1。
图11示出6参数仿射运动补偿方法的实施例。为了准确预测更复杂的运动,可以执行使用三个或更多CPMV的仿射运动预测。参考图11,可以使用三个CPMV,即,v0、v1和v2来执行6参数仿射运动补偿。这里,v0是与当前块的左上角相对应的CPMV,v1是与当前块的右上角相对应的CPMV,并且v2是与当前块的左下角相对应的CPMV。可以基于v0、v1和v2来计算当前块的每个子块的运动矢量。
在6参数仿射模型中,可以以不同方式获得每个CPMV。每个CPMV可以被显式地用信号发送、从邻近块的运动矢量信息中导出或者从当前块的其他CPMV中计算出。在更具体的实施例中,三个CPMV中的至少一些从邻近块的运动矢量中被导出,并且剩余的CPMV可以从当前块的其他CPMV中计算出。例如,从与当前块的左上角相邻的块的运动矢量中导出v0,并且从与当前块的右上角相邻的块的运动矢量中导出v1,但是可以基于v0和v1来计算v2。根据实施例,可以基于v0和v1之间的差值来确定v2。以这种方式获得的CPMV可以组成上述的运动矢量信息集候选。
图12示出获得用于仿射运动补偿的控制点运动矢量集的另一实施例。根据本发明的另一实施例,用于当前块的仿射运动补偿的运动矢量信息集候选可以由选自v0、v1和v2的两个CPMV组成。更具体地,运动矢量信息集候选可以包括由v0和v1组成的运动矢量信息集,以及由v0和v2组成的运动矢量信息集。从邻近块的运动矢量中导出组成运动矢量信息集候选的每个CPMV。在这种情况下,可以通过在上面提及的指示符来用信号发送由v0和v1组成的运动矢量信息集候选与由v0和v2组成的运动矢量信息集候选中的哪一个集合要被参考以执行仿射运动补偿。
根据本发明的又一实施例,对于当前块中的每个子块可以使用不同的运动矢量信息集。例如,v0和v1可以被用于获得特定子块的运动矢量,而v0和v2可以被用于获得另一子块的运动矢量。可以基于子块在当前块中的位置或子块与每个CPMV之间的距离来确定哪个CPMV集被用于获得每个子块的运动矢量。
图13示出与局部搜索组合的仿射运动补偿方法。当执行仿射运动预测时,因为CPMV是与当前块的特定控制点(或样本位置)相对应的运动矢量,所以远离相应位置的子块的运动矢量可能不太准确。为了解决此问题,根据本发明的实施例,在执行仿射运动预测之后,可以附加地执行局部搜索。可以针对每个子块执行局部搜索。局部搜索是为当前子块寻找更准确的运动矢量或寻找与当前子块更相似的参考子块的过程。
参考图13,执行针对当前块60的仿射运动预测,使得可以获得如箭头所指示的当前块的每个子块的运动矢量。可以基于通过仿射运动预测获得的相应子块的运动矢量来获得当前子块62的参考子块72。在这种情况下,可以在距参考子块72的预定范围80内附加地执行局部搜索,以寻找与当前子块62更相似的块。可以在几个步骤中设置预定范围80。另外,因为应用局部搜索技术可能需要额外的计算量,所以可以用信号发送指示是否使用局部搜索的单独标记。
可以通过各种方法来执行局部搜索。例如,双边匹配或模板匹配可以被用于局部搜索。双边匹配是沿着运动轨迹从两个或更多个参考图片的两个或更多个参考块中估计当前块的方法。同时,将参考图14描述模板匹配的具体实施例。
图14示出根据本发明的实施例的模板匹配方法。可以执行模板匹配以寻找与当前块或子块相似的参考块。为了模板匹配,可以将当前子块62邻近的预定区域设置为模板。解码器在参考图片中搜索最类似于设置的模板的区域。如果找到最相似的区域,则基于模板和当前子块62之间的相对位置,可以从最相似的区域中确定参考子块72。根据本发明的实施例,可以在从通过仿射运动预测获得的当前子块62的第一参考子块的预定范围80内执行这样的模板匹配。
在图14的实施例中,示出模板存在于当前(子)块的左侧和上侧,但是模板的位置不限于此。然而,因为解码器中的当前(子)块的模板应该是其中重构被完成的部分,所以可以考虑当前图片的解码方向来确定模板。
图15至图19示出与局部搜索组合的仿射运动补偿方法的详细实施例。在每个附图的实施例中,未描述与先前附图的实施例相同或对应的部分。
图15示出与局部搜索组合的仿射运动补偿方法的第一实施例。根据本发明的第一实施例,可以为子块64和66中的每个子块不同地设置用于局部搜索的预定范围81和83。更具体地,可以在狭窄范围内执行局部搜索或者对于其中运动矢量的精度被估计为高的子块可以跳过局部搜索。另外,可以在其中运动矢量的精度被估计为低的子块的宽范围内执行局部搜索。其中对子块64和66中的每个子块执行局部搜索的预定范围81和83可以取决于子块64和66中的每个子块在当前块中的位置。
参考图15,用于寻找用于当前块的第一子块64的参考子块74的预定范围81可以不同于用于寻找用于当前块的第二子块66的参考子块76的预定范围83。如果基于作为与当前块的左上角相对应的CPMV的v0和作为与当前块的右上角相对应的CPMV的v1来执行仿射运动预测,则远离相应位置的当前块的底部处的子块的运动矢量精度可能会恶化。因此,可以对该子块执行更大范围的局部搜索。根据另一实施例,当从在其上执行仿射运动补偿的邻近块的CPMV集中导出用于当前块的CPMV集时,可以在远离邻近块的位置处对子块执行更大范围的局部搜索。
图16示出与局部搜索组合的仿射运动补偿方法的第二实施例。根据本发明的第二实施例,在执行仿射运动预测之后,可以对当前块的特定子块执行局部搜索,并且可以将通过局部搜索获得的偏移(或精细化值)用于精细化其他子块的运动矢量。参考图16,在执行仿射运动预测之后,可以在预定范围81内附加地执行局部搜索,以寻找当前块的第一子块64的参考子块74。当通过执行局部搜索第一子块64的最终搜索子块从初始参考子块被改变时,可以获得最终参考子块的位置与初始参考子块的位置之间的偏移作为精细化值。解码器可以使用所获得的精细化值来校正其他子块的运动矢量。即,可以基于精细化值将当前块的第二子块66的参考子块从通过仿射运动预测获得的初始参考子块76改变为最终参考子块78。通过这种方法,可以减少根据局部搜索的应用的计算量。
图17示出与局部搜索组合的仿射运动补偿方法的第三实施例。根据本发明的第三实施例,在执行仿射运动预测之后,可以对当前块的特定子块执行局部搜索,并且可以基于通过局部搜索获得的特定子块的最终运动矢量来获得其他子块的运动矢量。参考图17,在执行仿射运动预测之后,可以在预定范围81内附加地执行局部搜索,以寻找用于当前块的第一子块64的参考子块74。通过执行局部搜索,可以从初始运动矢量改变第一子块64的最终运动矢量。解码器可以使用所获得的第一子块64的最终运动矢量来获得第二子块65的运动矢量。根据实施例,可以基于第一子块64的最终运动矢量和当前块的CPMV来获得第二子块65的运动矢量。如上所述,通过使用针对特定子块校正的运动矢量以获得另一子块的运动矢量,可以为每个子块获得更准确的运动矢量。
图18示出与局部搜索组合的仿射运动补偿方法的第四实施例。如上所述,可以执行使用三个或更多个CPMV的仿射运动预测。然而,如果用于仿射运动预测的CPMV的数量增加,则信令负担可能增加。因此,根据本发明的实施例,可以从邻近块的运动中导出CPMV集的至少一些CPMV,并且可以从当前块的其他CPMV中计算出剩余的CPMV。在这种情况下,为了增加从当前块的其他CPMV计算出的CPMV的精度,可以执行附加的局部搜索以获得纯化的CPMV。
参考图18,在当前块的CPMV集中包括的CPMV v0、v1和v2当中,可以基于v0和v1来计算v2。如果按原样使用v2来获得子块的运动矢量,则可能会保持在仅使用v0和v1来获得子块的运动矢量的情况下的不精确性,因此可以执行附加的局部搜索。根据实施例,可以执行针对离与v2相对应的位置最近的子块66的局部搜索。也就是说,通过在距参考子块76的预定范围83内附加地执行局部搜索,可以获得v2’,其是纯化的CPMV。解码器可以使用纯化的CPMV v2’以获得当前块的子块68的运动矢量。即,基于v2’、v0和v1来计算子块68的运动矢量。
根据本发明的另一实施例,可以执行多个CPMV的纯化以进行更精确的运动矢量计算。例如,可以执行针对与对应于多个CPMV中的每个CPMV的位置相邻的子块的局部搜索。另一方面,根据CPMV的计算和精细化顺序,可能发生其中不存在现有的模板,例如,在图14的实施例中描述的形状的模板的子块。在图18的实施例中,当尝试执行针对v2的精细化作为针对子块66的模板匹配时,子块66的上邻近样本的解码可能不被完成。因此,在这种情况下,可以使用具有与现有模板不同形状的模板。作为子块的模板,可以使用已经被重构的区域。例如,作为子块66的模板,可以使用已经被重构的左邻近样本。根据本发明的另一实施例,可以首先使用v0和v1仅解码生成模板所需的区域。例如,在图18的实施例中,通过使用v0和v1首先解码当前块的左子块,可以获得用于子块66的模板以用于v2的纯化。
图19示出与局部搜索组合的仿射运动补偿方法的第五实施例。可以使用当前子块62的邻近样本来生成用于执行局部搜索的模板。在这种情况下,当前子块62的邻近样本可以具有与当前子块62类似的运动。参考图19,可以通过参考图片的参考块70来预测当前图片的当前块60,并且可以通过在参考图片中进行局部搜索来精细化当前子块62的参考子块72。在这种情况下,如当前块60被仿射变换成参考块70,在当前子块62的模板区域中也可能需要仿射变换。因此,根据本发明的实施例,为了执行当前子块62的局部搜索,可以使用在其中执行仿射变换的模板85。可以基于当前块的CPMV的至少一些来执行模板的仿射变换。另外,在模板的仿射变换的过程中,可以执行模板的子采样、内插或外插。
图20示出根据本发明的又一实施例的仿射运动补偿方法。根据本发明的又一实施例,用于获得当前块的每个子块的运动矢量的CPMV可以是不同的。在图20的实施例中,v0(即,第一CPMV)和v1(即,第二CPMV)与先前实施例相同,并且v21是与当前块的左下角相对应的第三CPMV。另外,v22是第四CPMV,其对应于在对应于v0的位置和对应于v21的位置之间的位置。根据本发明的实施例,可以基于v0、v1和v22来计算当前块中的第一子块67的运动矢量,并且可以基于v0、v1和v21来计算第二子块69的运动矢量。特别地,当当前块是除了正方形以外的块时,可以执行使用不同CPMV集的子块的运动矢量预测。同时,在图20的实施例中,可以从与对应位置(即,当前块的左下角)相邻的块的运动矢量信息中获得v21,并且可以从与对应位置(即,当前块的左上角和左下角之间的点)相邻的块的运动矢量信息中获得v22。
图21示出根据本发明的实施例的基于子块的时间运动矢量预测。在本发明的实施例中,基于子块的时间运动矢量预测(SbTMVP)也可以被称为高级时间运动矢量预测(ATMVP)。
当执行时间运动矢量预测(TMVP)时,解码器使用当前块的并置块的时间运动矢量来预测当前块的运动矢量。然而,当执行SbTMVP时,解码器通过在取来并置块的时间运动矢量之前应用运动移位来获得合并候选块。这里,可以从当前块的空间邻近块之一的运动矢量中获得运动移位信息。解码器顺序地搜索当前块的邻近块以确定从其获得运动移位信息的邻近块。根据本发明的实施例,要被搜索以获得运动移位信息的邻近块可以包括当前块的左邻近块和上邻近块中的至少一个。例如,邻近块可以包括与当前块相邻的左块L、上块A、左下块BL、右上块AR或左上块AL中的至少一个,并且可以按照上面列出的顺序来执行搜索。然而,本发明不限于此。例如,要被搜索以获得运动移位信息的邻近块可以包括当前块的左块L和左下块BL。解码器基于从邻近块获得的运动移位信息来获得当前块的合并候选块。
合并候选块可以被划分为NXN个子块。解码器提取合并候选块的每个子块的运动矢量。在这种情况下,因为可以根据对应的合并候选块中的每个样本位置来使用不同的运动矢量,所以可以提取与每个子块的中心位置相对应的运动矢量。在图21的实施例中,任何第一合并候选块的子块分别由M1B1、M1B2、M1B3和M1B4表示,并且与每个子块的中心位置相对应的运动矢量分别由MV_M1B1、MV_M1B2、MV_M1B3和MV_M1B4表示。如果对合并候选块的所有子块执行帧间预测,并且如果每个子块都不具有相同的运动矢量,则将合并候选块最终确定为合并块。如果对对应的合并候选块的一个或多个子块执行帧内预测,或者如果每个子块具有相同的运动矢量,则合并候选块不能被用作合并块。解码器按以下顺序搜索邻近块以寻找可以被用于SbTMVP的合并候选块。可以基于如上所述确定的合并块来执行SbTMVP。因为可以在编码器和解码器中以相同的方式执行以上过程,所以可以不单独用信号发送关于用于获得合并块的邻近块的信息。
当确定要被用于SbTMVP的合并块时,解码器提取合并块的每个子块的运动矢量以预测与当前块相对应的每个子块的运动矢量。使用当前块的每个子块的运动矢量来获得每个子块的预测器,并且通过组合每个子块的预测器来获得当前块的预测器。在图21的实施例中,当前块中的NXN个子块分别由CB1、CB2、CB3和CB4表示。每个子块(即,CB1、CB2、CB3和CB4)使用相应合并子块(即,M1B1、M1B2、M1B3和M1B4)的运动矢量来获得相应子块的预测器。
图22至图27示出基于子块的时间运动矢量预测的详细实施例。在每个附图的实施例中,未描述与先前附图的实施例相同或对应的部分。
图22示出使用SbTMVP的帧间预测的第一实施例。图22(a)示出通过使用合并候选子块的信号值和基于合并候选子块的运动矢量的参考子块的信号值来配置当前子块的实施例。另外,图22(b)示出通过交替使用合并候选子块的信号值和基于合并候选子块的运动矢量的参考子块的信号值来构造当前子块的实施例。
首先参考图22(a),可以考虑当前块的合并候选块中的对应子块M1B1的信号值和基于对应子块M1B1的运动矢量而参考的参考块RB1的信号值全部来生成当前子块CB1的预测块。在这种情况下,可以通过在子块M1B1的信号值和参考块RB1的信号值之间应用相等的权重来生成当前子块CB1的预测块。根据另一实施例,可以通过基于每个参考块与当前块之间的POC距离应用不均匀权重来生成当前子块CB1的预测块。
接下来,首先参考图22(b),可以基于当前块的合并候选块中的对应子块M1B1的信号值和基于相应子块M1B1的运动矢量而参考的参考块RB1的信号值中的任何一个来生成当前子块CB1的预测块。在这种情况下,可以执行模板匹配以确定子块M1B1的信号值和参考块RB1的信号值中的哪一个被选择。换句话说,解码器可以将由当前子块CB1周围的样本组成的模板CB_Template与由子块M1B1周围的样本组成的模板M1B1_Template和由参考块RB1周围的样本组成的模板RB1_Template相互比较,并且参考具有较小的模板之间的值差的块以生成当前块的预测块。
图23示出使用SbTMVP的帧间预测的第二实施例。根据本发明的第二实施例,当执行SbTMVP时,可以通过针对每个子块动态地使用帧间预测和帧内预测来生成预测子块。通常,当对合并候选块中的至少一些子块执行帧内预测时,合并候选块不能被用于SbTMVP。然而,根据本发明的实施例,即使当对合并候选块内的任意数目的子块执行帧内预测时,合并候选块也可以被用于SbTMVP。
首先,参考图23(a)的实施例,对分别对应于当前块的子块CB1、CB2、CB3和CB4的合并候选子块M1B1、M1B2、M1B3和M1B4当中的最后一个子块M1B4执行帧内预测。在这种情况下,分别使用执行帧间预测的合并候选子块M1B1、M1B2和M1B3的运动矢量来获得子块CB1、CB2和CB3的预测块。同时,可以通过参考用于合并候选子块M1B4的帧内预测的帧内预测模式值来获得子块CB4的预测块。另一方面,参考图23(b)的实施例,可以使用在对应的合并候选子块M1B4的邻近子块M1B1、M1B2和M1B3中使用的运动矢量MV_M1B1、MV_M1B2和MV_M1B3的全部或部分来获得子块CB4的预测块。
图24示出使用SbTMVP的帧间预测的第三实施例。根据本发明的第三实施例,为了对当前块执行SbTMVP,可以在多个合并候选块中选择最合适的合并块。在图24中,任何第一合并候选块的子块分别由M1B1、M1B2、M1B3和M1B4表示,并且任何第二合并候选块的子块分别由M2B1、M2B2、M2B3和M2B4表示。在常规情况下,如果对第一合并候选块的所有子块执行帧间预测,并且每个子块不具有相同的运动矢量,则可以基于合并候选块来执行SbTMVP。但是,如果多个合并候选块满足上述条件,则解码器可以通过在多个合并候选块当中选择最合适的合并候选块来执行SbTMVP。
更具体地,可以执行模板匹配以确定最合适的合并候选块。换句话说,解码器可以将由邻近的当前块周围的样本组成的模板CB_Template与由第一合并候选块周围的样本组成的模板M1_Template和由第二合并候选块周围的样本组成的模板M2_Template进行比较,并通过将具有较小的模板之间的值差的候选块确定为当前块的合并块来执行SbTMVP。在这种情况下,可以通过绝对差之和(SAD)或绝对变换差之和(SATD)来计算模板之间的值差。
图25示出使用SbTMVP的帧间预测的第四实施例。本发明的第四实施例提出在多个合并候选块中选择最合适的合并块以对当前块执行SbTMVP的另一种方法。在图25的实施例中,对第一合并候选块的子块M1B1和M1B3以及第二合并候选块的子块M2B3执行帧内预测。在这种情况下,当合并候选块满足特定条件时,可以将其用于当前块的SbTMVP。
首先,基于在每个合并候选块中执行帧内预测的子块的数目与执行帧间预测的子块的数目之间的比率,可以确定是否对应的合并候选块可以被用于当前块的SbTMVP。在图25的实施例中,对第一合并候选块中的总共四个子块中的两个子块执行帧内预测,并且对第二合并候选块中的总共四个子块中的一个子块执行帧内预测。因此,可以将满足预定比率的第二合并候选块确定为用于SbTMVP的合并块。
第二,基于在每个合并候选块内执行帧内预测的子块的位置是否满足特定条件,可以确定对应的合并候选块是否可以被用于当前块的SbTMVP。例如,当帧内预测子块存在于特定位置(例如,合并候选块内的中间区域或右下区域)时,此合并候选块可以被用于SbTMVP。另外,当在其上执行帧内预测的子块被在其上执行帧间预测的子块包围时,可以将对应的合并候选块用于SbTMVP。
图26示出使用SbTMVP的帧间预测的第五实施例。如上所述,如果对合并候选块的所有子块执行帧间预测,并且每个子块不具有相同的运动矢量,则可以基于合并候选块来执行SbTMVP。然而,根据本发明的第五实施例,即使不满足上述条件,也可以将合并候选块用于SbTMVP。
更具体地说,解码器以上述顺序寻找第一合并候选块。在图26的实施例中,对第一合并候选块的子块M1B1、M1B3和M1B4执行帧间预测,并且对子块B1和B2执行帧内预测。因此,解码器使用在第一合并候选块的子块之中的对其执行帧间预测的子块M1B1、M1B3和M1B4的运动矢量来获得当前块的子块CB1、CB3和CB4中的每一个的预测块。因为未获得当前块的子块CB2的预测块,所以解码器根据上述顺序搜索第二合并候选块。当在第二合并候选块中对与子块CB2相对应的合并候选子块M2B2执行帧间预测时,可以使用子块M2B2的运动矢量来获得当前块的子块CB2的预测块。如上所述,根据本发明的第五实施例,可以通过顺序地参考在一个或多个合并候选块中对其执行帧间预测的子块来配置当前块的预测块。
图27示出使用SbTMVP的帧间预测的第六实施例。根据本发明的第六实施例,为了对当前块执行SbTMVP,可以将多个合并候选块的运动矢量一起使用。更具体地,在图27的实施例中,当第一合并候选块和第二合并候选块均满足要被用于SbTMVP的条件时,可以通过一起使用对应的多个合并候选子块的运动矢量来获得当前块的每个子块的预测块。例如,可以通过组合对应的合并候选子块M1B1和M2B1的运动矢量MV_M1B1和MV_M2B1来获得当前子块CB1的运动矢量。在这种情况下,可以通过在运动矢量MV_M1B1和运动矢量MV_M2B1之间应用相等的权重来生成当前子块CB1的运动矢量。根据另一实施例,可以通过基于每个参考块与当前块之间的POC距离应用不均匀权重来生成当前子块CB1的运动矢量。
图28示出根据本发明的实施例的自适应环路滤波器。如上所述,编码器和解码器的滤波单元执行滤波操作以改善重构图片的质量。通过滤波单元滤波的图片被存储在解码图片缓冲器中。在这种情况下,编码器或解码器的环路中的滤波器被称为环内滤波器。另外,可以使用根据滤波目标样本的特性应用不同的环内滤波器的自适应环路滤波器(ALF)。例如,可以根据一个或多个梯度、方向性或活动来应用环内滤波器。另外,可以根据滤波目标样本的特性来改变滤波器形状、滤波器长度、滤波器系数以及应用相同滤波器的范围。
根据本发明的实施例,自适应环路滤波器可以包括各种形状的滤波器,并且解码器可以自适应地应用它们。例如,滤波器的形状可以包括正方形、菱形、矩形、圆形等。另外,自适应环路滤波器可以包括多种大小的滤波器。在此,滤波器的大小指示在对特定样本进行滤波时考虑的邻近样本的范围。而且,对于相同的滤波器形状和大小,可能存在组成自适应环路滤波器的多个滤波器系数集。解码器可以自适应地应用如上所述配置的多个滤波器中的任何一个。
参考图28,自适应环路滤波器可以具有三种菱形形状。图28中的每个小正方形对应于一个或多个样本,并且在正方形中指定的值表示滤波器系数。如附图中所示,自适应环路滤波器可以包括5X5菱形形状(即,图28(a))、7X7菱形形状(即,图28(b))和9X9菱形形状(即,图28(c))。组成每个滤波器的滤波器系数集可以由不同的滤波器系数组成。可替选地,组成每个滤波器的滤波器系数集中的至少一些滤波器系数可以具有重复值。
根据本发明的实施例,可以将不同形状的自适应环路滤波器应用于亮度分量和色度分量。例如,图28中图示的所有三种类型的滤波器可以被应用于亮度分量,并且可以将仅一种类型的滤波器应用于色度分量,例如,5X5菱形滤波器。根据另一个实施例,适用于每个滤波器形状的滤波器系数的集合对于亮度分量和色度分量可以是不同的。根据本发明的实施例,关于解码器中要使用的滤波器形状的信息可以被单独地用信号发送。在这种情况下,对其应于信令的范围可以是图片、图块(或切片)、CTU或CU。解码器可以使用与用信号发送的滤波器形状相对应的滤波器系数的集合来执行滤波。
自适应环路滤波器的滤波过程可以通过滤波目标样本和邻近样本之间的权重求和来执行。更具体地,自适应环路滤波器的滤波过程可以被表达为下面的等式4。
[等式4]
这里,R(i+k,j+l)表示在坐标(i+k,j+l)位置处的样本,R’(i,j)表示滤波后的样本。另外,L表示滤波器长度,并且f(k,l)表示与坐标(k,l)相对应的滤波器系数。通过滤波处理将滤波目标样本R(i,j)校正为滤波后的样本R’(i,j)。
参考图28(a),可以基于以上等式4对样本C6进行滤波。在这种情况下,基于通过将与所图示的滤波器的每个正方形相对应的位置处的样本值乘以相应正方形的滤波器系数(即,C0至C6中的任何一个)而获得的值来获得滤波后的样本。
在下文中,将描述计算用于应用自适应环路滤波器的梯度和方向性的方法。根据本发明的实施例,梯度可以意指值的变化、导数、加速度等。另外,方向性可以指示诸如是否存在值移动或存在移动的方向的信息。例如,可以根据梯度确定方向性。根据本发明的实施例,可以针对垂直方向、水平方向、两个对角线方向等计算梯度。另外,在计算梯度时可以使用1-D拉普拉斯算子。
根据本发明的实施例,针对垂直方向、水平方向和两个对角线方向的梯度gv、gh、gd1和gd2可以如下面的等式5计算。
[等式5]
这里,R(i,j)是在(i,j)的位置处的重构的样本值。坐标值(i,j)可以是特定范围的代表值。即,当计算梯度、方向性等时,可以选择特定范围的代表坐标(i,j)。例如,可以将2X2块的左上坐标用作相应块的(i,j)值。
参考等式5,可以使用(k,l)的样本值和两个邻近样本的值来计算Vk,l、Hk,l、D1k,l以及D2k,l。即,Vk,l表示垂直方向上的样本值的变化量,Hk,l表示水平方向上的样本值的变化量,D1k,l表示第一对角线方向上的样本值的变化量,并且D2k,1表示在第二对角线方向上的样本值的变化量。在这种情况下,可以通过将Vk,l、Hk,l、D1k,l以及D2k,l分别添加到预定范围来计算梯度gv、gh、gd1和gd2。根据等式5,当用于计算Vk,l、Hk,l、D1k,l以及D2k,l的样本在样本顺序上具有小的或恒定的值变化时,梯度变小。另一方面,当用于计算Vk,l、Hk,l、D1k,l以及D2k,l的样本的值在样本顺序中具有大的变化时,梯度变大。因此,如果特定方向的梯度较大,则可以说在对应方向上发生不规则变化或移动较大。根据本发明的实施例,用于计算(i,j)位置的梯度的预定范围可以是其中从-2到+3的偏移被应用于(i,j)的x坐标和y坐标中的每一个的范围。
同时,可以基于根据上述方法计算出的梯度来确定方向性。首先,梯度gv和gh中的较大值和较小值可以分别由gmax h,v和gmin h,v来表达。另外,梯度gd1和gd2中的较大值和较小值可以分别由gmax d1,d2和gmin d1,d2来表达。方向性D可以被划分成整体上的小移动、特定方向上的大移动和特定方向上的小移动。例如,方向性D可以划分成整体上的小移动、水平或垂直方向上的大移动、水平或垂直方向上的小移动、对角线方向上的大移动或对角线方向上的小移动。
根据实施例,可以通过以下步骤对方向性D进行分类。在这种情况下,t1和t2是预定阈值。
操作1:如果gmax h,v<=t1*gmin h,v并且gmax d1,d2<=t1*gmin d1,d2,则D为0。这可能指示水平或垂直方向上的移动小,并且在两个对角线方向上的移动小。另外,这可能指示总体上存在小的移动。
操作2:如果gmax h,v/gmin h,v>gmax d1,d2/gmin d1,d2,则进入操作3,否则进入操作4。进入运算3可能指示水平或垂直移动大于两个对角线移动。进入操作4可以指示两个对角线的移动大于水平或垂直方向上的移动。
操作3:如果gmax h,v>t2*gmin h,v,则D为2,否则D为1。如果D为2,则可以表示水平移动大于垂直移动,或者垂直移动大于水平移动。另外,如果D是1,则可以表示水平移动和垂直移动没有显著不同。
操作4:如果gmax d1,d2>t2*gmin d1,d2,则D可以是4,否则D可以是3。D=4指示两个对角线移动之间的差大,而D=3可以指示两个对角线移动之间的差不大。
在下文中,将描述计算用于应用自适应环路滤波器的活动的方法。活动可能不代表特定的方向性,但可以代表指示特定范围的整体运动的值。在本发明的实施例中,活动A可以如下面的等式6计算。
[等式6]
也就是说,可以将活动A计算为通过在预定方向内将垂直方向上的样本值变化量Vk,l与水平方向上的样本值变化量Hk,l相加而获得的值。根据一个实施例,可以对活动进行量化和使用。即,可以使用当对活动A进行量化时获得的A’,并且A’可以是0至4之间的整数。
根据本发明的实施例,可以根据特性对样本或样本范围进行分类。自适应环路滤波器可以根据分类(即,类别)应用不同的滤波器。可以基于上述方向性或活动来对样本或样本范围进行分类。在这种情况下,样本范围可以是2×2的块,但是本发明不限于此。根据实施例,可以基于方向性D和活动A’如以下等式7所示确定类别索引C。
[等式7]
C=5*D+A′
在下文中,将描述根据本发明的实施例的滤波器系数的几何变换方法。优选的是,在编码器和解码器中可应用的多个滤波器当中,最合适的滤波器被用于每个样本。但是,因为解码器不具有原始视频,所以难以确定最合适的滤波器,并且由于编码器和解码器之间的协议,解码器必须选择滤波器。因此,编码器可以将滤波器信息传递给解码器,并且在该滤波器信息的递送中可能发生信令开销。因此,编码器传递有限的滤波器信息,并且解码器可以通过修改接收到的滤波器信息来使用接收到的滤波器信息或修改存储的滤波器信息来使用存储的滤波器信息。作为修改和使用滤波器信息的示例,存在如下面的等式8中所示的几何变换方法。几何变换是在特定滤波器形状中改变滤波器系数的位置运算。
[等式8]
对角线:fD(k,l)=f(l,k)
垂直翻转:fV(k,l)=f(k,K-l-1)
旋转:fR(k,l)=f(K-l-1,k)
参考等式8,几何变换可以包括对角线翻转、垂直翻转、旋转等。K是滤波器的大小,并且k和l表示滤波器系数的坐标。k和l是0到K-1,(0,0)是左上角,并且(K-1,K-1)是右下角。
根据本发明的实施例,可以使用对其执行几何变换的滤波器系数来执行根据等式4的滤波。通过几何变换,可以通过较少的信令来实现各种滤波器。另外,可以通过几何变换将适合于特定运动特性(即,梯度、方向性和活动)的滤波器系数的集合变换为适合于其他运动特性的滤波器系数的集合。例如,可以通过几何变换将适合于垂直运动的滤波器系数转换为适合于对角运动的系数。
根据本发明的实施例,可以通过梯度来确定几何变换。例如,如果gd2<gd1并且gh<gv,则可能不会执行几何变换。此外,如果gd2<gd1并且gv<gh,则可以执行对角线翻转。此外,如果gd1<gd2并且gh<gv,则可以执行垂直翻转。另外,如果gd1<gd2并且gv<gh,则可以执行旋转。在这种情况下,旋转可以是顺时针旋转或逆时针旋转。
在下文中,将描述根据本发明的实施例的用于用信号发送滤波器参数的方法。可以将滤波器参数作为图片级别、图块级别(或切片级别)、CTU级别、CU级别等用信号发送。为了减少信令开销,可以在图片级别或图块级别(或切片级别)处用信号发送滤波器参数。可以将滤波器系数作为滤波器参数用信号发送。根据一个实施例,为了减少信令开销,可以将不同的公共滤波器系数用于不同的类别(即,合并)。而且,可以重用存储在解码器中的滤波器系数。例如,为参考图片的滤波而存储的滤波器系数集可以被用于当前图片的滤波。为此,可以用信号发送用于参考滤波器系数的参考图片索引。
根据另一实施例,可以通过先进先出(FIFO)来管理滤波器系数集,以重用滤波器系数、时间预测等。另外,可以维持多个候选列表以支持时间可缩放性。在这种情况下,可以将时间层索引分配给滤波器系数集。根据另一实施例,为了减少信令开销,除了用信号发送的滤波器系数集之外,还可以维持固定滤波器。当使用固定滤波器时,编码器和解码器可以在不发送和接收滤波器系数的情况下发送和接收滤波器索引。当可以使用用信号发送的滤波器系数集和固定滤波器两者时,可以发送指示是否使用固定滤波器的标记和滤波器索引。
另外,可以在针对亮度分量和色度分量的不同级别处指示关于使用环内滤波器或者自适应环路滤波器的信息以及使用哪个滤波器的信息。例如,为了将更详细的滤波过程应用于亮度分量,用于亮度分量的信令级别可以小于用于色度分量的信令级别。即,对于亮度分量可以以CU为单位来控制滤波处理,并且对于色度分量可以以图片为单位来控制滤波处理。
图29示出根据本发明的实施例的滤波过程。根据本发明的实施例,计算上述类别、梯度、方向性和/或活动的范围(在下文中,样本特性)可能与滤波器形状不匹配。例如,滤波器的形状(或滤波器长度)可以是多样的,但是当在预定范围内执行样本特性的计算时,它们之间可能发生不匹配。参考图29,执行样本特性的计算的预定范围是6×6的区域(由虚线表示),但是自适应环路滤波器可以具有5X5菱形形状(即,图29(a))、7X7菱形形状(即,图29(b))或9X9菱形形状(即,图29(c))。在这种情况下,5X5菱形自适应环路滤波器被预定范围覆盖,但是7X7菱形和9X9菱形自适应环路滤波器未被预定范围覆盖。因此,可能会出现用于类别但不用于滤波的样本以及不用于类别但用于滤波的样本。如果发生这种不匹配,分类过程将不能很好地表达影响通过滤波器形状滤波的样本的范围的特性,使得自适应环路滤波器的性能可能会下降。
图30示出根据本发明的另一实施例的滤波过程。为了解决上述问题,可以取决于滤波器的形状(或滤波器的长度)来确定用于计算样本特性的预定范围。即,当使用更大的滤波器时,预定范围可以被设置为更大的值。例如,可以如下面的等式9那样计算垂直方向、水平方向和两个对角线方向的梯度gv、gh、gd1和gd2。
[等式9]
另外,可以如下面的等式10中计算活动A。
[等式10]
这里,L是滤波器长度。
在上述等式5和6的实施例中,用于计算样本值变化量Vk,l、Hk,l、D1k,l和D2k,l的预定范围被固定为针对(i,j)的x坐标和y坐标中的每一个应用从-2到+3的偏移的范围。然而,根据等式9和等式10的实施例,预定范围可以基于滤波器长度L由函数f1(L)和f2(L)可变地确定。即,预定范围被确定为其中从-f1(L)到+f2(L)的偏移被应用于(i,j)的x坐标和y坐标中的每一个的范围。根据实施例,f1(L)可以是floor(L/2),并且f2(L)可以是(floor(L/2)+1)(其中L是5、7或9)。
参考图30,执行样本特性的计算的预定范围可以取决于滤波器的形状而变化。在5X5菱形形状(即,图30(a))、7X7菱形形状(即,图30(b))和9X9菱形形状(即,图30(c))的所有情况下,自适应环路滤波器可以由预定范围覆盖。
图31示出根据本发明的又一实施例的滤波器形状。根据上述实施例,因为其中执行样本特性的计算的预定范围是正方形并且滤波器是菱形的,所以在用于计算的参考区域和用于滤波的参考区域之间发生不匹配。因此,根据本发明的又一实施例,为了匹配滤波器形状和计算的参考区域,滤波器形状和计算参考区域两者都可以被定义为全部正方形形状或全部菱形形状。参考图31,滤波器形状和计算参考区域两者都可以被定义为正方形形状。在这种情况下,滤波器可以具有3X3正方形形状(即,图31(a))、5X5正方形形状(即,图31(b))、7X7正方形形状(即,图31(c))或9X9正方形形状(即,图31(d))。
图32示出根据本发明的又一实施例的用于计算样本特性的方法。在上述实施例中,为了计算样本特性,样本值变化量在四个方向上执行,即,在水平方向、垂直方向、第一对角线方向D1和第二对角线方向D2上。然而,根据本发明的附加实施例,除了上述四个方向之外,还可以针对附加方向计算样本特性。因此,可以进一步定义方向性和类别,并且可以执行更适合于样本和样本范围的特性的环内滤波。
参考图32,每个正方形代表样本,并且为计算样本特性而添加的方向通过D3、D4和D5来指示。对整数样本执行现有的四个方向的样本特性计算,但是整数样本之间的内插值可用于计算附加角度处的样本特性。根据另一实施例,可以使用远处的样本而不是连续位置处的样本来计算附加角度处的样本特性。例如,为了计算位置(1,1)处的样本特性,通过使用位置(0,-1)和(2,3)处的样本,可以获得新角度处(例如,D5)的样本特性信息。
根据另一实施例,可以通过使用多个阈值的梯度比较来进一步使方向性多样化。例如,在对上述方向性D进行分类的过程中,可以使用更多的阈值来细分方向性D的类别。像这样,随着将附加方向用于计算样本特性,在等式(8)的实施例中还可以使用附加方向的几何变换。例如,可以定义针对角度D3、D4和D5的翻转、针对90度以外的角度的旋转等。在这种情况下,可以添加滤波器系数或样本值的内插和填充处理。
图33示出根据本发明的又一实施例的用于重用滤波器系数的方法。如上所述,应用于参考图片的滤波器系数可以被重用以减少滤波器系数的信令开销。可以在图片级别执行此过程。即,作为当前图片的整体能够重用从一个参考图片获得的滤波器系数。在这种情况下,可能难以在当前图片中使用各种滤波器。因此,根据本发明的实施例,可以针对每个块重用不同的参考图片的滤波器系数。在这种情况下,可以重用多个参考图片中的用于预测相应块的参考图片的滤波器系数。即,可以基于当前块的参考图片索引来获得在当前块中重用的滤波器系数。由此,可以减少指示用于滤波器系数的重用的单独的参考图片索引的信令开销。
更具体地,在参考图片中执行的梯度和活动的计算结果可以被重用于当前块。或者,从参考图片计算出的类别结果可以被重用于当前块。在这种情况下,因为参考图片中的参考块和当前块将是相似的,所以参考块的梯度、活动和分类结果可以被用于当前块。
图34示出根据本发明的另一实施例的滤波过程。根据本发明的实施例,当确定方向性、类别或滤波器系数时,可以参考解码过程的其他信息。例如,方向性、类别或滤波器系数可以通过参考当前块的帧内预测模式来确定。另外,当应用自适应环路滤波器时,可以通过参考当前块的帧内预测模式来省略对梯度、方向性和类别的一些计算。
首先,参考图34(a),当前块的帧内预测模式可以是角度模式。在这种情况下,样本值在相应的角度方向上可能相似。因此,当当前块的帧内预测模式是角度模式时,可以确定在垂直于相应角度方向的方向上或在靠近垂直于相应角度方向的方向的方向上的梯度大。可替选地,可以确定在垂直于角度方向的方向上或在靠近垂直于角度方向的方向的方向上存在方向性。因此,可以省略当前块的梯度、方向性、类别计算等,并且基于此,可以选择执行几何变换的方法。
接下来,参考图34(b),当前块的帧内预测模式可以是平面模式或DC模式。在这种情况下,与角度模式不同,极有可能在特定方向上有很少的方向性。因此,当当前块的帧内预测模式是平面模式或DC模式(即,帧内预测模式不是角度模式)时,可以确定梯度在所有方向上都不大。因此,可以省略当前块的梯度、方向性、类别计算等,并且基于此,可以选择执行几何变换的方法。例如,在这种情况下,因为不存在方向性,所以可能不执行几何变换。
根据上面描述的图34的实施例的滤波方法可以限于当前块的大小是预定大小的情况。另外,可以将对其应用此方法的区域限制为靠近帧内预测的参考样本的部分。这是因为帧内预测中的帧内预测模式可以更好地表示靠近参考样本的部分的特性。
根据本发明的又一实施例,当将自适应环路滤波器应用于色度分量时,可以参考用于亮度分量的自适应环路滤波器信息。这是因为亮度分量和色度分量之间存在相似性。在这种情况下,参考的信息可以包括滤波器形状、类别和滤波器系数。像这样,可以通过参考信息来减少相应信息的信令。例如,在上述实施例中,从三种滤光器形状中选择的滤光器被用于亮度分量,并且一种滤光器形状被固定地用于色度分量。然而,根据本发明的又一实施例,用于色度分量的滤光器形状可以跟随亮度分量的滤光器形状,并且在这种情况下,可能没有用信号发送用于色度分量的滤光器形状。
可以通过各种手段来实现本发明的上述实施例。例如,可以通过硬件、固件、软件或其组合来实现本发明的实施例。
对于通过硬件实现的情况,可以通过专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器等中的一个或多个来实现根据本发明的实施例的方法。
在通过固件或软件实现的情况下,可以以执行上述功能或操作的模块、过程或功能的形式来实现根据本发明的实施例的方法。可以将软件代码存储在存储器中并由处理器驱动。存储器可以位于处理器内部或外部,并且可以通过各种已知的方式与处理器交换数据。
本发明的上述描述仅用于说明目的,并且将会理解,本发明所属的本领域的普通技术人员可以在不改变本发明的技术思想或者基本特征的情况下对本发明进行改变,并且本发明可以以其他特定形式容易地被修改。因此,上述实施例是说明性的,并且在所有方面均不受限制。例如,被描述为单个实体的每个组件可以被分布和实现,并且同样,被描述为被分布的组件也可以以关联的方式被实现。
本发明的范围由所附权利要求书而不是上述详细描述来限定,并且从所附权利要求书的含义和范围及其等效物导出的所有改变或修改都应解释为包括在本发明的范围内。