用于对视频数据进行熵编码和熵解码的方法和设备与流程

文档序号:16649269发布日期:2019-01-18 19:13阅读:199来源:国知局
用于对视频数据进行熵编码和熵解码的方法和设备与流程

技术领域

本发明总体涉及一种用于对视频数据进行熵编码/熵解码的方法和设备,更为具体地讲,涉及一种通过有效地二进制化当前块的残余块的离散余弦变换(DCT)系数来对视频数据进行熵编码/熵解码的方法和设备。



背景技术:

在视频压缩标准(诸如,运动图像专家组(MPEG)-1、MPEG-2和H.264/MPEG-4先进视频编码(AVC))中,图像被分割为视频处理的预定单位(例如,宏块)以进行视频编码。然后,使用帧间预测或帧内预测来对每个宏块进行编码。然后,基于编码的宏块的数据大小和编码的宏块与初始宏块之间的失真程度来选择最优编码模式,并以选择的编码模式对宏块进行编码,该过程将参照图1进行更详细的描述。

图1是根据现有技术的视频编码器100的框图。

参照图1,运动补偿单元104或帧内预测单元106以块为单位执行帧间预测或帧内预测。运动补偿单元104通过搜索存储在帧存储器120中的参考图像来基于运动估计单元102估计的当前块的运动矢量,执行对当前块的帧间预测。帧内预测单元106使用包括在当前图像的先前编码的区域中的像素执行对当前块的帧内预测。

从初始块减去预测块,该预测块是作为预测结果而产生的当前块的预测值,从而产生残余块。产生的残余块被变换单元108变换为频域。变换单元108还执行离散余弦变换(DCT),从而产生残余块在频域中的系数,即,DCT系数。量化单元110对DCT系数进行量化。量化的系数被熵编码单元112熵编码,并被插入到比特流。

被量化单元110量化的系数被逆量化单元114逆量化,逆变换单元116对逆量化的系数执行离散余弦逆变换(IDCT)。将由IDCT重构的残余块与预测块相加,从而重构初始块。

重构的初始块被滤波单元118去块滤波,然后被存储到帧存储器,以用于其它块的帧间预测或帧内预测。

在H.264/AVC编码中,使用上下文自适应可变长度编码(CAVLC)或上下文自适应二进制算数编码(CABAC)执行熵编码。通过将不同的熵编码方法应用到不同的语法元素来执行熵编码。

在各种语法元素中,DCT系数通过运行-级别编码(run-level coding)被CAVLC编码。具有“0”值的DCT系数被称为“运行(run)”,具有非“0”值的DCT系数被称为“级别(level)”。将DCT系数分别二进制化为“运行”和“级别”,使用上下文模型对通过二进制化产生的二进制串(bin string)进行算数编码。

使用级联的一元/k阶指数Golomb二进制化将具有非“0”值的DCT系数(即,“级别”)二进制化为可变长度码,然后,对通过二进制化产生的二进制串进行算数编码,该过程将参照图2进行详细描述。

参照图2,使用二进制化方法对级别进行二进制化,该二进制化方法是具有最大码值(cMax)“14”的截断(truncated)一元二进制化与0阶指数Golomb二进制化的组合。

仅使用截断一元二进制化对具有小于等于14的值(abs_level)的级数进行二进制化,使用截断一元二进制化和指数Golomb二进制化的组合对具有大于14的值的级数进行二进制化。

然而,在DCT系数的概率分布中,级别集中在低频分量的系数中,运行集中在高频分量的系数中。换言之,级别集中在通过对残余块执行DCT产生的DCT系数块的左上部分,运行集中在DCT系数块的右下部分。因此,由于没有考虑运行和级别的概率分布而对DCT系数进行二进制化,所以,如图2所示将相同二进制化方法应用到DCT系数是低效率的。



技术实现要素:

技术方案

本发明提供了一种用于通过考虑离散余弦变换(DCT)系数的概率分布来对视频数据进行有效地熵编码和熵解码的方法和设备,以及一种具有在其上记录了执行所述方法的程序的计算机可读记录介质。

有益效果

根据本发明,在熵编码中,根据DCT系数的频率是高还是低将DCT系数自适应地二进制化为可变长度码,对二进制化的DCT系数进行二进制算数编码,从而提高视频数据的压缩效率。

附图说明

