本案是分案申请,其母案为于2011年12月13日申请的申请号为201180067583.4的题为“帧间预测编码的运动画面的解码方法”的专利申请。
本发明涉及一种对以帧间预测模式编码的运动画面的解码方法,并且更具体地,涉及一种用于通过使用空间运动矢量的候选项和时间运动矢量的候选项来构造运动矢量列表、通过使用接收的运动矢量索引来解码当前预测单元的运动矢量并且解码以帧间预测模式编码的运动画面的方法。
背景技术:
在诸如运动图像专家组(mpeg)-1、mpeg-2、mpeg-4和h.264/mpeg-4高级视频编码(avc)的图像压缩方法中,将一个画面划分为宏块来对图像进行编码。并且,使用帧间预测或帧内预测来对相应的宏块进行编码。然后,基于将要编码的宏块的数据大小和原始宏块的失真来选择最佳的编码模式,并且对该宏块进行编码。
在帧间预测中,使用运动估计来消除在连续画面之间的时间冗余。运动估计编码是通过以下方式来编码图像的方法:使用一个或多个参考画面来以块为单位估计并补偿当前画面的运动。
在运动估计编码中,使用预定估计功能在参考画面的预定搜索范围内搜索与当前块最类似的块。如果搜索到最类似的块,则仅传送当前块与参考画面中的最类似块之间的残差,以提高数据压缩比。
此时,为了对运动估计编码的当前块进行解码,用于表示当前块与参考画面中的类似块之间的位置差的运动矢量的信息。因此,当编码当前块时需要在比特流中插入编码的运动矢量的信息。在这个过程中,如果照原样编码并插入运动矢量的信息,则减小了图像数据的压缩比,因为增大了开销。
因此,在帧间预测编码中,使用与当前块相邻的块来预测当前块的运动矢量,仅编码并发送在生成的运动矢量预测子和原始运动矢量之间的差值,并且,还压缩运动矢量的信息。
在h.264中,作为当前块的运动矢量的预测子的运动矢量预测子被确定为mva、mvb和mvc的中值。由于相邻块倾向于彼此类似时,将当前块的运动矢量确定为相邻块的运动矢量的中值。
但是,如果相邻块的一个或多个运动矢量与当前块的运动矢量不同,则相邻块的运动矢量的中值可能不是当前块的有效运动矢量预测子。另外,当图像的运动很小或稳定时,需要比公知的运动预测方法更有效的预测运动矢量的候选项选择方法以及运动矢量编码或解码方法。
技术实现要素:
技术问题
本发明涉及提供一种适时地使用与当前预测单元相邻的预测单元的运动矢量和位于不同画面中的预定位置处的运动矢量之一来编码当前预测单元的运动矢量的帧间预测方法。
技术方案
本发明的一个方面提供了一种帧内预测模式的运动画面的解码方法,包括;生成当前预测单元的预测块的步骤;以及,生成所述当前预测单元的残差块的步骤,其中,所述生成预测块的步骤包括以下步骤:从接收的比特流获得所述当前预测单元的参考画面索引和运动矢量差;导出左空间运动矢量候选项和上空间运动矢量候选项;导出时间运动矢量候选项;构造运动矢量候选项列表,并且如果多个运动矢量候选项具有相同的运动矢量,则删除在所述运动矢量候选项列表中的除了顺序在先的运动矢量候选项之外的运动矢量候选项;如果运动矢量候选项的数量小于预定数量,则向所述列表增加零矢量;将由来自所述接收的比特流的运动矢量索引指示的运动矢量候选项确定为运动矢量预测子,并且,使用所述运动矢量差和所述运动矢量预测子来恢复所述当前预测单元的运动矢量;并且,使用所述恢复的运动矢量和所述参考画面索引来生成所述当前预测单元的预测块,其中,所述时间运动矢量候选项是当检索与所述当前预测单元对应的多个块或预定块的运动矢量时遇到的第一可用的运动矢量。
有益效果
根据本发明的一种方法通过以下方式来精确地解码当前预测单元的运动矢量,由此高效地编码当前预测单元的运动信息:使用位于与当前预测单元相邻的预定位置处的预测单元的可用的空间运动矢量候选项,以及位于与在先前编码的参考画面中的当前预测单元对应的位置处并且位于与在先前编码的参考画面中的当前预测单元对应的位置相邻的位置处的预测单元的时间运动矢量候选项之一。因此,降低了解码器的计算复杂度和带宽,并且,迅速且精确地解码运动信息。
附图说明
图1是图示根据本发明的在最大编码单元中扫描编码单元的方法的概念图。
图2是根据本发明的运动画面编码设备的框图。
图3是根据本发明的运动画面解码设备的框图。
图4是图示根据本发明的空间跳跃候选块的位置的概念图。
图5是图示根据本发明的在与当前预测单元对应的时间跳跃候选画面中的块的位置的概念图。
图6是示出根据本发明的用于生成运动矢量候选项的相邻预测单元的位置的概念图。
具体实施方式
以下参考附图详细描述本发明的各种实施例。然而,本发明不限于以下公开的示例性实施例,而是可以以各种方式实施。因此,能够对本发明进行的许多其他修改和改变,并且应当明白在所公开的构想的范围内,可以按照已经具体描述之外的方式来实施本发明。
画面被划分为多个片断,并且每一个片断被划分为多个最大编码单元(lcu)。通过地址指示符来指示每一个lcu的位置。lcu可以是编码单元本身,或者可以被划分为多个编码单元。lcu包含用于指示在lcu中的编码单元的结构的信息。一个或多个划分标记用于指示在lcu中的编码单元的结构。
各个编码单元(cu)由一个或多个预测单元构成。预测单元是帧内预测或帧间预测的基本单位。
每一个编码单元由一个或多个预测单元(pu)构成。变换单元(tu)是用于变换编码的基本块。在帧内预测中,预测单元包含一个或多个变换单元。在帧间预测中,变换单元可以由一个或多个预测单元构成。在序列参数集(sps)中限定预测单元的最大大小,并且,可以将变换单元划分为递归四叉树的形式。在帧内预测中的预测单元的最大大小可以与在帧间预测中的预测单元的最大大小不同。在sps中包含在帧内预测和帧间预测中的预测单元的最大大小。
用于亮度分量的编码单元的预测单元结构与用于色度分量的编码单元的预测单元结构相同。但是,用于亮度分量的编码单元的变换单元结构可以与用于色度分量的编码单元的预测单元结构不同。也就是说,可以不考虑亮度分量的变换单元大小来确定色度分量的变换单元大小。例如,可以通过编码单元的大小来确定色度分量的变换单元的大小。可以通过预先确定色度分量的最大深度信息来自适应地调整色度分量的变换单元大小。例如,如果亮度分量的深度信息等于或小于色度分量的深度信息,则根据亮度分量的变换单元的划分信息来划分色度分量的变换单元。相反,如果亮度分量的深度信息大于色度分量的深度信息,则可以将色度分量的变换单元设置为不小于色度分量的变换单元的最大深度信息的大小。色度分量的变换单元的最大深度信息可以被编码器预先设置或确定,并且被发送到解码器。
扫描用于解码的编码单元的过程如下。首先,从比特流解析lcu的地址。还解析lcu大小。lcu大小可以是在编码器和解码器之间的预定值,或者可以被插入比特流的序列数据头或画面数据头中。使用lcu的地址和/或大小来获得lcu的左上像素的位置。
图1是图示根据本发明的在最大编码单元中扫描编码单元的方法的概念图。如图1所示,以光栅顺序递归地扫描在lcu中的编码单元。
如果在编码单元中存在多个预测单元,则也以光栅顺序扫描预测单元。通过预测单元索引来指定预测单元的位置。因此,使用预测单元索引来获得预测单元的左上像素。
如果在编码单元中存在多个变换单元,则也以光栅顺序递归地扫描预测单元。使用变换单元索引来获得变换单元的左上像素。
将描述由编码器发送的参数。通过序列数据头来发送序列参数集(sps)。序列参数集包括编码单元的最小大小和最大划分深度信息。序列参数集也包括变换单元的最小大小和最大变换深度信息。变换深度信息可以在帧内预测和帧间预测中不同。
片断数据头包括片断类型。如果片断类型是p或b,则表示用于生成预测块的方法的信息被包括。片断数据头可以包括用于指示当编码运动信息时是否使用时间候选项的标记。时间候选项是在与当前预测单元的位置对应的位置或附近存在的预测单元的运动矢量。有可能多个运动矢量位于与当前预测单元的位置对应的位置处或附近,或者在与当前预测单元的位置对应的位置处附近。在这种情况下,将根据当前预测单元的位置预定的一个运动矢量选择为时间运动矢量。可以根据在lcu中的当前预测单元的位置来改变候选项的位置。片断数据头可以包括指示时间候选画面是否属于参考画面列表0或参考画面列表1的标记。如果没有用于指示参考画面列表的标记,则将该标记的值当作1(也就是说,参考画面列表0)。
片断数据头包括用于在片断类型是p或b的情况下管理用于存储参考画面的存储器的信息。
片断数据头包括用于指示是否向当前片断应用自适应回路滤波的标记。如果应用自适应回路滤波,则片断数据头进一步包括自适应回路滤波器(alf)参数信息。alf参数信息包括用于指示亮度分量的水平滤波器长度和/或垂直滤波器长度的信息。alf参数信息可以包括用于指示滤波器的数量的信息。如果滤波器的数量是2或更多,则可以使用预测方法来编码滤波器的系数。另外,可以在片断数据头中包括是否使用预测方法的信息。
也可以对色度分量进行自适应滤波。alf参数信息可以包括是否对各个色度分量进行滤波的信息。为了减小比特的数量,可以对指示是否对cr分量进行滤波的信息以及指示是否对cb分量进行滤波的信息进行联合编码或复用。在未对cr和crb分量两者进行滤波的情况下,通过指配最低索引来执行熵编码,因为cr和cb分量两者未被滤波的可能性很高。并且,该信息可以包括用于指示色度分量的水平滤波器长度和/或垂直滤波器长度的信息和滤波器信息。
可以在画面数据头或另一个参数集中发送alf参数。在这种情况下,片断数据头不包括alf参数,并且alf参数可以包括用于指示alf参数的索引信息。
可以基于编码单元或基于等于或大于预定大小的编码单元来执行alf处理。并且,片断数据头可以包括用于指示是否向对各个编码单元应用自适应回路滤波处理的信息。在这种情况下,用于指示cu的大小的信息可以是预定大小,并且可以被包括在片断数据头中。
片断包括片断数据头和多个lcu。lcu包括用于指示在lcu中的cu结构的信息。cu结构是递归四叉树结构。cu结构可以包括指示是否将cu的预定大小划分为cu的较小大小的信息(split_coding_unit_flag)。最大大小的编码单元不包含split_coding_unit_flag。编码单元可以包括用于指示是否应用alf的信息(alf_flag)。如果不包括alf_flag,则认为未应用alf。因此,解码器确定是否包括alf_flag,并且如果包括alf_flag则根据alf_flag的值来自适应地应用回路滤波器。
在h.264中,为了对预测矢量进行编码,使用左相邻块a、上相邻块b和右上相邻块c的运动矢量的水平分量和垂直分量的中值。但是,在hevc中,因为将自适应大小的预测单元用于运动补偿,所以当前预测单元的大小很可能与相邻预测单元的大小不同。因此,将运动矢量预测如下。
位于的左运动矢量和上运动矢量被用作空间运动矢量候选项。左运动矢量是多个左相邻预测单元之一的运动矢量,并且上运动矢量是多个上相邻预测单元之一的运动矢量。相邻预测单元可以位于预定位置处。例如,左运动矢量是当以第一预定顺序检索多个左相邻预测单元时首先遇到的可用的运动矢量,并且,上运动矢量是当以第二预定顺序检索多个上相邻预测单元时首先遇到的可用的运动矢量。如果当前预测单元位于画面或片断的上边界处,则只有左运动矢量被用作空间运动矢量候选项。另外,如果当前预测单元位于画面或片断的左边界处,则仅上运动矢量被用作空间运动矢量候选项。
预定块的运动矢量被用作时间运动矢量候选项。预定块位于与当前预测单元的位置对应的时间候选画面的位置处或附近。多个块可以位于时间参考画面候选项的位置处或附近。因此,预定块可以是通过当前预测单元的位置确定的块,或者可以是按照预定顺序的多个块之一。可以根据在当前预测单元的lcu中的当前预测单元的位置来确定预定块。在包括当前预测单元的片断是b片断的情况下,确定包含时间运动矢量候选项的时间候选画面是否属于参考画面列表0或1。用于指示一个参考画面列表的列表指示符被插入片断数据头中,并且被发送到解码器。如果片断数据头不包含列表指示符,则将列表指示符看作1(也就是说,用于指示参考画面列表0)。
编码当前预测单元的运动矢量的过程如下。
首先,获得当前预测单元的运动矢量。
接下来,导出当前预测单元和与当前预测单元相邻的可用的左运动矢量候选项和可用的上运动矢量候选项。如果相邻预测单元的运动矢量不存在或当前预测单元的相邻块位于当前片断的边界之外,则将相邻块的运动矢量确定为不可用的。
接下来,可以自适应地缩放空间运动矢量候选项。如果当前预测单元和相邻预测单元具有相同的参考画面,则不缩放运动矢量候选项。但是,如果当前预测单元和相邻预测单元具有不同的参考画面并且该参考画面的时间距离不相同,则可以使用时间距离来缩放运动矢量候选项。对于静止图像或背景图像,可以不缩放运动矢量。在这种情况下,用于指示是否应用缩放的信息(标记)可以被发送到解码器。空间运动矢量候选项的缩放的次数可以限于预定数。例如,缩放次数可以是1。在这种情况下,如果执行一次缩放,则将要缩放的第二空间运动矢量候选项设置为不可用的。
接下来,导出可用的时间运动矢量候选项。该可用的时间运动矢量候选项与如上所述相同。
接下来,使用可用的空间和时间运动矢量候选项来构造候选项列表。在可用的空间运动矢量候选项后列出可用的时间运动矢量候选项。如果多个运动矢量候选项相同,则从候选项列表删除较低优先级的运动矢量候选项。
接下来,在可用的空间和时间运动矢量候选项中选择当前预测单元的运动矢量预测子。当前预测单元的运动矢量候选项的数量可以是预定的。如果可用的运动矢量候选项的数量大于该预定数量,则在该预定数量的运动矢量候选项中选择当前预测单元的运动矢量预测子。如果可用的运动矢量候选项的数量小于该预定数量,则可以增加一个或多个额外的运动矢量候选项。该额外的运动矢量候选项可以是零矢量。
接下来,获得并编码运动矢量差。也编码用于指示运动矢量预测子的信息。运动矢量差是在当前预测单元的运动矢量和与前预测单元的运动矢量预测子之差。
解码当前预测单元的运动矢量的过程如下。
解码当前预测单元的运动矢量差。
恢复用于指示当前预测单元的运动矢量预测子的信息。
通过下面的过程来确定用于获得当前预测单元的运动矢量预测子的运动矢量候选项。
首先,导出当前预测单元的相邻预测单元的可用的左运动矢量候选项和可用的上运动矢量候选项。如果相邻预测单元的运动矢量不存在或当前预测单元的相邻块位于当前片断的边界之外,则将相邻块的运动矢量确定为不可用的。
接下来,可以自适应地缩放空间运动矢量候选项。如果当前预测单元和相邻预测单元具有相同的参考画面,则不缩放运动矢量候选项。但是,如果当前预测单元和相邻预测单元具有不同的参考画面或参考画面的时间距离不同,则可以使用时间距离来缩放运动矢量候选项。对于静止图像或背景图像,可以不缩放运动矢量。空间运动矢量候选项的缩放次数可以限于预定数量。例如,缩放次数可以是1。在这种情况下,如果执行一次缩放,则将要缩放的第二空间运动矢量候选项设置为不可用的。
接下来,导出可用的时间运动矢量候选项。可用的时间运动矢量候选项与如上所述相同。
接下来,使用可用的空间运动矢量候选项和可用的时间运动矢量候选项来构造候选项列表。在可用的空间运动矢量候选项后列出可用的时间运动矢量候选项。如果多个运动矢量候选项相同,则从候选项列表删除较低优先级的运动矢量候选项。
接下来,在可用的空间运动矢量候选项和可用的时间运动矢量候选项中选择运动矢量预测子。运动矢量候选项的数量可以是预定的。如果可用的运动矢量候选项的数量大于预定数量,则在该预定数量的运动矢量候选项中选择运动矢量预测子。如果可用的运动矢量候选项的数量小于预定数量,则可以增加一个或多个额外的运动矢量候选项。该额外的运动矢量候选项是零矢量。
当导出当前预测单元的运动矢量候选项时,将与用于指示当前预测单元的运动矢量预测子的信息对应的一个运动矢量候选项确定为当前预测单元的运动矢量预测子。
使用运动矢量差和运动矢量预测子来获得当前预测单元的运动矢量。
时间候选画面的参考画面索引可以是0。
图2是根据本发明的运动画面编码设备100的框图。
参见图2,根据本发明的运动画面编码设备100包括画面划分单元110、变换单元120、熵编码单元130、扫描单元131、帧内预测单元140、帧间预测单元150、帧间预测单元160、逆量化单元135、逆变换单元125、后处理单元170、画面存储单元180、减法器190和加法器195。
画面划分单元110划分并分析输入视频信号,以将画面的每一个lcu划分为各个都具有预定大小的一个或多个编码单元,确定各个编码单元的预测模式,并且确定每一个编码单元的预测单元的大小。画面划分单元110根据预定模式向帧间预测单元150或帧间预测单元160发送要编码的预测单元。另外,画面划分单元110向减法器190发送要编码的预测单元。
变换单元120变换作为在预测单元的原始块和由帧间预测单元150或帧间预测单元160生成的预测块之间的残差信号的残差块。残差块的变换单元的大小等于或小于编码单元的大小。在帧内预测中,变换单元的大小等于或小于预测单元的大小。在帧间预测中,变换单元的大小也等于或小于预测单元的大小,虽然变换单元的大小可以大于预测单元的大小。可以根据预定模式(帧内或帧间)和帧内预测模式来自适应地确定变换矩阵。可以通过水平的和垂直的一维(1d)变换矩阵来对变换单元进行变换。
在帧间预测中,对每一个预定变换矩阵应用一个变换方向。
如果预测模式是亮度分量的帧内预测并且变换单元的大小等于或小于预定大小,则自适应地确定垂直的和水平的一维变换矩阵。例如,如果帧内预测模式是水平的,则很可能残差块具有垂直方向性。因此,向垂直方向应用基于离散余弦变换(dct)的整数矩阵,并且向水平方向应用基于离散正弦变换(dst)或基于kl变换(klt)的整数矩阵。如果帧内预测模式是垂直的,则向垂直方向应用基于dst或klt的整数矩阵,并且向水平方向应用基于dct的整数矩阵。另外,在dc模式中,向水平和垂直方向应用基于dct的整数矩阵。也就是说,在亮度分量的帧内预测中,可以根据变换单元的大小和帧内预测模式来自适应地确定变换矩阵。同时,在色度分量的帧内预测模式中,变换矩阵是预定矩阵,而与预测模式和帧内预测模式无关。
同时,可以每一个变换单元在多个变换模式中自适应地选择一个变换模式,并且,可以向解码器发送所选择的变换模式。多个变换模式可以包括二维变换、垂直变换和水平变换。可以通过变换模式来确定扫描单元131的扫描模式。例如,如果变换模式是二维变换,则选择第一扫描模式(对角扫描),如果变换模式是垂直变换,则选择第二扫描模式(水平扫描),如果变换模式是水平变换则选择第三扫描模式(垂直扫描),并且,如果变换模式是其中不应用变换的模式,则选择第一扫描模式。
熵编码单元130确定用于量化由变换矩阵变换的残差块的变换系数的量化步长。在具有等于或大于预定大小的大小的编码单元上确定量化步长。对于具有小于预定大小的大小的编码单元,在预定大小上确定量化步长。使用所确定的量化步长和根据预定模式确定的量化矩阵,量化变换块的变换系数。当当前预测单元的大小等于或大于预定大小时,熵编码单元130可以以扫描顺序使用相邻编码单元的量化步长或前一个编码单元的量化步长来确定当前预测单元的量化步长预测子。
例如,熵编码单元130可以根据当前编码单元的帧内预测模式将左编码单元的量化步长、上编码单元的量化步长或左和上编码单元的量化步长的平均值确定为量化步长预测子。如果上编码单元不存在,则可以将左编码单元或前一个编码单元的量化步长确定为量化步长预测子。如果左编码单元不可用的,则可以将上编码单元或前一个编码单元的量化步长确定为量化步长预测子。当使用左和上编码单元的量化步长的平均值时,如果仅一个量化步长可用的,则可以将可用的量化步长或前一个编码单元的量化步长确定为量化步长预测子。上述方法可以仅被应用到在lcu内的编码单元。也就是说,如果左或上编码单元位于lcu的边界之外,则可以将该编码单元看作不可用的编码单元。
量化的变换块被提供到逆量化单元135和扫描单元131。
扫描单元131扫描量化的变换块的系数或用于指示量化的变换系数是否存在的信息,并且将该系数和信息变换为一维系数。根据预测模式和帧内预测模式来确定扫描图案。也可以根据变换单元的大小来确定扫描模式。
扫描单元131根据当前变换单元的大小来确定是否将量化的变换块划分为多个子集。如果变换单元的大小大于第一参考大小,则将量化的变换块划分为多个子集。第一参考大小是4×4或8×8。
扫描单元131确定要应用于量化的变换块的扫描模式。在帧间预测中,使用预定扫描模式(例如,锯齿形扫描)。在帧内预测中,基于帧内预测模式来选择扫描模式,并且可以根据定向帧内预测模式而改变。第一扫描模式用于非定向帧内预测模式。非定向帧内预测模式是dc模式和平面模式。以正向或反向执行扫描。当将量化的系数被划分为多个子集时,将同一个的扫描模式应用于所有的子集。该多个子集由一个主子集和一个或多个残差子集构成。主子集位于左上侧,并且包括dc系数。该一个或多个残差子集覆盖除主子集之外的区域。
第一扫描模式可以被应用来扫描子集。可以在正向上从主子集开始向残差子集扫描子集,或者可以在反向上扫描子集。用于扫描子集的扫描模式可以被设置得与用于扫描在子集中的量化的变换系数的扫描模式相同。在这种情况下,根据帧内预测模式来确定用于扫描子集的扫描模式。
编码器向解码器发送能够指示变换单元的最后一个非零量化系数的信息。编码器还向解码器发送能够指示每一个子集的最后一个非零量化系数的位置的信息或用于指示每个子集是否包括非零系数的信息。
逆量化单元135将量化的变换系数进行逆量化。逆变换单元125从逆量化的变换系数恢复空间域的残差块。加法器通过将由逆变换单元125重构的残差块与来自帧间预测单元150或帧间预测单元160的预测块相加来生成重构的块。
后处理单元170执行去块滤波处理,用于去除在重构的画面中生成的块效应,执行自适应偏移应用处理,用于补充在每个像素的重构的画面与原始图像之间的差别,并且执行自适应回路滤波处理,用于补充在编码单元中的重构画面与原始图像之间的差别。
去块滤波处理可以被应用到在具有预定大小或更大的预测单元之间的边界以及在变换单元之间的边界。该预定大小可以是8×8。该去块滤波处理包括:确定要滤波的边界的步骤;确定要向边界应用的边界滤波强度的步骤;确定是否应用去块滤波器的步骤;以及,当确定应用去块滤波器时选择要向边界应用的滤波器的步骤。
确定是否应用去块滤波器的依据是:i)边界滤波强度是否大于0;以及,ii)用于指示在p块和q块的边界像素之差的值是否小于根据量化参数确定的第一参考值。
可以存在两个或更多个滤波器。当在与块边界相邻的两个像素之差的绝对值等于或大于第二参考值时,选择弱滤波器。通过量化参数和边界滤波强度来确定第二参考值。
可以基于通过比较原始图像与应用了去块滤波处理或自适应偏移应用处理的重构图像而获得的值来执行自适应回路滤波处理。通过基于4×4块的一个拉普拉斯算子活性值(laplacianactivityvalue)来检测自适应回路滤波器(alf)。所确定的alf可以被应用于在4×4块或8×8块中包括的所有像素。可以根据编码单元来确定是否要应用alf。回路滤波器的大小和系数可以根据每一个编码单元而改变。片断数据头可以包括用于指示是否要对各个编码单元应用alf的信息、滤波器系数信息和滤波器形状信息等。在色度分量的情况下,可以以画面为单位来确定是否应用alf。与亮度不同,回路滤波器可以具有矩形。
画面存储单元180从后处理单元160接收后处理的图像数据,并且以画面为单位存储图像。画面可以是在帧或域中的图像。画面存储单元180具有能够存储多个画面的缓冲器(未示出)。
帧间预测单元150使用在画面存储单元180中存储的一个或多个参考画面来执行运动估计,并且确定用于指示参考画面的参考画面索引和运动矢量。根据参考画面索引和运动矢量,帧间预测单元150从在帧间预测单元150中存储的多个参考画面中选择的参考画面提取与要编码的预测单元对应的预测块,并且输出所提取的预测块。
帧内预测单元140使用在当前画面内的重构的像素值来执行帧内预测。帧内预测单元140接收要预测编码的当前预测单元,选择预定数量的帧内预测模式之一,并且执行帧内预测。帧内预测模式的预定数量可以取决于当前预测单元的大小。帧内预测单元自适应地滤波参考像素以生成帧内预测块。当一些参考像素不可用时,就能够使用一个或多个可用的参考像素来在不可用的位置处生成参考像素。
熵编码单元130对量化单元130所量化的量化系数、从帧内预测单元140接收的帧内预测信息和从帧间预测单元150接收的运动信息等进行熵编码。
图3是根据本发明的运动画面解码设备的框图。
参见图3,根据本发明的运动画面解码设备包括熵解码单元210、逆量化/变换单元220、加法器270、后处理单元250、画面存储单元260、帧内预测单元230、帧间预测单元240和开关280。
熵解码单元210从运动画面编码设备发送的所接收的比特流提取帧内预测模式索引、运动矢量和量化系数序列(残差块信号)等。熵解码单元210向帧间预测单元240发送解码的运动信息,向帧内预测单元230和逆量化/变换单元220发送帧内预测模式索引,并且向逆量化/变换单元220发送量化的系数序列。
逆量化/变换单元220包括逆扫描单元221、逆量化单元222和逆变换单元223。
逆扫描单元221将量化的系数序列转换为二维逆量化系数。选择多个逆扫描模式之一进行转换。基于当前块的预测模式(帧内预测模式或帧间预测模式)和帧内预测模式的至少一个来选择逆扫描模式。
例如,在帧间预测中,使用第一扫描模式(例如,锯齿形扫描或对角扫描)。在帧内预测中,基于帧内预测模式来选择第二扫描模式。可以根据定向帧内预测模式来改变第二扫描模式。对于非定向帧内预测模式,可以应用第一扫描模式。
如果要解码的当前变换单元的大小大于第一预定参考大小并且以子集为单位来编码当前变换单元,则通过逆扫描每一个子集来恢复量化的变换块。在这种情况下,向所有的子集应用相同的扫描模式。该多个子集由一个主子集和一个或多个残差子集构成。该主子集位于左上侧,并且包括dc系数。该一个或多个残差子集覆盖除主子集之外的区域。
第一扫描模式可以被应用来逆扫描子集。可以在正向上从主子集开始向残差子集来对子集进行扫描,或者可以在反向上扫描子集。用于扫描子集的扫描模式可以被设置为与用于扫描在子集中的量化的变换系数的扫描模式相同。在这种情况下,根据帧内预测模式来确定对子集进行逆向扫描的扫描模式。
当变换单元的大小等于或大于预定大小时,可以通过解码用于指示各个子集是否包括非零系数的信息来执行逆扫描。也就是说,可以通过以下方式来恢复量化的变换块:使用信息对包括非零系数的子集中的系数进行逆扫描,并且将包括0的所有子集设置为0。
逆量化单元222生成当前编码单元的量化步长预测子。在具有等于或大于预定大小的编码单元上确定量化步长。如果在该预定大小中包括多个编码单元,则根据该预定大小来确定量化步长。逆量化单元222可以利用相邻编码单元的一个或多个量化步长或前一个编码单元的量化步长以扫描顺序来确定量化步长预测子。
逆量化单元222恢复量化步长以逆量化2d逆量化系数。在具有等于或大于预定大小的编码单元上确定量化步长。如果编码单元的大小小于预定大小,则将以预定大小为单位在每一个编码单元确定的预定量化步长确定为量化步长。逆量化单元222可以以扫描顺序将当前预测单元的一个或多个相邻编码单元的量化步长或前一个编码单元的量化步长用作当前编码单元的量化步长预测子。
例如,逆量化单元222可以根据当前编码单元的帧内预测模式而自适应地选择左编码单元的量化步长、上编码单元的量化步长或等于左和上量化步长的量化步长的舍入平均值来作为当前编码单元的量化步长预测子。
如果上编码单元不存在,则可以将左编码单元或前一个编码单元的量化步长确定为量化步长预测子。如果左编码单元不可用的,则可以将上编码单元或前一个编码单元的量化步长确定为量化步长预测子。当使用左和上编码单元的量化步长的舍入平均值时,如果仅一个量化步长是可用的,则可以将这个可用的量化步长和前一个编码单元的量化步长确定为量化步长预测子。在帧间预测中,量化步长预测子是左和上编码单元的量化步长的舍入平均值或前一个编码单元的量化步长。同时,可以仅对lcu内的编码单元应用上述方法。也就是说,如果左或上编码单元位于lcu的边界之外,则该编码单元可以被看作不可用的编码单元。
当确定量化步长预测子时,通过将接收的残差量化步长与量化步长预测子相加来生成当前编码单元的量化步长。然后,使用由量化步长和预测模式确定的逆量化矩阵来对量化的变换系数进行逆量化。
如果逆量化的块是亮度块并且预测模式是帧内预测,则逆变换单元223根据变换单元的大小来确定逆变换矩阵。例如,如果变换单元的大小等于或小于预定大小,则根据帧内预测模式来确定垂直和水平一维逆变换矩阵。例如,如果帧内预测模式是水平的,则残差块很可能具有垂直方向。因此,向垂直方向应用基于dct的整数矩阵,并且向水平方向应用基于dst或klt的整数矩阵。如果帧内预测模式是垂直的,则向垂直方向应用基于dst或klt的整数矩阵,并且向水平方向应用基于dct的整数矩阵。另外,在dc模式中,向水平和垂直方向应用基于dct的整数矩阵。也就是说,在亮度分量的帧内预测中,可以根据变换单元的大小和帧内预测模式来自适应地确定逆变换矩阵。同时,在色度分量的帧内预测模式中,逆变换矩阵是预定矩阵,而与预测模式(帧内预测模式或帧间预测模式)和帧内预测模式无关。
加法器270将由逆量化/变换单元220恢复的恢复残差块和由帧内预测单元230或帧间预测单元240生成的预测块相加以生成重构块。
后处理单元250执行:去块滤波处理,用于去除在重构的画面中产生的块效应;自适应偏移应用处理,用于补充在每一个像素的重构的画面和原始图像之间的差别;以及,自适应回路滤波处理,用于补充在编码单元中的重构画面和原始图像之间的差别。
去块滤波处理可以被应用到在具有预定大小或更大的预测单元和变换单元的边界。在预测单元或变换单元的水平长度或垂直长度小于8的情况下,可以向具有大小为8×8的块边缘应用去块滤波处理。首先对垂直边缘进行滤波,然后对水平边缘进行滤波。该去块滤波处理包括:确定要滤波的边界的步骤;确定要向边界应用的边界滤波强度的步骤;确定是否应用去块滤波器的步骤;以及,当确定应用去块滤波器时选择要向边界应用的滤波器的步骤。
确定是否应用去块滤波器的依据是:i)边界滤波强度是否大于0;以及,ii)用于指示在p块和q块的边界像素之间的差别的值是否小于根据量化参数确定的第一参考值。
可以存在两个或更多的滤波器。当在与块边界相邻的两个像素之差的绝对值等于或大于第二参考值时,选择弱滤波器。通过量化参数和边界滤波强度来确定第二参考值。
可以基于通过比较原始图像和应用了去块滤波处理或自适应偏移应用处理的重构图像而获得的值来执行自适应回路滤波处理。通过基于4×4块的一个拉普拉斯行为值来检测自适应回路滤波器(alf)。所确定的alf可以被应用到在4×4块或8×8块中包括的所有像素。可以根据编码单元来确定是否要应用alf。回路滤波器的大小和系数可以根据每一个编码单元而改变。片断数据头可以包括用于指示是否要向每一个编码单元应用alf的信息、滤波器系数信息和滤波器形状信息等。在色度分量的情况下,可以以画面为单位来确定是否应用alf。与亮度不同,回路滤波器可以具有矩形形状。
画面存储单元260是用于存储由后处理单元250进行滤波的局部重构画面的帧存储器。
帧内预测单元230基于接收的帧内预测模式索引来恢复当前块的帧内预测模式,并且根据恢复的帧内预测模式来生成预测块。
开关280根据预测模式向加法器270提供由帧内预测单元230或帧间预测单元240生成的预测单元。
帧间预测单元240基于接收的运动信息来恢复当前预测单元的运动信息,并且基于恢复的运动信息来从在画面存储单元260中存储的画面生成预测块。当应用十进制精度的运动补偿时,帧间预测单元240通过应用所选择的内插滤波器来生成预测块。
现在,描述帧间预测模式的运动图像的解码方法。该方法包括:生成当前预测单元的预测块的过程、恢复当前预测单元的残差块的过程和使用所述预测块和所述残差块来生成重构块的过程。通过图3的帧间预测单元240来执行生成预测块的过程。
生成当前预测单元的预测块的过程如下。该过程包括:1)导出预测单元的运动信息的步骤;以及,2)用于生成预测单元的预测块的步骤。该运动信息包括运动矢量、预测方向和参考画面索引。
当以跳跃模式对预测单元进行编码时,生成预测块的过程如下。如果在所接收的编码单元中的skip_flag是1,则预测单元是编码单元。
图4是示出根据本发明的空间跳跃候选项的位置的概念图。如图4所示,左预测单元(a块)、上预测单元(b块)、右上预测单元(c块)和左下预测单元(d块)可以是空间跳跃候选项。当存在多个左预测单元时,可以将最上的左预测单元或最下的左预测单元确定为左预测单元。当存在多个上预测单元时,可以将最左的上预测单元或最右的上预测单元确定为上预测单元。
首先,查看每个空间跳跃候选项(a、b、c、d)的可用的性。如果预测单元不存在或预测单元的预测模式是帧内预测,则将候选块确定为不可用的。
如果超过预定数量的一个或多个候选块a、b、c和d不可用的,则当前预测单元的左上预测单元(e块)可以是空间跳跃候选项,。可以根据从编码器发送的跳跃候选项的数量来确定该预定数量。
导出时间跳跃候选项。导出时间跳跃候选项的过程包括用于导出时间跳跃候选项的参考画面索引的步骤和用于导出时间跳跃候选项的运动矢量的步骤。时间跳跃候选项的参考画面索引可以被设置为0,或者可以使用空间相邻的预测单元的参考画面索引来导出时间跳跃候选项的参考画面索引。该相邻的预测单元是预定的。
按照如下方式导出用于时间跳跃候选项的运动矢量。
首先,确定时间跳跃候选项块所属的画面(以下,“时间跳跃候选画面”)。可以将索引0的参考画面确定为时间跳跃候选画面。例如,当片断类型是p时,将参考画面列表0的第一参考画面确定为时间跳跃候选画面。当片断类型是b时,使用用于指示时间跳跃候选画面的片断数据头的标记来选择一个参考画面列表,并且将该选择的参考画面列表的第一参考画面确定为时间跳跃候选画面。例如,当该标记是1时,从所选择的参考画面列表0导出时间跳跃候选画面,而当标记是0时,从所选择的参考画面列表1导出时间跳跃候选画面。
可替代地,将由时间跳跃候选项的参考画面索引指示的参考画面确定为时间跳跃候选项块所属的时间跳跃候选画面。
接下来,导出时间跳跃候选块。与当前预测单元对应的多个块之一被选定为时间跳跃候选块。所述多个块被包括在时间跳跃候选画面中。在这种情况下,基于当前预测单元的位置来选择多个块之一,或者,选择位于预定位置处的多个块之一。当选择多个块之一时,将基于向多个块指配的优先级而确定的第一可用的块被选定为时间跳跃候选块。如果与当前预测单元对应的块的运动矢量是不可用的,则认为时间跳跃候选项是不可用的。
图5是图示根据本发明的在与当前预测单元对应的时间跳跃候选画面中的块的位置的概念图。
在选定候选块之一的情况下,右下角的块(br_c块)或右下块(br块)可以是第一跳跃候选块。并且,包括左上像素的块(c1块)以及被包括在时间跳跃候选画面中并且与当前预测单元相对应的块的中心位置的左上像素的块(c2块)可以是第二跳跃候选块。如果第一候选块是可用的,则将第一候选块确定为时间跳跃候选块。如果第一候选块是不可用的并且第二候选块是可用的,则将第二候选块确定为时间跳跃候选块。
在当前预测单元位于画面的下边界或右边界时,如果第二跳跃候选块是可用的,则将第二候选块确定为时间跳跃候选块。在当前预测单元位于片断或lcu的下边界处时,如果第二跳跃候选块是可用的,则将第二候选块确定为时间跳跃候选块。
接下来,生成跳跃候选列表。
使用可用的空间和时间跳跃候选项来生成跳跃候选列表。可以以预定顺序来列出跳跃候选项。该预定顺序可以是空间左跳跃候选项(a块)、空间上跳跃候选项(b块)、时间跳跃候选项、空间右上跳跃候选项(c块)和空间左下跳跃候选项(d块)的顺序。
可以根据从编码器发送的跳跃候选项的数量来改变该预定顺序。在这种情况下,不改变空间跳跃候选项的顺序(也就是说,a、b、c、d、e,并且允许可用的空间跳跃候选项),但是,可以改变时间跳跃候选项的优先级。
例如,如果跳跃候选项的数量是5,则在可用的的空间跳跃候选项后列出时间跳跃候选项。如果跳跃候选项的数量是3,则可以调整时间跳跃候选项的顺序,使得在头三个列出时间候选项。可以按照空间左跳跃候选项(a块)、空间上跳跃候选项(b块)和时间跳跃候选项的顺序来列出跳跃候选项。如果存在两个或更多个可用的空间跳跃候选项,则在两个可用的空间跳跃候选项之后列出时间跳跃候选项。当跳跃候选项的数量是2或4时,应用同一方法。
同时,如果在跳跃候选项列表中的可用的跳跃候选项的数量小于从编码器接收的候选项数量,则生成一个或多个跳跃候选项。在最后一个可用的跳跃候选项之后列出所生成的跳跃候选项。当生成多个跳跃候选项时,以预定顺序来增加这些候选项。
使用多种方法以预定顺序来生成跳跃候选项。用于生成跳跃候选项的方法取决于当前预测单元所属的片断的类型。
在当前片断类型是b并且可用的跳跃候选项的数量是2或更多时,可以使用第一种方法。当第一可用的跳跃候选项的参考列表与第二可用的跳跃候选项的参考列表不同时,可以结合第一可用的跳跃候选项的运动信息和第一可用的跳跃候选项的运动信息以生成一个或多个跳跃候选项。所生成的跳跃候选项是双向运动信息。如果生成多个跳跃候选项,则根据预定顺序来增加所生成的跳跃候选项。基于可用的跳跃候选项的索引来确定该预定顺序。通过第一种方法生成的跳跃候选项的数量可以限于预定数量。
在第二种方法中,增加具有零运动矢量的跳跃候选项。具有零运动矢量的跳跃候选项是单向l0跳跃候选项、单向l1跳跃候选项和双向跳跃候选项之一。单向l0跳跃候选项具有零运动矢量、参考画面列表0和参考画面索引0。单向l1跳跃候选项具有零运动矢量、参考画面列表1和参考画面索引0。双向跳跃候选项是单向l0跳跃候选项和单向l1跳跃候选项的组合。
在当前片断类型是p时,增加单向l0跳跃候选项。在当前片断类型是b时,可以增加具有零运动矢量的一个或多个跳跃候选项。对于片断类型b,可以首先增加双向跳跃候选项,或者可以按照预定顺序(例如,按照双向跳跃候选项和单向跳跃候选项的顺序)来增加具有零运动矢量的跳跃候选项,直到达到了跳跃候选项的数量。
接下来,导出当前预测单元的运动矢量和参考画面索引。
当在所接收的预测单元中存在跳跃索引时,由该跳跃索引指示的跳跃候选项的运动矢量和参考画面索引被确定为当前预测单元的运动矢量和参考索引。当在所接收的预测单元中没有跳跃索引并且存在跳跃候选项时,将该跳跃候选项的运动矢量和参考画面索引确定为当前预测单元的运动矢量和参考索引。
当跳跃候选项指示时间跳跃候选项时,将该时间跳跃候选项的运动矢量确定为当前预测单元的运动矢量,并且将时间跳跃候选项的参考画面索引确定为当前预测单元的参考画面索引。
如果导出当前预测单元的运动矢量和参考画面索引,则使用在由参考画面索引指示的画面中的运动矢量来生成预测块。预测块被输出为当前预测单元的重构块。
接下来,描述合并模式。
当编码单元中的skip_flag(跳跃标记)是0并且在所接收的预测单元中的merge_flag(合并标记)是1时,生成预测块的过程与生成跳跃模式的预测块的过程几乎相同。
从相邻的预测单元导出可用的的空间合并候选项。用于获得空间合并候选项的过程与用于获得空间跳跃候选项的过程相同。但是,在当前预测单元是2n×n、n×2n、2n×nu、2n×nd、nl×2n或nr×2n并且当前预测单元是分区1时,删除与分区0对应的合并候选项。
用于获得时间合并候选项的过程与用于获得时间跳跃候选项的过程相同。
构造合并候选项列表的过程以及生成合并候选项的过程与在跳跃模式中的过程相同。
当在接收的预测单元中存在合并索引时,将由在合并候选项列表中的合并索引指示的合并候选项的运动矢量和参考画面索引确定为当前预测单元的运动矢量和参考索引。当在接收的预测单元中没有合并索引时,将第一可用的合并候选项的运动矢量和参考画面索引确定为当前预测单元的运动矢量和参考索引。
如果导出当前预测单元的运动矢量和参考画面索引,则使用由参考画面索引指示的画面中的参考画面来生成预测块。
接下来,通过熵解码、逆扫描、逆量化和逆变换从接收的残差信号恢复残差块。分别通过图2的解码设备的熵解码单元210、逆扫描单元221、逆量化单元222和逆变换单元223来执行所述过程。
最后,使用预测块和残差块来生成当前预测单元的重构块。
接下来,将描述amvp模式。当编码单元中的skip_flag是0并且所接收的预测单元中的merge_flag是0时,应用amvp模式。生成预测块的过程如下。
首先,从接收的比特流获得当前预测单元的参考画面索引和运动矢量差。如果片断类型是b,则查看帧间预测信息(inter_pred_flag)。如果帧间预测信息指示使用组合参考画面列表(pred_lc)的单向预测,则使用参考画面索引来选择在组合的参考画面列表(list_c)的参考画面中的参考画面,并且恢复运动矢量差。如果帧间预测信息指示使用参考画面列表0的单向预测,则使用参考画面列表0的参考画面索引来选择参考画面,并且恢复运动矢量差。如果帧间预测信息指示双向预测,则使用参考画面列表0和1的各个参考画面索引来选择各个参考画面,并且,恢复各个参考画面的各个运动矢量差。
接下来,确定运动矢量预测。在空间运动矢量候选项和时间运动矢量候选项中选择运动矢量预测子。
图6是示出根据本发明的用于生成运动矢量候选项的相邻预测单元的位置的概念图。
空间左运动矢量候选项可以是当前预测单元的左预测单元之一(块a0块和a1块之一)。空间上运动矢量候选项可以是当前预测单元的上预测单元(b0块、b1块和b2块)之一。
首先,将描述用于导出空间左运动矢量候选项的过程。
通过按照a0块和a1块的顺序检索当前预测单元的左块来查看是否存在满足第一条件或第二条件的预测单元。第一条件是:1)存在预测单,2)该预测单元是帧间预测编码的单元,3)该预测单元具有与当前预测单元相同的参考画面,并且,4)该预测单元具有与当前预测单元相同的参考画面列表。如果存在满足第一条件的预测单元,则将该预测单元的运动矢量确定为空间左运动矢量候选项。第二条件是:1)存在预测单元,2)该预测单元是帧间预测编码的单元,3)该预测单元具有与当前预测单元相同的参考画面,并且,4)该预测单元具有与当前预测单元不同的参考画面列表。如果存在满足第二条件的预测单元,则将该预测单元的运动矢量确定为空间左运动矢量候选项。如果存在满足第一条件或第二条件的预测单元,则将该预测单元的运动矢量确定为空间左运动矢量候选项。
如果不存在满足第一条件和第二条件的任意一个的预测单元,则当按照a0块和a1块的顺序来检索左块时查看是否存在满足第三条件或第四条件的预测单元。第三条件是:1)存在预测单元,2)该预测单元是帧间预测编码的单元,3)该预测单元具有与当前预测单元相同的参考画面列表,并且,4)该预测单元具有与当前预测单元不同的参考画面。如果存在满足第三条件的预测单元,则将该预测单元的运动矢量确定为空间左运动矢量候选项。第四条件是:1)存在预测单元,2)该预测单元是帧间预测编码的单元,3)该预测单元具有与当前预测单元不同的参考画面列表,并且,4)该预测单元具有与当前预测单元不同的参考画面。如果存在满足第三条件或第四条件的预测单元,则将该预测单元的运动矢量确定为空间左运动矢量候选项。
满足第一条件或第二条件的预测单元的运动矢量不进行缩放。但是,满足第三条件或第四条件的预测单元的运动矢量进行缩放。
如果没有满足任何一个条件的预测单元,则空间左运动矢量候选项是不可用的。
用于导出空间上运动矢量候选项的过程如下。
当按照b0块、b1块和b2块的顺序来检索上面的块时,查看是否存在满足第一条件或第二条件的预测单元。如果存在满足第一条件或第二条件的预测单元,则将该预测单元的运动矢量确定为空间上运动矢量候选项。
如果不存在满足第一条件和第二条件的任一个的预测单元,则查看是否存在满足第三条件或第四条件的预测单元。如果存在满足第三条件或第四条件的预测单元,则将预测单元的运动矢量确定为空间左运动矢量候选项。但是,如果空间左运动矢量候选项满足第三条件或第四条件,则空间上运动矢量候选项可以被设置为不可用的。
导出时间运动矢量候选项的过程与导出时间跳跃候选项的运动矢量的过程相同。
接下来,构造运动矢量候选项列表。
使用可用的的空间和时间运动矢量候选项来构造运动矢量候选项列表。可以按照预定顺序来构造运动矢量候选项列表。该预定顺序是空间左运动矢量候选项(a块)、空间上运动矢量候选项(b块)和时间运动矢量候选项的顺序,或者时间运动矢量候选项、空间左运动矢量候选项(a块)和空间上运动矢量候选项(b块)的顺序。
可以根据预测单元的预测模式来改变预定顺序。
接下来,如果多个候选项具有相同的运动矢量,则在运动矢量候选项列表中删除最低优先级的候选项。如果在列表中的运动矢量候选项的数量小于预定数量,则增加零矢量。
接下来,获得当前预测单元的运动矢量预测子。将由运动矢量索引指示的运动矢量候选项确定为当前预测单元的运动矢量预测子。
接下来,通过将从编码器接收的运动矢量差和运动矢量预测子相加来生成当前预测单元的运动矢量。并且,使用从编码器接收的参考画面索引和恢复的运动矢量来生成预测块。
另外,通过熵解码、逆扫描、逆量化和逆变换从自编码器接收的残差信号来恢复残差块。分别通过图3的解码设备的熵解码单元210、逆扫描单元221、逆量化单元222和逆变换单元223来执行该过程。
最后,使用预测块和残差块来生成重构块。
虽然已经参考本发明特定示例性实施例示出并描述了本发明,但是本领域的技术人员可以明白,在不偏离由所附的权利要求书限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。