用于二进制算术编/解码的概率更新方法及使用该方法的熵编/解码器与流程

文档序号:11456373阅读:450来源:国知局
用于二进制算术编/解码的概率更新方法及使用该方法的熵编/解码器与流程

本公开涉及熵编码和熵解码,更具体地,涉及在基于上下文的二进制算术编码和解码中使用的概率模型更新方法和设备。



背景技术:

在h.264和mpeg-4中,视频信号分层次地分成序列、帧、片、宏块和块。块成为最小的处理单元。就编码而言,通过帧内预测或帧间预测来获得块的残留数据。此外,通过变换、量化、扫描、行程长度编码和熵编码来压缩残留数据。作为熵编码技术,存在基于上下文的自适应二进制算术编码(在下文中称为cabac)。根据cabac,使用上下文索引ctxldx来确定一个上下文模型;确定所确定的上下文模型的最小可能符号(lps)或最大可能符号(mps)的发生概率以及关于0和1之间的哪个二进制值对应于mps的信息valmps;以及基于valmps和lps的概率执行二进制算术编码。



技术实现要素:

本公开要解决的技术问题是:通过改进在基于上下文的二进制算术编码/解码处理期间执行的概率更新过程,来提高图像压缩效率。

技术问题

根据本公开实施方式,基于二进制位的自相关值或二进制位的熵值来确定缩放因子,并且通过使用确定的缩放因子来更新在二进制算术编码和解码中使用的概率。

本发明的有益效果

根据本公开实施方式,可通过最小化二进制位值和二进制位预测概率之间的误差值来减少由算术编码引起的位发生量(bitoccurrenceamount)。

附图说明

图1是根据本公开实施方式的视频编码设备的框图;

图2是根据本公开实施方式的视频解码设备的框图;

图3是根据本公开实施方式用于描述编码单元的概念的图;

图4是根据本公开实施方式基于编码单元的图像编码器的框图;

图5是根据本公开实施方式基于编码单元的图像编码器的框图;

图6是示出根据本公开实施方式基于深度的较深层编码单元和分区的图;

图7是根据本公开实施方式用于描述编码单元和变换单元之间的关系的图;

图8示出根据本公开实施方式的根据深度的多条编码信息;

图9是根据本公开实施方式的根据深度的较深层编码单元的图;

图10、图11和图12是根据本公开实施方式描述编码单元、预测单元和频率变换单元之间关系的图;

图13是根据表格1的编码模式信息描述编码单元、预测单元和变换单元之间关系的图;

图14是根据本公开实施方式的熵编码设备的框图;

图15a和图15b示出在基于上下文的自适应二进制算术编码(cabac)中使用的概率更新过程;

图16是根据本公开实施方式的概率更新过程的流程图;

图17a和图17b是用于说明自相关值的参考图;

图18是根据本公开实施方式用于二进制算术编码的概率更新方法的流程图;

图19是根据本公开的另一实施方式在cabac中使用的概率更新方法的流程图;

图20a和图20b示出基于cabac执行二进制算术编码的过程;

图21是根据缩放因子的数量基于自相关值rk确定的缩放因子α的变化的图;

图22是根据缩放因子的数量的均方误差(mse)的变化的图;

图23是根据本公开实施方式的熵解码设备的框图;

图24是根据本公开实施方式用于二进制算术解码的概率更新方法的流程图;

图25是根据本公开的另一实施方式用于二进制算术解码的概率更新方法的流程图。

具体实施方式

根据本公开实施方式,用于二进制算术解码的概率更新方法包括:接收要进行二进制算术解码的预定数量的二进制位(bin);通过使用接收到的预定数量的二进制位的值来获得每个二进制位的自相关值;基于所述自相关值确定用于更新二进制值的概率的至少一个缩放因子;通过使用所确定的至少一个缩放因子来更新在基于上下文的自适应二进制算术解码中使用的概率;以及通过使用更新的概率对当前二进制位进行算术解码。

根据本公开实施方式,用于二进制算术编码的概率更新方法包括:接收要进行二进制算术编码的预定数量的二进制位;通过使用接收到的预定数量的二进制位的值来获得每个二进制位的自相关值;基于所述自相关值确定用于更新二进制值的概率的至少一个缩放因子;通过使用所确定的至少一个缩放因子来更新在基于上下文的自适应二进制算术编码中使用的概率;以及通过使用更新的概率对当前二进制位进行算术编码。

根据本公开实施方式,用于二进制算术解码的概率更新方法包括:接收要进行二进制算术解码的预定数量的二进制位;通过使用具有不同缩放因子的多个概率模型来获得指示二进制位的平均位值的熵值;确定用于在多个概率模型中获得最小熵值的概率模型的缩放因子;以及对二进制位执行基于上下文的自适应二进制算术解码,其中所述自适应二进制算术解码包括利用所确定的缩放因子执行概率更新过程。

根据本公开实施方式,用于二进制算术编码的概率更新方法包括:接收要进行二进制算术编码的预定数量的二进制位;通过使用具有不同缩放因子的多个概率模型来获得指示二进制位的平均位值的熵值;确定用于在多个概率模型中获得最小熵值的概率模型的缩放因子;以及对二进制位执行基于上下文的自适应二进制算术编码,其中所述自适应二进制算术编码包括使用所确定的缩放因子执行概率更新过程。

根据本公开实施方式,熵解码设备包括逆二值化器、上下文建模器和常规解码器,其中,逆二值化器配置成将预定语法元素的值映射到二进制值的二进制位;上下文建模器配置成:接收要进行二进制算术解码的预定数量的二进制位,通过使用接收到的预定数量的二进制位的值来获得每个二进制位的自相关值,基于自相关值确定用于更新二进制值的概率的至少一个缩放因子,并通过使用确定的至少一个缩放因子更新在基于上下文的自适应二进制算术解码中使用的概率;以及常规解码器配置成通过使用更新的概率对当前二进制位进行算术解码。

根据本公开实施方式,熵编码设备包括二值化器、上下文建模器和常规编码器,其中,二值化器配置成将预定语法元素的值映射到二进制值的二进制位;上下文建模器配置成:接收要进行二进制算术编码的预定数量的二进制位,通过使用接收到的预定数量的二进制位的值来获得每个二进制位的自相关值,基于自相关值确定用于更新二进制值的概率的至少一个缩放因子,并通过使用确定的至少一个缩放因子来更新在基于上下文的自适应二进制算术编码中使用的概率;以及常规编码器配置成通过使用更新的概率对当前二进制位进行算术编码。

根据本公开实施方式,熵解码设备包括逆二值化器、上下文建模器和常规解码器,其中,逆二值化器配置成将二进制值的二进制位映射到预定语法元素的值;上下文建模器配置成:接收要进行二进制算术解码的预定数量的二进制位,通过使用具有不同缩放因子的多个概率模型来获得指示二进制位的平均位值的熵值,确定用于在多个概率模型中获得最小熵值的概率模型的缩放因子,并使用所确定的缩放因子执行概率更新过程;以及常规解码器配置成通过使用更新的概率对当前二进制位进行算术解码。

本发明的详细描述

将参照附图对本公开的优选示例进行详细描述。

图1是根据本公开实施方式的视频编码设备的框图。

根据实施方式的视频编码设备100包括最大编码单元(lcu)分割器110、编码单元确定器120和输出器130。

lcu分割器110可基于lcu分割当前画面,其中lcu是图像当前画面所具有的最大尺寸的编码单元。如果当前画面大于lcu,则当前画面的图像数据可被分割成至少一个lcu。根据实施方式的lcu可以是具有32×32、64×64、128×128、256×256等尺寸的数据单元,其中数据单元的形状是具有宽度和长度均为2的倍数并大于8的正方形。图像数据可根据至少一个lcu输出至编码单元确定器120。

根据实施方式的编码单元可由最大尺寸和深度来表征。深度表示编码单元在空间上从最大编码单元开始被分割的次数,且随着深度加深,根据深度的较深层编码单元可以从最大编码单元被分割到最小编码单元。最大编码单元的深度是最上层深度,最小编码单元的深度是最下层深度。由于与每个深度对应的编码单元的尺寸随着最大编码单元的深度加深而减小,因而与较上层深度对应的编码单元可包括与更下层深度对应的多个编码单元。

如上所述,根据编码单元的最大尺寸,将当前画面的图像数据分割成最大编码单元,且最大编码单元中的每一个可包括根据深度分割的较深层编码单元。由于根据实施方式的最大编码单元根据深度分割,因而最大编码单元中所包括的空间域的图像数据可根据深度被分层地分类。

可预先确定编码单元的、限制最大编码单元的高度和宽度被分层分割的总次数的最大深度和最大尺寸。