通过结合附图对示例性实施例进行详细的描述,本发明的上述和其它特点和优点将会变得清楚,其中:

图1是根据现有技术的视频编码器的框图;

图2示出根据现有技术的用于对频域的系数进行二进制化的方法;

图3是根据本发明示例性实施例的视频编码器的框图;

图4是根据本发明示例性实施例的熵编码单元的框图;

图5示出根据本发明示例性实施例的DCT系数的分组;

图6是根据本发明示例性实施例的DCT系数的二进制化的表格;

图7是根据本发明另一示例性实施例的DCT系数的二进制化的表格;

图8是根据本发明示例性实施例的对视频数据进行熵编码的方法的流程图;

图9是根据本发明示例性实施例的视频解码器的框图;

图10是根据本发明示例性实施例的熵解码单元的框图;

图11是示出根据本发明示例性实施例的对视频数据熵解码的方法的流程图。

最佳模式

根据本发明的一方面,提供了一种对视频数据进行熵编码的方法。所述方法包括:使用不同的二进制化方法对通过将当前块的残余块变换为频域而产生的频域的系数进行二进制化,并对二进制化的系数执行二进制算数编码。

频域的系数可以是通过对残余块执行离散余弦变换(DCT)而产生的DCT系数。

对系数进行二进制化的步骤包括:基于通过DCT产生的DCT系数的频率是高还是低将DCT系数分组为多个组,并通过将不同的二进制化方法应用到所述多个组来对DCT系数进行二进制化。

对系数进行二进制化的步骤可包括:基于DCT系数的频率是高还是低使用不同级联的一元/k阶指数Golomb二进制化方法对DCT系数进行二进制化。

根据本发明的另一方面,提供了一种视频编码方法,所述方法包括:产生作为当前块的预测值的预测块,从当前块减去产生的预测块,从而产生当前块的残余块;通过对产生的残余块执行离散余弦变换(DCT)而产生残余块的DCT系数,并量化产生的DCT系数;基于DCT系数的频率是高还是低将量化的DCT系数分组为多个组,通过将不同二进制化方法应用到多个组对DCT系数进行二进制化,并对二进制化的系数执行二进制算数编码。

根据本发明的另一方面,提供了一种用于对视频数据进行熵编码的设备。所述设备包括:二进制化单元,使用不同的二进制化方法对通过将当前块的残余块变换为频域而产生的频域的系数进行二进制化;二进制算数编码单元,对二进制化的系数执行二进制算数编码。

根据本发明的另一方面,提供了一种视频编码设备。所述设备包括:残余产生单元、变换单元、量化单元和熵编码单元。残余产生单元,产生作为当前块的预测值的预测块并从当前块减去产生的预测块,从而产生当前块的残余块。变换单元,通过对产生的残余块执行离散余弦变换(DCT)而产生残余块的DCT系数。量化单元,对产生的DCT系数进行量化。熵编码单元,基于DCT系数的频率是高还是低将量化的DCT系数分组为多个组,通过将不同的二进制化方法应用到多个组对DCT系数进行二进制化,并对二进制化的系数执行二进制算数编码。

根据本发明的另一方面,提供了一种对视频数据进行熵解码的方法。所述方法包括:接收关于残余块的数据,其中,使用不同的二进制化方法对通过将当前块的残余块转换为频域而产生的频域的系数进行二进制化,并对二进制化的系数执行二进制算数编码而产生所述关于残余块的数据;对接收的数据执行二进制算数解码,从而产生二进制化的系数;使用不同的反二进制化方法对二进制化的系数进行反二进制化。

根据本发明的另一方面,提供了一种视频解码方法,所述方法包括:通过对关于残余块的数据执行二进制算数解码来产生二进制化的离散余弦变换(DCT)系数,其中,通过对当前块的残余块执行熵编码而产生所述关于残余块的数据,基于二进制化的DCT系数的频率是高还是低将二进制化的DCT系数分组为多个组,并通过将不同的反二进制化方法应用到多个组来对DCT系数进行反二进制化;对反二进制化的DCT系数执行反量化,并对反量化的DCT系数执行反DCT,从而重构残余块;产生作为当前块的预测值的预测块并将产生的预测块与重构的残余块相加,从而重构当前块。

