掌桥专利:专业的专利平台
掌桥专利
首页

用于对图像进行编码或解码的方法和设备

文献发布时间:2023-06-19 11:17:41


用于对图像进行编码或解码的方法和设备

本发明申请是申请日为2016年10月13日,申请号为201680059343.2,发明名称为“用于对图像进行编码或解码的方法和设备”的发明专利申请的分案申请。

技术领域

本公开涉及图像编码方法和图像解码方法以及图像编码设备和图像解码设备,并且更具体地涉及进一步高效地执行预测、运动补偿、变换和熵编码的图像编码方法和图像解码方法以及图像编码设备和图像解码设备。

背景技术

由基于预定数据压缩标准(例如,运动图像专家组(MPEG)标准)的编解码器来对图像数据进行编码,然后以比特流的形式存储在记录介质中或者经由通信信道来传送。

由于正在开发和提供用于再现和存储高分辨率或高质量图像内容的硬件,因此对用于有效地对高分辨率或高质量图像内容进行编码或解码的编解码器的需求正在增加。所编码的图像内容可以被解码以被再现。近来,正在执行有效地对高分辨率或高质量图像内容进行压缩的方法。例如,通过对编码目标图像进行随机处理来执行高效的图像压缩方法。

发明内容

技术问题

提供了一种旨在提高图像压缩率的图像编码方法或图像解码方法以及图像编码设备或图像解码设备。

技术方案

根据本公开的一方面,一种图像解码方法包括:从比特流中提取通过核心变换、二次变换和量化而生成的量化系数;通过对所述量化系数执行反量化来生成反量化系数;通过对所述反量化系数的低频分量执行二次逆变换来生成二次逆变换系数,所述二次逆变换对应于所述二次变换;以及对所述二次逆变换系数执行核心逆变换,所述核心逆变换对应于所述核心变换。

所述图像解码方法还可以包括从所述比特流获得关于是否执行所述二次逆变换的信息,并且其中所述二次逆变换是可以基于关于是否执行所述二次逆变换的所述信息来执行的。

所述二次逆变换可以是对变换块中的子群单元执行的,并且所述子群单元的尺寸可以是基于所述变换块的尺寸或者基于量化参数而确定的。

要对所述子群单元执行的所述二次逆变换的类型可以基于所述子群单元的位置来确定。

根据本公开的另一方面,一种熵解码方法,包括:通过使用第一概率模型和第二概率模型来更新在对先前二进制执行算术解码时使用的先前的概率信息,从而从接收到的比特流中获得在对当前二进制执行算术解码时使用的概率信息;通过基于所获得的概率信息执行算术解码来获得所述当前二进制;以及通过对所获得的当前二进制进行去二值化来获得语法元素,其中所述第一概率模型和所述第二概率模型均使用指示在当前二进制之前解码的二进制数目的窗口尺寸,并且所述第一概率模型的窗口尺寸小于所述第二概率模型的窗口尺寸。

所述第一概率模型的窗口尺寸和所述第二概率模型的窗口尺寸可以是从所述比特流中获得的。

所述第一概率模型的窗口尺寸和所述第二概率模型的窗口尺寸中的一个窗口尺寸可以具有固定值。

根据本公开的另一方面,一种图像解码方法,包括:从接收到的比特流中提取要解码的当前块的预测模式信息;基于提取出的预测模式信息,生成关于所述当前块的第一预测块;从所述比特流中提取关于计算的计算信息,所述计算中使用了构成所述第一预测块的每个像素和所述每个像素的相邻像素;基于提取出的计算信息,通过经由关于构成所述第一预测块的所述每个像素和位于所述每个像素的上部和左部的像素的计算来改变所述每个像素的像素值,从而生成第二预测块;从所述比特流中提取并重构与所述当前块和所述第二预测块之间的差值相对应的残差;以及通过将所述残差与所述第二预测块相加来对所述当前块进行解码,其中所述计算信息包括参数索引信息,并且所述参数索引信息包括:被应用到构成所述第一预测块的所述每个像素的第一权重参数、被应用到位于所述每个像素的上部的像素的第二权重参数以及被应用到位于所述每个像素的左部的像素的第三权重参数。

所述参数索引信息可以针对分别具有2Nx2N尺寸和NxN尺寸的编码单元中的每个编码单元而被定义。

所述参数索引信息可以被包括在所述预测模式信息中。

所述参数索引信息可以是在编码单元层或预测单元层从所述比特流中获得的。

根据本公开的另一方面,一种图像解码方法,包括:接收比特流;基于从所述比特流中提取出的、关于像素单位运动补偿是否受限的信息,来确定是否对当前块执行所述像素单位运动补偿;当执行所述像素单位运动补偿时,从所述比特流中提取关于第一运动矢量和第二运动矢量的信息,所述第一运动矢量和所述第二运动矢量分别指示第一参考画面和第二参考画面中与当前块最相似的第一对应区域和第二对应区域;通过使用所述第一运动矢量和所述第二运动矢量来对所述当前块执行块单位双向运动补偿;通过使用所述第一参考画面和所述第二参考画面的像素来对所述当前块的每个像素执行所述像素单位运动补偿;以及通过使用所述块单位双向运动补偿的结果和所述像素单位运动补偿的结果,来生成所述当前块的双向运动预测值。

所述关于像素单位运动补偿是否受限的信息可以包括以下信息中的至少一个:编码块标志(CBF)、指示是否通过使用所导出的运动信息来执行运动补偿的信息、指示是否执行局部光照补偿的信息、指示是否执行仿射运动补偿的信息,并且当所述CBF不为0时,所述运动补偿通过使用所导出的运动信息来执行、所述局部光照补偿被执行、或者所述仿射运动补偿被执行,所述像素单位运动补偿可以不被执行。

执行所述像素单位运动补偿的步骤可以包括:通过使用以下内容生成所述当前块的所述每个像素的像素单位运动补偿值:与所述当前块的所述每个像素相对应的所述第一参考画面的第一对应像素的水平方向梯度和垂直方向梯度、与所述当前块的所述每个像素相对应的所述第二参考画面的第二对应像素的水平方向梯度和垂直方向梯度以及通过使用所述第一参考画面的像素和所述第二参考画面的像素而确定的水平方向位移矢量和垂直方向位移矢量。

所述水平方向位移矢量和所述垂直方向位移矢量可以被确定为通过其使得第一位移值与第二位移值之间的差值变为最小值的水平方向位移矢量和垂直方向位移矢量,其中所述第一位移值是通过以下方式获得的:通过使用所述第一对应像素的水平方向位移矢量和垂直方向位移矢量以及水平方向梯度和垂直方向梯度,来使所述第一参考画面的所述第一对应像素在具有预定尺寸的窗口区域中移位,并且所述第二位移值是通过以下方式获得的:通过使用所述第二对应像素的水平方向位移矢量和垂直方向位移矢量以及水平方向梯度和垂直方向梯度,使所述第二参考画面的所述第二对应像素移位。

技术效果

图像编码方法和图像解码设备,以及与图像编码方法和图像编码设备相对应的图像解码方法和图像解码设备可以提供进一步高效地执行预测、运动补偿、变换和熵编码的效果。

附图说明

图1是图示了根据实施例的图像编码设备的配置的框图。

图2是图示了根据实施例的图像解码设备的配置的框图。

图3是图示了根据实施例的执行核心变换和二次逆变换的图像编码设备和图像解码设备的配置的框图。

图4是根据实施例的作为执行二次逆变换的单元的子群的图。

图5是图示了根据实施例的执行二次逆变换的范围的图。

图6是根据实施例的图像解码方法的流程图。

图7是图示了根据实施例的熵编码器的配置的框图。

图8是示意性地图示了概率模型的更新过程的图。

图9是根据实施例的关于第一概率模型和第二概率模型的更新后的概率之间的比较的图。

图10是图示了根据实施例的熵解码器的配置的框图。

图11是根据实施例的熵解码方法的流程图。

图12是图示了根据实施例的包括后处理器的图像编码设备的配置的框图。

图13图示了16×16帧内预测模式的示例。

图14图示了4×4帧内预测模式的示例。

图15是用于描述根据实施例的对第一预测块进行后处理的操作的参考图。

图16是图示了根据实施例的后处理器的操作的另一参考图。

图17是图示了根据实施例的包括后处理器的图像解码设备的配置的框图。

图18是图示了根据实施例的图像编码方法的流程图。

图19是图示了根据实施例的图像解码方法的流程图。

图20是图示了根据实施例的运动补偿器的配置的框图。

图21是用于描述根据实施例的基于块的双向运动预测和双向运动补偿的处理的参考图。

图22是用于描述根据实施例的执行像素单位运动补偿的处理的参考图。

图23是用于描述根据实施例的确定水平方向位移矢量和垂直方向位移矢量的处理的参考图。