编码单元确定器120对通过根据深度分割最大编码单元的区域而获得的至少一个分割区域进行编码,并且根据所述至少一个分割区域确定输出最终编码图像数据的深度。换句话说,通过对根据当前画面的最大编码单元、基于深度的较深层编码单元中的图像数据进行编码、以及选择具有最小编码误差的深度,编码单元确定器120确定编码深度。将确定的编码深度和每个lcu的图像数据输出至输出器130。

基于与等于或低于最大深度的至少一个深度对应的较深层编码单元对最大编码单元中的图像数据进行编码,并且对基于较深层编码单元中的每个编码图像数据的结果进行比较。可在对比较深层编码单元的编码误差之后选择具有最小编码误差的深度。可为每个最大编码单元选择至少一个编码深度。

随着编码单元根据深度被分层分割以及随着编码单元的数量增加,最大编码单元的尺寸被分割。此外,即使各编码单元对应于一个最大编码单元中的同一深度,依然通过分别测量每个编码单元的图像数据的编码误差来确定是否将对应于同一深度的编码单元中每一个分割到更下层深度。因此,即使当图像数据包含在一个最大编码单元中时,图像数据仍将根据深度被分割成各区域,且在一个最大编码单元中编码误差可能根据区域而不同,因而在图像数据中编码深度可根据区域而不同。因此,可在一个最大编码单元中设置一个或多个编码深度,并且可以根据至少一个编码深度的编码单元将最大编码单元的图像数据划分开。

因此,根据实施方式的编码单元确定器120可确定在当前最大编码单元中所包括的具有树结构的编码单元。根据实施方式的“具有树结构的编码单元”包括:最大编码单元中所包括的所有较深层编码单元之中、与确定为编码深度的深度相对应的编码单元。在最大编码单元的同一区域中,可根据深度分层确定具有编码深度的编码单元;以及在不同的区域中,可独立确定具有编码深度的编码单元。同样地,可独立于另一个区域中的编码深度,确定当前区域中的编码深度。

根据实施方式的最大深度是与从最大编码单元到最小编码单元的分割次数相关的索引。根据实施方式的第一最大深度可表示从最大编码单元到最小编码单元的分割次数的总数。根据实施方式的第二最大深度可表示从最大编码单元到最小编码单元的深度层级的总数。例如,当最大编码单元的深度是0时,最大编码单元进行一次分割的编码单元的深度可设置为1,而最大编码单元进行两次分割的编码单元的深度可设置为2。这里,如果最小编码单元是其中最大编码单元被分割四次的编码单元,则存在深度0、1、2、3和4的深度层级,因此第一最大深度可设置为4,第二最大深度可设置为5。

可根据最大编码单元执行预测编码和频率变换。还根据最大编码单元、基于深度等于或小于最大深度的较深层编码单元,执行预测编码和频率变换。

由于不论何时根据深度分割最大编码单元,较深层编码单元的数量均增大,因此对深度加深时所生成的所有较深层编码单元执行编码(包括预测编码和频率变换)。为描述的方便,现在将基于最大编码单元中的当前深度编码单元对预测编码和频率变换进行描述。

根据实施方式的视频编码设备100可选择用于图像数据编码的不同尺寸或形状的数据单元。为了对图像数据进行编码,可执行诸如预测编码、频率变换和熵编码等操作,此时对所有操作可使用相同的数据单元或者对每一个操作可使用不同的数据单元。

例如,视频编码设备100不仅可选择用于对图像数据编码的编码单元,还可选择与编码单元不同的数据单元,以对编码单元中的图像数据执行预测编码。

为了在最大编码单元中执行预测编码,可基于与编码深度相对应的编码单元(即基于不再分割为与更下层深度相对应的编码单元的编码单元)执行预测编码。在下文中,现将不再进行分割并成为预测编码的基础单元的编码单元称为“预测单元”。通过分割预测单元获得的分区可包括通过分割预测单元的高度和宽度中的至少一个获得的预测单元或数据单元。

例如,当2n×2n(其中n是正整数)的编码单元不再进行分割并且成为2n×2n的预测单元时,则分区的尺寸可为2n×2n、2n×n、n×2n或n×n。分区类型的示例可包括通过对称地分割预测单元的高度或宽度获得的对称分区,并且可选择性地包括通过对预测单元的高度或宽度进行不对称分割(诸如1:n或n:1)获得的分区、通过对预测单元进行几何分割获得的分区、具有任意形状的分区等。

预测单元的预测模式可以是帧内模式、帧间模式和跳过模式中的至少一者。例如,可对2n×2n、2n×n、n×2n或n×n的分区执行帧内模式和帧间模式。此外,可仅对2n×2n的分区执行跳过模式。对编码单元中的一个预测单元独立地执行编码,由此选择具有最小编码误差的预测模式。

根据实施方式的视频编码设备100不仅可基于用于对图像数据进行编码的编码单元来对编码单元中的图像数据执行频率变换,还可基于与编码单元不同的数据单元对图像数据执行频率变换。

为了在编码单元中执行频率变换,可基于具有等于或小于编码单元的尺寸的数据单元执行频率变换。例如,用于频率变换的数据单元可包括帧内模式的数据单元和帧间模式的数据单元。

用作频率变换的基础的数据单元称为“变换单元”。类似于编码单元,可将编码单元中的变换单元递归地分割为更小尺寸的区域,从而可以区域为单位独立确定变换单元。因此,可基于根据变换深度的、具有树结构的变换单元对编码单元中的残差数据进行分割。

还可以在根据实施方式的变换单元中设置指示通过对编码单元的高度和宽度进行分割来达到变换单元的分割次数的变换深度。例如,在2n×2n的当前编码单元中,当变换单元的尺寸为2n×2n时,变换深度可以为0,当变换单元的尺寸为n×n时,变换深度可以为1,并且当变换单元的尺寸为n/2×n/2时,变换深度可以为2。换句话说,可根据变换深度设置具有树结构的变换单元。

根据与编码深度对应的编码单元的编码信息不仅需要关于编码深度的信息,还需要关于与预测编码和变换有关的信息。因此,编码单元确定器120不仅确定具有最小编码误差的编码深度,还确定将预测单元分割成分区的分区类型、根据预测单元的预测模式以及用于频率变换的变换单元的尺寸。

下面将参考图3至图12详细描述根据实施方式、基于最大编码单元中的树结构的编码单元和确定分区的方法。

编码单元确定器120可通过使用基于拉格朗日乘数的速率失真优化来测量根据深度的较深层编码单元的编码误差。

输出单元130以比特流输出最大编码单元的图像数据和根据深度的编码模式信息,其中所述图像数据基于由编码单元确定器120确定的至少一个编码深度被编码。

可通过对图像的残差数据进行编码来获得编码图像数据。

根据深度的编码模式信息可包括编码深度信息、预测单元的分区类型信息、预测模式信息和变换单元尺寸信息。

可通过使用根据深度的分割信息来定义指定是否对更下层深度而不是当前深度的编码单元执行编码的编码深度信息。如果当前编码单元的当前深度是编码深度,则对当前编码单元进行编码,因此分割信息可被定义为不将当前编码单元分割至更下层深度。在之相反,如果当前编码单元的当前深度不是编码深度,则必须对更下层深度的编码单元执行编码,因此当前深度的分割信息可被定义为将当前编码单元分割至更下层深度的编码单元。

如果当前深度不是编码深度,则对被分割为更下层深度的编码单元的编码单元来执行编码。由于在当前深度的一个编码单元中存在更下层深度的至少一个编码单元,因此对更下层深度的每个编码单元重复执行编码,因此,可针对具有相同深度的编码单元递归地执行编码。

由于对一个最大编码单元确定具有树结构的编码单元,并且对编码深度的编码单元确定与至少一个编码模式有关的信息,因此可对一个最大编码单元确定与至少一个编码模式有关的信息。此外,由于图像数据根据深度进行分层分割,因此最大编码单元的图像数据的编码深度可根据位置而不同,因此,可针对图像数据设置与编码深度和编码模式有关的信息。

因此,根据实施方式的输出单元130可将与相应编码深度和编码模式有关的编码信息分配给最大编码单元中所包括的编码单元、预测单元和最小单元中的至少一个。

根据实施方式的最小单元是通过将构成最低深度的最小编码单元分割4次所获得的矩形数据单元。可替代地,最小单元可以是最大矩形数据单元,该数据单元可包括最大编码单元中所包括的所有的编码单元、预测单元、分区单元和变换单元中。

例如,由输出单元130输出的编码信息可被分类为根据较深层编码单元的编码信息和根据预测单元的编码信息。根据较深层编码单元的编码信息可包括预测模式信息和分区尺寸信息。根据预测单元的编码信息可包括关于帧间模式期间的估计方向的信息、关于帧间模式的参考图像索引的信息、关于运动矢量的信息、关于帧内模式的色度分量的信息和关于帧内模式的插值方法的信息。此外,与根据画面、切片或gop定义的编码单元的最大尺寸有关的信息以及与最大深度有关的信息可插入到比特流的头部中。

