改进熵编码的方法

文档序号:7950345阅读:213来源:国知局
专利名称:改进熵编码的方法
技术领域
本发明涉及视频压缩系统中的变换系数数据的熵编码/解码。
背景技术
运动画面的实时传输在多种应用中被采用,如视频会议、网络会议、TV广播和视频电话等。
但是,表示运动画面需要大量的信息,如数字视频通常按画面中每个像素用8比特(1字节)来表示。这种未压缩的视频数据导致巨大的比特量,由于带宽限制,不能通过传统通信网络和传输线路来实时传送。
因此,为了实现实时视频传输,需要很大程度的数据压缩。但数据压缩会损害画面质量。因此,做了很多努力来开发数据压缩技术,使得可在有限带宽的数据连接之上实时传输高质量的视频。
在视频压缩系统中,主要目标是用尽可能少的容量表示视频信息。容量(capacity)用比特来定义,或者按常数值或者按比特/时间单位。在两种情况下,主要目标是降低比特量。
在MPEG*和H.26*标准中描述了最常用的视频编码方法。视频数据在传输之前要经过四个主要处理,即预测、变换、量化和熵编码。
预测处理显著降低待传输的视频序列中每个画面所需要的比特量。预测处理利用了序列中一部分与该序列中其他部分的相似性。由于该预测器部分对于编码器和解码器都是已知的,因此只需要传输差异。这种差异的表示通常只需要很少的容量。预测主要基于表示运动的向量。通常按方块大小(如16×16像素)来执行预测处理。注意,在某些情况下,像素的预测基于相同画面中的相邻像素,而不是前一画面中的像素。这称作内预测(intra prediction),相对于互预测(interprediction)。
表示成数据块(如4×4像素)的剩余(residual)仍然包含内部关联。利用这一点的公知方法是执行二维的块变换。在H.263中,使用8×8离散余弦变换(DCT),而H.264使用4×4整数类型的变换。这将4×4像素变换为4×4变换系数,而较之像素表示,表示系数需要较少的比特。利用内关联的4×4像素阵列的变换产生变换系数的4×4块,较之原来的4×4像素块具有少得多的非零值。
变换系数的直接表示对许多应用来说依然是代价太高。因此执行量化处理来进一步降低数据表示。这样,变换系数又经过量化。量化的简单版本是用一个整数来除参数值,产生可由较少比特表示的较小的数。应该指出,这种量化处理造成重构的视频序列与未压缩的视频序列有所不同。这种现象被称作“有损编码”。这种量化部分的输出被称作量化变换系数。
熵编码意味着不同类型参数的无损表示,如总数据(overhead data)或系统描述、预测数据(通常是运动向量)和来自量化处理的量化变换系数。后者通常表示最大比特消耗。
编码是在视频画面的块大小的部分上执行的。宏块由几个用于亮度和用于色度的子块组成。通常有两个色度分量(Cr,Cb),较之亮度具有其垂直和水平分辨率的一半。在图1中,宏块由16×16亮度像素和各具有8×8像素的两个色度分量组成。这些分量的每个又划分成4×4的块,用小方块来表示。为了编码的目的,亮度和色度4×4块按8×8子块组合在一起,并用Y0-Y3和Cr、Cb标记。
H.263和H.264描述了现有技术的视频压缩中的量化变换系数的熵编码。
H.263基于可变长编码(VLC)。定义一组事件。事件表示用于一个或多个参数的固定值。对事件分配唯一的比特码。设计码表,使得码的长度匹配每个事件的统计概率。如果比特数Bit_number=-log(p),则得到最佳效率,其中p是事件的统计概率(p在0~1的范围)。VLC编码的例子在表1中示出。
在H.264中引入了改进的方法,即引入“上下文适应性(CA)”的概念。该概念采用了基于前面编码的动态改变模型。作为一个例子,可以根据前面事件的出现来选择更合适的VLC表,并因此使编码更有效。在H.264中描述了两个这样的基于CA的方法1.CAVLC,具有适中的上下文适应性,使用VLC表用于编码;2.CABAC(二进制算数编码),具有更复杂的上下文适应性,并最终使用算数编码。这导致最大压缩,但以高复杂性为代价。
CAVLC被认为具有适中的适应性和复杂性。CABAC使用更精细的适应性,但对于某些应用被认为过于复杂,特别对于实时应用。