根据本发明的另一方面,提供了一种用于对视频数据进行熵解码的设备,所述设备包括算数解码单元和反二进制化单元。算数解码单元接收关于残余块的数据并对接收的数据执行二进制算数解码,从而产生二进制化的系数,其中,使用不同的二进制化方法对通过将当前块的残余块变换为频域而产生的频域的系数进行二进制化,随后对二进制化的系数执行二进制算数编码而产生所述关于残余块的数据。反二进制化单元使用不同的反二进制化方法对二进制化的系数进行反二进制化。

根据本发明的另一方面,提供了一种视频解码设备,所述设备包括熵解码单元、反量化单元、逆变换单元和重构单元。熵解码单元通过对经由当前块的残余块执行熵编码而产生的对关于残余块的数据执行二进制算数解码来产生二进制化的离散余弦变换(DCT)系数,基于二进制化的DCT系数的频率是高还是低将二进制化的DCT系数分组为多个组,并通过将不同反二进制化方法应用到多个组对DCT系数进行反二进制化。反量化单元,对反量化的DCT系数执行反量化。逆变换单元,对反量化的DCT系数执行逆DCT,从而重构残余块。重构单元,产生作为当前块的预测值的预测块并将产生的预测块与重构残余块相加,从而重构当前块。

根据本发明的另一方面,提供了一种在其上记录有用于执行对视频数据进行熵编码的方法、对视频数据进行熵解码的方法、视频编码方法和视频解码方法的程序的计算机可读记录介质。

具体实施方式

现在,将参照附图对本发明示例性实施例进行详细的描述。

图3是根据本发明示例性实施例的视频编码器300的框图。

参照图3,视频编码器300包括残余产生单元310、变换单元320、量化单元330和熵编码单元340。

残余产生单元310产生当前块的残余块。更具体地,残余产生单元310通过执行帧间预测或帧内预测产生作为当前块的预测值的预测块,并从当前块减去预测块,从而产生残余块。

变换单元320将残余产生单元310产生的残余块变换为频域,从而产生残余块的频域系数。优选地,但不是必需的,变换单元320对残余块执行离散余弦变换(DCT),从而产生DCT系数。在以下描述中,为了便于描述,DCT系数将作为频域系数的示例。然而,本领域普通技术人员应该容易理解,DCT系数仅仅是频域系数的示例,通过将残余块变换为频域而产生的所有系数均落入本发明的范围。

量化单元330对变换单元320产生的DCT系数进行量化。更具体地,量化单元330使用预定量化参数(QP)对产生的DCT系数进行量化。

熵编码单元340对量化单元330量化的DCT系数执行熵编码。更具体地,在量化单元330通过扫描DCT系数来一维地重新排列DCT系数之后,熵编码单元340使用运行-级别编码独立地对“运行”和“级别”进行熵编码。更详细地,根据本发明示例性实施例的熵编码单元340使用不同二进制化方法对频域系数中具有非“0”值的系数(即,级别)进行二进制化并对二进制化的系数执行二进制算数编码,将参照图4详细描述该过程。

图4是根据本发明示例性实施例的熵编码单元340的框图。

参照图4,熵编码单元340包括二进制化单元410和算数编码单元420。

二进制化单元410从量化单元330接收量化的DCT系数,并使用不同二进制化方法对一些具有非“0”值的接收DCT系数进行二进制化。

优选地,但不是必需的,根据本发明示例性实施例的二进制化单元410包括分组单元412和二进制化执行单元414。

分组单元412根据DCT系数的频率是高还是低来将从量化单元330接收的DCT系数划分为多个组,将参照图5详细描述该过程。

图5示出根据本发明示例性实施例的DCT系数的分组。图5示出对4×4块执行DCT的情况。

如图5所示的被量化单元330量化的变换系数块中,在变换系数块的左上部的系数是低频余弦系数,在变换系数块的右下部的系数是高频余弦系数。如以上针对现有技术所讨论的,级别主要位于变换系数块的左上部。在变换系数块的左上部的级别具有的值可能大于位于变换系数块的右下部的级别的值。

因此,根据本发明示例性实施例的二进制化单元340根据DCT系数的频率是高还是低将DCT系数分组为多个组,以使用不同二进制化方法对组进行二进制化。如图5所示,DCT系数可被分组为组A、组B、组C和组D。然而,本领域普通技术人员可容易理解,图5中示出的对DCT系数进行分组的方法仅是示例,还可使用除图5示出的方法之外的方法对DCT系数进行分组。