根据视频编码设备100的最简单的实施方式,较深层编码单元可以是通过将上一层的上层深度编码单元的高度或宽度分割2次所获得的编码单元。也就是说,在当前深度的编码单元的尺寸为2n×2n时,更下层深度编码单元的尺寸为n×n。此外,具有2n×2n的尺寸的当前编码单元最多可包括具有n×n的尺寸的四个更下层深度的编码单元。

因此,视频编码设备100可通过基于考虑当前画面的特性所确定的最大编码单元的尺寸和最大深度,对每个最大编码单元确定具有最佳形状和最佳尺寸的编码单元,来形成具有树结构的编码单元。此外,由于可通过使用各种预测模式和频率变换中的任一者来对每个最大编码单元执行编码,因此可通过考虑各种图像尺寸的编码单元的特性来确定最佳编码模式。

因此,如果以传统的宏块对具有高分辨率或大数据量的图像进行编码,则每个画面的宏块数量过度增加。因此,针对每个宏块所生成的压缩信息的条数增加,因此难以发送压缩信息并且降低数据压缩效率。然而,通过使用根据实施方式的视频编码设备,由于在考虑图像尺寸的情况下增加编码单元的最大尺寸,并且在考虑图像特性的情况下调整编码单元,因此可提高图像压缩效率。

图2是根据本公开实施方式的视频解码设备的框图。

根据实施方式的视频解码设备200包括接收器210、图像数据和编码信息提取器220以及图像数据解码器230。用于视频解码设备200的各种处理的各种术语(诸如编码单元、深度、预测单元、变换单元和关于各种编码模式的信息)的定义与参照图1和视频编码设备100描述的那些术语相同。

接收器210接收并解析编码视频的比特流。图像数据和编码信息提取器220从解析的比特流中提取每个编码单元的编码图像数据,并将提取的图像数据输出到图像数据解码器230,其中编码单元根据每个最大编码单元具有树结构。图像数据和编码信息提取器220可从关于当前画面的头部中提取关于当前画面的编码单元的最大尺寸信息。

此外,图像数据和编码信息提取器220从解析的比特流中提取与根据每个最大编码单元具有树结构的编码单元有关的编码深度和编码模式信息。提取的编码深度和编码模式信息输出到图像数据解码器230。换句话说,比特流中的图像数据被分割为最大编码单元,使得图像数据解码器230对每个最大编码单元的图像数据进行解码。

可针对一条或多条编码深度信息来设置与每个最大编码单元的编码深度和编码模式有关的信息。与每个编码深度的编码模式有关的信息可包括编码单元的分区类型信息、预测模式信息、变换单元的尺寸信息等。此外,可提取根据深度的分割信息作为与编码深度有关的信息。

与根据实施方式的视频编码设备100类似,由图像数据和编码信息提取器220提取的、与每个最大编码单元的编码深度和编码模式有关的信息是与这样的编码深度和编码模式有关的信息,其中所述编码深度和编码模式被确定为在编码结束时通过根据每个最大编码单元、对每一深度的每个编码单元重复执行编码来生成最小编码误差。因此,视频解码设备200可通过根据生成最小编码误差的编码模式对数据进行解码来恢复图像。

根据实施方式的与编码深度和编码模式有关的编码信息可分配至编码单元、预测单元和最小单元中的预定数据单元,因此图像数据和编码信息提取器220可根据预定数据单元提取与编码深度和编码模式有关的信息。当将相应的最大编码单元的编码深度和编码模式信息分配给预定数据单元中的每一个时,分配有相同编码深度和编码模式信息的预定数据单元可推断为包括在同一最大编码单元中的数据单元。

图像数据解码器230通过基于与根据每个最大编码单元的编码深度和编码模式有关的信息对每个最大编码单元中的图像数据进行解码,来恢复当前画面。也就是说,图像数据解码器230可基于包括在每个最大编码单元中的、具有树结构的编码单元中每个编码单元的读取分区类型、预测模式和变换单元,来对编码图像数据进行解码。解码操作可包括预测(包括帧内预测和运动补偿)和逆变换。

图像数据解码器230可基于与根据编码深度的编码单元的预测单元有关的分区模式信息和预测类型信息,根据每个编码单元的分区和预测模式执行帧内预测或运动补偿。

此外,图像数据解码器230可基于与每个编码深度有关的编码单元的变换单元的尺寸信息,根据每个编码单元中的每个变换单元执行逆变换,从而根据每个最大编码单元执行频率逆变换。

图像数据解码器230可通过使用根据深度的分割信息来确定当前最大编码单元的编码深度。如果分割信息指示图像数据在当前深度下不再被分割,则当前深度是编码深度。因此,图像数据解码器230可通过使用与当前深度相对应的每个编码单元的、与预测单元的分区模式、预测类型和变换单元尺寸有关的信息,对当前最大编码单元的图像数据进行解码。换句话说,可通过观察为编码单元、预测单元和最小单位之中的预定数据单元分配的编码信息集来收集包括编码信息(包括相同分割信息)的数据单元,且收集的数据单元可被视为将由图像数据解码器230以相同的编码模式进行解码的一个数据单元。

视频解码设备200可获得与当对每个最大编码单元递归地执行编码时生成最小编码误差的至少一个编码单元有关的信息,并且可使用该信息来对当前画面进行解码。也就是说,可对被确定为每个最大编码单元中被确定为最佳编码单元的具有树结构的编码单元进行解码。

因此,即使图像具有高分辨率或具有过大的数据量,也可通过使用编码单元的尺寸和编码模式有效地对图像进行解码和恢复,其中通过使用从编码器接收的最佳编码模式信息根据图像的特性适应性地确定所述编码单元的尺寸和编码模式。

现在将参照图3至图13描述根据本公开实施方式的确定具有树结构的编码单元、预测单元和变换单元的方法。

图3示出分层编码单元的概念。

编码单元的尺寸可由宽×高来表示,可以是64×64、32×32、16×16和8×8。64×64的编码单元可被分割为64×64、64×32、32×64或32×32的分区,32×32的编码单元可被分割为32×32、32×16、16×32或16×16的分区,16×16的编码单元可被分割为16×16、16×8、8×16或8×8的分区,8×8的编码单元可被分割为8×8、8×4、4×8或4×4的分区。

在视频数据310中,分辨率为1920×1080,编码单元的最大尺寸为64,最大深度为2。在视频数据320中,分辨率为1920×1080,编码单元的最大尺寸为64,最大深度为3。在视频数据330中,分辨率为1920×1080,编码单元的最大尺寸为16,最大深度为1。图3中所示的最大深度表示从最大编码单元到最小编码单元的分割总数。

如果分辨率高或数据量大,则编码单元的最大尺寸可能较大,从而不仅提高了编码效率,还精确地反映出图像的特性。因此,分辨率高于视频数据330的视频数据310和320的编码单元的最大尺寸可选择为64。

由于视频数据310的最大深度为2,因此,由于通过将最大编码单元分割两次,深度加深到两层,因此视频数据310的编码单元315可包括具有长轴尺寸为64的最大编码单元,以及具有长轴尺寸为32和16的编码单元。由于视频数据330的最大深度为1,因此,由于通过将最大编码单元分割一次,深度加深到一层,因此视频数据330的编码单元335可包括具有长轴尺寸为16的最大编码单元,以及具有长轴尺寸为8的编码单元。

由于视频数据320的最大深度为3,因此,由于通过将最大的编码单元分割三次,深度加深到3层,因此视频数据320的编码单元325可包括具有长轴尺寸为64的最大编码单元和具有长轴尺寸为32、16和8的编码单元,。随着深度加深,可提高对于细节信息的表达能力。

图4是根据本公开实施方式基于编码单元的图像编码器的框图。

根据实施方式的图像编码器400包括视频编码设备100的编码单元确定器120的操作,以对图像数据进行编码。也就是说,帧内预测器410在帧内模式下对当前帧405中的编码单元执行帧内预测,运动估计器420和运动补偿器425在帧间模式下通过使用当前帧405和参考帧495,对编码单元分别执行帧间估计和运动补偿。

从帧内预测器410、运动估计器420和运动补偿器425输出的数据通过变换器430和量化器440被输出作为量化的变换系数。量化的变换系数通过逆量化器460和逆变换器470恢复为空间域中的数据,并且,恢复的空间域中的数据在通过去块滤波器480和环路滤波器490进行后处理之后被输出为参考帧495。量化的变换系数可通过熵编码器450被输出为比特流455。

为了将视频编码器400应用于视频编码设备100中,视频编码器400的所有元件(即帧内预测器410、运动估计器420、运动补偿器425、频率变换器430、量化器440、熵编码器450、逆量化器460、频率逆变换器470、去块滤波器480和环路滤波器490)必须在考虑每个最大编码单元的最大深度时,基于具有树结构的编码单元中的每个编码单元执行操作。