图24是用于描述根据实施例的计算水平方向梯度和垂直方向梯度的处理的参考图。

图25是用于描述根据另一实施例的计算水平方向梯度和垂直方向梯度的处理的参考图。

图26是示出了根据另一实施例的梯度计算滤波器的滤波器系数的表。

图27是根据实施例的图像编码方法的流程图。

图28是根据实施例的图像解码方法的流程图。

具体实施方式

通过参照以下对实施例和附图的详细描述,可以更容易理解本公开的优点和特征及其实现方法。然而,本公开可以以许多不同的形式来实施,并且不应该被解释为限于本文所阐述的实施例。相反,提供这些实施例,从而本公开将是详尽的和完整的,并且将本公开的概念完全传达给本领域的普通技术人员。

在下文中,将简要描述说明书中使用的术语,并且将详细描述本公开。

本文使用的包括描述性或技术性术语的所有术语都应该被解释为具有对于本领域普通技术人员来说显而易见的含义。然而,根据本领域普通技术人员的意图、先例或新技术的出现,这些术语可以具有不同的含义。另外,一些术语可以由申请人任意选择,并且在这种情况下,将在本发明的详细描述中详细描述所选择的术语的含义。因此,本文使用的术语必须基于这些术语的含义以及整个说明书的描述一起来定义。

在整个说明书中,单数形式可以包括复数形式,除非存在与其相反的特定描述。

在整个说明书中,当部件“包括”或“包含”元件时,除非有与其相反的特定描述,否则该部件还可以包括其他元件,但不排除其他元件。另外,本文使用的术语“单元”意指但不限于执行某些任务的软件或硬件组件,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。单元可以有利地被配置为位于可寻址存储介质上并且被配置为在一个或更多个处理器上执行。因此,作为示例,单元可以包括组件(诸如软件组件、面向对象的软件组件、类组件和任务组件)、进程、功能、属性、过程、子例程、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表格、数组和变量。组件和单元中提供的功能可以被组合成更少的组件和单元,或者被进一步分成附加的组件和单元。

在下文中,“图像”可以指示诸如视频的静止图像的静态图像,或者可以指示诸如作为视频本身的运动图片之类的动态图像。

现在将参照附图更充分地描述本公开,以使本领域的普通技术人员能够毫无困难地执行本公开。为了更清楚地描述本公开,在附图中省略了与描述无关的部件或单元。

以下,现在将参照图1至图28来描述根据实施例的图像编码设备、图像解码设备、图像编码方法和图像解码方法。

更详细地,下面将参照图1和图2来描述根据实施例的图像编码设备和图像解码设备的粗略配置。另外,下面将参照图3至图6来描述涉及使用核心变换和二次逆变换的图像编码方法和图像解码方法。另外,下面将参照图7至图11来描述涉及使用第一概率模型和第二概率模型的熵编码方法和熵解码方法。另外,下面将参照图12至图19来描述根据实施例的对预测块进行后处理的方法。另外,下面将参照图20至28来描述按照块单位和像素单位执行运动补偿的方法。

在下文中,现在将参照附图来描述本公开的示例实施例。

图1是图示了根据实施例的图像编码设备的配置的框图。

根据实施例的图像编码设备100可以包括变换器125、量化器130、熵编码器135、反量化器145、逆变换器150、去块器155、采样点自适应偏移(SAO)执行器160、帧内预测器120、重构画面缓存器110和帧间预测器115。

根据实施例的图像编码设备100执行对图像数据进行编码的处理。即,帧内预测器120针对每个预测单元对当前图像105中的帧内模式下的编码单元执行帧内预测,并且帧间预测器115通过使用当前图像105和根据预测单元从重构画面缓存器110获得的参考图像来对帧间模式的编码单元执行帧间预测。当前图像105可以被分割成最大编码单元,然后可以依次对最大编码单元进行编码。就此而言,可以对要被分割成具有树结构的编码单元的最大编码单元进行编码。

通过从关于当前图像105的编码后的编码单元的数据中去除从帧内预测器120或者帧间预测器115输出的关于每个模式的编码单元的预测数据来生成残差数据,并且根据变换单元经由变换器125和量化器130输出该残差数据作为量化后的变换系数。量化后的变换系数通过反量化器145和逆变换器150被重构为空间域中的残差数据。重构的空间域中的残差数据被添加到从帧内预测器120或帧间预测器115输出的用于每个模式的编码单元的预测数据,并且因此被重构为用于当前图像105的编码单元的空间域中的数据。通过去块器155和SAO执行器160将空间域中的重构数据生成为重构图像。所生成的重构图像被存储在重构画面缓存器110中。存储在重构画面缓存器110中的重构图像可以被用作用于关于另一图像的帧间预测的参考图像。由变换器125和量化器130量化的变换系数可以经由熵编码器135而被输出为比特流140。

作为根据实施例的图像编码设备100的元件的帧间预测器115、帧内预测器120、变换器125、量化器130、熵编码器135、反量化器145、逆变换器150、去块器155和SAO执行器160可以根据每个最大编码单元,基于根据树结构的编码单元中的每个编码单元来执行操作。

具体地,帧内预测器120和帧间预测器115可以通过考虑当前最大编码单元的最大尺寸和最大深度,根据树结构确定编码单元中的每个编码单元的分区模式和预测模式,并且变换器125可以确定是否在具有树结构的编码单元中的每个编码单元中分割具有四叉树结构的变换单元。

图2是图示了根据实施例的图像解码设备的配置的框图。

根据实施例的图像解码设备200可以包括熵解码器215、反量化器220、逆变换器225、去块器245、SAO执行器250、帧内预测器240、重构画面缓存器230和帧间预测器235。

熵解码器215从比特流205获得作为解码目标的编码后的图像数据和解码所需的编码信息。编码后的图像数据是量化后的变换系数,并且反量化器220和逆变换器225从量化后的变换系数重构残差数据。

帧内预测器240对帧内模式下的编码单元执行帧内预测。帧间预测器235关于当前图像中的关于帧间模式下的编码单元通过使用参考图像来执行帧间预测,其中该参考图像是从重构画面缓存器230中获得的。

对关于每个模式的编码单元的穿过帧内预测器240或帧间预测器235的预测数据和残差数据进行求和,使得关于当前图像205的编码单元的空间域中的数据可以被重构,并且空间域中的重构数据可以通过去块器245和SAO执行器250被输出为重构图像260。另外,存储在重构画面缓存器230中的重构图像可以被输出为参考图像。

作为根据实施例的图像解码设备200的元件的熵解码器215、反量化器220、逆变换器225、帧内预测器240、帧间预测器235、去块器245和SAO执行者250可以根据每个最大编码单元,基于根据树结构的编码单元中的每个编码单元来执行操作。

具体地,帧内预测器240和帧间预测器235可以确定根据树结构的编码单元中的每个编码单元的分区模式和预测模式,并且逆变换器225可以确定是否在每个编码单元中根据四叉树结构分割变换单元。

以下,将参照图3至图6来描述涉及使用二次变换/逆变换的图像编码方法和图像解码方法。

图3是图示了根据实施例的执行二次变换/逆变换的图像编码设备和图像解码设备的配置的框图。

参照图3,图像编码设备包括核心变换器310、二次变换器320和量化器330,并且图像解码设备包括反量化器340、二次逆变换器350和核心逆变换器360。核心变换器310和图3的二次变换器320可以被包括在图1的变换器125中,并且量化器330可以对应于图1的量化器130。图3的反量化器340对应于图2的反量化器220,并且二次逆变换器350和核心逆变换器360可以包括在图2的逆变换器225中。

为了高效地压缩图像,图像编码设备将每个帧分割成块,并且核心变器310对帧的每个块执行核心变换。核心变换器310可以通过根据每个变换单元对残差块执行变换来生成核心变换系数。就此而言,变换单元可以具有在最大尺寸和最小尺寸的范围内的树结构,并且当前块是否被分割成子块可以由根据每个变换单元的标志来指示。核心变换器310可以基于离散余弦变换(DCT)和/或离散正弦变换(DST)来执行变换。根据实施例的核心变换被应用于块中的所有系数。在处理过程中,每个块中的能量可以被压缩成少量的大变换系数和若干小变换系数。

通过核心变换器310的核心变换生成的核心变换系数可以被划分成具有少量的大变换系数的低频分量域和具有若干小变换系数的高频分量域。根据实施例的二次变换器320可以对低频分量域执行二次变换,从而提高量化性能。

如在核心变换中那样,可以基于DCT和/或DST来执行根据实施例的二次变换,并且该二次变换可以是诸如正交变换、旋转变换等的任意类型。然而,与对块中的所有系数执行的核心变换不同,该二次变换是对低频分量域上执行的。因此,不对高频分量域的系数执行二次变换,该系数来自核心变换器310所生成的核心变换系数。