发明内容
本发明的一个目的是较之现有技术提供一种改进的熵编码方法以平衡较低的复杂性和高性能。在独立权利要求1中定义的特征公开了该方法。
本发明的另一个目的是较之现有技术提供一种改进的熵解码方法以平衡较低的复杂性和高性能。在独立权利要求5中定义的特征公开了该方法。


为了使本发明更容易被理解,下面的讨论将参考附图和表格。其中图1示出了16×16亮度像素的宏块和具有8×8像素的两个色度分量;图2示出了不同的块编码模式的例子;图3示出了待编码的宏块中的块和其近邻;图4是示出根据本发明第一实施例的方法的示意性流程图;图5是示出根据本发明第二实施例的方法的示意性流程图;表1示出了VLC编码的例子;表2示出了LEVEL模式的例子;表3示出了RUN模式的例子。
具体实施例方式
本发明提供用于编码/解码已知具有非零变换系数的块中量化变换系数的方法。为了更好地理解本发明,通过例子在下面说明有关哪个块是否有系数的信息的编码,常常被称作块编码模式(CBP)。
图2中示出了通常用于CBP的不同块类型。块A是16×16亮度块,划分成16个经受二维变换的4×4块。A中的黑线指出了还有该16×16块至4个8×8块的划分。每个4×4块将具有16个变换系数。按下述编码非零值一个比特用于指示在该整个16×16块中是否存在非零系数。在存在系数的情况下,每个8×8块增加一个比特指示是否有非零系数。在存在系数的情况下,每个4×4块增加一个比特来指示是否有非零系数。
块B具有与A同样的划分。黑方块指示了在4×4块中的DC系数。这些块要经受第二4×4变换,以形成一个单独的4×4块。该块具有16个变换系数,而其他的块具有15个系数,因dc系数被移至该DC块。块B是一种特殊类型的内部块。一个比特指出在该4×4 DC变换中是否存在非零系数。另一个比特指出在该整个16×16块是否存在非零系数。在存在系数的情况下,每个4×4块增加一个比特指出是否存在AC系数。
块C是8×8亮度系数,划分成4个要经过二维变换的4×4块。黑方块指出了在4×4块中的DC系数。这些DC系数要经受第二2×2变换以形成单独一个2×2块。该块具有4个系数,而其他的块具有15个系数,因dc系数被移至该DC块。这是两个色度系数之一。考虑到有两个色度分量并期望用一个比特指示在所有这些块中是否存在非零色度系数,可使用与用于块B的类似结构。
本发明与上述现有技术的上下文适应性可变长编码(CAVLC)具有某种相似性,如背景技术中所述。在下面,说明根据H.264的CAVLC编码的基本概念。
在编码期间,存在预测处理来预测每个块中的像素值。从待编码的像素数据中按像素减去该预测值,所得到的结果被称作剩余(residual)信号。
为了得到进一步的压缩,剩余信号要经过产生4×4=16个变换系数的4×4变换。这些系数被组织成16个数的串,使得在统计上系数的大小随着在该串中位置序号的增加而降低。为了得到所需要的压缩,在熵编码之前,这些变换系数进一步经过量化处理。这通常导致大多数系数变成0。通常,经量化变换的系数串如下面的样子6-40200-1001000000(1)在实际CAVLC编码之前,执行CBP8编码,指定哪些8×8块(在图3中用粗体标记)具有变换系数以及那些没有。
在描述CAVLC编码时,图3中块c的量化变换系数被作为例子,其包括上述的系数(1)。
第一步是编码组合参数,该组合参数表示非零系数的数量(N)和到末尾具有绝对值1的系数的数量的组合。对于上述的例子,该参数是(5,2)。如果所有的系数都是0,该组合是(0,0)。该参数利用可变长编码(VLC)码表来编码。为了提高压缩,可以根据上边和左边的4×4块a和b中的N值选择不同的VLC表。
至此,已经指出了最后两个系数具有绝对值1。下一步指定其余的几个6,-4,2。在这一过程中使用“逆序扫描(reverse orderscanning)”。这意味着按照2、-4、6的顺序来编码。这样做是因为可根据前面已编码系数的大小来改变VLC表。在此例子中,使用“开始”VLC来编码2和4。由于在上面4是定义的阈值,使用不同的VLC编码6。
对每个非零系数,用一个比特进一步指出该系数是正的还是负的。
接下来,对最后的非零系数之前的零系数的数量(TZ)编码。在该例子中,上述TZ=5。N设置了TZ的上限。因此根据N选择合适的VLC表。
最后,对0系数的实际分布进行编码,这也是通过按逆序扫描来完成。这样,指出了在最后的1之前有两个0系数。已经知道总共有五个0系数,并且使用合适的VLC表。然后编码-1之前的两个0系数和2之前的一个0系数。然后完成指定所有非零系数和零系数的位置。
如现有技术,CAVLC指定了4×4块中的非零系数数量与1的数量的组合,本发明引入了事件,所述事件把最后非零系数的位置与绝对值是否大于1相组合。另外,为了确定使用哪个VLC,不使用该宏块之外的信息。通常,当找到绝对值大于1的第一个系数,通过按RUN模式开始并按LEVEL模式继续来进行编码。RUN和LEVEL的例子分别在表1和表2中示出。
通过参考图3和上述(1)的系数来说明本发明的一个实施例。注意,尽管这里只说明了编码,本发明也同样可用于解码,只是需要反过来执行。
在块中的变换系数被量化之后,这些系数通过可以是0、±1、±2等的所谓LEVEL值来表示。LEVEL的绝对值被称作ALEVEL,并且LEVEL的符号(+或-)被称作SIGNLEVEL。
如已经指出的,本发明较之现有技术的CAVLC按更直接的方式来开始,根据块中系数的数量,即根据使用图2中示出的哪一个CBP,定义该最后系数的位置(P),按0~3、0~14或0~15来编号。编码组合事件(combined event),该组合事件指出P以及该最后系数的ALEVEL是否等于1或大于1。对于(1)的情况,该事件是(9,=1)。
为了更好的压缩,根据块a和b的P值来选择VLC表,但仅当这些块在宏块之内。这表示了一种简化,因编码/解码是基于宏块的,这使得不必读取与其他宏块相关联的数据。
进一步根据本发明的实施例,使用哪个VLC依赖于块的大小,从而避免了保存可能发生的P或ALEVEL值的编码以及块a和b中的P值。但是,对a和b的依赖仅发生在当它们与待编码的4×4块位于相同的宏块之内时。
如现有技术的CAVLC使用逆序扫描。如果该最后系数的ALEVEL是1,编码按RUN模式继续。
现在参见例子,对最后的1之前的0系数的数量(R)进行编码(R=2)。结合下一个系数(Next)的绝对值是否等于1或大于1的指示来进行编码。在这种情况行,下一个系数是1。
根据最后编码系数的位置,限制后续RUN的可能值。作为一个例子如果最后编码的系数在位置4,RUN的值可以在0~4的范围内。因此,由于值1被排除,需要只允许编码五个RUN值的VLC表。在本设计中就使用这种VLC表。
根据本发明的实施例,直接编码ALEVEL(包括值0)。对于上述编码的例子是ALEVEL=2(知其大于1)ALEVEL=0ALEVEL=4ALEVEL=6注意,对于现有技术的CAVLC,可根据前面编码的系数大小改变VLC表。作为一个例子,在H.264级(level)编码中使用的自适应过程中,有6个可用的不同VLC表,称为VLCn,其中n=0,1,2,3,4,5。在块的开始,n被设置成0。对每个编码的系数,可按下述方式来改变用于编码下一个系数的n如果ALEVEL>3*2n,n增加1但不超过5。
最后,对每个非零系数,一个比特用于指出该系数是正还是负。
图4是示出根据本发明的方法实施例的示意性流程图。
图4的流程图示意性示出了一种方法,用于在表示宏块中剩余像素值的块的量化变换系数的视频编码中提供简化的熵编码过程。在该方法中,量化变换系数被分配到块内按升序的各位置。
该方法在初始步骤41开始。
接下来,执行第一位置指定步骤42。在该步骤42,确定最后非零系数的模数是否在[1,n]之间,或者当所述最后非零系数大于n时,指出>n。
在步骤42中,如果上述测试为真,宏块内最后非零系数的第一位置连同所述最后非零系数的模数被指定为第一可变长编码(VLC)中若干可能事件中的事件。
接下来,在判定步骤43,判定所述最后非零系数的模数是否在[1,n]之间。
如果该判定步骤43的结果为真,该最后非零系数在定义步骤44被定义为当前最后非零系数。
接下来,执行位置数指定步骤45。在该步骤中,朝着位置的降序方向,把在所述当前最后非零系数和该块中下一个非零系数之间具有零系数的位置的数量连同所述下一个非零系数的模数(当所述下一个非零系数的模数在[1,n]之间)或>n的指示(当所述下一个非零系数的模数大于n)指定为第二VLC中若干可能事件中的事件。步骤45还包括把所述下一个非零系数定义成所述当前最后非零系数。
另一方面,如果判定步骤43的结果为假,即如果当前最后非零系数的模数大于n,执行下面的系数模数指定步骤47。
在完成位置数指定步骤45之后,执行判定步骤46。在判定步骤46,判定所述当前最后非零系数的模数是否在[1,n]之间。
如果判定步骤46的结果为真,则重复位置数指定步骤45。
否则,如果判定步骤46的结果为假,即如果当前最后非零系数的模数大于n,执行系数模数指定步骤47。
如果判定步骤43的结果为假,即如果最后非零系数的模数大于n,也进入系数模数指定步骤47。
在系数模数指定步骤47,那些在上述步骤中没有指定的每个系数的模数和相应的位置根据一个或多个VLC来指定。
有益的是,系数模数指定步骤47还包括,在前面的步骤41~46没有指定的所述各系数的第一或最后次序的系数根据具有[n+1,→]范围内可能模数值的第三VLC来指定,而在步骤I~III没有指定的所述系数的其余各系数根据具有
范围内可能模数值的第四VLC来指定。
有益的是,常数n具有值1。
有益的是,第一VLC依赖于相对所述块具有固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
该处理在结束步骤48结束。
图5是示意性示出根据本发明的方法的第二实施例的流程图。
图5的流程图示意性示出了一种方法,用于在表示宏块中剩余像素值的块的量化变换系数的视频解码中提供简化的熵解码过程。在该方法中,量化变换系数被分配到块内按升序的各位置。
该方法在初始步骤51开始。
接下来,执行第一位置解释步骤52。在该步骤52,判定最后非零系数的模数是否在[1,n]之间,或者当所述最后非零系数大于n时,指出>n。
如果为真,宏块内最后非零系数的第一位置连同所述最后非零系数的模数被解释为第一可变长编码(VLC)中若干可能事件中的事件。
接下来,在判定步骤53,判定所述最后非零系数的模数是否在[1,n]之间。
如果该判定步骤53的结果为真,该最后非零系数在定义步骤54被定义为当前最后非零系数。
接下来,执行位置数解释步骤55。在该步骤中,朝着位置的降序方向,把在所述当前最后非零系数和该块中下一个非零系数之间具有零系数的位置的数量连同所述下一个非零系数的模数(当所述下一个非零系数的模数在[1,n]之间)或>n的指示(当所述下一个非零系数的模数大于n)解释成第二VLC中若干可能事件中的事件。步骤55还包括把所述下一个非零系数定义成所述当前最后非零系数。
另一方面,如果判定步骤53的结果为假,即如果当前最后非零系数的模数大于n,执行下面的系数模数解释步骤57。
在完成位置数解释步骤55之后,执行判定步骤56。在判定步骤56,判定所述当前最后非零系数的模数是否在[1,n]之间。
如果判定步骤56的结果为真,则重复位置数解释步骤55。
否则,如果判定步骤56的结果为假,即如果当前最后非零系数的模数大于n,执行系数模数解释步骤57。
如果判定步骤53的结果为假,即如果最后非零系数的模数大于n,也进入系数模数解释步骤57。
在系数模数解释步骤57,那些在上述步骤中没有解释的每个系数的模数和相应的位置根据一个或多个VLC来解释。
有益的是,系数模数解释步骤57还包括,在前面的步骤51~56没有解释的所述各系数的第一或最后次序的系数根据具有[n+1,→]范围内可能模数值的第三VLC来解释,而在步骤I~III没有解释的所述系数的其余各系数根据具有
范围内可能模数值的第四VLC来解释。
有益的是,常数n具有值1。
有益的是,第一VLC依赖于具有相对于所述块的固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
该处理在结束步骤58结束。
权利要求
1.一种在用于表示宏块中各剩余像素值的块的量化变换系数的视频编码中提供简化的熵编码过程的方法,其中,所述系数被分配到块内按升序的各位置,该方法的特征在于包括步骤I.指定该块内最后非零系数的第一位置结合所述最后非零系数的模数(如果所述最后非零系数的模数在[1,n]之间)或>n的指示(如果所述最后非零系数的模数大于n)作为第一可变长编码(VLC)中若干可能事件之中的事件,II.如果所述最后非零系数的模数在[1,n]之间,定义所述最后非零系数作为当前最后非零系数,并且a.朝着位置的降序方向,指定在所述当前最后非零系数和该块内下一个非零系数之间具有零系数的位置的数量结合所述下一个非零系数的模数(当所述下一个非零系数的模数在[1,n]之间)或>n的指示(当所述下一个非零系数的模数大于n)作为第二VLC中若干可能事件中的事件,并把所述下一个非零系数定义成所述当前最后非零系数,b.如果所述当前最后非零系数的模数在[1,n]之间,则重复步骤a。III.如果所述最后或当前最后非零系数的模数大于n,a.根据一个或多个VLC来指定在步骤I~II中没有指定的每个系数的模数和相应的位置。
2.如权利要求1所述的方法,其中步骤III.a还包括在步骤I~III没有指定的所述各系数的第一或最后次序的系数根据具有[n+1,→]范围内可能模数值的第三VLC来指定,而在步骤I~III没有指定的所述系数的其余各系数根据具有
范围内可能模数值的第四VLC来指定。
3.如权利要求1或2所述的方法,其中n=1。
4.如权利要求1或2所述的方法,其中所述第一VLC依赖于相对所述块具有固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
5.如权利要求3所述的方法,其中所述第一VLC依赖于相对所述块具有固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
6.一种在用于表示宏块中各剩余像素值的块的量化变换系数的视频解码中提供简化的熵解码过程的方法,其中,所述系数被分配到块内按升序的各位置,该方法的特征在于包括步骤IV.解释该块内最后非零系数的第一位置结合所述最后非零系数的模数(如果所述最后非零系数的模数在[1,n]之间)或>n的指示(如果所述最后非零系数的模数大于n)作为第一可变长编码(VLC)中若干可能事件之中的特定事件,V.如果所述最后非零系数的模数在[1,n]之间,定义所述最后非零系数作为当前最后非零系数,并且a.朝着位置的降序方向,解释在所述当前最后非零系数和该块内下一个非零系数之间具有零系数的位置的数量结合所述下一个非零系数的模数(当所述下一个非零系数的模数在[1,n]之间)或>n的指示(当所述下一个非零系数的模数大于n)作为第二VLC中若干可能事件中的特定事件,并把所述下一个非零系数定义成所述当前最后非零系数,b.如果所述当前最后非零系数的模数在[1,n]之间,则重复步骤a。VI.如果所述最后或当前最后非零系数的模数大于n,a.根据一个或多个VLC来解释在步骤IV~V中没有解释的每个系数的模数和相应的位置。
7.如权利要求6所述的方法,其中步骤VI.a还包括在步骤IV~VI没有解释的所述各系数的第一或最后次序的系数根据具有[n+1,→]范围内可能模数值的第三VLC来解释,而在步骤IV~VI没有解释的所述系数的其余各系数根据具有
范围内可能模数值的第四VLC来解释。
8.如权利要求6或7所述的方法,其中n=1。
9.如权利要求6或7所述的方法,其中所述第一VLC依赖于相对所述块具有固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
10.如权利要求8所述的方法,其中所述第一VLC依赖于相对所述块具有固定位置的一个或多个近邻块,如果所述一个或多个近邻块在该宏块之内。
全文摘要
本发明涉及视频压缩系统中的变换系数数据的熵编码/解码。为了对表示视频图像块的系数进行熵编码,本发明的优选实施例引入了事件,所述事件把块中最后非零系数的位置与绝对值是否大于1相结合。另外不需要宏块之外的信息来确定使用哪个VLC。通常按RUN模式开始编码系数,并且当找到绝对值大于1的第一系数则继续按LEVEL模式进行编码。
文档编号H04N7/26GK101095359SQ200580045490
公开日2007年12月26日 申请日期2005年12月27日 优先权日2004年12月30日
发明者吉斯勒·比约特加德 申请人:坦德伯格电信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1