具体地,帧内预测器410、运动估计器420和运动补偿器425在考虑了当前最大编码单元的最大尺寸和最大深度的情况下,确定具有树结构的编码单元之中每个编码单元的分区和预测模式,并且频率变换器430确定具有树结构的编码单元之中每个编码单元中的变换单元的尺寸。

图5是根据本公开实施方式基于编码单元的图像解码器的框图。

解析器510从比特流505中解析出作为解码目标的编码图像数据和解码所需的与编码有关的信息。编码图像数据通过熵解码器520和逆量化器530输出为逆量化的数据,逆量化的数据通过频率逆变换器540被恢复为空间区域中的图像数据。

帧内预测器550针对空间域中的图像数据在帧内模式下对编码单元执行帧内预测,运动补偿器560通过使用参考帧585在帧间模式下对编码单元进行运动补偿。

通过帧内预测器550和运动补偿器560的空间域中的图像数据可在通过去块滤波器570和环路滤波器580进行后处理之后输出为恢复帧595。此外,通过去块滤波器570和环路滤波器580进行后处理的图像数据可输出为参考帧585。

为了视频解码设备200的图像数据解码器230对图像数据进行解码,根据实施方式的图像解码器500可执行在解析器510之后执行的操作。

为了将视频解码器500应用于视频解码设备200中,视频解码器500的所有元件(即解析器510、熵解码器520、逆量化器530、频率逆变换器540、帧内预测器550、运动补偿器560、去块滤波器570和环路滤波器580)针对每个最大编码单元基于具有树结构的编码单元执行操作。

具体地,帧内预测器550和运动补偿器560确定对于具有树结构的每个编码单元的分区和预测模式,并且频率逆变换器540必须确定对于每个编码单元的变换单元的尺寸。

图6是示出根据本公开实施方式基于深度的较深层编码单元和分区的图。

根据实施方式的视频编码设备100和根据实施方式的视频解码设备200使用分层编码单元以考虑图像的特征。可根据图像的特性自适应地确定编码单元的最大高度、最大宽度和最大深度,或者可以根据用户要求进行各种设置。可根据编码单元的预定最大尺寸确定根据深度的较深层编码单元的尺寸。

在根据实施方式的编码单元的层次结构600中,编码单元的最大高度和最大宽度均为64,最大深度为4。由于深度沿着编码单元的层次结构600的纵轴加深,因此较深层编码单元的高度和宽度均被分割。另外,沿着层次结构600的横轴示出作为每个较深层编码单元的预测编码的基础的预测单元和分区。

换句话说,编码单元610是层次结构600中的最大编码单元,其中深度为0,尺寸(即宽度乘高度)为64×64。深度沿纵轴加深,从而存在具有尺寸32×32且深度1的编码单元620、尺寸16×16且深度2的编码单元630、尺寸8×8且深度3的编码单元640,以及具有尺寸4×4且深度4的编码单元650。具有尺寸4×4且深度4的编码单元650是最小编码单元。

编码单元的预测单元和分区根据每个深度沿横轴布置。换句话说,如果具有尺寸64×64和深度0的编码单元610是预测单元,则预测单元可被分割成包括在具有尺寸64×64的编码单元610中的分区,即具有尺寸64×64的分区610、具有尺寸64×32的分区612、具有尺寸32×64的分区614或具有尺寸32×32的分区616。

同样,具有尺寸32×32且深度1的编码单元620的预测单元可分割成包括在具有尺寸32×32的编码单元620中的分区,即具有尺寸32×32的分区620、具有尺寸32×16的分区622、具有尺寸16×32的分区624和具有尺寸16×16的分区626。

同样,具有尺寸16×16且深度2的编码单元630的预测单元可分割成包括在具有尺寸为16×16的编码单元630中的分区,即具有尺寸16×16的分区630、具有尺寸16×8的分区632、具有尺寸8×16的分区634和具有尺寸8×8的分区636。

同样地,具有尺寸8×8且深度3的编码单元640的预测单元可分割成包括在具有尺寸为8×8的编码单元640中的分区,即具有尺寸8×8的分区640、具有尺寸8×4的分区642、具有尺寸4×8的分区644以及具有尺寸4×4的分区646。

具有尺寸4×4且深度4的编码单元650是最小编码单元和最下层深度的编码单元。编码单元650的预测单元仅分配给具有尺寸4×4的分区。

为了确定最大编码单元610的编码深度,视频编码设备100的编码单元确定器120必须对包括在最大编码单元610中的、分别对应于各深度的编码单元执行编码。

随着深度加深,包括处于相同范围和相同尺寸的数据的、根据深度的较深层编码单元的数量增加。例如,需要四个与深度2对应的编码单元以覆盖包括在与深度1对应的一个编码单元中的数据。因此,为了比较相同数据根据深度的编码结果,对与深度1对应的编码单元和四个与深度2对应的编码单元各自进行编码。

为了根据每个深度执行编码,可通过沿编码单元的层次结构600的横轴,对根据深度的编码单元的预测单元中每个执行编码,来选择作为相应深度的代表性编码误差的最小编码误差。可替代地,可通过随着深度沿层次结构600的纵轴加深对每个深度执行编码来比较根据深度的最小编码误差,从而搜索最小编码误差。在最大编码单元610中具有最小编码误差的深度和分区可被选为最大编码单元610的编码深度和分区类型。

图7是根据本公开实施方式用于描述编码单元与变换单元之间的关系的图。

根据实施方式的视频编码设备100或根据实施方式的视频解码设备200针对每个最大编码单元、根据具有小于或等于最大编码单元的尺寸的编码单元来对图像进行编码或解码。可基于不大于相应编码单元的数据单元来选择编码期间用于频率变换的变换单元的尺寸。

例如,在视频编码设备100或视频解码设备200中,当编码单元710的尺寸为64×64时,可通过使用具有尺寸32×32的变换单元720来执行频率变换。

此外,可通过对小于64×64的尺寸为32×32、16×16、8×8和4×4的变换单元中的每一个执行频率变换来对具有尺寸64×64的编码单元710的数据进行编码,然后可选择相对于原始图像具有最小编码误差的变换单元。

图8示出根据本公开实施方式的多条编码信息。

视频编码设备100的输出单元130可对与编码深度对应的每个编码单元的分区类型信息800、预测模式信息810和变换单元尺寸信息820进行编码,并作为编码模式信息发送这些信息。

分区类型信息800指示与通过对当前编码单元的预测单元进行分割而获得的分区的形状有关的信息,其中所述分区是用于对当前编码单元进行预测编码的数据单元。例如,具有尺寸2n×2n的当前编码单元cu_0可被分割成具有尺寸2n×2n的分区802、具有尺寸2n×n的分区804、具有尺寸n×2n的分区806和具有尺寸n×n的分区808中的任意一个。在这种情况下,关于当前编码单元的分区类型信息800被设置为指示具有尺寸2n×2n的分区802、具有尺寸2n×n的分区804、具有尺寸n×2n的分区806和具有尺寸n×n的分区808中的一个。

预测模式信息810指示每个分区的预测模式。例如,预测模式信息810可指示对由分区模式信息800指示的分区执行的预测编码的模式,即帧内模式812、帧间模式814或跳过模式816。

变换单元尺寸信息820代表当对当前编码单元执行频率变换时所基于的变换单元。例如,变换单元可以是第一帧内变换单元822、第二帧内变换单元824、第一帧间变换单元826或第二帧间变换单元828。

视频解码设备200的图像数据和编码信息提取器220可针对每个较深编码单元提取和使用分区类型信息800、预测模式信息810和变换单元尺寸信息820。

图9是根据本公开实施方式基于深度的较深层编码单元的图。

分割信息可用于指示深度的改变。分割信息指示当前深度的编码单元是否被分割为更下层深度的编码单元。

用于对具有深度0和尺寸2n_0×2n_0的编码单元900进行预测编码的预测单元910可包括以下分区类型的分区:具有尺寸2n_0×2n_0的分区类型912、具有尺寸2n_0×n_0的分区类型914、具有尺寸n_0×2n_0的分区类型916和具有尺寸n_0×n_0的分区类型918。仅示出通过对预测单元对称地分割而获得的分区912、914、916和918,但是如上所述,分区类型不限于此,并且可包括不对称分区、具有预定形状的分区和具有几何形状的分区。

根据每个分区类型,对一个具有尺寸2n_0×2n_0的分区,两个具有尺寸2n_0×n_0的分区,两个具有尺寸为n_0×2n_0的分区和四个具有尺寸n_0×n_0的分区重复执行预测编码。可对具有尺寸2n_0×2n_0、n_0×2n_0、2n_0×n_0和n_0×n_0的分区执行帧内模式和帧间模式下的预测编码。可以仅对具有尺寸2n_0×2n_0的分区执行跳过模式下的预测编码。

如果在具有尺寸2n_0×2n_0、2n_0×n_0和n_0×2n_0的912、914和916的分区类型之一中编码误差最小,则可不将预测单元910分割至更下层的深度。