根据实施例的二次变压器320可以对尺寸比变换单元更小的子群单元执行二次变换。例如,二次变换器320可以对低频分量的变换系数执行二次变换,其中,所述变换系数包括在作为变换单元的一部分的左上角的8×8尺寸子群中。

根据实施例的量化器330可以对已经由核心变换器310和二次变换器320变换的系数进行量化。量化系数被提供给反量化器340,并且根据实施例的反量化器340对量化系数执行反量化,从而生成反量化系数。根据实施例的反量化器340可以对小于变换单元的尺寸的Q_子群(Q_sub-groups)单元执行反量化。

根据实施例的二次逆变换器350通过对反量化系数的低频分量执行二次逆变换来生成二次逆变换系数,其中二次逆变换对应于二次变换。根据实施例的核心逆变换器360对二次逆变换系数执行核心逆变换,其中核心逆变换对应于核心变换。

根据实施例的二次逆变换器350可以基于逆DCT和/或逆DST来执行二次逆变换。因为对反量化系数的低频分量执行了二次逆变换,所以不对反量化系数的高频分量执行二次逆变换。

根据实施例的二次逆变换器350可以对尺寸比变换单元更小的2nd_tr_sub-group单元执行二次逆变换。例如,二次逆变换器350可以对低频分量的反量化系数执行二次逆变换,其中,所述反量化系数包括在作为变换单元的一部分的左上角的8×8尺寸子群中。

根据实施例的核心逆变换器360通过以与二次逆变换器350相同的方式基于逆DCT和/或逆DST执行逆变换,但是与二次逆变换不同,核心逆变换器360对变换单元中的所有系数执行逆变换。

图4是根据实施例的作为执行二次逆变换的单元的子群的图。

参照图4,可以对在各个变换单元410和420中左上角处子群单元412和422执行二次逆变换。因为在子群单元412或422上执行二次逆变换,所以可以保持解码操作的高并行性。然而,为了保持并行性,可以将条件应用于对其执行二次逆变换的子群单元的尺寸。根据实施例,可以应用指示以下内容的条件:执行二次逆变换的子群单元412必须小于通过其从比特流获得量化系数的群单元(即,coeff_coding_sub_group;414),或者执行反量化的群单元(即,Q_sub-group;414)。然而,根据实施例,执行二次逆变换的子群单元422的尺寸可以等于通过其从比特流获得量化系数的群单元(即,coeff_coding_sub_group)的尺寸或者执行反量化的群单元(即,Q_sub-group)的尺寸。

图5是图示了根据实施例的执行二次逆变换的范围的图。

参照图5,可以对位于变换单元510中左上角的子群单元512执行根据实施例的二次逆变换。子群单元512可以指示对应于逆变换系数的低频分量的域。可以对变换单元520中的子群单元522和524执行根据实施例的二次逆变换,并且可以依据子群的位置来确定二次逆变换的类型,其中,分别基于类型对子群执行二次变换。例如,可以对子群单元522执行逆DCT,并且可以对子群单元524执行逆DST。子群单元的尺寸不是固定的。子群单元的尺寸在变换单元中可以彼此不同,并且可以基于变换单元中的子群单元的位置来确定子群单元的尺寸。关于与要被二次逆变换的子群单元有关的位置、尺寸等的信息可以经由相应子群单元中的比特流用信号通知。

根据实施例,当图像编码设备100对所有变换单元应用二次变换时,不必将指示是否执行二次变换的信息用信号发送给图像解码设备200。然而,图像编码设备100可以比较通过对通过应用二次变换而生成的变换系数进行编码而获得的比特流的成本,并且可以自适应地应用二次变换以产生最小成本。因此,当将二次变换应用于某些变换单元时,有必要将指示是否执行二次变换的信息用信号发送给图像解码设备200。

指示是否执行二次变换的信息可以被包括在其他语法元素中。例如,指示是否执行二次变换的信息可以被包括在关于预测模式、分割深度、帧内预测方向、变换跳过模式等的信息中。另外,可以由编码单元、变换单元、预测单元或变换单元中的每个子群单元明确地用信号通知指示是否执行二次变换的信息。当变换单元中的所有系数是0或系数都具有等于或小于预定阈值的值时,可以不执行二次变换,并且在这种情况下,可以省略指示是否执行二次变换的信息的信令。

根据实施例的图像解码设备200可以从比特流获得并使用指示是否执行二次变换的信息。指示是否执行二次变换的信息可以被包括在与各种数据单元相关联的比特流中。例如,图像解码设备200可以使用包括在序列参数集、画面参数集、视频参数集、条带头(slice header)和条带片段头中的参数索引信息。此外,图像解码设备200可以根据每个最大编码单元、每个参照编码单元、每个预测单元、每个变换单元或变换单元中的每个子群单元从比特流中获得并使用与指示是否执行二次变换的信息相对应的语法。

图6是根据实施例的图像解码方法的流程图。

参照图6,在操作S610中,图像解码设备200可以从比特流中提取通过对经过核心变换和二次变换生成的变换系数进行量化而获得的量化系数。

在操作S620中,图像解码设备200对量化系数执行反量化,从而生成反量化系数。

在操作S630中,图像解码设备200通过对反量化系数的低频分量执行二次逆变换来生成二次逆变换系数,其中二次逆变换对应于二次变换。

在操作S640中,图像解码设备200对二次逆变换系数执行核心逆变换,核心逆变换对应于核心变换。

在下文中,现在将参照图7至图11来描述根据实施例的涉及使用第一概率模型和第二概率模型的熵编码方法和熵解码方法。

如上面参照图1和图2所说明的,根据实施例的图像编码设备100的熵编码器135对针对每个编码单元生成的多条编码信息(例如,诸如量化后的变换系数、预测单元的预测模式、量化参数、运动矢量等的语法元素)进行熵编码。更详细地,熵编码器135对语法元素执行基于上下文的自适应二进制算术编码(在下文中,称为“CABAC”)。此外,图像解码设备200的熵解码器215执行熵解码,以获得要被解码的多条信息的语法元素。

图7是图示了根据实施例的熵编码器的配置的框图。图7的熵编码器700对应于图1的熵编码器135。

参照图7,根据实施例的熵编码器700包括二值化器710、上下文建模器720和二进制算术编码器730。另外,二进制算术编码器730包括常规编码引擎732和旁路编码引擎734。

输入到熵编码器700的语法元素可以不是二进制值,因此,当语法元素不是二进制值时,二值化器710对语法元素进行二值化,从而输出由二进制值0或1组成的二进制字符串(binstring)。二进制(bin)指示由0或1组成的流的每个比特,并且基于CABAC对bin进行编码。如果语法元素是其中0和1的频率相等的数据,则语法元素被输出到不使用概率值的旁路编码引擎734,然后被编码。

上下文建模器720将针对当前编码符号的概率模型提供给常规编码引擎732。更详细地,上下文建模器720基于先前编码的符号确定预定二进制值的概率,并且向二进制算术编码器730输出二进制值的出现概率,以对编码当前编码符号的二进制值进行编码。现有的上下文建模器通过提供最大可能符号(MPS)的出现概率和指示0和1中的二进制值对应于MPS的信息的上下文索引(即,ctxIdx)来为编码符号提供概率模型。相反,根据实施例的上下文建模器720不对MPS和最小可能符号(LPS)进行区分,而是基于先前编码的符号来确定指示预定二进制值(例如“1”)的出现概率的P(1),并且将所确定的预定二进制值的概率提供给二进制算术编码器730。

另外,上下文建模器720基于当前编码符号的二进制值,通过使用多个概率模型来更新预定二进制值的概率。下面将详细描述更新预定二进制值的概率的处理。

常规编码引擎732基于从上下文建模器720提供的预定二进制值的概率和当前编码符号的二进制值来执行CABAC。也就是说,常规编码引擎732可以基于从上下文建模器720提供的预定二进制值的概率,来确定“1”的出现概率P(1)和“0”的出现概率P(0),并且可以通过基于所确定的出现概率P(0)和P(1)改变指示基于当前编码符号的二进制值的概率范围的范围来执行CABAC。

图8是示意性地图示了概率模型的更新处理的图。

参照图8,当确定了现有概率函数中的概率状态索引pStateIdx时,如果编码符号的值是被指定为MPS的值,则更新概率状态索引pStateIdx,使得概率状态从当前概率状态(即,状态σ)转变到其中LPS概率降低的前向状态(即,状态σ+1),并且如果编码符号的值不是MPS,即被指定为LPS的值,则更新概率状态索引pStateIdx,使得概率状态从当前概率状态(即,状态σ)转变到其中LPS的概率增大的后向状态(即状态σ-k(k>0))。例如,当当前概率状态索引pStateIdx为C时,如果当前编码符号的值是被指定为LPS的值,则对当前编码符号进行编码,然后将概率状态索引pStateIdx更新为A。如果下一个编码符号的值是被指定为MPS的值,则概率状态索引pStateIdx从A重新更新为B。

