图像解码方法转让专利

申请号 : CN201710156798.2

文献号 : CN106713932B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李泰美韩宇镇

申请人 : 三星电子株式会社

摘要 :

一种图像解码方法。一种用于对当前块的运动矢量进行编码和解码的方法和设备。所述编码的方法包括:通过估计运动矢量,基于估计的结果将多个运动矢量预测候选中的第一运动矢量预测候选确定为运动矢量预测,基于当前块的运动矢量和当前块的运动矢量预测来产生关于运动矢量的信息;通过使用第二运动矢量预测候选和关于运动矢量的信息产生虚拟运动矢量,产生虚拟运动矢量和多个运动矢量预测候选之间的矢量差,对矢量差和关于运动矢量的信息进行比较,根据所述比较选择性地排除第二运动矢量预测候选。

权利要求 :

1.一种图像解码方法,包括:

从比特流解码出关于当前块的运动矢量差的信息和关于当前块的运动矢量预测因子的信息;

产生运动矢量预测因子候选组;

基于运动矢量预测因子候选组中的运动矢量预测因子候选的值来修改运动矢量预测因子候选组;

基于修改的运动矢量预测因子候选组和关于运动矢量预测因子的信息来确定当前画面的当前块的运动矢量预测因子;以及基于运动矢量预测因子和关于运动矢量差的信息来确定当前块的运动矢量,其中,修改运动矢量预测因子候选组的步骤包括:如果至少两个运动矢量预测因子候选具有相同值,则通过从运动矢量预测因子候选组中移除除了所述至少两个运动矢量预测因子候选之一以外的所有其余的所述至少两个运动矢量预测因子候选来修改运动矢量预测因子候选组,其中,修改的运动矢量预测因子候选组包括第一运动矢量预测因子候选和第二运动矢量预测因子候选中的至少一个,其中,第一运动矢量预测因子候选基于当前块的相邻块的运动矢量,第二运动矢量预测因子候选基于与当前块同位的块的运动矢量,同位的块位于不同于当前画面的与当前块相关的画面中,其中,相邻块包括位于当前块的左上侧、右上侧和左下侧的块。

2.如权利要求1所述的方法,其中,第二运动矢量预测因子候选基于当前画面与参考画面之间的时间距离而被缩放。

3.一种图像编码方法,包括:

通过对当前块执行帧间预测来确定当前块的运动矢量;

产生运动矢量预测因子候选组;

基于运动矢量预测因子候选组中的运动矢量预测因子候选的值来修改运动矢量预测因子候选组;

通过从包括在修改的运动矢量预测因子候选组中的运动矢量预测因子候选中确定当前画面的当前块的运动矢量预测因子来对指定当前块的运动矢量预测因子的关于运动矢量预测因子的信息进行编码;

对指示当前块的运动矢量与当前块的运动矢量预测因子之间的差的关于当前块的运动矢量的差的信息进行编码;

产生包括关于当前块的运动矢量的差的信息和指定当前块的运动矢量预测因子的关于运动矢量预测因子的信息的比特流,其中,修改运动矢量预测因子候选组的步骤包括:如果至少两个运动矢量预测因子候选具有相同值,则通过从运动矢量预测因子候选组中移除除了所述至少两个运动矢量预测因子候选之一以外的所有其余的所述至少两个运动矢量预测因子候选来修改运动矢量预测因子候选组,其中,修改的运动矢量预测因子候选组包括第一运动矢量预测因子候选和第二运动矢量预测因子候选中的至少一个,其中,第一运动矢量预测因子候选基于当前块的相邻块的运动矢量,第二运动矢量预测因子候选基于与当前块同位的块的运动矢量,同位的块位于不同于当前画面的与当前块相关的画面中,其中,相邻块包括位于当前块的左上侧、右上侧和左下侧的块。

4.一种存储计算机程序的非暂时性计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现多个步骤,其中,所述多个步骤包括:通过对当前块执行帧间预测来确定当前块的运动矢量;

产生运动矢量预测因子候选组;

基于运动矢量预测因子候选组中的运动矢量预测因子候选的值来修改运动矢量预测因子候选组;

通过从包括在修改的运动矢量预测因子候选组中的运动矢量预测因子候选中确定当前画面的当前块的运动矢量预测因子来对指定当前块的运动矢量预测因子的关于运动矢量预测因子的信息进行编码;

对指示当前块的运动矢量与当前块的运动矢量预测因子之间的差的关于当前块的运动矢量的差的信息进行编码;

产生包括关于当前块的运动矢量的差的信息和指定当前块的运动矢量预测因子的关于运动矢量预测因子的信息的比特流,其中,修改运动矢量预测因子候选组的步骤包括:如果至少两个运动矢量预测因子候选具有相同值,则通过从运动矢量预测因子候选组中移除除了所述至少两个运动矢量预测因子候选之一以外的所有其余的所述至少两个运动矢量预测因子候选来修改运动矢量预测因子候选组,其中,修改的运动矢量预测因子候选组包括第一运动矢量预测因子候选和第二运动矢量预测因子候选中的至少一个,其中,第一运动矢量预测因子候选基于当前块的相邻块的运动矢量,第二运动矢量预测因子候选基于与当前块同位的块的运动矢量,同位的块位于不同于当前画面的与当前块相关的画面中,其中,相邻块包括位于当前块的左上侧、右上侧和左下侧的块。

说明书 :

图像解码方法

[0001] 本申请是申请日为2011年1月19日、申请号为201180006526.5、题为“基于减少的运动矢量预测候选对运动矢量进行编码和解码的方法和设备”的专利申请的分案申请。

技术领域

[0002] 与示例性实施例一致的设备和方法涉及对运动矢量进行编码和解码,更具体地讲,涉及对当前块的运动矢量进行预测编码和预测解码。

背景技术

[0003] 在编解码器(诸如,MPEG-4H.264/MPEG先进视频编码(AVC))中,与当前块相邻的先前编码的块的运动矢量可被用于预测当前块的运动矢量。与当前块的左侧、上侧、右上侧相邻的先前编码的块的运动矢量的中值被用作当前块的运动矢量预测。未直接对当前块的运动矢量进行编码,而是对运动矢量和运动矢量预测之间的差进行编码。

发明内容

[0004] 解决方案
[0005] 一个或多个示例性实施例提供一种用于对运动矢量进行预测编码和预测解码的方法和设备,以及记录有用于执行所述方法的计算机程序的计算机可读记录介质。
[0006] 有益效果
[0007] 根据示例性实施例,当运动矢量预测候选被用于对运动矢量进行预测编码和预测解码时,运动矢量预测候选的数量可被减少以对运动矢量进行预测编码和预测解码。因此,可使用最少比特对这样的信息进行编码,从而增加了编码/解码运动矢量的压缩率,并且从而可提高编码/解码图像的压缩率,其中,所述信息是运动矢量预测候选中对被用于预测当前块的运动矢量的运动矢量预测进行指定所需的信息。

附图说明

[0008] 通过参照附图对示例性实施例进行详细描述,本发明的上述和其他特点和优点将会变得更加清楚,其中:
[0009] 图1是根据示例性实施例的用于对图像进行编码的设备的框图;
[0010] 图2是根据示例性实施例的用于对图像进行解码的设备的框图;
[0011] 图3示出根据示例性实施例的分层编码单元;
[0012] 图4是根据示例性实施例的基于编码单元的图像编码器的框图;
[0013] 图5是根据示例性实施例的基于编码单元的图像解码器的框图;
[0014] 图6示出根据示例性实施例的最大编码单元、子编码单元和预测单元。
[0015] 图7示出根据示例性实施例的编码单元和变换单元;
[0016] 图8a到图8d示出根据示例性实施例的编码单元、预测单元和变换单元的划分形状;
[0017] 图9是根据示例性实施例的用于对运动矢量进行编码的设备的框图;
[0018] 图10a和图10b示出根据示例性实施例的运动矢量预测候选;
[0019] 图10c到图10e示出根据示例性实施例的具有多种尺寸的与当前块相邻的块;
[0020] 图11a到图11c示出根据另一示例性实施例的运动矢量预测候选;
[0021] 图12示出根据示例性实施例的减少运动矢量预测候选的方法;
[0022] 图13a到图13d示出根据示例性实施例的包括在具有预定尺寸的编码单元中的当前块的位置;
[0023] 图14是根据示例性实施例的用于对运动矢量进行解码的设备的框图;
[0024] 图15是示出根据示例性实施例的对运动矢量进行编码的方法的流程图;
[0025] 图16是示出根据示例性实施例的对运动矢量进行解码的方法的流程图。
[0026] 最佳模式
[0027] 根据示例性实施例的一方面,提供了一种对运动矢量进行编码的方法,所述方法包括:通过估计当前块的运动矢量,基于估计的结果将多个运动矢量预测候选中的第一运动矢量预测候选确定为当前块的运动矢量预测,基于当前块的运动矢量和当前块的运动矢量预测来产生关于运动矢量的信息;通过使用多个运动矢量预测候选中的第二运动矢量预测候选和关于运动矢量的信息产生虚拟运动矢量,产生虚拟运动矢量和多个运动矢量预测候选之间的矢量差,对矢量差和关于运动矢量的信息进行比较,从多个运动矢量预测候选中选择性地排除第二运动矢量预测候选;对关于当前块的运动矢量的信息和关于当前块的运动矢量预测信息进行编码。
[0028] 根据是另一示例性实施例的一方面,提供了一种对运动矢量进行解码的方法,所述的方法包括:对关于当前块的运动矢量的信息进行解码;通过使用多个运动矢量预测候选中的预定的运动矢量预测候选和关于所述运动矢量的解码的信息产生虚拟运动矢量,产生虚拟运动矢量和多个运动矢量预测候选之间的矢量差,对产生的矢量差和关于运动矢量的解码的信息进行比较,从多个运动矢量预测候选中选择性地排除预定的运动矢量预测候选;将从多个运动矢量预测候选中没有排除的运动矢量预测候选的运动矢量预测确定为当前块的运动矢量预测,并基于确定的运动矢量预测和关于运动矢量的解码的信息恢复当前块的运动矢量。
[0029] 根据是另一示例性实施例的一方面,提供了一种用于对运动矢量进行编码的设备,所述设备包括:运动矢量估计器,通过估计当前块的运动矢量,基于当前块的运动矢量和当前块的运动矢量预测产生关于运动矢量的信息,基于估计的结果将多个运动矢量预测候选中的第一运动矢量预测候选确定为当前块的运动矢量预测;候选确定器,通过使用多个运动矢量预测候选中的第二运动矢量预测候选和关于运动矢量的信息产生虚拟运动矢量,产生虚拟运动矢量和多个运动矢量预测候选之间的矢量差,对矢量差和关于运动矢量的信息进行比较,从多个运动矢量预测候选中选择性地排除第二运动矢量预测候选;运动矢量编码器,对关于运动矢量的信息和关于当前块的运动矢量预测的信息进行编码。
[0030] 根据是另一示例性实施例的一方面,提供了一种用于对运动矢量进行解码的设备,所述设备包括:运动矢量解码器,对关于当前块的运动矢量的信息进行解码;候选确定器,通过使用多个运动矢量预测候选中的预定的运动矢量预测候选和关于所述运动矢量的解码的信息产生虚拟运动矢量,产生虚拟运动矢量和多个运动矢量预测候选之间的矢量差,对产生的矢量差和关于运动矢量的解码的信息进行比较,从多个运动矢量预测候选中选择性地排除预定的运动矢量预测候选;运动矢量恢复单元,将从多个运动矢量预测候选中没有排除的运动矢量预测候选的运动矢量预测候选确定为当前块的运动矢量预测,并基于确定的运动矢量预测和关于运动矢量的解码的信息恢复当前块的运动矢量。
[0031] 根据另一示例性实施例的一方面,提供了一种实施了用于执行对运动矢量进行编码和解码的方法的计算机程序的计算机可读记录介质。