如果在具有尺寸n_0×n_0的分区类型918中编码误差最小,则将深度从0改变为1并执行分割(操作920),并且可对具有深度2且尺寸n_0×n_0的分区类型的编码单元930重复执行编码,以搜索最小编码误差。

用于对具有深度1和尺寸2n_1×2n_1(=n_0×n_0)的编码单元930执行预测编码的预测单元940可包括以下分区类型的分区:尺寸2n_1×2n_1的分区类型942,尺寸2n_1×n_1的分区类型944,尺寸n_1×2n_1的分区类型946和尺寸n_1×n_1的分区类型948。

如果在具有尺寸n_1×n_1的分区类型948中编码误差最小,则将深度从1改变为2并执行分割(在操作950中),并且对具有深度2和尺寸n_2×n_2的编码单元960重复执行编码,以搜索最小编码误差。

当最大深度为d时,可设置根据深度的分割信息,知道深度对应于d-1,并且可设置分割信息,直到深度对应于d-2。也就是说,当对与d-2的深度对应的编码单元被分割之后执行到深度为d-1时的编码(在操作970中)时,用于对具有深度d-1和尺寸2n_(d-1)×2n(d-1)的编码单元980进行预测编码的预测单元990可包括以下分区类型的分区:尺寸2n_(d-1)×2n(d-1)的分区类型992、尺寸2n_(d-1)×n_(d-1)的分区类型994,尺寸n_(d-1)×2n(d-1)的分区类型996,以及尺寸n_(d-1)×n_(d-1)的分区类型998。

可对分区类型之中的一个具有尺寸2n_(d-1)×2n(d-1)的一个分区、两个具有尺寸2n_(d-1)×n_(d-1)的分区、两个具有尺寸n_(d-1)×2n(d-1)的分区、四个具有尺寸n_(d-1)×n_(d-1)的分区重复执行预测编码,以搜索生成最小编码误差的分区类型。

即使当具有尺寸n_(d-1)×n_(d-1)的分区类型998有最小编码误差时,但由于最大深度为d,因此具有深度d-1的编码单元cu_(d-1)不再被分割到更下层深度,并且构成当前最大编码单元900的编码单元的编码深度被确定为d-1,可将当前最大编码单元900的分区类型确定为n_(d-1)×n_(d-1)。此外,由于最大深度为d,因此不设置对具有深度d-1的编码单元952的分割信息。

数据单元999可以是当前最大编码单元的“最小单元”。根据实施方式的最小单元可以是通过将具有最下层编码深度的最小编码单元分割4次而获得的矩形数据单元。通过重复执行编码,根据实施方式的视频编码设备100可通过比较根据编码单元900的深度的编码误差选择具有最小编码误差的编码深度来确定深度,并且将相应的分区类型和预测模式设置为编码深度的编码模式。

这样,在0,1,...,d-1,d的所有深度中比较根据深度的最小编码误差,且可将具有最小编码误差的深度确定为编码深度。编码深度、预测单元的分区类型和预测模式可作为关于编码模式的信息被编码和发送。由于编码单元从深度0分割到编码深度,所以仅编码深度的分割信息设定为“0”,而排除编码深度之外的深度的分割信息设定为“1”。

根据实施方式的视频解码设备200的图像数据和编码信息提取器220可提取并使用关于编码单元900的编码深度和预测单元信息,以对编码单元912进行解码。视频解码设备200可通过使用根据深度的分割信息确定分割信息为0的深度为编码深度,并且使用关于相应深度的编码模式的信息进行解码。

图10、图11和图12是根据本公开实施方式描述编码单元、预测单元和频率变换单元之间关系的图。

编码单元1010是最大编码单元之中、由视频编码设备100确定的根据编码深度的较深层编码单元。预测单元1060是根据编码深度的编码单元1010中每一个的预测单元的分区,变换单元1070是根据编码深度的编码单元中每一个的变换单元。

当编码单元1010中的最大编码单元的深度为0时,编码单元1012和1054的深度为1,编码单元1014、1016、1018、1028、1050和1052的深度为2,编码单元1020、1022、1024、1026、1030、1032和1048的深度为3,编码单元1040、1042、1044和1046的深度为4。

在预测单元1060中,通过对编码单元1010中的编码单元进行分割来获得一些编码单元1014、1016、1022、1032、1048、1050、1052和1054。也就是说,分区1014、1022、1050和1054是具有尺寸2n×n的分区类型,分区1016、1048和1052是具有尺寸n×2n的分区类型,并且分区1032是具有尺寸n×n的分区类型。编码单元1010的预测单元和分区小于或等于每个编码单元。

在变换单元1070中,以小于编码单元1052的数据单位对编码单元1052的图像数据执行频率变换或频率逆变换。此外,变换单元1760中的编码单元1014、1016、1022、1032、1048、1050、1052和1054在尺寸和形状方面与预测单元1060中的编码单元1014、1016、1022、1032、1048、1050、1052和1054不同。也就是说,根据实施方式的视频编码设备100和视频解码设备200可对相同编码单元中的各个数据单元执行帧内预测/运动估计/运动补偿/以及频率变换/逆变换。

因此,对最大编码单元的每个区域中具有层次结构的编码单元中的每一个递归地执行编码,以确定最佳编码单元,从而可获得具有递归树结构的编码单元。编码信息可包括关于编码单元的分割信息、分割类型信息、预测模式信息和变换单元尺寸信息。下表1示出可由根据实施方式的视频编码设备100和视频解码设备200设置的编码信息。

表1

根据实施方式的视频编码设备100的输出单元130可输出与具有树结构的编码单元有关的编码信息,根据实施方式的视频解码设备200的图像数据和编码信息提取器220可从接收的比特流中提取与具有树结构的编码单元有关的编码信息。

分割信息指示当前编码单元是否被分割成更下层深度的编码单元。如果当前深度d的分割信息为0,则当前编码单元不再被分割为更下层深度的深度是编码深度,因此可针对编码深度定义分区类型信息、预测模式信息和变换单元尺寸信息。如果当前编码单元根据分割信息被进一步分割,则编码必须对更下层深度的四个分割编码单元独立执行编码。

预测模式可以是帧内模式、帧间模式和跳过模式中的至少一个。可以在所有分区类型中定义帧内模式和帧间模式,并且仅在具有尺寸2n×2n的分区类型中定义跳过模式。

分区类型信息可指示通过对预测单元的高度或宽度进行对称分割而获得的具有尺寸2n×2n、2n×n、n×2n和n×n的对称分区类型,以及通过对预测单元的高度或宽度进行不对称分割而获得的具有尺寸2n×nu、2n×nd、nl×2n和nr×2n的不对称分区类型。可通过按照1:3和3:1对预测单元的高进行分割而分别获得具有尺寸2n×nu和2n×nd的不对称分区类型,并且可通过按照1:3和3:1对预测单元的宽进行分割而分别获得具有尺寸nl×2n和nr×2n的不对称分区类型。

变换单元的尺寸可设置成帧内模式下的两种类型和帧间模式下的两种类型。也就是说,如果变换单元的分割信息为0,则变换单元的尺寸可以为2n×2n,这是当前编码单元的尺寸。如果变换单元的分割信息为1,则可通过对当前编码单元进行分割来获得变换单元。此外,如果具有尺寸2n×2n的当前编码单元的分区类型是对称分区类型,则变换单元的尺寸可以是n×n,且如果当前编码单元的分区类型是不对称分区类型,则变换单元的尺寸可以是n/2×n/2。

根据实施方式与具有树结构的编码单元有关的编码信息可分配给与编码深度、预测单元和最小单元相对应的编码单元中的至少一个。对应于编码深度的编码单元可包括具有相同编码信息的预测单元和最小单元中的至少一个。

因此,通过比较邻近数据单元的多条编码信息,来确定邻近数据单元是否包括在对应于相同编码深度的编码单元中。此外,通过使用数据单元的编码信息来确定与编码深度相对应的相应编码单元,从而可推断最大编码单元中的编码深度的分布。

因此,如果基于邻近数据单元的编码信息来预测当前编码单元,则可直接进行参考和使用与当前编码单元邻近的较深层编码单元中的数据单元的编码信息。

在另一实施方式中,如果基于邻近数据单元的编码信息来预测当前编码单元,则可通过使用数据单元的编码信息来搜索与当前编码单元邻近的数据单元,并且可参考所搜索到的邻近编码单元来预测当前编码单元。

图13根据表格1的编码模式信息示出编码单元、预测单元和变换单元之间的关系。

最大编码单元1300包括多个编码深度的编码单元1302、1304、1306、1312、1314、1316和1318。这里,由于编码单元1318是编码深度的编码单元,因此分割信息可设置成0。具有尺寸2n×2n的编码单元1318的分区类型信息可设置成包括2n×2n1322、2n×n1324、n×2n1326、n×n1328、2n×nu1332、2n×nd1334、nl×2n1336和nr×2n1338的分区类型之一。