如图所示,概率函数可以具有指数形状。在具有指数形状的概率函数中,LPS接近于0的概率分布非常密集,并且LPS接近于1/2的概率分布非常稀疏。因此,在基于具有指数形状的概率函数的情况下,当二进制值0和1的出现概率相似时,即,当二进制值0和1的出现概率均接近1/2时,概率的分布稀疏,因此针对概率的预测误差可能增加。另外,当使用具有指数形状的概率函数时,必须精细地表达接近于0的概率值,因此可以增加表示概率值的位深度。因此,可以增加用于存储具有指数形状的概率函数的概率模型的查找表的大小。另外,根据相关技术,当概率被更新或者概率范围被划分时,如果使用密集的概率值,则增加乘法的计算,使得可以将负载施加到硬件。

因此,根据实施例的上下文建模器720基于具有均匀分布的概率函数来确定二进制值0和1的出现概率。另外,根据实施例的上下文建模器720可以通过使用多个概率模型来更新预定二进制值的概率。

在下文中,现在将详细地描述更新概率模型的处理,该处理由上下文建模器720执行。

在CABAC中,通过使用等式1来执行概率更新。

等式1

在等式1中,P_new指示更新后的LPS的概率,P_old指示在对当前编码符号执行算术编码时使用的LPS的概率,并且W(其中W是整数)指示先前编码的符号的数目,并且W被称为窗口尺寸。1/W是比例因子,并且当当前编码符号具有对应于MPS的值的二进制值时,y的值为0,并且当当前编码符号具有对应于LPS的值的二进制值时,y的值为1。

在通过使用等式1执行的针对概率的更新处理中,重要参数是比例因子1/W。依据比例因子1/W的值,确定不对噪声或错误做出反应的整个CABAC编码过程的灵敏度和稳定性。确定比例因子1/W的适当值的处理是困难且消耗的处理。

因此,为了更新概率,根据实施例的上下文建模器720通过使用具有不同比例因子的第一概率模型和第二概率模型来生成多个更新后的概率,并且通过使用相应概率来确定最终更新的概率,该相应概率是使用第一概率模型和第二概率模型更新的。换句话说,第一概率模型和第二概率模型可以具有不同的窗口尺寸。

更详细地,根据实施例的由上下文建模器720使用的第一概率模型和第二概率模型基于等式2和等式3。

等式2

等式3

在等式2中,P0_new指示基于使用窗口尺寸W0的第一概率模型更新的预定二进制值的概率,并且P0_old指示在对当前编码符号执行算术编码时使用的预定二进制值的概率。在等式3中,P1_new指示基于使用窗口尺寸W1的第二概率模型更新的预定二进制值的概率,并且P1_old指示在对当前编码符号执行算术编码时使用的预定二进制值的概率。根据实施例,第一概率模型的W0的尺寸和第二概率模型的W1的尺寸可以彼此不同。例如,W0可以小于W1。在等式2和等式3中,P0_new、P0_old、P1_new或P1_old指示0或1的预定二进制值的出现概率。也就是说,用于实施例中的概率指示特定二进制值(例如,“1”,既不是MPS也不是LPS)的出现概率。在下面的描述中,假设预定二进制值是1,即,P_new或P_old指示“1”的出现概率。然而,不限于此,因此,即使当设定P_new或P_old指示“0”的出现概率时,也可以类似地应用根据本实施例的针对概率的更新处理。

当基于等式2获得概率P0_new和P1_new时,上下文建模器720通过使用下面的等式4来计算最终更新的概率P_new。

等式4

P

在CABAC编码过程中,根据每个条带单元执行熵重置。熵重置意味着以当前概率值被丢弃的方式来执行CABAC,然后基于预定概率值重新执行CABAC编码。在重置过程之后执行的概率更新处理中被设定为初始值的概率值不是最优值,并且在更新过程被执行若干次之后,概率值被收敛到预定概率值。

图9是根据实施例的关于第一概率模型和第二概率模型的更新后的概率之间的比较的图。

在图9的曲线图中,设定第一概率模型910的窗口尺寸W0小于第二概率模型920的窗口尺寸W1。例如,第一概率模型910的窗口尺寸可以是16,并且第二概率模型920的窗口尺寸可以是256。

参照图9,当使用窗口尺寸相对较小的第一概率模型910时,执行越多的概率更新,概率改变得越快,以迅速收敛到特定范围,但是当重复更新时,容易出现波动。另一方面,当使用窗口尺寸相对较大的第二概率模型920时,概率不会快速改变,但是一旦更新后的概率收敛到预定范围,则很少出现波动,因此,对误差或噪声的敏感度非常小,并且操作稳定。

因此,上下文建模器720可以通过考虑第一概率模型和第二概率模型的概率更新处理来自适应地调整W0和W1的尺寸。例如,上下文建模器720可以在执行熵重置之后的预定次数期间,以上下文建模器720将W1的尺寸设定为大尺寸(例如,W1=∞)的方式来执行概率更新处理,并且在阈值次数之后,上下文建模器720可以为了系统的稳定性而调整W1的尺寸。

图10是图示了根据实施例的熵解码器的配置的框图。图10的熵解码器1000可以对应于前述图2的熵解码器215。

参照图10,熵解码器1000包括上下文建模器1010、常规解码器1020、旁路解码器1030和去二值化器1040。熵解码器1000执行由熵编码器700执行的熵编码处理的逆处理。

由于旁路编码而编码的符号被输出到旁路解码器1030并且因此被旁路解码器1030解码,并且由于常规编码而编码的符号被常规解码器1020解码。常规解码器1020通过使用预定二进制值的概率,对当前编码符号的二进制值执行算术解码,其中,预定二进制值是基于在由上下文建模器1010提供的当前编码符号之前解码的先前编码的符号而确定的。如上所述,由于指示预定概率范围的代表值的二进制值根据二进制算术编码结果而作为编码符号被发送,因此常规解码器1020可以通过使用0和1的出现概率来对编码符号进行解码。

上下文建模器1010基于解码后的编码符号的二进制值,通过使用多个比例因子来更新预定二进制值的概率。如上所述,上下文建模器1010不对MPS和LPS进行区分,而是基于先前编码的符号来确定指示预定二进制值(例如“1”)的出现概率的P(1),并且将预定二进制值的确定的概率提供给常规解码器1020。去二值化器1040将二进制字符串重构为语法元素,二进制字符串已经被常规解码器1020或旁路解码器1030重构。

如上所述,可以基于内容自适应地选择第一概率模型和第二概率模型。例如,可以基于条带或画面来确定第一概率模型和第二概率模型。另外,可以自适应地确定第一概率模型的窗口尺寸W0和第二概率模型的窗口尺寸W1,并且可以经由比特流从图像编码设备100用信号向图像解码设备200通知第一概率模型的窗口尺寸W0和第二概率模型的窗口尺寸W1。就此而言,可以以画面组(GOP)、条带、最大编码单元等为单位发信号通知W0和W1的值。

根据实施例,W0和W1之一的值可以被设定为固定值,并且仅可以经由比特流用信号通知另一个值。就此而言,窗口尺寸的固定值可以取决于画面或条带的类型。

根据实施例,W0和W1可以全部具有固定值,并且在这种情况下,不需要用信号通知用于指示W0和W1的值的各个语法元素。另一方面,当W0和W1的值变化时,W0和W1的值可以从比特流获得,或者可以基于条带类型或画面类型来确定。

图11是根据实施例的熵解码方法的流程图。

参照图11,在操作S1110中,熵解码器1000可以通过使用第一概率预测模型和第二概率预测模型来更新在对先前的二进制执行算术解码时使用的先前的概率信息,从接收到的比特流中获得在对当前二进制执行算术解码时使用的概率信息。

在操作S1120中,熵解码器1000通过基于所获得的概率信息执行算术解码来获得二进制。

在操作S1130中,熵解码器1000通过对所获得的二进制进行去二值化来获得语法元素。

在下文中,现在将参照图12至图19来描述根据实施例的对预测块进行后处理的方法。

图12是图示了根据实施例的包括后处理器的图像编码设备的配置的框图。

参照图12,图像编码设备1200包括预测器1210、变换器和量化器1220,熵编码单元1230和后处理器1240。

预测器1210执行帧间预测和帧内预测。帧间预测是指通过使用先前编码的、重构的和存储的参考画面而针对当前块的预测。帧间预测由运动估计器1211和运动补偿器1212来执行。帧内预测是指通过使用与要预测的块相邻的块的像素而针对当前块的预测。帧内预测由帧内预测器1213来执行。

图13图示了16×16帧内预测模式的示例,并且图14图示了4×4帧内预测模式的示例。