具体实施方式

[0032] 以下,将参照附图更全面地描述一个或多个示例性实施例。当诸如“…中的至少一个”的表述位于一列元件之后时,其修饰整列元件而不是修饰列出的单个元件。
[0033] 以下,“图像”可表示视频的静止图像或运动图像(即,视频本身)。
[0034] 图1是根据示例性实施例的用于对图像进行编码的设备100的框图。
[0035] 参照图1,用于对图像进行编码的设备100包括最大编码单元划分器110、编码深度确定器120、图像数据编码器130和编码信息编码器140。
[0036] 最大编码单元划分器110可基于最大编码单元(即,最大尺寸的编码单元)划分当前帧或当前像条。也就是说,最大编码单元划分器110可将当前帧或当前像条划分为至少一个最大编码单元。
[0037] 根据示例性实施例,可使用最大编码单元和深度表示编码单元。如上所述,最大编码单元表示当前帧的编码单元中具有最大尺寸的编码单元,所述深度表示分层减少编码单元的程度。随着深度的增加,编码单元可从最大编码单元减少为最小编码单元,其中,最大编码单元的深度被定义为最小深度并且最小编码单元的深度被定义为最大深度。由于编码单元的尺寸随着深度的增加从最大编码单元减少,第k深度的子编码单元可包括多个第(k+n)深度的子编码单元(k和n是等于或大于1的整数)。
[0038] 根据将被编码的帧的尺寸的增加量,按照更大的编码单元对图像进行编码可引起更高的图像压缩率。然而,如果固定更大的编码单元,则可能没有通过反映连续变化的图像特征有效地对图像进行编码。
[0039] 例如,当对平滑区域(诸如,海或天空)进行编码时,编码单元越大,可增加的压缩率越多。然而,当对复杂区域(诸如,人或建筑物)进行编码时,编码单元越小,可增加的压缩率越多。
[0040] 因此,根据示例性实施例,可针对每个帧或每个像条设置不同的最大编码单元和不同的最大深度。由于最大深度表示编码单元可减少的最大次数,可根据最大深度可变地设置包括在最大编码单元中的每个最小编码单元的尺寸。
[0041] 编码深度确定器120确定最大深度。可基于率失真(RD)代价的计算确定最大深度。可针对每个帧或每个像条或针对每个最大编码单元不同地确定最大深度。确定的最大深度被提供给编码信息编码器140,根据最大编码单元的图像数据被提供给图像数据编码器
130。
[0042] 最大深度可表示具有可被包括在最大编码单元中的最小尺寸的编码单元(即,最小编码单元)。换句话说,如稍后将参照图8a和图8b进行的描述,最大编码单元可根据不同的深度被划分为具有不同的尺寸的子编码单元。另外,可基于具有不同的尺寸的处理单元对包括在最大编码单元中的具有不同尺寸的子编码单元进行预测或变换。执行所述变换以将空间域像素值变换为频域的系数,并且所述变换可以是离散余弦变换或Karhunen Loever变换(KLT)。换句话说,用于对图像进行编码的设备100可基于具有多种尺寸和多种形状的处理单元执行关于图像编码的多个处理操作。为了对图像数据进行编码,执行处理操作(诸如,预测、变换和熵编码中的至少一个),其中,具有相同的尺寸或不同的尺寸的处理单元可被用于每个操作。
[0043] 例如,用于对图像进行编码的设备100可选择与编码单元不同的处理单元以预测所述编码单元。
[0044] 当编码单元的尺寸是2N×2N(其中,N是正整数)时,用于预测的处理单元可以是2N×2N、2N×N、N×2N和N×N。换句话说,可基于这样的形状的处理单元执行运动预测,其中,在所述形状中编码单元的高度和宽度中的至少一个被均等地划分为两个。以下,作为预测的基础的处理单元被定义为“预测单元”。
[0045] 预测模式可以是帧内模式、帧间模式、跳过模式中的至少一个,可仅针对具有特定尺寸或特定形状的预测单元执行特定预测模式。例如,可仅针对形状是正方形的具有尺寸为2N×2N和N×N的预测单元执行帧内模式。另外,可仅针对具有尺寸为2N×2N的预测单元执行跳过模式。如果在编码单元中存在多个预测单元,则可在针对每个预测单元执行预测之后,选择具有最少的编码错误的预测模式。
[0046] 可选地,用于对图像进行编码的设备100可基于具有与编码单元不同的尺寸的处理单元对图像数据执行变换。针对编码单元中的变换,可基于具有与编码单元尺寸相同的尺寸或小于编码单元的尺寸的尺寸的处理单元执行所述变换。以下,作为变换的基础的处理单元被定义为“变换单元”。
[0047] 编码深度确定器120可使用基于拉格朗日乘子的RD优化来确定包括在最大编码单元中的子编码单元。换句话说,编码深度确定器120可确定从最大编码单元划分的多个子编码单元具有的形状,其中,多个子编码单元根据它们的深度具有不同的尺寸。图像数据编码器130通过基于由编码深度确定器120确定的划分形状对最大编码单元进行编码来输出比特流。
[0048] 编码信息编码器140对关于由编码深度确定器120确定的最大编码单元的编码模式的信息进行编码。换句话说,编码信息编码器140通过对以下信息进行编码来输出比特流:关于最大编码单元的划分形状的信息、关于最大深度的信息和关于针对每个深度的子编码单元的编码模式的信息。关于子编码单元的编码模式的信息可包括:关于子编码单元的预测单元的信息、关于针对每个预测单元的预测模式的信息和关于子编码单元的变换单元的信息。
[0049] 关于最大编码单元的划分形状的信息可以是表示每个编码单元是否被划分的信息。例如,当对最大编码单元进行划分和编码时,对表示最大编码单元是否被划分的信息进行编码。另外,当对从最大编码单元划分出的子编码单元进行划分和编码时,对表示子编码单元是否被划分的信息进行编码。表示子编码单元是否被划分的信息可以是标志信息。
[0050] 由于针对每个最大编码单元存在具有不同的尺寸的子编码单元,并且必须针对每个子编码单元确定关于编码模式的信息,所以可针对一个最大编码单元确定关于至少一个编码模式的信息。
[0051] 用于对图像进行编码的设备100可根据深度的增加通过均等地将最大编码单元的高度和宽度两者划分为两个来产生子编码单元。也就是说,当第k深度的编码单元的尺寸是2N×2N时,第(k+1)深度的编码单元的尺寸是N×N。
[0052] 因此,用于对图像进行编码的设备100可考虑图像特征基于最大编码单元的尺寸和最大深度确定针对每个最大编码单元的最佳划分形状。通过考虑图像特征可变地调整最大编码单元的尺寸并通过将最大编码单元划分为不同深度的子编码单元对图像进行编码,可对具有各种分辨率的图像进行更有效的编码。
[0053] 图2是根据示例性实施例的用于对图像进行解码的设备200的框图。
[0054] 参照图2,用于对图像进行解码的设备200包括:图像数据采集单元210、编码信息提取器220和图像数据解码器230。
[0055] 图像数据采集单元210通过对由用于对图像进行解码的设备200接收的比特流进行解析来根据最大编码单元获得图像数据,并将所述图像数据输出到图像数据解码器230。图像数据采集单元210可从当前帧或当前像条的头提取关于当前帧或当前像条的最大编码单元的信息。换句话说,图像数据采集单元210按照最大编码单元对比特流进行划分,从而图像数据解码器230可根据最大编码单元对图像数据进行解码。
[0056] 编码信息提取器220通过对由用于对图像进行解码的设备200接收的比特流进行解析来从当前帧的头提取以下信息:关于最大编码单元的信息、关于最大深度的信息、关于最大编码单元的划分形状的信息、关于子编码单元的编码模式的信息。关于划分形状的信息和关于编码模式的信息被提供给图像数据解码器230。
[0057] 关于最大编码单元的划分形状的信息可包括在最大编码单元中包括的关于根据深度具有不同尺寸的子编码单元的信息,并且可以是表示每个编码单元是否被划分的信息(例如,标志信息)。关于编码模式的信息可包括:关于根据子编码单元的预测单元的信息、关于预测模式的信息和关于变换单元的信息。
[0058] 图像数据解码器230通过基于由编码信息提取器220提取的信息对每个最大编码单元的图像数据进行解码来恢复当前帧。
[0059] 图像数据解码器230可基于关于最大编码单元的划分形状的信息对包括在最大编码单元中的子编码单元进行解码。解码处理可包括:包括帧内预测和运动补偿的帧间预测处理和逆变换处理。
[0060] 图像数据解码器230可基于关于根据子编码单元的预测单元的信息和关于预测模式的信息执行帧内预测或帧间预测以预测子编码单元。图像数据解码器230可还基于关于子编码单元的变换单元的信息针对每个子编码单元执行逆变换。
[0061] 图3示出根据示例性实施例的分层编码单元。
[0062] 参照图3,分层编码单元可包括宽度×高度是64×64、32×32、16×16、8×8和4×4的编码单元。除具有完全正方的形状的这些编码单元以外,可还存在宽度×高度是64×32、32×64、32×16、16×32、16×8、8×16、8×4和4×8的编码单元。
[0063] 在图3中,针对分辨率为1920×1080的图像数据310,最大编码单元的尺寸被设置为64×64,最大深度被设置为2。
[0064] 针对分辨率为1920×1080的图像数据320,最大编码单元的尺寸被设置为64×64,最大深度被设置为3。针对分辨率为352×288的图像数据330,最大编码单元的尺寸被设置为16×16,最大深度被设置为2。
[0065] 当分辨率高或者数据量大时,编码单元的最大尺寸可以相对大以增加压缩率并精确地反映图像特征。因此,针对具有比图像数据330更高的分辨率的图像数据310和图像数据320,64×64可被选择为最大编码单元的尺寸。
[0066] 最大深度表示分层编码单元中的层的总数。由于图像数据310的最大深度是2,所以图像数据310的编码单元315根据深度的增加可包括长轴尺寸为64的最大编码单元和长轴尺寸为32和16的子编码单元。
[0067] 另一方面,由于图像数据330的最大深度是2,图像数据330的编码单元335根据深度的增加可包括长轴尺寸为16的最大编码单元和长轴尺寸为8和4的编码单元。
[0068] 然而,由于图像数据320的最大深度是4,图像数据320的编码单元325根据深度的增加可包括长轴尺寸为64的最大编码单元和长轴尺寸为32、16、8和4的子编码单元。由于随着深度增加基于更小的子编码单元对图像进行编码,示例性实施例适于对包括多个分钟场景的图像进行编码。
[0069] 图4是根据示例性实施例的基于编码单元的图像编码器400的框图。
[0070] 帧内预测单元410在当前帧405中对帧内模式的预测单元执行帧内预测,并且运动估计器420和运动补偿器425使用当前帧405和参考帧495对帧间模式的预测单元执行运动补偿和帧间预测。
[0071] 基于从帧内预测单元410、运动估计器420和运动补偿器425输出的预测单元产生残差值,并且产生的残差值通过经过变换器430和量化器440被输出为量化的变换系数。
[0072] 量化的变换系数通过经过反量化器460和逆变换器470被恢复为残差值,通过经过去块单元480和环路滤波单元490对恢复的残差值进行后处理,并且恢复的残差值被输出为参考帧495。量化的变换系数通过经过熵编码编码器450可被输出为比特流455。
[0073] 为了基于根据示例性实施例的编码方法执行编码,图像编码器400的组件基于最大编码单元、根据深度的子编码单元、预测单元和变换单元执行图像编码处理,其中,所述图像编码器400的组件包括:帧内预测单元410、运动估计器420、运动补偿器425、变换器430、量化器440、熵编码器450、反量化器460、逆变换器470、去块单元480和环路滤波单元
490。
[0074] 图5是根据示例性实施例的基于编码单元的图像解码器500的框图。
[0075] 参照图5,比特流505经过解析器510从而对将被解码的编码的图像数据和被用于解码的编码信息进行解析。编码的图像数据通过经过熵解码器520和反量化器530被输出为反量化的数据,并通过经过逆变换器540被恢复为残差值。通过将残差值添加到帧内预测单元550的帧内预测结果或运动补偿单元560的运动补偿结果根据编码单元来恢复残差值。恢复的编码单元通过经过去块单元570和环路滤波单元580被用于下一个编码单元或下一个帧的预测。
[0076] 为了基于根据示例性实施例的解码方法执行解码,图像解码器500的组件基于最大编码单元、根据深度的子编码单元、预测单元和变换单元执行图像解码处理,其中,所述图像解码器500的组件包括:解析器510、熵解码器520、反量化器530、逆变换器540、帧内预测单元550、运动补偿器560、去块单元570和环路滤波单元580。
[0077] 具体来讲,帧内预测单元550和运动补偿器560通过考虑最大编码单元和深度来确定子编码单元中的预测单元和预测模式,逆变换器540通过考虑变换单元的尺寸执行逆变换。
[0078] 图6示出根据示例性实施例的最大编码单元、子编码单元和预测单元。
[0079] 图1中示出的用于对图像进行编码的设备100和图2中示出的用于对图像进行解码的设备200使用分层编码单元以考虑图像特征执行编码和解码。可根据图像特征适应性地设置最大编码单元和最大深度,或者可根据用户的需要可变地设置最大编码单元和最大深度。
[0080] 在图6中,分层编码单元结构600具有最大编码单元610,其中,所述最大编码单元610的高度和宽度是64且最大深度是4。深度沿着分层编码单元结构600的纵轴增加,并且随着深度增加,子编码单元620到650的高度和宽度减少。沿着分层编码结构600的横轴示出最大编码单元610和子编码单元620到子编码单元650的预测单元。
[0081] 最大编码单元610的深度为0且编码单元的尺寸(即,高度和宽度)为64×64。沿着纵轴深度增加,存在尺寸为32×32且深度为1的子编码单元620、尺寸为16×16且深度为2的子编码单元630、尺寸为8×8且深度为3的子编码单元640和尺寸为4×4且深度为4的子编码单元650。尺寸为4×4且深度为4的子编码单元650是最小编码单元。
[0082] 参照图6,沿着横轴根据每个深度示出预测单元的示例。也就是说,深度为0的最大编码单元610的预测单元可以是尺寸与编码单元610相同的(即,64×64)预测单元、或尺寸小于尺寸为64×64的编码单元610的以下预测单元:尺寸为64×32的预测单元612、尺寸为32×64的预测单元614、或尺寸为32×32的预测单元616。
[0083] 深度为1且尺寸为32×32的编码单元620的预测单元可以是尺寸与编码单元620相同的(即,32×32)预测单元、或尺寸小于尺寸为32×32的编码单元620的以下预测单元:尺寸为32×16的预测单元622、尺寸为16×32的预测单元624、或尺寸为16×16的预测单元626。
[0084] 深度为2且尺寸为16×16的编码单元630的预测单元可以是尺寸与编码单元630相同的(即,16×16)预测单元、或尺寸小于尺寸为16×16的编码单元630的以下预测单元:尺寸为16×8的预测单元632、尺寸为8×16的预测单元634、或尺寸为8×8的预测单元636。
[0085] 深度为3且尺寸为8×8的编码单元640的预测单元可以是尺寸与编码单元640相同的(即,8×8)预测单元、或尺寸小于尺寸为8×8的编码单元640的以下预测单元:尺寸为8×4的预测单元642、尺寸为4×8的预测单元644、或尺寸为4×4的预测单元646。
[0086] 最后,深度为4且尺寸为4×4的编码单元650是最大深度的编码单元,并且编码单元650的预测单元可以是尺寸为4×4的预测单元650。然而,最大深度的编码单元可不总是与预测单元的尺寸相同。与编码单元610到编码单元650相似地,最大深度的编码单元可被划分为具有小于所述编码单元的尺寸的预测单元并可执行预测。
[0087] 图7示出根据示例性实施例的编码单元和变换单元。
[0088] 图1中示出的用于对图像进行编码的设备100和图2中示出的用于对图像进行解码的设备200使用最大编码单元本身或从最大编码单元划分出的等于或小于最大编码单元的子编码单元来执行编码和解码。在编码和解码过程中,不论编码单元和预测单元如何,为了最高的压缩率选择用于变换的变换单元的尺寸。例如,参照图7,当当前编码单元710的尺寸为64×64时,可使用尺寸为32×32的变换单元720执行变换。
[0089] 图8a到图8d示出根据示例性实施例的编码单元810、预测单元860和变换单元870的划分形状。
[0090] 图8a到图8b示出根据示例性实施例的编码单元810和预测单元860。
[0091] 图8a示出由图1中示出的用于对图像进行编码的设备100选择的划分形状,以对最大编码单元810进行编码。用于对图像进行编码的设备100将最大编码单元810划分为多种形状,执行编码,通过基于RD代价对多种划分形状的编码结果进行相互比较来选择最佳划分形状。当照其原样对最大编码单元810进行编码是最佳时,可对最大编码单元810进行编码而不需如图8a到图8d所示划分最大编码单元810。
[0092] 参照图8b,通过将深度是0的最大编码单元810划分为深度为等于或大于1的子编码单元对最大编码单元810进行编码。也就是说,将最大编码单元810划分为深度为1的4个子编码单元,并且将深度为1的所有或一些子编码单元划分为深度为2的子编码单元。
[0093] 将深度为1的子编码单元中的位于右上侧的子编码单元和位于左下侧的子编码单元划分为深度为等于或大于2的子编码单元。可将深度为等于或大于2的一些子编码单元划分为深度为等于或大于3的子编码单元。
[0094] 图8b示出最大编码单元810的预测单元860的划分形状。
[0095] 参照图8b,可从最大编码单元810不同地划分最大编码单元810的预测单元860。换句话说,每个子编码单元的预测单元可小于相应的子编码单元。
[0096] 例如,深度为1的子编码单元中位于右下侧的子编码单元854的预测单元可小于子编码单元854。另外,深度为2的子编码单元814、816、818、828、850和852中的一些子编码单元814、816、850和852的预测单元可分别小于子编码单元814、816、850和852。
[0097] 另外,深度为3的子编码单元822、832和848的预测单元可分别小于子编码单元822、832和848。所述预测单元可具有以高度或宽度的方向将相应的子编码单元均等地划分为两个的形状,或者可具有以高度和宽度的方向将相应的子编码单元均等地划分为四个的形状。
[0098] 图8c和图8d示出根据示例性实施例的预测单元860和变换单元870。
[0099] 图8c示出图8b中示出的最大编码单元810的预测单元860的划分形状,图8d示出最大编码单元810的变换单元870的划分形状。
[0100] 参照图8d,可从预测单元860不同地设置变换单元870的划分形状。
[0101] 例如,即使选择具有这样的形状的深度为1的编码单元854的预测单元,也可选择具有与编码单元854相同的尺寸的变换单元,其中,所述形状是指将编码单元854的高度均等地划分为两个的形状。同样地,即使选择具有这样的形状的深度为2的编码单元814和编码单元850的预测单元,也可选择具有与编码单元814和编码单元850中的每个编码单元的原始尺寸相同的尺寸的变换单元,其中,所述形状是指将编码单元814和编码单元850中的每个编码单元的高度均等地划分为两个的形状。
[0102] 可选择具有小于预测单元的尺寸的变换单元。例如,当选择具有这样的形状的深度为2的编码单元852的预测单元时,其中,所述形状是指将编码单元852的宽度均等地划分为两个的形状,可选择具有以高度和宽度方向将编码单元852均等地划分为四个的形状的变换单元,其中,所述变换单元具有小于预测单元的形状的尺寸。
[0103] 图9是根据示例性实施例的用于对运动矢量进行编码的设备900的框图。
[0104] 在图9中详细示出可被包括在图1中示出的用于对图像进行编码的设备100或图4中示出的图像编码器400中的用于对运动矢量进行编码的设备900。参照图9,用于对运动矢量进行编码的设备900包括:运动矢量估计器910、候选确定器920和运动矢量编码器930。
[0105] 为了使用帧间预测(即,时间上的预测)对已编码的块进行解码,需要关于运动矢量的信息,所述关于运动矢量的信息表示参考图像中的相似块和当前块之间的相对位置差。因此,当对图像进行编码时,对关于运动矢量的信息进行编码并将其插入到比特流。当直接对关于运动矢量的信息进行编码和插入时,增加了用于对关于运动矢量的信息进行编码的开销,因此图像数据的压缩率降低了。
[0106] 因此,在图像编码中,预测当前块的运动矢量,仅对作为预测的结果产生的运动矢量预测和原始运动矢量之间的原始运动矢量差进行编码和插入,从而压缩了关于运动矢量的信息。
[0107] 在运动矢量的预测编码中,可存在显式模式和隐式模式。
[0108] 在编解码器(诸如,MPEG-4H.264/MPEG-4先进视频编码(AVC))中,与当前块相邻的先前编码的块的运动矢量可被用于预测当前块的运动矢量。与当前块的左侧、上侧和右上侧相邻的先前编码的块的运动矢量的中值被用作当前块的运动矢量预测。由于通过使用相同的方法来预测使用帧间预测编码的所有的块的运动矢量,可不单独地对关于当前块的运动矢量预测的信息进行编码。然而,根据一个或多个示例性实施例的用于对图像进行编码的设备100或图像编码器400使用隐式模式和显式模式两者,以准确地预测运动矢量,其中,在所述隐式模式中未单独地对关于运动矢量预测的信息进行编码,其中,在所述显式模式中未对关于运动矢量预测的信息进行编码。在显式模式中,对关于从多个运动矢量预测候选中的被用作当前块的运动矢量预测的运动矢量预测的信息进行编码,并作为序列参数、像条参数或块参数将其输入到比特流。
[0109] 图9示出在根据显式模式对运动矢量进行编码时执行预测编码的设备。
[0110] 运动矢量估计器910估计当前块的运动矢量。在至少一个参考图像中搜索与当前块相似或相同的块,并作为搜索的结果估计运动矢量,其中,运动矢量是当前块和搜索的参考图像之间的相对位置差。基于绝对误差和(SAD)搜索与当前块相似或相同的块,并作为搜索的结果,可估计当前块的运动矢量。
[0111] 另外,运动矢量估计器910基于包括在与当前块相邻的先前编码的区域中的块的运动矢量来预测当前块的运动矢量。换句话说,将包括在与当前块相邻的先前编码的区域中的块的运动矢量设置为运动矢量预测候选,并确定运动矢量预测候选中与当前块的估计的运动矢量最相似的运动矢量预测候选。
[0112] 在编解码器(诸如,MPEG-4H.264/MPEG-4先进视频编码(AVC))中,与当前块的左侧、上侧和右上侧相邻的先前编码的块的运动矢量的中值被用作当前块的运动矢量预测。由于通过使用先前编码的块的运动矢量来预测已编码的块的运动矢量并且仅使用一个运动矢量预测,可不单独地对关于运动矢量预测的信息进行编码。换句话说,使用帧间预测编码的块的运动矢量预测的数量是一个。
[0113] 然而,当准确地预测当前块的运动矢量时,可以以高压缩率对运动矢量进行编码。在这里,根据示例性实施例,选择多个运动矢量预测候选之一并将其用作当前块的运动矢量预测,从而可以以高压缩率对当前块的运动矢量进行编码。以下,将详细描述通过使用多个运动矢量预测候选对当前块的运动矢量进行编码的方法。
[0114] 图10a和图10b示出根据示例性实施例的运动矢量预测候选。
[0115] 参照图10a,在预测运动矢量的方法中,与当前块相邻的先前编码的块的运动矢量之一可被用作当前块的运动矢量预测。
[0116] 与当前块的上侧相邻的块中,以下块的所有运动矢量可被用作当前块的运动矢量预测候选:在最左侧的块a0、在与左侧相邻的最上侧的块b0、与右上侧相邻的块c、与左上侧相邻的块d和与左下侧相邻的块e。
[0117] 在根据一个或多个示例性实施例的对图像进行编码和解码的方法中,基于具有由深度分类的多个尺寸的编码单元执行图像编码和图像解码,并因此与左下侧相邻的块的运动矢量可被用作运动矢量预测的候选。
[0118] 参照图10b,与当前块相邻的所有块的运动矢量可被用作运动矢量预测候选。换句话说,不仅与上侧相邻的块中的最左侧的块a0的运动矢量可被用作运动矢量预测候选,与上侧相邻的a0到aN的所有块的运动矢量也可被用作运动矢量预测候选。另外,不仅与左侧相邻的块中的最上侧的块b0的运动矢量可被用作运动矢量预测候选,与左侧相邻的b0到bN的所有块的运动矢量也可被用作运动矢量预测候选。
[0119] 另外,相邻块的运动矢量的中值可被用作运动矢量预测候选。换句话说,中值mv_a0、mv_b0或mv_c可被用作当前块的运动矢量预测的候选。在此,mv_a0是块a0的运动矢量,mv_b0是块b0的运动矢量,mv_c是块c的运动矢量。
[0120] 然而,如将参照图10c到图10e进行的详细描述,可根据当前快的尺寸和相邻块的尺寸限制当前块的运动矢量预测候选。
[0121] 图10c到图10e示出根据示例性实施例的具有多种尺寸的与当前块相邻的块。
[0122] 如上所述,在根据一个或多个示例性实施例的对图像进行编码和解码的方法中,具有根据深度确定的多种尺寸的编码单元和预测单元可被用于对图像进行编码。因此,由于与当前块相邻的块可以是多种尺寸,当当前块的尺寸和一些相邻块的尺寸彼此显著地不同时,可不将所述一些相邻块的运动矢量用作运动矢量预测候选。
[0123] 参照图10c,与当前快1010的上侧相邻的块1014到块1018小于当前块1010。由于与当前块1010相邻并具有与当前块1010相同的尺寸的块1012的运动矢量可以与当前块1010的运动矢量相同或相似,运动矢量估计器910可仅将块1012的运动矢量用作运动矢量预测的候选。
[0124] 虽然尺寸不相同,可仅将具有预定的尺寸或大于所述预定的尺寸的相邻块的运动矢量用作运动矢量预测候选。例如,可仅将块1012和块1018的运动矢量用作运动矢量预测候选,其中,块1012和块1018的尺寸为当前块1010的1/4或大于当前块1010的1/4。
[0125] 参照图10d,与当前块1020的左侧相邻的块1022的尺寸比当前块1020的尺寸大16倍,从而存在尺寸方面的巨大差异。由于所述巨大差异,与左侧相邻的块1022的运动矢量可能不相同或不相似于当前块1020的运动矢量。因此,与左侧相邻的块1022的运动矢量未被用作当前块1020的运动矢量预测候选,并且可仅将与上侧相邻的块1024的运动矢量和与左上侧相邻的块1026的运动矢量用作运动矢量预测候选。
[0126] 参照图10e,当前块1030的尺寸大于所有相邻的块1031到块1037的尺寸。在此,当所有相邻的块1031到块1037的运动矢量被用作当前块1030的运动矢量预测候选时,当前块1030的运动矢量预测候选的数量可能会高。随着当前块1030和相邻的块1031到块1037之间的尺寸差异增加,运动矢量预测候选的数量也增加。因此,运动矢量估计器910可不将相邻的块中的一些块的运动矢量用作当前块1030的运动矢量预测候选。
[0127] 例如,在图10e中,可不将与左下侧相邻的块1031的运动矢量和与右上侧相邻的块1037用作当前块1030的运动矢量预测候选。
[0128] 更一般来说,当当前块1030的尺寸大于预定的尺寸时,可不将相邻块中的以特定方向相邻的块的运动矢量用作当前块1030的运动矢量预测候选。
[0129] 图11a到图11c示出根据另一示例性实施例的运动矢量预测候选。
[0130] 图11a示出确定双向预测图像(B图像)的运动矢量预测候选的方法。当包括当前块的当前图像是执行双向预测的B图像时,基于时间上的距离产生的运动矢量可以是运动矢量预测候选。
[0131] 可通过使用在时间上早于当前图像1110的图像1112的块1120的运动矢量,确定当前图像1110的当前块1100的运动矢量预测候选mv_temporal,其中,块1120被布置在与当前块1100并列的位置。例如,当相对于时间上晚于当前图像1110的图像1114的搜索的块1122产生块1120的运动矢量mv_colA时,其中,块1120被布置在与当前块1100并列的位置,可通过以下方式确定当前块1100的运动矢量预测候选mv_L0A和mv_L1A:
[0132] mv_L1A=(t1/t2)*mv_colA
[0133] mv_L0A=mv_L1A-mv_colA
[0134] 在此,mv_L0A表示相对于时间上早于当前图像1110的图像1112的当前块1110的运动矢量预测候选,mv_L1A表示相对于时间上晚于当前图像1110的图像1114的当前块1100的运动矢量预测候选。
[0135] 在图11a中,作为B图像的当前图像1110被插入在时间上早于当前图像1110的图像1112和时间上晚于当前图像1110的图像1114之间。这里,当相对于时间上晚于当前图像
1110的图像1114产生块1120的运动矢量mv_colA时,其中,块1120被布置在与当前块1100并列的位置,可基于mv_L1A准确地预测当前块1100的运动矢量。换句话说,与mv_colA是具有与图11a中示出的方向相反的方向的运动矢量的情况(即,相对于在时间上早于当前图像
1110的图像1112之前的另一图像产生mv_colA的情况)比较,当mv_colA是具有图11a中示出的方向的运动矢量时,可更准确地预测当前块1100的运动矢量。
[0136] 因此,当从当前块1110到被布置在与当前块1100并列的位置的块1120的方向是List0时,运动矢量mv_colA需要在List1方向上,因此当前图像1110可如图11a所示被插入在图像1112和图像1114之间,从而可基于mv_colA准确地预测当前块1100的运动矢量。
[0137] 此外,根据时间顺序示出了图11a中示出的图像1110到图像1114,因此可基于图像序列号(POC)产生当前块的运动矢量预测候选mv_temporal。由当前块参考的图像可以是在图11a中示出的除相邻图像1112和1114以外的图像,因此基于POC产生当前块的运动矢量预测候选。
[0138] 例如,当当前图像的POC是CurrPOC并且由当前图像参考的图像的POC是CurrRefPOC时,可通过以下方式产生当前块的运动矢量预测候选:
[0139] Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)
[0140] mv_temporal=Scale*mv_colA
[0141] 在此,ColPOC是时间上早于当前图像1110的图像1112的POC并包括块1120,ColRefPOC是时间上晚于当前图像1110的图像1114的POC并包括由块1120参考的块1122。
[0142] 图11b示出产生B图像的运动矢量预测候选的另一方法。图11b中的方法与图11a中的方法的区别在于:时间上晚于当前图像1110的图像1114包括被布置在与当前块1100并列的位置的块。
[0143] 参照图11b,可通过使用被布置在与图像1114的当前块1100并列的位置的块1130的运动矢量产生当前图像1110的当前块1100的运动矢量预测候选,其中,图像1114时间上晚于当前图像1110。例如,当相对于图像1112的搜索的块1132产生被布置在与当前块1100并列的位置的块1130的运动矢量mv_colB时,其中,图像1112时间上早于当前图像1110,可通过以下方式确定当前块1100的运动矢量预测候选mv_L0B和mv_L1B:
[0144] mv_L0B=(t3/t4)*mv_colB
[0145] mv_L1B=mv_L0B-mv_colB
[0146] 在此,mv_L0B表示相对于图像1112的当前块1110的运动矢量预测候选,其中,图像1112时间上早于当前图像1110,mv_L1B表示相对于图像1114的当前块1100的运动矢量预测候选,其中,图像1114时间上晚于当前图像1110。
[0147] 相似于图11a,在图11b中,作为B图像的当前图像1110被插入在时间上早于当前图像1110的图像1112和时间上晚于当前图像1110的图像1114之间。因此,当相对于时间上早于当前图像1110的图像1112产生被布置在与当前块1100并列的位置的块1130的运动矢量mv_colB时,可基于mv_L0B准确地预测当前块1100的运动矢量。换句话说,与mv_colB是具有与图11b中示出的方向相反的方向的运动矢量的情况(即,相对于在时间上晚于当前图像1110的图像1114之后的另一图像产生mv_colB的情况)比较,当mv_colB是具有图11b中示出的方向的运动矢量时,可更准确地预测当前块1100的运动矢量。
[0148] 因此,当从当前块1110到被布置在与当前块1100并列的位置的块1130的方向是List1时,块1130的运动矢量mv_colB需要在List0方向上,因此当前图像1110可如图11b所示被插入在图像1112和图像1114之间,从而可基于mv_colB准确地预测当前块1100的运动矢量。
[0149] 此外,由当前块参考的图像可以是在图11b中示出的除相邻图像1112和1114以外的图像,因此基于POC产生当前块的运动矢量预测候选。
[0150] 例如,当当前图像的POC是CurrPOC并且由当前图像参考的图像的POC是CurrRefPOC时,可通过以下方式产生当前块的运动矢量预测候选:
[0151] Scale=(CurrPOC-CurrRefPOC)/(ColPOC-ColRefPOC)
[0152] mv_temporal=Scale*mv_colB
[0153] 在此,ColPOC是时间上晚于当前图像1110的图像1114的POC并包括块1130,ColRefPOC是时间上早于当前图像1110的图像1112的POC并包括由块1130参考的块1132。
[0154] 图11c示出预测图像(P图像)的运动矢量预测候选。
[0155] 参照图11c,可通过使用被布置在与图像1112的当前块1100并列的位置的块1140的运动矢量确定当前图像1110的当前块1100的运动矢量预测候选,其中,图像1112时间上早于当前图像1110。例如,当相对于图像1116的搜索的块1142产生被布置在与当前块1100并列的位置的块1140的运动矢量mv_colC时,其中,图像1116时间上早于当前图像1110,可通过以下方式确定当前块1100的运动矢量预测候选mv_L0C:
[0156] mv_L0C=(t6/t5)*mv_colC
[0157] 如与图11a和图11b相关的描述,可基于POC确定mv_L0C。可基于以下POC确定mv_L0C:当前图像1110的POC、由当前图像1110参考的图像的POC、时间上早于当前图像1110的图像1112的POC和时间上早于当前图像1110的图像1116的POC。
[0158] 由于当前图像1110是P图像,与图11a和图11b不同,确定仅一个当前块1100的运动矢量预测候选。
[0159] 另外,为了使用基于在图11a和图11b中的时间上的距离产生的运动矢量预测候选来预测当前块的运动矢量,可还对这样的信息进行编码,其中,所述信息表示被布置在与当前块1100并列的位置的块1120和块1130中被用于产生运动矢量预测的块。这样的信息可作为像条参数或序列参数被包括在像条头或序列头中。
[0160] 总的来说,根据图10a、图10b和图11a到图11c的运动矢量预测候选的组C可由下式表示:
[0161] C={median(mv_a0,mv_b0,mv_c),mv_a0,mv_a1…,mv_aN,mv_b0,mv_b1,…,mv_bN,mv_c,mv_d,mv_e,mv_temporal}
[0162] 此外,组C可以是运动矢量预测候选的数量被减少的组:
[0163] C={median(mv_a’,mv_b’,mv_c’),mv_a’,mv_b’,mv_c’,mv_temporal}[0164] 在此,mv_x表示块x的运动矢量,median()表示中值,并且mv_temporal表示通过使用与图11到图11c相关描述的时间上的距离产生的运动矢量预测候选。mv_a’表示mv_a0,mv_a1…,mv_aN中的第一个有效的运动矢量。例如,当使用帧内预测对块a0进行编码并参考当前块和其它图像时,块a0的运动矢量mv_a0不是有效的运动矢量,因此mv_a’=mv_a1。此外,当块a1的运动矢量不是不是有效的运动矢量时,mv_a’=mv_a2。相似地,mv_b’是mv_b0,mv_b1,…,mv_bN中的第一个有效的运动矢量,mv_c’是mv_c,mc_d和mv_e中的第一个有效的运动矢量。
[0165] 与当前块相邻的块的运动矢量中的参考当前块以外的图像的块的运动矢量不能有效地预测当前块的运动矢量。因此,可从运动矢量预测候选的组C排除参考当前块以外的图像的块的运动矢量。
[0166] 当用于对运动矢量进行编码的设备900根据显式模式对运动矢量进行编码时,设备900还对这样的信息进行编码,其中,所述信息表示组C中被用于预测当前块的运动矢量的运动矢量预测候选。换句话说,当用于对运动矢量进行编码的设备900对运动矢量进行编码时,设备900将二进制数分配给组C的相应的元素(即,运动矢量预测候选),并对与被用于预测当前块的运动矢量的运动矢量预测候选相应的二进制数进行编码。
[0167] 为了指定组C中的元素之一,分配并输出每个与运动矢量预测候选相应的二进制数。因此,随着组C中的元素的数量减少,可以以具有更少的比特的二进制数指定组C中的元素。
[0168] 因此,如果在组C中存在重叠的运动矢量预测候选,则可在从组C排除重叠的运动矢量预测候选之后分配二进制数。例如,当组C是如上所述的C={median(mv_a’,mv_b’,mv_c’),mv_a’,mv_b’,mv_c’,mv_temporal}并且mv_a’,mv_b’和mv_c’彼此相同时,可确定组C中存在两个元素为C={mv_a’,mv_temporal}并可分配二进制数。当在排除重叠的运动矢量预测候选之前可使用3比特来指定组C中的五个元素时,在排除重叠的运动矢量预测候选之后可使用1比特来指定两个元素。
[0169] 为了增加重叠的运动矢量预测候选被确定为当前块的运动矢量预测的概率,而不是排除重叠的运动矢量预测候选,可添加预定的权重。如上所述,由于mv_a’,mv_b’和mv_c’彼此相同并且仅mv_a’被包括在组C中,预定的权重被添加到mv_a’,因此可增加mv_a’被用于预测当前块的运动矢量的概率。
[0170] 此外,当存在一个运动矢量预测候选时,可能不对被用于指定运动矢量预测候选之一的二进制数进行编码。例如,当组C是C={median(mv_a0,mv_b0,mv_c),mv_a0,mv_a1…,mv_aN,mv_b0,mv_b1,…,mv_bN,mv_c,mv_d,mv_e,mv_temporal}并且对块a0到块aN、块b0到块bN、块c、块d和块e均进行帧内预测时,组C是C={mv_temporal},因此实质上包括一个元素。因此,在这种情况下,用于对运动矢量进行编码的设备900可能不对被用于指定运动矢量预测候选之一的二进制数进行编码。
[0171] 可将除上面描述的运动矢量预测候选以外的运动矢量用作运动矢量预测候选对于本领域的普通技术人员是明显的。
[0172] 另外,根据另一示例性实施例,候选确定器920可基于编码结果的估计减少运动矢量预测候选的数量。
[0173] 如上所述,对单独的信息进行编码并将其包括在比特流中以在多个运动矢量预测候选中指定用于预测当前块的运动矢量的运动矢量预测候选。因此,随着组C中的元素的数量减少,可以以低比特对这样的信息进行编码,其中,所述信息是指在组C中指定用于预测当前块运动矢量的运动矢量预测候选所需的信息。在这里,候选确定器920可通过使用预定的评价函数选择性地从所有运动矢量预测候选中排除预定的运动矢量预测候选,其中,将参照图12详细描述所述预定的评价函数。
[0174] 图12示出根据示例性实施例的减少运动矢量预测候选的方法。
[0175] 在图12中,假设在组C中存在三个元素MVP1、MVP2和MVP3并且当前块的运动矢量是MV。由于与当前块的运动矢量最相似的运动矢量预测候选被用于预测当前块的运动矢量,与MV最相似的MVP3被用于预测当前块的运动矢量。
[0176] 因此,当前块的运动矢量和用于预测当前块的运动矢量的运动矢量预测候选之间的矢量差(以下,称为“原始运动矢量差”)是(2,0)。由于MV是(5,0)并且MVP3是(3,0),故原始运动矢量差是(2,0)。
[0177] 候选确定器920通过使用原始运动矢量差和预定的评价函数从所有运动矢量预测候选中选择性地排除至少一个运动矢量预测候选。更具体来讲,原始运动矢量差和预定的运动矢量预测候选被用于产生虚拟运动矢量,并且相对于所有候选产生已产生的虚拟运动矢量和所有运动矢量预测候选之间的差(以下,称为“虚拟运动矢量差”)。原始运动矢量差和预定的运动矢量预测候选相加以产生虚拟运动矢量,并计算已产生的虚拟运动矢量和所有运动矢量预测候选之间的虚拟运动矢量差。通过对原始运动矢量差和相对于所有候选计算的虚拟运动矢量差进行比较,可从所有运动矢量预测候选选择性地排除预定的运动矢量预测候选。
[0178] 参照图12,候选确定器920确定是否从全部的候选中排除运动矢量预测候选之一的MVP1。
[0179] 当通过从基于MVP1的虚拟运动矢量减去运动矢量预测候选而产生的虚拟运动矢量差小于原始运动矢量差时,MVP1可能不被用于预测当前块的运动矢量。例如,当通过从通过将MVP1和原始运动矢量差相加产生的虚拟运动矢量减去MVP3产生的虚拟运动矢量差小于原始运动矢量差时,相比于MVP1,MVP3更准确地预测虚拟运动矢量,并且在这种情况下,MVP1不能是运动矢量预测。
[0180] 在图12中,当MVP1和原始运动矢量差相加时,基于MVP1的虚拟运动矢量是(2,0)。因此,当基于MVP1产生虚拟运动矢量时,MVP2的虚拟运动矢量差是(2,0)并且MVP3的虚拟运动矢量差是(-1,0)。在此,由于MVP3的虚拟运动矢量差(-1,0)小于原始运动矢量差(2,0),MVP1不可以是当前块的运动矢量预测。因此,可从所有运动矢量预测候选排除MVP1。换句话说,可从组C排除与MVP1相应的运动矢量预测候选。
[0181] 在此,针对MVP1本身计算的虚拟运动矢量差是(2,0)并总是与原始运动矢量差相同,从而虚拟运动矢量差不会小于原始运动矢量差。因此,当针对所有运动矢量预测候选计算虚拟运动矢量差时,可不计算针对MVP1本身的虚拟运动矢量差。
[0182] 当完成确定是否排除MVP1时,候选确定器920确定是否从所有运动矢量预测候选中排除MVP2。当MVP2和原始运动矢量差相加时,基于MVP2的虚拟运动矢量是(2,0)。因此,针对MVP1的虚拟运动矢量差是(2,0)并且针对MVP3的虚拟运动矢量差是(-1,0)。由于针对MVP3的虚拟运动矢量差小于原始运动矢量差,可如同MVP1从所有运动矢量预测候选排除MVP2。当确定是否排除MVP2时,可选择性地对针对MVP1的虚拟运动矢量差和原始运动矢量差进行比较。由于已确定应已经排除MVP1,可对针对MVP1以外的候选的虚拟运动矢量差和原始运动矢量差进行比较。
[0183] 另外,候选确定器920确定是否排除MVP3。基于MVP3的虚拟运动矢量与当前块的原始运动矢量相同。虽然从原始运动矢量减去另一运动矢量预测候选(即,MVP1或MVP2),但不会产生小于原始运动矢量差的虚拟运动矢量差。因此,未从运动矢量预测候选排除MVP3。另外,根据另一示例性实施例,由于未从运动矢量预测排除确定被用于预测当前块的运动矢量的MVP3,候选确定器920可跳过确定MVP3(用于预测当前块的运动矢量的运动矢量预测候选)是否被排除。
[0184] 简略地,当候选确定器920确定是否排除运动矢量预测候选之一的第二运动矢量预测候选时,第二运动矢量预测候选和原始运动矢量差相加以产生虚拟运动矢量,并且针对所有候选计算所述虚拟运动矢量和其它运动矢量预测候选之间的差以产生多个虚拟运动矢量差。当多个虚拟运动矢量差中存在小于原始运算运动矢量差的至少一个虚拟运动矢量差时,第二运动矢量预测候选不是当前块的运动矢量预测并从运动矢量预测候选排除所述第二运动矢量预测候选。
[0185] 另外,候选确定器920针对运动矢量预测候选重复执行关于排除的确定,从而可减少运动矢量预测候选(即,组C的元素)的数量。根据组C的运动矢量预测候选的排列顺序,按顺序确定是否排除。例如,当C={median(mv_a’,mv_b’,mv_c’),mv_a’,mv_b’,mv_c’,mv_temporal}时,确定是否排除median(mv_a’,mv_b’,mv_c’),并且当完成确定时,确定是否排除mv_a’。然后,确定是否排除mv_b’。根据组C的排列顺序,重复关于排除的确定直到mv_temporal。
[0186] 当重复执行确定时,如与MVP2的排除相关的描述,可省略针对在确定中已排除的候选的原始运动矢量差和虚拟运动矢量差之间的比较。
[0187] 另外,如稍后将参照图13a到图13d进行的描述,可根据预定的标准重新布置组C。当重新布置组C时,根据重新布置的顺序重复关于排除的确定。
[0188] 不仅可将与图12相关起来描述的虚拟运动矢量差和原始运动矢量差之间的比较应用到一维运动矢量,还可将其应用到二维运动矢量。换句话说,对由x坐标和y坐标定义的虚拟运动矢量差的大小和原始运动矢量差的大小进行比较,因此可选择性地从全部候选中排除预定的运动矢量预测。
[0189] 然而,用于对虚拟运动矢量差和原始运动矢量差进行比较的大小仅是一个示例,并且多种标准可被用于对虚拟运动矢量差和原始运动矢量差进行比较。当基于预定的标准产生针对虚拟运动矢量差的值和针对原始运动矢量差的值的评价函数是“A”时,可根据下面的等式1对虚拟运动矢量差和原始运动矢量差进行比较;
[0190] (等式1)
[0191] A(mvx+MVD-mvy)
[0192] 候选确定器920确定在所有候选中是否存在至少一个“mvy”,以确定是否从运动矢量预测候选排除运动矢量预测候选之一的“mvx”。在等式1中,“MVD”表示原始运动矢量差。为了确定是否排除“mvx”,通过使用预定的评价函数“A”计算“A(mvx+MVD-mvy)”和其它运动矢量预测候选,并对作为计算的结果产生的值和作为针对原始运动矢量差的值的“A(MVD)”进行比较,其中,“A(mvx+MVD-mvy)”是通过评价“mvx+MVD-mvy”获得的值,其中,“mvx+MVD-mvy”是基于“mvx”的虚拟运动矢量“mvx+MVD”和“mvy”之间的虚拟运动矢量差。重复地将所有候选中的除“mvx”以外的运动矢量预测候选替换为“mvy”,并且确定在全部候选中是否存在满足等式1的至少一个“mvy”。
[0193] 如上所述,可由x坐标和y坐标定义通过“A”评价的虚拟运动矢量差和原始运动矢量差。在这种情况下,如下面的等式2,可由x坐标评价的值和y坐标评价的值之和定义评价函数;
[0194] (等式2)
[0195] A(p,q)=f(p)+f(q)
[0196] 当由x坐标“p”和y坐标“q”定义虚拟运动矢量差或原始运动矢量差时,将每个坐标值输入到预定的函数“f”并且由通过替换获得的总和定义评价函数“A”。
[0197] 根据示例性实施例,等式1和等式2中的评价函数“A”可以是这样的评价函数,其中,所述评价函数对通过对虚拟运动矢量差进行熵编码而获得的结果和通过对原始运动矢量差进行熵编码而获得的结果进行估计。候选确定器920对通过基于评价函数“A”对虚拟运动矢量差和原始运动矢量差进行熵编码而获得的结果进行估计,并且可基于估计的结果减少运动矢量预测候选的数量。将参照下面的等式3详细描述上述过程:
[0198] (等式3)
[0199] Length=1;
[0200] Temp=(val<=0)?(-val<<1)+1:(val<<1);
[0201] While(1!=Temp){
[0202] Temp>>=1;
[0203] Length+=2;
[0204] }
[0205] f(val)=Length
[0206] 可如等式3定义函数“f”,其中,函数“f”估计通过相对于x坐标值或y坐标值进行熵编码而获得的结果。当将x坐标值或y坐标“val”输入到估计可变长编码(例如,通用可变长编码)结果的函数“f”时,根据等式3计算“Length”。
[0207] 可由下式表示等式3:
[0208]
[0209] x坐标值或y坐标可以是虚拟运动矢量差或原始运动矢量差的x坐标值或y坐标。
[0210] 根据等式3,当“val”是负数或“0”时,将“val”改变为正数并随后通过向左移位1比特来将“val”乘以2。加“1”,从而将结果存储在“Temp”中。当“val”是正数时,通过向左移位1比特将“val”乘以2,从而将结果存储在“Temp”中。随后,重复“while”循环直到“Temp”是1,并计算“Length”。
[0211] 例如,当虚拟运动矢量差或原始运动矢量差是(2,0)时,A(2,0)=f(2)+f(0)。
[0212] 以以下步骤计算f(2)。f(2)的“2”是正数,因此将其向左移位1比特,从而“Temp”被设置为4。在第一个“while”循环中,“Temp”是“4”而不是1,因此通过向右移位来将“4”乘以“1/2”,从而“Temp”被设置为“2”。由于“Length”的初始值被设置为“1”,在第一个“while”循环中的“Length”是“3”。
[0213] 在第二个“while”循环中,“Temp”是“2”而不是“1”,因此通过向右移位将“2”乘以“1/2”,从而“Temp”被设置为“1”。由于当前“Length”是3,在第二个“while”循环中的“Length”是“5”。由于“Temp”是1,所以不执行第三个“while”循环,并且f(2)是“5”。
[0214] 以以下步骤计算f(0)。由于f(0)的输入坐标值是“0”,将“0”向左移位1比特并加“1”,从而“Temp”被设置为“1”。因此,不执行“while”循环。根据“Length”的初始值f(0)是“1”。
[0215] 与等式3相关描述的预定的评价值“f”是用于对使用可变长编码进行熵编码的结果进行估计的函数。因此,候选确定器920对通过使用评价函数“A”对虚拟运动矢量差进行可变长编码而获得的结果进行估计,以确定是否从运动矢量预测候选中排除“mvx”。作为估计的结果,当存在估计到将以比原始运动矢量差更短的长度进行编码的至少一个虚拟运动矢量差时,从所有运动矢量预测候选排除“mvx”。
[0216] 然而,通过除使用可变长编码结果以外的方法来估计熵编码结果,对于本领域的普通技术人员是明显的。例如,另一评价函数“h”可被用于对虚拟运动矢量差的熵编码结果和原始运动矢量差的熵编码结果进行估计和比较。在此,“h”可以是估计上下文自适应二进制算术编码的结果的函数。
[0217] 另外,根据另一示例性实施例,为了增加基于预定的评价函数的评价结果的准确度,可还估计通过评价索引信息获得的结果。索引信息被用于从所有运动矢量预测候选中指定预定的运动矢量预测候选。将参照等式4详细描述上述过程:
[0218] (等式4)
[0219] A(mvx+MVD-mvy,mvyIdx)
[0220] 候选确定器920确定在全部候选中是否存在满足等式4的至少一个“mvy”,以确定是否从运动矢量预测候选中排除运动矢量预测候选之一的“mvx”。在等式4中,“MVD”表示原始运动矢量差,并且mvxIdx和mvyIdx表示从所有运动矢量预测候选中分别用于指定“mvx”和“mvy”的索引信息。为了确定是否排除“mvx”,通过使用预定的评价函数“A”来评价用于从所有侯选中指定“mvy”的索引信息和基于“mvx”的虚拟运动矢量“mvx+MVD”和其它运动矢量预测候选“mvy”之间的虚拟运动矢量差“mvx+MVD-mvy”。此外,通过使用预定的评价函数“A”来评价用于从全部候选中指定“mvx”的索引信息和原始运动矢量差。作为评价的结果,确定在全部候选中是否存在至少一个“mvy”。
[0221] 如上所述,可由x坐标和y坐标定义由“A”评价的虚拟运动矢量差和原始运动矢量差,并可如下面的等式5定义虚拟运动矢量差和原始运动矢量差:
[0222] (等式5)
[0223] A(mvx+MVD-mvy,mvyIdx)=f(p1)+f(q1)+g(mvyIdx)
[0224] A(MVD,mvxIdx)=f(p2)+f(q2)+g(mvxIdx)
[0225] 与等式2相比,等式2左侧的A(mvx+MVD-mvy)仅评价虚拟运动矢量差,然而等式5的A(mvx+MVD-mvy,mvyIdx)评价虚拟运动矢量差和用于从所有运动矢量预测候选指定“mvy”的信息。评价函数“A”可以是用于评价熵编码结果的函数。在此,函数“f”可以是如等式2相关描述的用于基于虚拟运动矢量差的x坐标值或y坐标值估计熵编码结果的函数,函数“g”可以是用于估计“mvxIdx”的熵编码结果的函数。当“mvx+MVD-mvy”的x坐标值和y坐标值分别是“p1”和“q1”时,可如等式5计算A(mvx+MVD-mvy,mvyIdx)。
[0226] 等式2的右侧的A(MVD)仅评价原始运动矢量差,然而等式5的A(MVD,mvxIdx)评价原始运动矢量差和用于从所有运动矢量预测候选指定“mvx”的信息。函数“f”可以是如等式2相关描述的用于基于原始运动矢量差的x坐标值或y坐标值估计熵编码结果的函数,函数“g”可以是用于估计“mvxIdx”的熵编码结果的函数。当“MVD”的x坐标值和y坐标值分别是“p2”和“q2”时,可如等式5计算A(MVD,mvxIdx)。
[0227] 可在根据等式2的关于排除的确定中补充使用根据等式4和等式5的关于排除的确定。换句话说,首先基于等式2确定是否从所有运动矢量预测候选中排除“mvx”,并可根据等式4和等式5再一次确定排除。例如,作为根据等式2的确定的结果,当“A(mvx+MVD-mvy)”与“A(MVD)”相等或大于“A(MVD)”,“A(mvx+MVD-mvy)”不小于“A(MVD)”时,根据等式2没有从所有运动矢量预测候选中排除“mvx”。然而,虽然“A(mvx+MVD-mvy)”和“A(MVD)”彼此相等,但可基于根据等式4和等式5的确定的结果从所有运动矢量预测候选排除“mvx”。
[0228] 当候选确定器基于等式1到等式5确定关于针对运动矢量预测候选的排除时,根据组C的排列顺序重复执行关于针对运动矢量预测候选的排除的确定。根据另一示例性实施例,候选确定器920根据预定的标准重新排列组C,并根据重新排列的顺序重复关于排除的确定。参照图13a到图13d详细描述上述过程。
[0229] 图13a到图13d示出根据示例性实施例的包括在具有预定的尺寸的编码单元中的当前块的位置。
[0230] 当所有运动矢量预测候选是C={median(mv_a’,mv_b’,mv_c’),mv_a’,mv_b’,mv_c’,mv_temporal}时,将每个二进制数分配给组C的运动矢量预测候选,因此如上所述,可从运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测候选。
[0231] 在此,根据包括在组C中的运动矢量预测候选的排列顺序分配二进制数,并且上述二进制数可以是基于霍夫曼编码(Huffman code)的可变长编码。因此,可将少量的比特分配到布置在组C的排列顺序的前部的运动矢量预测候选。例如,可将“0”比特分配给median(mv_a’,mv_b’,mv_c’),可将“00”比特分配给mv_a’,可将“01”比特分配给mv_b’。因此,候选确定器920根据预定的顺序排列运动矢量预测候选,从而在从运动矢量预测候选预测当前块的运动矢量的预测中将被使用的具有高可能性的运动矢量预测被定位在组C的前部。
[0232] 可根据编码单元中的当前块的位置来确定在当前块的运动矢量预测中将被使用的具有高可能性的运动矢量预测。可通过使用当前块的分块索引表达当前块的位置。根据预定的顺序,将分块索引分配到编码单元中的块。因此,可根据当前块分块索引确定在当前块的运动矢量预测中将被使用的具有高可能性的运动矢量预测。如图13a,当当前块被定位在编码单元的下侧时,当前块的运动矢量可以相同或相似于与编码单元的左侧相邻的块的运动矢量或与编码单元的左下侧相邻的块的运动矢量。因此,可能需要改变排列顺序,从而相应于与编码单元的左侧相邻的块的运动矢量或与编码单元的左下侧相邻的块的运动矢量的运动矢量预测候选被定位在组C的前部。由于来自组C的运动矢量预测候选的mv_b’是相应于与左侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_b’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_b’,mv_a’,median(mv_a’,mv_b’,mv_c’),mv_c’,mv_temporal}。
[0233] 相似地,当当前块被定位在如图13b中的编码单元的左侧时,运动矢量预测候选可被用于预测当前块的运动矢量,其中,所述运动矢量预测候选相应于与编码单元的左侧相邻的块的运动矢量和与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_b’是相应于与左侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_b’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_b’,mv_a’,median(mv_a’,mv_b’,mv_c’),mv_c’,mv_temporal}。
[0234] 如在图13c中,当当前块被定位在编码单元的上侧时,运动矢量预测候选可被用作当前块的运动矢量预测,其中,所述运动矢量预测候选相应于与编码单元的左侧相邻的块的运动矢量和与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_a’是相应于与上侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_a’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_a’,median(mv_a’,mv_b’,mv_c’),mv_b’,mv_c’,mv_temporal}。
[0235] 如在图13d中,当当前块被定位在编码单元的右侧时,运动矢量预测候选可被用于预测当前块的运动矢量,其中,所述运动矢量预测候选相应于与编码单元的上侧相邻的块的运动矢量。由于来自组C中的运动矢量预测候选的mv_c’是相应于与上侧相邻的块的运动矢量的运动矢量预测候选,改变组C中的mv_c’和median(mv_a’,mv_b’,mv_c’)的顺序,因此可将组C重新排列为C={mv_c’,mv_a’,mv_b’,median(mv_a’,mv_b’,mv_c’),mv_temporal}。
[0236] 作为用于重新排列运动矢量预测候选的标准的编码单元中的当前块的位置是示例。换句话说,多个标准可被用于重新排列运动矢量预测候选。用于排列具有与在组C中的前部的当前块的运动矢量相似的高可能性的运动矢量预测候选的多个标准可被用作用于重新排列运动矢量预测候选的标准。可基于与当前块之前已编码的其它块相关的预定的信息,确定具有与当前块的运动矢量相似的高可能性的运动矢量预测候选,并且可根据所述确定重新排列组C。
[0237] 另外,基于在对当前块的运动矢量进行编码之前相对于当前块已编码的或已解码的其它信息,确定具有与当前块的运动矢量相似的高可能性的运动矢量预测候选,并且可根据所述确定重新排列组C。
[0238] 另外,可通过排除重叠的运动矢量预测候选来重新排列组C。当在所有运动矢量预测候选中存在重叠的运动矢量预测候选时,首先排除重叠的运动矢量预测候选,并且可根据等式1到等式5确定是否排除运动矢量预测候选。
[0239] 重新参照图9,运动矢量编码器930对关于运动矢量的信息和关于运动矢量预测的信息进行编码。关于运动矢量的信息是当前块的原始运动矢量和原始运动矢量预测之间的原始运动矢量差。关于运动矢量预测的信息是用于指定运动矢量预测候选的信息,其中,所述运动矢量预测候选被用于在排除了至少一个运动矢量预测的运动矢量预测候选中预测当前块的运动矢量。换句话说,将用于在运动矢量预测候选中指定当前块的运动矢量预测的信息编码为关于运动矢量预测的信息,其中,在候选确定器920中没有排除所述运动矢量预测候选。
[0240] 从运动矢量估计器910接收原始运动矢量差,并且根据预定的熵编码方法对原始运动矢量差进行编码。此外,对用于从运动矢量预测候选中指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码,其中,通过在候选确定器920排除至少一个运动矢量预测候选来确定所述运动矢量预测候选。
[0241] 当候选确定器920通过根据等式1到等式5从所有运动矢量预测候选排除至少一个运动矢量预测候选来确定运动矢量预测候选时,对用于从确定的运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码。运动矢量编码器930可对在候选确定器920中没有排除的每个运动矢量预测候选进行索引,并且将索引信息熵编码为关于运动矢量预测的信息。索引表示将预定的二进制数分配给每个运动矢量预测候选,并且关于运动矢量预测的信息表示分配给用于预测当前块的运动矢量的运动矢量预测候选的二进制数。当在候选确定器920选择性地排除至少一个运动矢量预测候选之后保留一个运动矢量预测候选时,因为无疑问地确定将用于预测当前块的运动矢量的运动矢量预测候选,在运动矢量编码器930中可不单独地对关于运动矢量预测的信息进行编码。
[0242] 此外,如图13a到图13d相关的描述,候选确定器920可对每个运动矢量预测候选进行索引,并可对索引信息进行熵编码,其中,通过根据预定的标准重新排列所有运动矢量预测候选,并通过从所述重新排列的运动矢量预测候选中选择性地排除至少一个运动矢量预测来产生所述运动矢量预测候选。
[0243] 作为由候选确定器920执行重新排列的结果,可将具有最小比特数的二进制数分配给具有将被用于预测当前块的运动矢量的高可能性的运动矢量预测候选,因此可以以高压缩率对关于运动矢量预测的信息进行编码。
[0244] 图14是根据示例性实施例的用于对运动矢量进行解码的设备1400的框图。
[0245] 图14的用于对运动矢量进行解码的设备1400被包括在图2的用于对图像进行解码的设备200或图5的图像解码器500中。参照图14,用于对运动矢量进行解码的设备1400包括:运动矢量解码器1410、候选确定器1420和运动矢量恢复单元1430。
[0246] 当根据上面描述的显式模式和隐式模式中的显式模式对当前块的运动矢量进行编码时,用于对运动矢量进行解码的设备1400对当前块的运动矢量进行解码。
[0247] 运动矢量解码器1410接收针对当前块的运动矢量的比特流并对接收的比特流进行解码。对被包括在比特流中的关于运动矢量的信息进行解码。对当前块的原始运动矢量差进行解码。可根据预定的熵解码方法对原始运动矢量差进行解码。原始运动矢量差是当前块的运动矢量和被用于预测当前块的运动矢量的运动矢量预测候选之间的矢量差。在根据示例性实施例的对运动矢量进行解码的方法中,根据等式1到等式5从所有运动矢量预测候选中排除至少一个运动矢量预测候选,并确定运动矢量预测候选。没有固定运动矢量预测候选,并且按照块单元对所述运动矢量预测候选进行解码,从而可连续改变运动矢量预测候选。因此,虽然关于运动矢量预测候选的信息相同,但如果没有确定运动矢量预测候选,则不能准确地恢复用于预测当前块的运动矢量的运动矢量预测候选。
[0248] 因此,候选确定器1420在确定用于预测当前块的运动矢量的运动矢量预测候选之前确定运动矢量预测候选。根据等式1到等式5从所有运动矢量候选中选择性地排除至少一个运动矢量预测候选,并确定运动矢量预测候选。基于预定的评价函数排除运动矢量预测候选,其中,所述运动矢量预测候选在基于包括在与当前块相邻的先前编码的区域中的块的运动矢量确定的所有候选中未被用于预测当前块的运动矢量。
[0249] 基于所有运动矢量预测候选中的预定的运动矢量和关于在运动矢量解码器中解码的运动矢量预测的信息产生虚拟运动矢量,并针对所有候选计算作为产生的虚拟运动矢量和其它运动矢量预测候选之间的差的虚拟运动矢量差。对计算的虚拟运动矢量差和关于在运动矢量解码器1410中解码的运动矢量的信息(即,关于原始运动矢量差的信息)进行比较,并选择性地排除预定的运动矢量预测候选。对通过对虚拟运动矢量差进行熵编码而获得的结果和通过对原始运动矢量差进行熵编码而获得结果进行比较,从而可确定是否排除预定的运动矢量预测候选。另外,为了增加熵编码结果的估计准确度,还估计通过对索引信息进行熵编码而获得的结果并将所述的结果用在关于排除的确定中。与等式1到等式5相关地描述排除运动矢量预测候选的方法。
[0250] 此外,根据另一示例性实施例,候选确定器1420根据预定的标准重新布置所有运动矢量预测候选,针对所有重新排列的运动矢量预测候选根据等式1到等式5执行关于排除的确定,并可选择性地排除至少一个运动矢量预测候选。可从所有重新排列的运动矢量预测候选排除重叠的运动矢量预测候选,并可根据等式1到等式5重复执行关于排除的确定。
[0251] 当在候选确定器1420从所有运动矢量预测候选排除至少一个运动矢量预测候选之后来自所有运动矢量预测候选的多个运动矢量预测候选保留下来时,运动矢量解码器1410对关于运动矢量预测的信息进行解码。根据预定的熵解码方法对关于运动矢量预测的信息进行解码。关于运动矢量预测的信息是用于指定运动矢量预测候选的信息,其中,所述运动矢量预测候选被用于在排除了至少一个运动矢量预测候选的运动矢量预测候选中预测当前块的运动矢量。对用于从候选确定器1420未排除的运动矢量预测候选中指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行解码。
[0252] 当在候选确定器1420从所有运动矢量预测候选排除至少一个运动矢量预测候选之后一个运动矢量预测候选保留下来时,保留的运动矢量预测候选被用于预测当前块的运动矢量,因此运动矢量解码器1410可不对关于运动矢量预测候选的信息进行单独解码。
[0253] 运动矢量恢复单元1430基于关于在运动矢量解码器1410中解码的运动矢量的信息恢复当前块的运动矢量。在运动矢量解码器1410中解码的原始运动矢量差和用于预测当前块的运动矢量的运动矢量预测候选相加,以恢复当前块的运动矢量。从在候选确定器1420中确定的运动矢量预测候选确定将被用于预测当前块的运动矢量的运动矢量预测候选,并且将确定的运动矢量预测候选与原始运动矢量差相加。当多个运动矢量预测候选而不是一个运动矢量预测候选保留下来时,作为候选确定器1420中的排除的结果,可基于关于在运动矢量解码器1410中解码的运动矢量预测的信息确定用于预测当前块的运动矢量的运动矢量预测候选。
[0254] 由于由候选确定器1420确定运动矢量预测候选,即使关于运动矢量预测的解码的信息相同,用于预测当前块的运动矢量的运动矢量预测候选也可以是在不同的位置的相邻块的运动矢量。
[0255] 图15是示出根据示例性实施例的对运动矢量进行编码的方法的流程图。
[0256] 参照图15,在操作1510,用于对运动矢量进行编码的设备估计当前块的运动矢量,并确定用于从所有运动矢量预测候选中预测当前块的运动矢量的运动矢量预测候选。在多个参考图像中搜索与当前块相同或相似的块,并且作为搜索的结果,估计运动矢量(即,当前块和参考块之间的相对位置差)。
[0257] 随后,基于包括在与当前块相邻的先前编码的区域中的块的运动矢量来预测当前块的运动矢量。换句话说,将包括在与当前块相邻的先前编码的区域中的块的运动矢量设置为运动矢量预测候选,并确定运动矢量预测候选中与估计的当前块的运动矢量最相似的运动矢量预测候选。产生当前块的运动矢量和确定的运动矢量预测候选之间的矢量差(即,原始运动矢量差)。
[0258] 在操作1520,用于对图像进行编码的设备选择性地从所有运动矢量预测候选中排除至少一个运动矢量预测候选。从所有运动矢量预测候选排除未被用于预测当前块的运动矢量的运动矢量预测候选。
[0259] 用于对图像进行编码的设备通过使用所有运动矢量预测候选中的预定的运动矢量预测候选和在操作1510中产生的原始运动矢量差来产生虚拟运动矢量。将产生的虚拟运动矢量和其它运动矢量预测候选用于产生虚拟运动矢量差。产生针对所有运动矢量预测候选中的每个的虚拟运动矢量差,并对产生的虚拟运动矢量差和原始运动矢量差进行比较,从而可选择性地排除预定的运动矢量预测候选。
[0260] 针对所有候选重复执行操作1520中的产生虚拟运动矢量并选择性地排除运动矢量预测候选的处理,因此可从所有候选中排除至少一个运动矢量预测候选。当重复执行排除处理时,计算针对运动矢量预测候选而不是已排除的运动矢量预测的虚拟运动矢量差,并且可对计算的虚拟运动矢量差和原始运动矢量差进行比较。
[0261] 可基于预定的评价函数对虚拟运动矢量差和原始运动矢量差进行评价和相互比较,其中,所述预定的评价函数可以是估计熵编码结果的函数。可基于函数对虚拟运动矢量差和原始运动矢量差进行相互比较,其中,所述函数估计通过对虚拟运动矢量差进行熵编码而获得的结果和通过对原始运动矢量差进行熵编码而获得的结果。此外,为了增加评价准确度,可还估计通过对索引信息进行编码而获得的结果,并将其用于关于排除的确定中。与等式1到等式5相关地描述从所有运动矢量预测候选中排除至少一个运动矢量预测候选的方法。
[0262] 此外,如与图13a到图13d相关的描述,用于对运动矢量进行编码的设备可根据预定的标准重新排列所有运动矢量预测候选,并从所有重新布置的运动矢量预测候选选择性地排除至少一个运动矢量预测候选。另外,用于对运动矢量进行编码的设备可从所有重新排列的运动矢量预测候选排除重叠的运动矢量预测候选,并根据等式1到等式5重复执行关于排除的确定。
[0263] 在操作1530,用于对运动矢量进行编码的设备对关于运动矢量的信息和关于运动矢量预测的信息进行编码。对关于原始运动矢量差的信息和用于指定用于预测当前块的运动矢量的运动矢量预测候选的信息进行编码。关于运动矢量预测的信息可以是用于从在操作1520和操作1530没有排除的运动矢量预测候选指定运动矢量预测候选的信息,其中,所述运动矢量预测候选用于预测当前块的运动矢量。
[0264] 当在从所有运动矢量预测候选排除至少一个运动矢量预测候选之后一个运动矢量预测候选保留下来时,可不对关于运动矢量预测的信息进行编码。
[0265] 图16是示出根据示例性实施例的对运动矢量进行解码的方法的流程图。
[0266] 参照图16,在操作1610,用于对运动矢量进行解码的设备对来自接收的比特流的关于当前块的运动矢量的信息进行解码。关于运动矢量的信息可以是当前块的运动矢量和当前块的运动矢量预测之间的原始运动矢量差。
[0267] 在操作1620,用于对运动矢量进行解码的设备基于在操作1610中解码的关于运动矢量的信息和运动矢量预测候选中的一个运动矢量预测候选产生虚拟运动矢量。
[0268] 当产生虚拟运动矢量时,用于对运动矢量进行解码的设备从所有运动矢量预测候选排除至少一个运动矢量预测候选。基于包括在与当前块相邻的先前解码的区域中的块的运动矢量确定所有运动矢量预测候选。用于对运动矢量进行解码的设备可从所有运动矢量预测候选选择性地排除至少一个运动矢量预测候选。基于预定的评价函数评价虚拟运动矢量差和在操作1610中解码的原始运动矢量差,以选择性地排除预定的运动矢量预测候选。从所有候选中排除运动矢量预测候选的方法与操作1530相同,并且上面参照等式1到等式5描述了所述方法。
[0269] 针对所有候选重复执行在操作1620产生虚拟运动矢量并选择性地排除运动矢量预测候选的处理,因此可从所有候选中排除至少一个运动矢量预测候选。
[0270] 此外,如与图13a到图13d相关的描述,用于对运动矢量进行解码的设备可根据预定的标准重新排列所有运动矢量预测候选,并从所有重新排列的运动矢量预测候选中选择性地排除至少一个运动矢量预测候选。另外,用于对运动矢量进行解码的设备可从所有重新排列的运动矢量预测候选中排除重叠的运动矢量预测候选,并根据等式1到等式5重复执行关于排除的确定。
[0271] 当作为排除的结果多个运动矢量预测候选保留下来时,对关于运动矢量预测的信息进行解码,并且当一个运动矢量预测候选保留下来时,不对关于运动矢量预测的信息进行解码。
[0272] 在操作1630,用于对运动矢量进行解码的设备从在操作1620未排除的运动矢量预测候选确定用于预测当前块的运动矢量的运动矢量预测。
[0273] 可基于关于当前块的运动矢量预测的信息确定运动矢量预测候选中的用于预测当前块的运动矢量的运动矢量预测候选。当作为在操作1620中的排除的结果,一个运动矢量预测候选保留下来时,将一个保留的运动矢量预测候选确定为用于预测当前块的运动矢量的运动矢量预测。
[0274] 当确定运动矢量预测候选时,通过将确定的运动矢量预测候选和在操作1610中解码的原始运动矢量差相加来恢复当前块的运动矢量。
[0275] 根据示例性实施例,当运动矢量预测候选被用于对运动矢量进行预测编码和预测解码时,可减少运动矢量预测候选的数量以对运动矢量进行预测编码和预测解码。因此,可以以最小比特来对从运动矢量预测候选指定用于预测当前块的运动矢量的运动矢量预测所需的信息进行编码,从而增加了对运动矢量进行编码/解码的压缩率,并从而可提高对图像进行编码/解码的压缩率。
[0276] 虽然上面已特别地示出并描述了示例性实施例,但是本领域的普通技术人员将理解,在不脱离由权利要求限定的本发明构思的精神和范围的情况下,可以对其形式和细节进行各种改变。
[0277] 示例性实施例可还被实施为计算机可读记录介质上的计算机可读代码。
[0278] 例如,根据示例性实施例的用于对图像进行编码的设备、用于对图像进行解码的设备、运动矢量编码器和运动矢量均可包括总线和结合到所述总线的至少一个处理器,其中,所述总线耦合到包括在图1、图2、图4、图5、图9和图14中的设备中的每个元件。另外,设备均可包括耦合到至少一个处理器的存储器以存储命令、接收的消息或产生的消息,其中,所述处理器用于通过结合到总线来执行所述命令。
[0279] 计算机可读记录介质是能够存储数据的任何数据存储装置,其中,所述数据能够在存储之后由计算机系统读取。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROMs、磁带、软盘、光学数据存储装置等。计算机可读记录介质还可分布于联网的计算机系统上,从而以分布的方式存储并执行计算机可读代码。