当分区类型信息被设置成对称分区类型2n×2n1322、2n×n1324、n×2n1326和n×n1328中的一个时,如果变换单元分割信息(tu尺寸标志(tusizeflag))为0,则可以设置具有尺寸2n×2n的变换单元1342,如果变换单元分割信息为1,则可以设置具有尺寸n×n的变换单元1344。

当分区类型信息被设置成不对称分区类型2n×nu1332、2n×nd1334、nl×2n1336和nr×2n1338中的一个时,如果变换单元分割信息(tu尺寸标志)为0,则可以设置具有尺寸2n×2n的变换单元1352,并且如果变换单元分割信息为1,则可以设置具有尺寸n/2×n/2的变换单元1354。

在下文中,将对由根据图4的实施方式的图像编码设备400的熵编码器450和图5的图像解码设备500的熵解码器520所执行的熵编码和解码过程进行详细描述。

如上所述,根据本公开实施方式的图像编码设备400通过使用从最大编码单元分层分割的编码单元来执行编码。熵编码器450对编码过程期间生成的多条编码信息进行编码,例如,诸如量化的变换系数、预测单元的预测模式、量化参数、运动矢量等语法元素。作为熵编码技术,可使用基于上下文的二进制算术编码(在下文中称为“cabac”)。

表2是在高效率视频编码(hevc)和h.264/avc下通过cabac进行熵编码的语法元素的示例。以hevc和h.264/avc对语法元素中每一个的语义进行描述,因此将省略其详细描述。

表2

图14是根据本公开实施方式的熵编码设备的框图。

参照图14,熵编码设备1400包括二值化器1410、上下文建模器1420和二进制算术编码器1430。此外,二进制算术编码器1430包括常规编码引擎1432和旁路编码引擎1434。

二值化器1410将输入的语法元素映射到二进制符号的二进制位。一个二进制位表示一个具有值0或1的位并通过执行cabac进行编码。一组二进制位可称为二进制位字符串。二值化器1410可根据语法元素的类型应用固定长度二值化、截断莱斯二值化、第k次指数哥伦布(exp-golomb)二值化和哥伦布-莱斯(golomb-rice)二值化之一,并且将语法元素的值映射和输出为0和1的二进制位。

常规编码引擎1432或旁路编码引擎1434对二值化器1410输出的二进制位进行算术编码。当自语法元素二进制化的二进制位均匀分布时,即当数据具有相同频率的0和1时,通过将二进制化的二进制位输出到不使用概率值的旁路编码引擎1434,来对二进制化的二进制位进行编码。可根据语法元素的类型预先确定是否通过使用常规编码引擎1432和旁路编码引擎1434之中的编码引擎来对当前二进制位进行算术编码。

常规编码引擎1432可基于由上下文建模器1420确定的概率模型对二进制位执行算术编码。上下文建模器1420向常规编码引擎1432提供关于二进制位的概率模型。具体地,上下文建模器1420基于先前编码的二进制位确定预先确定的二进制值的概率,更新用于对先前二进制位的二进制值编码的概率,以及向常规编码引擎1432输出更新的概率。传统地,通过使用上下文索引ctxldx确定一个上下文模型,并且确定所确定的上下文模型的最小可能符号(lps)或最大可能符号(mps)的发生概率以及关于0和1之间的哪个二进制值对应于mps的信息。另一方面,根据本公开实施方式的上下文建模器1420确定先前确定的二进制值(例如在不区分mps和lps的情况下,基于先前编码的二进制位指示“1”的发生概率的p(1)),并向常规编码引擎1432提供已确定的预定二进制值的概率。

根据本公开实施方式的上下文建模器1420可通过使用所接收的二进制位的值来获得每个二进制位的自相关值,基于自相关值确定用于更新二进制值的概率的至少一个缩放因子值,以及通过使用所确定的至少一个缩放因子来更新二进制值的概率。

此外,根据本公开另一实施方式的上下文建模器1420可通过应用具有不同缩放因子的多个概率模型来获得指示二进制位的平均位值的熵值,确定用以获得多个概率模型中的最小熵值的概率模型的缩放因子,并且通过使用所确定的缩放因子来更新二进制值的概率。

常规编码引擎1432基于上下文建模器1420提供的预定二进制值的概率和当前二进制位的二进制值来执行二进制算术编码。换句话说,常规编码引擎1432可基于上下文建模器1420提供的预定二进制值的概率来确定“1”的发生概率p(1)和“0”的发生概率p(0),根据当前二进制值分割所确定的0和1的发生概率p(0)和p(1)和指示概率区间的范围,并输出代表值属于分割范围的二进制值,从而执行二进制算术编码。

图15a和图15b示出在cabac中使用的概率更新过程。

参照图15a,将在hevc中使用的上下文模型等定义为64个先前确定的概率状态。每个概率状态可表征为状态索引iplps和mps的值vmps。当通过使用先前确定的状态转换表对概率进行更新时,可以呈现要从当前概率状态转移的概率状态。可根据当前算术编码二进制位的值是否为mps或lps来改变概率状态进行。例如,如果当前二进制位的值是mps,则概率状态从当前概率状态iplps改变为其中lps概率降低的前向状态iplps+1,并且如果当前二进制位的值为lps,将概率状态从当前概率状态iplps改变为lps概率增加的后向状态iplps-1。在图15a中,trmps{}指示mps处理后的概率状态转移方向,而trlps{}指示lps处理后的概率状态转移方向。

在mps或lps处理期间改变的概率具有如图15a中所示的指数下降的形式。n个上下文模型的概率pn可表示为以下等式:pn=0.5(1-α)n,其中(1-α)=(0.01875/0.5)1/63

参照图15b,lps的接近0的概率分布是致密的,并且lps的接近1/2的概率分布是稀疏的。因此,当二进制值0和1的发生概率相似时,即当二进制值0和1的发生概率接近1/2时,由于概率稀疏分布,概率预测误差可能增加。此外,当使用取幂形式的概率函数时,由于接近0的概率值需要进行详细地表达,因此可能增加呈现概率值的比特深度。因此,可能增加用于存储具有取幂形式的概率函数的概率模型的查找表大小。此外,当使用密集概率值来更新概率或分割概率区间时,乘法运算量增加,这在硬件上可能是繁重的。因此,通过将图15a中所示的概率plps映射到经过舍入算术运算的预定值,可以使用其中的概率值不是指数级而是分层级缩小的概率。

将在下文详细描述由上下文建模器1420执行的更新概率模型的过程。

可以根据下面的等式1来执行cabac中使用的概率更新过程。

[等式1]

pi(t)=αiy+(1-αi)pi(t-1)

在上面的等式1中,pi(t)表示更新的概率,pi(t-1)表示前一个二进制位的概率,αi(0≤αi≤1,αi是实数)表示缩放因子,而y表示输入的当前二进制位的值。i是指示缩放因子的编号的整数。随着使用的缩放因子的数量增加,预测概率的精度可以增加,然而算术复杂度也会增加。因此,下面将描述i为1或2的情况,即通过使用一个缩放因子或两个缩放因子来更新概率。然而,根据本公开的概率更新方法也可应用于通过使用两个或更多缩放因子来概率更新的情况。

在二进制算术编码器中,可处理具有值0和1的任意序列的二进制位。如果将0和1中任一个的二进制位的概率确定为a(0≤a≤1,a是实数),则可将另一二进制位的概率确定为(1-a)。在上面的等式1中,当二进制位的输入值为1时,即当y=1时,由于pi(t)的值增加,所以等式1中的pi(t)指示“1”的概率,即下一个二进制位是“1”的概率。可考虑概率值的范围,以确定0和1中的哪一个是mps或lps。例如,如果指示1的概率的pi(t)具有[1/2;1],即(1/2)和1之间的值,则mps为1,如果pi(t)具有[0;1/2],即0和(1/2)之间的值,则0对应于mps。可将cabac中使用的lps的可能值确定为pi(t)和(1-pi(t))之间的小值。

基于等式1更新概率的重要参数是缩放因子αi。根据缩放因子αi的值,可确定指示cabac中使用的概率被多么敏感地更新的敏感度和关于cabac中使用的概率是否有误差地反应的鲁棒性。

根据本公开实施方式的上下文建模器1420可通过使用一个或多个缩放因子αi来生成一个或多个更新的概率,并且可最终将一个或多个更新的概率的加权平均值确定为更新的概率。

具体地,如果通过将多个缩放因子αi应用于等式1来获得多个概率pi(t),则上下文建模器1420通过根据以下等式2计算多个概率pi(t)的加权平均值来获得最终的更新概率p(t)。

[等式2]