参照图13,16×16帧内预测模式包括垂直模式、水平模式、直流(DC)模式和平面模式这四种模式。另外,参照图14,4×4帧内预测模式包括垂直模式、水平模式、DC模式、左下对角模式、右下对角模式、右垂直模式、左垂直模式、水平向上模式和水平向下模式这九种模式。

例如,将描述根据图14的模式0(即,根据图3的垂直模式)对具有尺寸为4×4的当前块进行预测编码的操作。首先,将与尺寸为4×4的当前块的上部相邻的像素A至D的像素值预测为4×4当前块的像素值。换句话说,像素A的值被预测为包括在4×4当前块的第一列中的四个像素值,像素B的值被预测为包括在4×4当前块的第二列中的四个像素值,像素C的值被预测为包括在4×4当前块的第三列中的四个像素值,并且像素D的值被预测为包括在4×4当前块的第四列中的四个像素值。以这种方式,通过使相邻像素的值沿预定方向扩展的帧内预测生成的预测块具有根据预测模式的预定方向性。当要编码的当前块的像素具有预定方向性时,可以提高预测效率,然而,当当前块的像素不具有方向性时,预测效率可能恶化。因此,如下面将描述的,根据本公开的图像编码设备的后处理器1240通过执行使用预测块内的每个像素以及至少一个相邻像素的操作(该操作是针对通过帧内预测生成的预测块的后处理操作)来改变预测块内的每个像素的像素值,并且生成新的预测块,从而提高图像预测效率。

回头参照图12,变换器和量化器1220对作为分别从预测器1210和后处理器1240输出的预测块和原始图像块之间的差值的残差进行变换和量化,并且熵编码单元1230通过对量化后的残差信息进行可变长度编码来执行压缩。编码后的残差由反量化器1214和逆变换器1215重构,并且加法器1216将重构的残差与预测块相加,以便重构当前块。重构的块被存储在存储单元(未示出)中,并且在下一个块被编码时用作参考数据。

在下文中,现在将对由图12的后处理器1240执行的对预测块进行后处理的操作进行描述。

后处理器1240通过执行使用由帧内预测器1213生成的第一预测块的每个像素和至少一个相邻像素的计算来改变构成第一预测块的每个像素的像素值,从而生成第二预测块。就此而言,帧内预测器1213通过使用一般的帧内预测方法来生成第一预测块。

图15是用于描述根据实施例的对第一预测块进行后处理的操作的参考图。在图15中,附图标记1510至1560表示按时间顺序改变由后处理器1240处理的第一预测块内的每个像素值的处理。

参照图15,根据实施例的后处理器1240通过对第一预测块1510内的要改变的像素和位于该像素的上部和左部的相邻像素的每个像素值应用权重来计算平均值,从而改变第一预测块的每个像素的像素值。例如,在图15中,当第一预测块1510的要改变的像素1521的像素值是P[1][1]时,位于上部的像素1522的像素值是P[0][1],位于左部的像素1523的像素值是P[1][0],并且通过改变像素1521的像素值P[1][1]而获得的值是P'[1][1],P'[1][1]可以通过使用下面的等式5来计算。

等式5

在等式5中,α指示应用于P[1][1]的第一权重参数,β指示应用于P[0][1]的第二权重参数,P[0][1]是位于P[1][1]的上部的像素的像素值,并且γ指示应用于P[1][0]的第三权重参数,P[1][0]是位于P[1][1]的左部的像素的像素值。

如图15所示,根据实施例的后处理器1240通过从第一预测块内的最左上部分到最右下部分的每个像素,对要改变的像素和位于该像素的上部和左部的相邻像素的每个像素值施加权重,来改变第一预测块的每个像素的像素值。然而,对第一预测块进行后处理的操作不限于上述方式,即,从最左上部分到最右下部分,因此可以以如下方式对第一预测块的每个像素依次执行后处理的操作:从最右上部分到最左下部分、从最右下部分到最左上部分或者从最左下部分到最右上部分。例如,按照与图15所示的处理顺序相反的顺序,当从最右下部分到最左上部分改变第一预测块的像素时,经由使用要改变的像素和位于该像素的右部和下部的像素的计算来改变第一预测块的每个像素的像素值。

图16是图示了根据实施例的后处理器1240的操作的另一参考图。在图16中,附图标记1610指示当前要改变的第一预测块的第一像素,附图标记1611指示位于第一像素1610的上部的第二像素,并且附图标记1612指示位于第一像素1610的左部的第三像素。

下面参照图16概括根据实施例的后处理器1240的操作。当第一预测块的尺寸是m×n(其中m和n均是正整数),要改变的并且位于第一预测块内的第i(其中i是从0至m-1的整数)列、第j(其中j是从0到n-1的整数)行的第一像素1610的像素值是P[i][j],位于第一像素1610的左部的第二像素1612的像素值是P[i][j-1],位于第一像素1610的上部的第三像素1611的像素值是P[i-1][j]时,通过使用等式6将第一像素1610的像素值改变为P'[i][j]。

等式6

P′[i][j]=(αP[i][j]+βP[i-1][j]+γP[i][j-1]+2)>>2

在等式6中,α指示应用于P[i][j]的第一权重参数,β指示应用于P[i-1][j]的第二权重参数,P[i-1][j]是位于P[i][j]的上部的像素的像素值,并且γ指示应用于P[i][j-1]的第三权重参数,P[i][j-1]是位于P[i][j]的左部的像素的像素值。根据实施例,当要改变的像素的位置变得远离第一预测块的边界时,可以减小权重参数β或γ的值。权重参数α、β和γ之间的关系可以基于下面的等式7的关系来确定。

等式7

α+β+γ=2

在等式7中,P指示等于或大于0的整数。

后处理器1240通过从最左上部到最右下部将等式2应用于第一预测块1600内的所有像素来改变像素值,从而生成第二预测块。

根据实施例的图像编码设备1200可以比较通过对经过应用各种权重而生成的第二预测块进行编码而获得的比特流的成本,并且可以将在生成第二预测块时使用的具有最低成本的权重信息(即,第一权重参数至第三权重参数)添加到比特流的头部区域。就此而言,关于第一权重参数至第三权重参数的信息被描述为如表1中的参数索引信息。

表1

在上面的表1中,参数索引信息可以针对分别具有2N×2N和N×N尺寸的编码单元中的每一个编码单元来定义。根据实施例的参数索引信息可以以各种方式从图像编码设备用信号发送到图像解码设备。例如,参数索引信息可以被包括在关于预测模式的信息中。另外,参数索引信息可以被包括在指示块尺寸的信息、指示块的分区形状的信息、指示亮度或色度分量的信息等中,并且可以用信号通知。根据实施例,可以在编码单元或预测单元的层级明确地用信号通知参数索引信息。

当根据实施例的图像编码设备1200将编码单元分割成更小的块并执行预测时,图像编码设备1200可以通过对各个块应用不同的权重来生成第二预测块,并且为了简化计算并且降低开销比率(overhead rate),图像编码设备1200可以允许将相同的权重信息应用于包括在同一编码单元中的块。

图17是图示了根据实施例的包括后处理器的图像解码设备的配置的框图。

参照图17,图像解码设备1700包括熵解码器1710、重对准器1720、反量化器1730、逆变换器1740、加法器1745、运动补偿器1750、帧内预测器1760、滤波器1770和后处理器1780。

熵解码器1710接收压缩比特流并执行熵解码,从而提取在生成当前块和第二预测块的预测模式信息时使用的后处理计算模式信息。

根据实施例的图像解码设备1700可以从比特流获得并使用在生成第二预测块时使用的权重参数信息。权重参数信息(或参数索引信息)可以被包括在与各种数据单元相关的比特流中。例如,图像解码设备1700可以使用包括在序列参数集、画面参数集、视频参数集、条带头和条带片段头中的参数索引信息。此外,图像解码设备1700可以根据每个最大编码单元、每个参考编码单元和每个预测单元,从比特流获得并使用与参数索引信息相对应的语法。

根据实施例的熵解码器1710对纹理数据执行熵解码,从而提取当前块的量化后的变换系数。反量化器1730和逆变换器1740对量化后的变换系数执行反量化和逆变换,从而重构与当前块与第二预测块之间的差相对应的残差。运动补偿器1750和帧内预测器1760通过基于当前块的预测模式生成预测块来输出该预测块。当通过使用由图12的后处理器1240生成的第二预测块来对当前块进行编码时,后处理器1780通过改变第一预测块的每个像素值来生成第二预测块,其中,第一预测块由帧内预测器1760基于从比特流提取出的后处理计算信息而生成。图像解码设备1700的后处理器1780的操作与图12的后处理器1240的操作相同之处在于:第二预测块是基于从比特流提取出的后处理计算信息而生成的。