返回参照图4,一旦分组单元412将DCT系数分组为多个组,二进制化执行单元414使用不同二进制化方法对多个组执行二进制化,参照图6将详细描述该过程。

图6是示出根据本发明示例性实施例的DCT系数的二进制化的表格。

参照图6,包括在图5中示出的组A中的DCT系数中,使用具有最大码值(cMax)“7”的截断一元二进制化与二阶指数Golomb二进制化的组合对级别进行二进制化。

更具体地,使用截断一元二进制化对具有绝对值(abs_level)(以下简称为值)“1”至“7”的级别进行二进制化,使用截断一元二进制化和指数Golomb二进制化的组合对具有大于“7”的值的级别进行二进制化。

包括在组B中的DCT系数中,使用具有最大码值“8”的截断一元二进制化与一阶指数Golomb二进制化的组合对级别进行二进制化。

更具体地,使用截断一元二进制化对具有值“1”至“8”的级数进行二进制化,使用截断一元二进制化和指数Golomb二进制化的组合对具有大于“8”的值的级数进行二进制化。

包括在组C中的DCT系数中,使用具有最大码值“10”的截断一元二进制化与一阶指数Golomb二进制化的组合对级别进行二进制化。

更具体地,使用截断一元二进制化对具有值“1”至“10”的级别进行二进制化,使用截断一元二进制化和指数Golomb二进制化的组合对具有大于“10”的值的级别进行二进制化。

包括在组D(图6中未示出)中的DCT系数中,使用具有最大码值“14”的截断一元二进制化与0阶指数Golomb二进制化的组合对级别进行二进制化。

更具体地,使用截断一元二进制化对具有值“1”至“14”的级别进行二进制化,使用截断一元二进制化和指数Golomb二进制化的组合对具有大于“14”的值的级别进行二进制化。

当如图6所示使用不同二进制化方法对DCT系数执行二进制化时,可通过较少数量的二进制串来表示组A的级别的较大值,可通过较少数量的二进制串来表示组D的级别的较小值。

例如,级别具有值“19”。当属于组A的DCT系数的绝对值是“19”时,根据图2中示出的现有技术,其通过共19个二进制串来表示。然而,根据本发明,绝对值通过13个二进制串来表示。换言之,级别值可能比其它组的DCT系数大的组A的DCT系数可通过较少数量的二进制串来表示。

可通过如图6所示的同时改变一元二进制化的最大码值和指数Golomb编码的阶来改变二进制化方法,但是也可通过仅改变一元二进制化的最大码值和指数Golomb编码的阶中的一个来改变二进制化方法。

图7是示出根据本发明另一示例性实施例的DCT系数的二进制化的表格。

还可根据量化参数(QP)来改变DCT系数的级别值和概率分布。已在实验上证明图5中示出的组A的级别值的概率分布随QP而改变。因此,有必要基于QP来改变二进制化DCT系数的方法。

参照图7,根据QP改变用于对图5中示出的组A、组B、组C所包括的DCT系数进行二进制化的方法。“T”表示一元二进制化的最大码值,“k”表示指数Golomb编码的阶。

包括在组D(图7中未示出)中的DCT系数中,与现有技术相似地使用具有最大码值“14”的截断一元二进制化和0阶指数Golomb二进制化的组合对级别进行二进制化。

返回参照图4,由二进制化执行单元414二进制化的DCT系数被发送到算数编码单元420。算数编码单元420对二进制化的DCT系数执行上下文自适应可变长度编码(CAVLC),从而完成熵编码。

图8是示出根据本发明示例性实施例的对视频数据进行熵编码的方法的流程图。

参照图8,在操作810,根据本发明示例性实施例的熵编码单元340使用不同的二进制化方法对通过对当前块的残余块执行DCT而产生的DCT系数进行二进制化。熵编码单元340可根据DCT系数的频率是高还是低将DCT系数分组为多个组,并使用不同的二进制化方法对所述组进行二进制化。作为将进行二进制化的对象的DCT系数是在对其执行DCT之后已使用预定QP量化的DCT系数。

在操作820,熵编码单元340对在操作810中二进制化的DCT系数执行二进制算数编码。优选地,但不是必需的,熵编码单元340执行CABAC。通过二进制算数编码产生的二进制串被插入到比特流。