ωi表示应用到多个概率pi(t)的权重。可考虑缩放因子的数量确定ωi。如果所使用的缩放因子的数量是n(n是整数),则ωi=(1/n)。例如,当使用两个缩放因子α1和α2时,基于以上等式1得到p1(t)=α1y+(1-α1)p1(t-1)和p2(t)=α2y+(1-α2)p2(t-1)。在这种情况下,将作为两个概率p1(t)和p2(t)的平均值的(p1(t)+p2(t))/2确定为更新概率p(t)。

另一方面,为了在更新概率上省略乘法处理,缩放因子可具有像1/2p这样的分母为2的幂的值。也就是说,多个缩放因子αi可具有像下面的等式αi=1/(2^mi)(mi是整数)的值。在这种情况下,可用包括在上述等式1中的乘法算术运算来代替如下述等式3所示的移位算术运算。在等式3中,“>>”是写入移位算术运算符。

[等式3]

pi(t)=(y>>mi)+pi(t-1)-(pi(t-1)>>mi)

在描述的示例中,当设定α1=1/16=1/24且α2=1/128=1/27时,可以通过像p1(t)=(y>>4)+p1(t-1)-(p1(t-1)>>4)的仅包括移位算术运算和加法和减法算术运算的等式获得p1(t)=α1y+(1-α1)p1(t-1)。同样,p2(t)=α2y+(1-α2)p2(t-1)可被替换为p2(t)=(y>>7)+p2(t-1)-(p2(t-1)>>7)。在硬件或软件中移位算术运算比乘法或除法运算操作可更容易实现,因此缩放因子可确定为2的幂的预定值作为分母。

图16是根据本公开实施方式的概率更新过程的流程图。

参照图16,在操作1610中,上下文建模器1420通过应用多个缩放因子来获得多个更新的概率。如以上示例中所述,当使用两个缩放因子α1=1/16=1/24和α2=1/128=1/27时,上下文建模器1420通过p1(t)=(y>>4)+p1(t-1)-(p1(t-1)>>4)和p2(t)=(y>>7)+p2(t-1)-(p2(t-1)>>7)获得两个更新概率p1(t)和p2(t),并确定p1(t)和p2(t)的平均值的(p1(t)+p2(t))/2为最终更新概率p(t)。可通过像(p1(t)+p2(t))>>1的移位算术运算来实现(p1(t)+p2(t))/2。

在cabac编码和解码过程中,在预定数据单元中执行熵复位。例如,可以在切片单元和编码单元中执行熵复位。熵复位意思是舍弃当前概率值并基于预定概率值来重新执行cabac。在这样的复位处理之后执行的概率更新过程中,设置为初始值的概率值不是最优值,而是通过多次更新处理收敛至某个概率值。当通过使用一个缩放因子更新概率时,概率更新使得概率中的快速变化并因此更新的概率快速的收敛至适当的值,而重复更新容易产生波动。当通过使用多个缩放因子更新概率时,虽然概率变化不快,但是当更新的概率收敛到适当值附近时,由于波动发生得较不频繁,所以更新的概率不会敏感地对错误或噪音起反应并稳定地操作。因此,在操作1620中,上下文建模器1420每次概率更新增加一个计数器,并且在操作1630中,基于计数器值确定当前更新的概率是否与初始二进制位相关。考虑到初始二进制位小于预定数字,例如,50或更少的初始二进制位,在操作1640中,可通过使用单个缩放因子来执行概率更新。考虑到在初始二进制位之后输入二进制位,例如第50个二进制位,在操作1650中,可执行通过使用两个缩放因子而确定的概率更新过程。

在上述概率更新过程期间,通过使用具有预定值的缩放因子,例如将2的幂的值作为分母,来执行概率更新。

根据本公开实施方式的上下文建模器1420通过使用接收到的二进制位的值来获得每个二进制位的自相关值,基于自相关值确定用于更新二进制值的概率的至少一个缩放因子,然后通过使用所确定的至少一个缩放因子来更新二进制值的概率。

图17a和17b是用于说明自相关值的参考图。

使用间隔预定距离k(k是整数)的二进制位的值、二进制位的平均值m和二进制位的方差σ来根据预定距离k来获得自相关值rk,如下面等式4中所示。

[等式4]

在上面的等式4中,二进制位的数量是(n+1)(n是整数)且(n+1)个二进制位的值是yj(j是从0到n的整数)。

参考图17a和图17b,{y0,y1,y2,...,y7}指示8个二进制位,且yi值为0或1。如果假设二进制位的值如图17a和17b所示分布,则二进制位的平均值m具有图17a和17b中值的1/2。

方差σ是在每个二进制位的值yi和平均值m之间的均方误差的平均值,并且具有图17a和图17b中值的(1/2)^2*8*(1/8)=1/4。

当预定距离k为1时,即如果通过使用邻近二进制位的值来计算自相关值,则当邻近二进制位的值类似图17a中所示分布时的自相关值大于当邻近二进制位的值类似图17b中所示不均匀分布时的自相关值。

图18是根据本公开实施方式用于二进制算术编码的概率更新方法的流程图。

如上所述,根据本公开实施方式的概率更新方法通过使用输入的二进制位来计算自相关值,并使用基于自相关值确定的每个二进制位的概率与每个二进制位的值之间的均方误差最小的值作为缩放因子。

在操作1810中,上下文建模器1420通过cabac接收将要进行二进制算术编码的预定数量的二进制位。在操作1820中,上下文建模器1420基于上面的等式3获得每个二进制位的自相关值。

在操作1830中,上下文建模器1420基于自相关值rk确定用于更新二进制值的概率的至少一个缩放因子。

具体地,假定{yi}表示具有值0和1之一的n个二进制位。也就是说,j具有从0到(n-1)的值。

根据上面的等式1,使用先前二进制位的概率、先前二进制位的值和缩放因子α来表示在第j个二进制位的算术编码之后更新的概率pj,如下面的等式5所示。

[等式5]

pj=α*yj+(1-α)*pj-1=α*yj+(1-α)*(α*yj-1+(1-α)*pj-2)

=α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-2+(1-α)*pj-3)))

=α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-2+(1-α)*(α*yj+(1-α)*(α*yj-1+(1-α)*(α*yj-3+(1-α)*pj-4))))))

=........

等式5概括为下面等式6中所示。

[等式6]

每个二进制位的概率和值之间的均方误差(“mse”)如下面的等式中7所示。

[等式7]

如等式7中所示,mse具有相对于缩放因子α变化的值。为了确定缩放因子α,确定产生mse的值α。为此,等式7的mse相对于α进行偏微分,并且确定产生mse具有0的值。

也就是说,确定产生为0的缩放因子α。如果计算偏微分方程的值,则如下面等式8中所示,可通过使用自相关值rk来确定缩放因子α。

[等式8]

如上所述,使用两个缩放因子α1和α2来获得p1,j=α1y+(1-α1)p1,j-1和p2,j=α2y+(1-α2)p2,(j-1),并且当两个概率p1,j和p2,j的平均值(p1,j+p2,j)/2确定为更新概率pj时,如下面的等式9中所示,通过代入(p1,j+p2,j)/2代替等式7的pj来计算每个二进制位的概率与值之间的mse。

[等式9]

在等式9中,βi=1-αi。也就是说,β1=1-α1,并且β2=1-α2。

通过将等式9相对于α1和α2进行偏微分根据自相关值的范围来获得最小值,如下所示。

当rk∈[-1,1/7],α1=0,α2=0;

当rk∈[1/7,1/2]时,α2=0;

当rk∈[1/2,5/7]时,α1=1,α2=0;

当rk∈[5/7,1]时,α1=1,

如上所述,如果通过使用二进制位的自相关值确定了一个或多个缩放因子,则在操作1840中,上下文建模器1420通过使用所确定的缩放因子来更新先前的概率值,并将更新的概率值提供给常规编码引擎1432。在操作1850中,常规编码引擎1432通过使用更新的概率值对下一个二进制位执行二进制算术编码。

图19是根据本公开的另一实施方式在cabac中使用概率更新方法的流程图。

根据本公开的另一实施方式的上下文建模器1420可获得指示通过应用具有不同缩放因子的多个概率模型对一个二进制位进行编码所需的平均位值的熵值,确定具有用以获得最小熵值的概率模型的缩放因子,并且通过使用确定的缩放因子来执行概率更新。

参考图19,在操作1910中,上下文建模器1420接收要进行二进制算术编码的预定数量的二进制位。

在操作1920中,上下文建模器1420通过将具有不同缩放因子的多个概率模型应用于所接收的二进制位中的一个来获得熵值。

定义m概率模型是pmi(i是从0到(m-1)的整数),并且概率模型pmi的缩放因子是αi。上下文建模器1420通过使用概率模型pmi的缩放因子αi来对当前二进制位执行概率更新。如上面的等式1中所示,上下文建模器1420根据pi(t)=αiyi+(1-αi)pi(t-1)执行概率更新。

上下文建模器1420通过在位单元中应用多个概率模型来计算熵。具体地,如下面的等式10中所示,上下文建模器1420根据当前二进制位y的值获得参数biti。