加法器1745将重构的残差与由运动补偿器1750和帧内预测器1760生成的预测块相加,从而重构当前块。具体地,当根据实施例基于第二预测块对要解码的当前块进行编码时,加法器1745将重构的残差与由后处理器1780生成的第二预测块相加,从而重构当前块。解码后的块经由滤波器1770而被存储在预定存储器中,然后在解码下一个块时用作参考数据。

图18是图示了根据实施例的图像编码方法的流程图。

参照图18,在操作S1810中,生成针对要编码的当前块的第一预测块。就此而言,第一预测块是通过使用一般的帧内预测方法生成的帧内预测块。

在操作S1820中,通过经由使用构成第一预测块的每个像素和位于每个像素的上部和左部的像素的计算来改变第一预测块的每个像素的像素值,从而生成第二预测块。如上面在后处理器1240的实施例中所描述的,通过经过使用其中将权重应用于针对第一预测块中的要改变的像素的上面的像素和左边的像素的计算来改变第一预测块的每个像素的像素值,从而生成第二预测块。

在操作S1830中,对作为当前块与第二预测块之间的差值的残差进行变换、量化和熵编码,使得生成比特流。在生成第二预测块时使用的计算信息被添加到所生成的比特流的预定区域,因此解码设备可以生成关于当前块的第二预测块。

图19是图示了根据实施例的图像解码方法的流程图。

参照图19,在操作S1910中,从接收到的比特流中提取要解码的当前块的预测模式信息。

在操作S1920中,基于提取出的预测模式信息来生成关于当前块的第一预测块。

在操作S1930中,从比特流中提取关于计算的计算信息,所述计算中使用了构成所述第一预测块的每个像素和所述每个像素的相邻像素。

在操作S1940中,基于提取出的计算信息,通过经由关于构成第一预测块的每个像素和位于每个像素的上部和左部的像素的计算来改变每个像素的像素值,从而生成第二预测块。

在操作S1950中,从比特流中提取并重构对应于当前块与第二预测块之间的差值的残差。

在操作S1960中,将残差和第二预测块相加,使得当前块被解码。

在下文中,现在将参照参考图20至图28来描述根据实施例的按照块单位和像素单位执行运动补偿的方法。

图20是图示了根据实施例的运动补偿器的配置的框图。图20的运动补偿器2000可以被包括在图1的帧间预测器115中。另外,图20的运动补偿器2000可以被包括在图2的帧间预测器235中。

参照图20,根据实施例的运动补偿器2000包括块单位运动补偿器2010、像素单位运动补偿器2020和预测值生成器2030。

块单位运动补偿器2010通过使用由包括在图1的帧间预测器115中的或包括在图2的帧间预测器235中的运动估计器(未示出)确定的双向运动矢量,对要编码的当前块执行块单位双向运动补偿。

另外,像素单位运动补偿器2020通过使用由双向运动矢量指示的参考画面的像素,对以块为单位进行双向运动补偿的当前块的每个像素执行像素单位运动补偿。

预测值生成器2030通过使用块单位双向运动补偿和像素单位运动补偿的结果来生成当前块的最终的双向运动预测值。在下文中,将详细描述根据实施例的块单位双向运动预测和补偿以及像素单位双向运动补偿的处理。

图21是用于描述根据实施例的基于块的双向运动预测和补偿的处理的参考图。

参照图21,包括在帧间预测器115和235中的运动估计器(未示出)执行双向运动预测,以从第一参考画面2110和第二参考画面2120搜索与当前画面2100中要编码的当前块2101最相似的区域。就此而言,假设第一参考画面2110是当前画面2100的先前画面,并且第二参考画面2120是当前画面2100的后续画面。作为执行双向运动预测的结果,确定第一参考画面2110中的与当前块2101最相似的第一对应区域2112和第二参考画面2120中的与当前块2101最相似的第二对应区域2122。另外,确定基于第一参考画面2110中的与当前块2101相同的位置处的块2111与第一对应区域2112之间的位置差的第一运动矢量MV1,以及基于第二参考画面2120中的与当前块2101相同的位置处的块2121与第二对应区域2122之间的位置差的第二运动矢量MV2。

根据实施例的块单位运动补偿器2010通过使用第一运动矢量MV1和第二运动矢量MV2对当前块2101执行块单位双向运动补偿。例如,当P0(i,j)指示位于(i,j)(其中i和j均是整数)处的第一参考画面2110的像素值时,P1(i,j)指示位于(i,j)处的第二参考画面2120的像素值,MV1=(MVx1,MVy1)并且MV2=(MVx2,MVy2),可以根据以下等式来计算位于当前块2101的(i,j)处的像素的块单位双向运动补偿值:P_BiPredBlock(i,j)={P0(i+MVx1,j+MVy1)+P1(i+MVx2,j+MVy2)}/2。以这种方式,块单位运动补偿器2010通过使用分别由第一运动矢量MV1和第二运动矢量MV2指示的第一对应区域2112和第二对应区域2122的像素的平均值或加权和来对当前块2101执行块单位运动补偿。

根据实施例的像素单位运动补偿器2020基于第一参考画面2110和第二参考画面2120的像素的光流对当前块2101执行像素单位运动补偿。

光流指的是由于观察者(眼睛或相机)与场景之间的相对移动而生成的物体或表面的表观运动的图案。在视频序列中,可以通过计算在预定时间t和t+Δt处获得的帧之间的运动来表示光流。I(x,y,t)表示在预定时间t位于帧中的(x,y)处的像素值。也就是说,I(x,y,t)是时空变化的值。通过根据时间t来对I(x,y,t)进行微分来获得下面的等式8。

等式8

当假定像素值根据相对于块中的小运动区域的运动而改变但不随时间而改变时,dI/dt是0。另外,当Vx表示在像素值I(x,y,t)的x轴方向上的位移矢量,并且Vy表示dx/dt中的像素值I(x,y,t)在y轴方向上的位移矢量时,可以根据下面的等式9来表示等式1。

等式9

就此而言,在x轴方向上的位移矢量Vx和在y轴方向上的位移矢量Vy的大小可以具有比在双向运动预测中使用的像素精度更小的值。例如,当在双向运动预测期间像素精度是1/4时,位移矢量Vx和Vy的大小可以具有比1/4更小的值。

根据实施例的像素单位运动补偿器2020通过使用等式5来计算位移矢量Vx和Vy,并且通过使用位移矢量Vx和Vy来执行像素单位运动补偿。由于像素值I(x,y,t)是等式9中的原始信号的值,所以在原始信号的值按原样使用时可能在编码期间造成巨大的开销。因此,像素单位运动补偿器2020通过使用使用等式5来计算位移矢量Vx和Vy,该等式5使用基于块单位双向运动预测而确定的第一参考画面和第二参考画面的像素。

图22是用于描述根据实施例的执行像素单位运动补偿的处理的参考图。

在图22中,假定第一对应区域2210和第二对应区域2220分别对应于图21的第一对应区域2112和第二对应区域2122,并且通过使用第一运动矢量MV1和第二运动矢量MV2来使第一对应区域2210和第二对应区域2220移位,以便于当前块2200重叠。另外,P(i,j)指示位于当前块2200中的被双向预测的(i,j)(其中i和j均为整数)处的像素,P0(i,j)指示第一参考画面的对应于像素P(i,j)的第一对应像素的像素值,并且P1(i,j)指示第二参考画面的对应于像素P(i,j)的第二对应像素的像素值。换句话说,第一对应像素的像素值P0(i,j)对应于由指示第一参考画面的第一运动矢量MV1确定的当前块2200的像素P(i,j)的像素值,并且第二对应像素的像素值P1(i,j)对应于由指示第二参考画面的第二运动矢量MV2确定的当前块2200的像素P(i,j)的像素值。

另外,GradX0(i,j)指示第一对应像素的水平方向梯度,GradY0(i,j)指示第一对应像素的垂直方向梯度,GradX1(i,j)指示第二对应像素的水平方向梯度,并且GradY1(i,j)指示第二对应像素的垂直方向梯度。另外,d0指示当前块2200的当前画面与第一对应区域2210的第一参考画面之间的时间距离,并且d1指示当前画面与第二对应区域2220的第二参考画面之间的时间距离。

当假设d0和d1为1时,等式9中的

等式10

等式10中的梯度

等式11

等式12

等式9可以通过使用等式10至等式12而被整理成如下面的等式13。

等式13