图9是根据本发明示例性实施例的视频解码器900的框图。

参照图9,视频解码器900包括熵解码单元910、逆变换单元920、逆量化单元930和重构单元940。

熵解码单元910接收包括关于当前块的残余块的数据的比特流,并对关于包括在接收的比特流中的残余块的数据进行熵解码。

关于残余块的数据包括通过根据本发明示例性实施例的对视频数据进行熵编码的方法熵编码的DCT系数。换言之,关于残余块的数据包括关于通过以下方法进行熵编码后的DCT系数的数据,即,通过使用不同的二进制化方法对通过对残余块执行DCT而产生的DCT系数进行二进制化并随后对二进制化的DCT系数进行二进制算数编码。

图10是根据本发明示例性实施例的熵解码单元910的框图。

参照图10,熵解码单元910包括算数解码单元1010和反二进制化单元1020。

算数解码单元1010对包括在比特流中的残余块的数据执行二进制算数解码。优选地,但不是必需的,算数解码单元1010执行CAVLC。

通过二进制算数解码而产生二进制化的DCT系数,所述二进制化的DCT系数随后被发送到反二进制化单元1020。

反二进制化单元1020使用不同的反二进制化方法对二进制化DCT系数执行反二进制化。反二进制化单元1020使用与参照图6和图7描述的二进制化方法相应的反二进制化方法执行反二进制化。更具体地,反二进制化单元1020通过考虑DCT系数的频率和QP使用不同反二进制化方法执行反二进制化。

优选地,但不是必需地,反二进制化单元1020包括分组单元1022和反二进制化执行单元1024。

分组单元1022根据DCT系数的频率是高还是低将在算数解码单元1010中经过二进制算数解码的DCT系数分组为多个组。如图5所示,DCT系数可被分组为4个组。

反二进制化执行单元1024使用不同的反二进制化方法对多个组执行反二进制化。更具体地,反二进制化执行单元1024使用不同的一元二进制化/指数Golomb二进制化方法对所述组执行反二进制化。例如,反二进制化执行单元1024对二进制化的DCT系数中具有非“0”级别值的系数(即,级别)执行反二进制化。将不同的反二进制化方法应用到级别所属的不同的组。

反二进制化执行单元1024通过改变一元二进制化的最大码值和指数Golomb二进制化的阶中的一个来使用不同二进制化方法。换言之,反二进制化执行单元通过将与在视频编码器中DCT系数的二进制化中应用的二进制化方法相应的反二进制化方法应用到所述组来执行反二进制化。

返回参照图9,通过反二进制化单元1020反二进制化而熵解码的DCT系数被反量化单元930反量化。逆变换单元920对被反量化单元930反量化的DCT系数执行离散余弦逆变换(IDCT),从而重构残余块。

重构单元940通过执行帧间预测或帧内预测来产生作为当前块的预测值的预测块,并将产生的预测块与被逆变换单元920重构的残余块相加,从而重构当前块。

图11是示出根据本发明示例性实施例的对视频数据进行熵解码的方法的流程图。

参照图11,在操作1110,熵解码单元910对关于残余块的数据执行二进制算数解码。优选地,但不是必需的,如上所述,解码单元910执行CAVLC。产生残余块的二进制化的DCT系数作为二进制算数解码结果。

在操作1120,熵解码单元910通过使用不同反二进制化方法对二进制化的DCT系数执行反二进制化。换言之,熵解码单元910使用不同反二进制化方法对二进制化的DCT系数执行反二进制化。

更具体地,熵解码单元910可根据DCT系数的频率是高还是低将二进制化的DCT系数分组为多个组,并通过将不同的反二进制化方法应用到组来执行反二进制化。在二进制化的DCT系数中,具有非“0”值的级别值的系数(即,级别)被反二进制化。

本发明还可被实现为计算机可读记录介质或其它计算机可读介质上的计算机可读代码。计算机可读记录介质是可存储其后可被计算机系统读取的数据的任何数据存储装置。计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光学数据存储装置。其它计算机可读介质的示例是载波。计算机可读记录介质也可分布于网络连接的计算机系统上,以便所述计算机可读代码以分布方式被存储并被执行。

虽然参照本发明示例性实施例具体地示出和描述了本发明,但是本领域技术人员应该理解,在不脱离权利要求限定的本发明的精神和范围的情况下,可进行形式和细节的各种改变。

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