[等式10]

biti=(y==1)?-log2pi(t):-log2(1-pi(t))

参照等式10,在当前二进制位y的值为1时,参数biti具有值log2pi(t);在当前二进制位的y的值为0时,参数biti具有值-log2(1-pi(t))。

如下面的等式11中所示,通过使用参数biti来获得当前二进制位的熵si(t)。

[等式11]

si(t)=biti*αi+(1-αi)*si(t-1)

在等式11中,si(t-1)是相对于当前二进制位的先前二进制位而获得的熵值。基于等式11,如果获得相对于当前二进制位的多个熵值,则上下文建模器1420将熵si(t)中最小熵值中使用的缩放因子αi确定为最终缩放因子。

例如,对于当前二进制位y,假设通过应用缩放因子α1获得的熵值是s1(t),并且通过应用缩放因子α2获得的熵值是s2(t)。在s1(t)<s2(t)的情况下,将用于获得具有较小熵值的s1(t)的缩放因子α1确定为用于概率更新的缩放因子,并且根据p1(t)=α1y+(1-α1)p1(t-1)更新概率。在s1(t)>s2(t)的情况下,将用于获得具有较小熵值的s2(t)的缩放因子α2确定为概率更新的缩放因子,并且根据p2(t)=α2y+(1-α2)p2(t-1)更新概率。

图20a和图20b示出基于cabac执行二进制算术编码的过程。

参照图20a,上下文建模器1420向常规编码引擎1432提供预定二进制值,例如“1”的发生概率p(1)。常规编码引擎1432考虑输入的二进制位是否为1来分割概率区间并执行二进制算术编码。在图20a中,假设“1”的发生概率为p(1)=0.8,并且“0”的发生概率为p(0)=0.2。虽然为了描述的缘故所述的p(1)和p(0)是不变的,但是如上所述,每当对一个二进制位编码时,可以更新p(1)和p(0)的值。常规编码引擎1432由于先前输入的二进制位s1具有值1而在(0,1)区间中选择值“1”的概率区间(0,0.8),由于随后输入的二进制位s2具有值0而选择与(0,0.8)区间的上侧的0.2相对应的概率区间(0.64,0.8),并且由于最终输入的二进制位s3具有值1而最后确定接近(0.64,0.8)的0.8的区间(0.64,0.7768)。常规编码引擎1432选择0.75作为指示(0.64,0.788)区间的代表值,并输出对应于0.75的二进制值0.11中的小数位“11”作为比特流。也就是说,输入的二进制位“101”被映射到“11”并输出。

参照图20b,通过更新当前可用范围rs和范围rs的下边界值rlb来执行根据cabac的二进制算术编码过程。当二进制算术编码开始时,设置rs=510,rlb=0。在当前二进制位的值vbin为mps时,范围rs变为rmps。在当前二进制位的值vbin为lps时,将范围rs改变为rlps,并且对下边界值rlb进行更新以指示rlps。如上面图20a中的示例所示,在二进制算术编码处理期间根据当前二进制位的值是mps还是lps来更新预定区间rs,并且输出指示更新区间的二进制值。

图21是根据缩放因子的数量基于自相关值rk确定的缩放因子α的变化的图。

在图21中,x轴指示自相关值(rk=ρ),而y轴指示缩放因子。当相对于输入的二进制位确定最优缩放因子时,如果使用一个缩放因子α1或α2(2120),则缩放因子值可能会太慢或太快地收敛到预定值。因此,可优先使用两个缩放因子(2110)而不是一个缩放因子。

图22是根据缩放因子的数量的mse的变化的图。

在图22中,参考标记2210表示当使用一个缩放因子时的mse,并且参考标记2220表示当使用两个缩放因子时的mse。在图22中,x轴指示自相关值(rk=ρ),而y轴指示mse。参照图22,使用两个缩放因子时的mse(2220)小于使用一个缩放因子时的mse(2210)。也就是说,通过使用当使用两个比例因子时的自相关值rk概率可以比通过使用一个比例因子时的自相关值rk更精确地更新概率。

图23是根据本公开实施方式的熵解码设备2300的框图。

参照图23,熵解码设备2300包括上下文建模器2310、常规解码器2320、旁路解码器2330和逆二值化器2340。熵解码设备2300执行由上述熵编码设备1400执行的熵编码过程的逆过程。

通过旁路编码进行编码的二进制位由旁路解码器2330输出和解码。由常规编码进行编码的二进制位由常规解码器2320进行解码。常规解码器2320通过使用基于在由上下文建模器2310提供的当前二进制位之前解码的先前二进制位确定的二进制值的概率,对当前二进制位进行算术解码。

上下文建模器2310向常规解码器2320提供对应于二进制位的概率模型。具体地,上下文建模器2310基于先前解码的二进制位确定预定二进制值的概率,更新用于解码先前二进制位的二进制值的概率,并将更新的概率输出到常规解码器2320。根据本公开实施方式的上下文建模器2310可通过使用二进制位的值来获得每个二进制位的自相关值,基于自相关值确定用于更新二进制值的概率的至少一个缩放因子,然后通过使用所确定的至少一个缩放因子来更新二进制值的概率。

此外,根据本公开的另一实施方式的上下文建模器2310可通过应用具有不同缩放因子的多个概率模型获得指示二进制位的平均位值的熵值,确定具有用于在多个概率模型中获得最小熵值的概率模型的缩放因子,并且对通过使用所确定的缩放因子更新二进制值的概率。由上下文建模器2310执行的概率更新过程与包括在上述编码过程中的概率更新过程相同,因此在此省略其详细说明。

逆二值化器2340通过将二进制位字符串再次映射到语法元素来恢复由常规解码器2320或旁路解码器2330恢复的二进制位字符串。

图24是根据本公开实施方式用于二进制算术解码的概率更新方法的流程图。

在操作2410中,上下文建模器2310接收要进行二进制算术解码的预定数量的二进制位。

在操作2420中,上下文建模器2310通过使用所接收的预定数量的二进制位的值来获得二进制位的自相关值。如上面等式3中所示,通过使用间隔预定距离k(k为整数)的二进制位的值、二进制位的平均值m和二进制位的方差σ来获得自相关值rk。

在操作2430中,上下文建模器2310基于自相关值确定用于更新二进制值的概率的至少一个缩放因子。如上所述,根据本公开实施方式的概率更新方法使用在基于自相关值确定的每个二进制位的概率与每个二进制位的值之间具有最小mse的值作为缩放因子。当使用一个缩放因子时,可像上述等式8中那样获得一个最优缩放因子。当使用两个比例因子α1和α2时,可通过代入(p1,j+p2,j)/2替换等式7中的pj来计算每个二进制位的概率和值之间的mse并且可确定产生最小mse的的缩放因子α1和α2。

如果通过使用二进制位的自相关值来确定一个或多个缩放因子,在操作2440中,上下文建模器2310通过使用所确定的一个或多个缩放因子来更新在基于上下文的自适应二进制算术解码中使用的概率,并且向常规解码器2320提供更新的概率。在操作2450中,常规解码器2320通过使用更新的概率对下一个二进制位进行二进制算术解码。

图25是根据本公开的另一实施方式用于二进制算术解码的概率更新方法的流程图。

在操作2510中,上下文建模器2310接收要进行二进制算术解码的预定数量的二进制位。

在操作2520中,上下文建模器2310通过应用具有不同缩放因子的多个概率模型来获得指示二进制位的平均位值的熵值。

与上述二进制算术编码过程类似,上下文建模器2310通过在二进制位单元中应用多个概率模型来计算熵。换句话说,上下文建模器2310根据当前二进制位y的值获得类似等式10的参数biti,并且通过使用根据等式11的参数biti来获得当前二进制位的熵si(t)。

在操作2530中,上下文建模器2310将通过应用多个缩放因子获得的在多个熵值中的最小熵值中使用的缩放因子αi确定为最终缩放因子。

在操作2540中,上下文建模器2310通过使用确定的缩放因子来更新先前二进制值的概率,并将概率输出到常规解码器2320,并且常规解码器2320通过使用更新的概率对下一个二进制位执行基于上下文的自适应二进制算术解码。

本公开还可实施为在非暂态计算机可读记录介质上的计算机可读代码。非暂态计算机可读记录介质是可以存储数据随后可由计算机系统读取的任意数据存储设备。非暂态计算机可读记录介质的示例包括rom、ram、cd-rom、磁带、软盘、光学数据存储设备等。非暂态计算机可读记录介质也可以分布在网络联接的计算机系统,使得计算机可读代码以分布式的方式被存储和执行。

虽然已经参考附图描述了实施方式,但是本领域普通技术人员将会理解,在没有背离由所附权利要求限定的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本公开的范围不由本公开的详细描述限定而是由所附权利要求限定,并且该范围内的所有差异将解释为包括在本公开中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1