P0(i,j)-P1(i,j)+Vx(i,j)·(GradX0(i,j)+GradX1(i,j)+Vy(i,j)·(GradY0(i,j)+GradY1(i,j))=0

在等式13中,由于位移矢量Vx和位移矢量Vy可以根据当前像素P(i,j)的位置而改变,即取决于(i,j),所以位移矢量Vx和Vy也可以分别由Vx(i,j)和Vy(i,j)表示。

同时,如果假设图22中的视频序列中存在小的均匀移动,假设与像素单位双向运动补偿的当前像素P(i,j)最相似的第一参考画面的第一对应区域2210的像素不是第一对应像素P0(i,j),而是通过将第一对应像素P0(i,j)移动预定位移矢量Vd而获得的第一位移对应像素PA。由于假设在视频序列中存在小的均匀移动,因此可以假设与第二参考画面的第二对应区域2220中的当前像素P(i,j)最相似的像素是通过将第二对应像素P1(i,j)移动-Vd而获得的第二位移对应像素PB。预定位移矢量Vd由x轴方向上的位移矢量Vx和y轴方向上的位移矢量Vy构成,因此Vd=(Vx,Vy)。因此,根据本发明的实施例的像素单位运动补偿器2020计算形成预定位移矢量Vd的位移矢量Vx和Vy,并且再次对经由块单位双向运动补偿获得的值执行像素单位运动补偿。

第一位移对应像素PA和第二位移对应像素PB可以分别根据通过使用以下参数的等式14和等式15来定义:x轴方向上的位移矢量Vx、y轴方向上的位移矢量Vy、第一对应像素的水平方向梯度GradX0(i,j)、第一对应像素的垂直方向梯度GradY0(i,j)、第二对应像素的水平方向梯度GradX1(i,j)以及第二对应像素的垂直方向梯度GradY1(i,j)。

等式14

PA=P0(i,j)+Vx(i,j)·GradX0(i,j)+Vy(i.j)·GradY0(i,j)

等式15

PB=P1(i,j)-Vx(i,j)·GradX1(i,j)-Vy(i.j)·GradY1(i,j)

当△ij指示第一位移对应像素PA与第二位移对应像素PB之间的差时,可以通过使用下面的等式16来计算△ij。

等式16

Δij=PA-PB

=P0(i,j)-P1(i,j)+Vx(i,j)·(GradX0(i,j)+GradX1(i,j))

+Vy(i,j)·(GradY0(i,j)+GradY1(i,j))

将等式13与等式16进行比较,等式13示出了当Δij为0时,即,当第一位移对应像素PA与第二位移对应像素PB的值相同时的情况。

像素单位运动补偿器2020通过使用等式14和等式15的第一位移对应像素PA的值和第二位移对应像素PB的值的平均值或加权和来执行像素单位运动补偿,并且此时,为了计算式14和等式15,需要确定位移矢量Vx和Vy、水平方向梯度GradX0(i,j)、垂直方向梯度GradY0(i,j)、水平方向梯度GradX1(i,j)和垂直方向梯度GradY1(i,j)。如下所述,可以通过计算第一对应像素和第二对应像素在水平方向和垂直方向上的子像素位置处的像素值的变化量来确定每个对应像素的梯度,或者可以通过使用预定滤波器,来计算每个对应像素的梯度。

首先,将描述确定x轴方向上的位移矢量Vx和y轴方向上的位移矢量Vx的处理。

像素单位运动补偿器2020确定在具有预定尺寸并且包括被双向运动补偿的当前像素P(i,j)周围的相邻像素的窗口Ωij 2202中使△ij最小化的位移矢量Vx和Vy。Δij优选为0,但由于不存在对于窗口Ωij 2202中的所有像素都满足△ij=0的位移矢量Vx、Vy,所以确定使Δij最小化的位移矢量Vx、Vy。

图23是用于描述根据实施例的确定水平方向位移矢量和垂直方向位移矢量的处理的参考图。

参照图23,基于被双向预测的当前块的像素P(i,j),窗Ωij 2300的尺寸为:(2M+1)*(2N+1)(其中M和N均是整数)。

当P(i',j')指示当i-M≤i'≤i+M且j-M≤j'≤j+M时窗口(i',j')∈Ωij中要被双向预测的当前块的像素时,P0(i',j')指示与当前块的像素P(i',j')相对应的第一参考画面2310的第一对应像素的像素值,P1(i',j')指示与要双向预测的当前块的像素P(i',j')相对应的第二参考画面2320的第二对应像素的像素值,GradX0(i',j')指示第一对应像素的水平方向梯度,GradY0(i',j')指示第一对应像素的垂直方向梯度,GradX1(i',j')指示第二对应像素的水平方向梯度,并且GradY1(i',j')指示第二对应像素的垂直方向梯度,第一位移对应像素PA'具有根据下式的值:P0(i',j')+Vx*GradX0(i',j')+Vy*GradY0(i',j'),并且第二位移对应像素PB'具有根据下式的值:P1(i',j')-Vx*GradX1(i',j')-Vy*GradY1(i',j')。

使第一位移对应像素PA'与第二位移对应像素PB'之间的差△i'j'最小化的x轴方向上的位移矢量Vx和y轴方向上的位移矢量Vy,可以通过使用构成根据下面的等式17的差△i'j'的平方和的Φ(Vx,Vy)的最大值或最小值来确定。

等式17

Φ(Vx,Vy)是使用Vx和Vy作为参数的函数,并且最大值或最小值可以通过根据下面的等式18和等式19计算Vx和Vy来确定,所述Vx和Vy使得Φ(Vx,Vy)相对于Vx和Vy的偏微分的值为0。

等式18

等式19

可以从等式18和等式19获得如下面的等式20中的使用Vx(i,j)和Vy(i,j)作为变量的两个线性方程。

等式20

Vx(i,j)·s1+Vy(i,j)·s2=s3;

Vx(i,j)·s4+Vy(i,j)·s5=s6

通过使用下面的等式21来计算等式20中的s1至s6。

等式21

当等式21的方程组被求解时,Vx(i,j)和Vy(i,j)的值可以根据基于克莱默公式的Vx(i,j)=det1/det和Vy(i,j)=det2/det来获得。就此而言,det1=s3*s5-s2*s6,det2=s1*s6-s3*s4,并且det=s1*s5-s2*s4。

回头参照图20,预测值生成器2030通过将块单位双向运动补偿值与像素单位运动补偿值相加来生成双向运动预测值。更详细地,当P_OpticalFlow(i,j)指示位于当前块的(i,j)处的像素的双向运动预测值时,P0(i,j)指示与位于当前块的(i,j)处的像素相对应的第一参考画面的第一对应像素的像素值,GradX0(i,j)指示第一参考画面的第一对应像素的水平方向梯度,GradY0(i,j)指示第一参考画面的第一对应像素的垂直方向梯度,P1(i,j)指示与位于当前块的(i,j)处的像素相对应的第二参考画面的第二对应像素的像素值,GradX1(i,j)指示第二参考画面的第二对应像素的水平方向梯度,GradY1(i,j)指示第二参考画面的第二对应像素的垂直方向梯度,Vx指示水平方向位移矢量,并且Vy指示垂直方向位移矢量,预测值生成器2030通过使用下面的等式22来生成双向运动预测值。

等式22

在等式22中,(P0(i,j)+P1(i,j))/2对应于块单位双向运动补偿值并且(Vx·(GradX0(i,j)-GradX1(i,j))+Vy·(GradY0(i,j)-GradY1(i,j)))/2对应于根据实施例计算的像素单位运动补偿值。

可以通过将预定权重α与像素单位运动补偿值相乘而将等式22修改为下面的等式23。

等式23

这里,权重α可以小于1,优选地,α=0.56±0.05。

假设当前画面与第一参考画面之间的时间距离d0以及当前画面与第二参考画面之间的时间距离d1均为1的情况下,计算上面的等式16。如果d0和d1不是1,则预定位移矢量Vd的大小可以与d0和d1成反比地缩放。即,当(Vx0,Vy0)指示表示第一对应像素中的第一位移对应像素的第一参考画面的位移矢量,(Vx1,Vy1)指示表示第二对应像素中的第二位移对应像素的第二参考画面的位移矢量时,d0*Vx1=-d1*Vx0且d0*Vy1=-d1*Vy0。在d=d1/d0时,可以通过计算函数Φ(Vx,Vy)相对于位移矢量Vx和Vy的偏微分的最大值和最小值来计算位移矢量Vx和Vy。如上所述,Vx(i,j)=det1/det,Vy(i,j)=det2/det,det1=s3*s5-s2*s6,det2=s1*s6-s3*s4,det=s1*S5-S2*S4。这里,根据下面的等式24计算s1至s6的值。

等式24

另外,当时间距离d0和时间距离d1不是1时,等式23被修改为等式25,并且预测值生成器2030通过使用等式25来生成双向运动补偿值。

等式25

同时,上述等式9的光流基于如下假设:根据时间的像素值的改变量是0,但是像素值可以根据时间而改变。当q指示像素值根据时间的变化量时,等式9被修改为下面的等式26。

等式26

就此而言,q指示第一对应区域和第二对应区域中的像素值的差的平均值,并且可以通过使用下面的等式27来计算。

等式27

Hor_block_size指示当前块的水平方向尺寸,ver_block_size指示当前块的垂直方向尺寸。当代替等式14至25中的P1(i,j),通过使用考虑变化量q的值P1(i,j)-q计算位移矢量Vx和Vy时,Vx(i,j)=det1/det,Vy(i,j)=det2/det,det1=s3*s5-s2*s6,det2=s1*s6-s3*s4,det=s1*s5-s2*s4。这里,根据下面的等式28计算s1至s6的值。

等式28

这里,预测值生成器2030还可以根据上面的等式25生成双向运动补偿值。

如上所述,通过计算第一对应像素和第二对应像素在水平方向和垂直方向上的子像素位置处的变化量,或者通过使用预定滤波器,可以获得水平方向梯度和垂直方向梯度。

图24是用于描述根据实施例的计算水平方向梯度和垂直方向梯度的处理的参考图。参照图24,可以通过分别获得第一对应像素P0(i,j)2410的水平方向上的相邻子像素位置处的像素值的变化量和垂直方向上的相邻子像素位置处的像素值的变化量,来计算第一参考画面的第一对应像素P0(i,j)2410的水平方向梯度GradX0(i,j)和垂直方向梯度GradY0(i,j)。也就是说,可以通过使用下面的等式29,通过计算在水平方向上与第一对应像素P0(i,j)2410相距h(其中h是小于1的分数)的子像素P0(i-h,j)2460和子像素P0(i+h,j)2470的像素值的变化量,来计算水平方向梯度GradX0(i,j),并且可以通过计算在垂直方向上与第一对应像素P0(i,j)1710相距h的子像素P0(i,j-h)2480和子像素P0(i,j+h)2490的像素值的变化量,来计算垂直方向梯度GradY0(i,j)。

等式29

子像素P0(i-h,j)2460、P0(i+h,j)2470、P0(i,j-h)2480和P0(i,j+h)2490的值可以通过使用一般插值方法来计算。另外,可以以与等式29类似的方式来计算第二参考画面的第二对应像素的梯度。

根据实施例,代替根据等式29计算子像素位置处的像素值的变化量,可以通过使用预定滤波器,来计算每个对应像素的梯度。

图25是用于描述根据另一实施例的计算水平方向梯度和垂直方向梯度的处理的参考图,并且图26是示出了根据另一实施例的梯度计算滤波器的滤波器系数的表。

根据另一实施例,可以通过将预定滤波器应用于参考画面的像素来确定梯度。参照图25,可以通过将预定像素应用于对应像素P0 2500左边的M个像素2520和对应像素P02500右边的M个像素2510上,来计算对应像素P02500的水平方向梯度。如图26所示,此时使用的滤波器系数可以根据用于确定窗口的尺寸的值M和指示整像素之间的插值位置的α的值来确定。例如,当2M=4并且子像素与对应像素P0 2500相距1/4时,即,α=1/4时,图26的第二行的滤波器系数{-8,-36,54,-10}被应用到相邻像素P-2、P-1、P1和P2。这里,可以基于滤波器系数和相邻像素的加权和,根据以下等式来计算对应像素P0 2500的水平方向梯度GradX0:GradX0=-8*P-2,-36*P-1+54*P1-10*P2+128>>8。类似地,还可以根据窗口的尺寸2N和插值位置,通过将图26的滤波器系数应用于相邻像素,来计算垂直方向梯度。这里,图26的2M可以被2N替换。

根据实施例的像素单位运动补偿的操作可以由预定条件来限制。根据实施例的像素单位运动补偿可以基于块尺寸来执行。例如,当块尺寸小于预定尺寸时,可以不执行像素单位运动补偿。

根据实施例的图像解码设备200可以限制由于另一语法元素导致的像素单位运动补偿的执行。例如,当编码块标志(CBF)不是0时,可以不执行像素单位运动补偿。另外,当图像解码设备200通过使用从相邻块导出运动矢量预测值的AMVP模式或者从相邻块导出参考方向、参考画面索引和运动矢量预测值的合并模式来执行预测时,可以限制像素单位运动补偿的执行。另外,例如,即使当执行局部光照补偿或者执行仿射运动补偿时,也可以不执行像素单位运动补偿。

因此,图像解码设备200可以基于以下内容确定是否执行像素单位运动补偿:编码块标志(CBF)、指示是否通过使用所导出的运动信息来执行运动补偿(例如,AMVP模式和合并模式)的语法元素、指示是否执行局部光照补偿的语法元素、指示是否执行仿射运动补偿的语法元素等。就此而言,CBF、指示是否通过使用所导出的运动信息来执行运动补偿的信息、指示是否执行局部光照补偿的信息以及指示是否执行仿射运动补偿的信息可以是指示表示是否限制像素单位运动补偿的信息。

图27是根据实施例的图像编码方法的流程图。

参照图27,在操作S2710中,图像编码设备100执行双向运动预测,以确定分别指示第一参考画面和第二参考画面中与当前块最相似的第一对应区域和第二对应区域的第一运动矢量和第二运动矢量。

在操作S2720中,图像编码设备100通过使用第一运动矢量和第二运动矢量来对当前块执行块单位双向运动补偿。

在操作S2730中,图像编码设备100通过使用第一参考画面的像素和第二参考画面的像素来对当前块的每个像素执行像素单位运动补偿。如上所述,图像编码设备100可以通过使用以下内容生成当前块的每个像素的像素单位运动补偿值:与当前块的每个像素相对应的第一参考画面的第一对应像素的水平方向梯度和垂直方向梯度、与当前块的每个像素相对应的第二参考画面的第二对应像素的水平方向梯度和垂直方向梯度以及通过使用第一参考画面的像素和第二参考画面的像素而确定的水平方向位移矢量和垂直方向位移矢量。

在操作S2740中,图像编码设备100通过将块单位双向运动补偿的结果与像素单位运动补偿的结果相加来生成当前块的双向运动预测值。然后,作为预测出的双向运动预测值与原始输入信号之间的差的残差信号经由变换、量化和熵编码以比特流的形式被编码。同时,根据实施例,当使用像素单位运动补偿值时,由于像素单位运动补偿值与一般的双向运动预测值的不同,所以可以将指示像素单位运动补偿值的使用或不使用的预定索引信息添加到编码后的比特流。

图28是根据实施例的图像解码方法的流程图。

参照图28,在操作S2810中,图像解码设备200接收比特流。

在操作S2820中,图像解码设备200基于从比特流中提取出的、关于像素单位运动补偿是否受限的信息,来确定是否对当前块执行像素单位运动补偿。

在操作S2830中,当执行像素单位运动补偿时,从比特流中提取关于第一运动矢量和第二运动矢量的信息,第一运动矢量和第二运动矢量分别指示第一参考画面和第二参考画面中与当前块最相似的第一对应区域和第二对应区域。

在操作S2840中,图像解码设备200通过使用第一运动矢量和第二运动矢量来对当前块执行块单位双向运动补偿。

在操作S2850中,图像解码设备200通过使用第一参考画面的像素和第二参考画面的像素来对当前块的每个像素执行像素单位运动补偿。如上所述,图像解码设备200可以通过使用以下内容来生成当前块的每个像素的像素单位运动补偿值:与当前块的每个像素相对应的第一参考画面的第一对应像素的水平方向梯度和垂直方向梯度、与当前块的每个像素相对应的第二参考画面的第二对应像素的水平方向梯度和垂直方向梯度以及通过使用第一参考画面的像素和第二参考画面的像素而确定的水平方向位移矢量和垂直方向位移矢量。

在操作S2860中,图像解码设备200通过使用块单位双向运动补偿的结果和像素单位运动补偿的结果来生成当前块的双向运动预测值。将当前块的双向运动预测值与从比特流中提取出的并且被解码的当前块的残差值相加,以重构当前块。

虽然已经参照本公开的实施例具体示出和描述了本公开,但本领域普通技术人员将理解,可以在不脱离由所附权利要求限定的本公开的精神和范围的情况下,在形式和细节上对其进行各种改变。这些实施例应该仅仅被认为是描述性的而不是为了限制的目的。因此,本公开的范围不是由本公开的详细描述来限定而是由所附权利要求来限定,并且该范围内的所有差异将被解释为包括在本公开中。

本公开的实施例可以被编写为计算机程序,并且可以被实现在使用计算机可读记录介质运行程序的通用数字计算机中。计算机可读记录介质的示例包括磁存储介质(例如ROM、软盘、硬盘等)、光记录介质(例如CD-ROM或DVD)等等。

相关技术
  • 用于对图像进行编码和解码的设备及其用于对图像进行编码和解码的方法
  • 用于对图像进行编码和解码的方法、用于对图像进行编码和解码的设备以及相应的计算机程序
技术分类

06120112877011