CN102377996B - 上下文自适应可变长编码方法及装置 - Google Patents
上下文自适应可变长编码方法及装置 Download PDFInfo
- Publication number
- CN102377996B CN102377996B CN201010248963.5A CN201010248963A CN102377996B CN 102377996 B CN102377996 B CN 102377996B CN 201010248963 A CN201010248963 A CN 201010248963A CN 102377996 B CN102377996 B CN 102377996B
- Authority
- CN
- China
- Prior art keywords
- coefficient
- coding
- rank
- code table
- nonzero coefficient
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 206010019133 Hangover Diseases 0.000 claims description 70
- 238000005192 partition Methods 0.000 claims 2
- 230000006835 compression Effects 0.000 abstract description 15
- 238000007906 compression Methods 0.000 abstract description 15
- 230000008707 rearrangement Effects 0.000 description 26
- 101000635878 Homo sapiens Myosin light chain 3 Proteins 0.000 description 8
- 102100030971 Myosin light chain 3 Human genes 0.000 description 8
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 3
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 102100040160 Rabankyrin-5 Human genes 0.000 description 1
- 101710086049 Rabankyrin-5 Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供一种上下文自适应可变长编码方法及装置,其中,方法包括:确定各个编码块的拖尾系数之外的非零系数对应的码表,计算所述码表中各阶对应的非零系数的数目,将所述码表中各阶依照非零系数的数目从多到少的顺序重新排列;对所述非零系数的数目及拖尾系数的数目进行编码;按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码;对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码。本发明实施例能够解决现有技术中CAVLC中压缩效率低的问题,提高压缩效率。
Description
技术领域
本发明实施例涉及视频编码技术领域,尤其涉及一种上下文自适应可变长编码(Context-Adaptive Variable-Length Coding,简称CAVLC)方法及装置。
背景技术
随着宽带网络的发展和用户需求的提高,多媒体技术及其相关应用得到了越来越多的关注,多媒体技术被认为是未来高速网络的主流应用之一。基于IP的多媒体应用分为三类:一类是交互应用,例如,可视电话和视频会议;另一类是与编码的视频流下载;还有一类是基于IP的视频流。
与传统应用相比较,多媒体应用的实时性要求更为严格,对带宽的需求更大。对于无线通信而言,随着用户数量不断增多,视频业务激增,无线资源就越来越紧张。
对于视频业务,要想减小无线传输视频时所需的带宽,方法之一就是在保证视频质量的同时,提高压缩效率。目前流行的H.246标准包括三种编码方式:通用可变长编码(Universal Variable-Length Coding,简称UVLC)、CAVLC和基于上下文自适应二进制算术编码(Context-AdaptiveBinary Arithmetic Coding,简称CABAC)。
CAVLC是通过已编码句法元素的情况动态调整编码中使用的码表,取得极高的压缩比。CAVLC对除了拖尾系数之外的非零系数幅值编码时,根据概率统计给出了7种概率模型,即7个码表。对某个系数的幅值编码时,根据已编码的幅值及自身幅值自适应地选择合适的码表,其中,每个码表的概率分布特性是固定的。依据选定的码表,通过计算及查表,对非零系数编码。
CAVLC的码表中,一行为一阶,一阶就是一个区间。在编码过程中,码表的区间是固定的。通过计算找到待编码的系数的幅值对应的区间,确定编码后的码长和码字。幅值越大,出现的概率越小,码长越长;幅值越小,码长越短。
现有技术中采用CAVLC编码时,对非零系数(除拖尾系数外)进行编码,所选择的码表的概率分布特性是固定的。而在实际的编码过程中,某些编码块的实际概率分布与码表中给定的概率分布特性不匹配,这就导致了压缩效率低。
发明内容
本发明实施例提供一种CAVLC方法及装置,用以解决现有技术中CAVLC方法中压缩效率低的问题,提高压缩效率。
本发明实施例提供了一种CAVLC方法,包括:
确定各个编码块的拖尾系数之外的非零系数对应的码表,计算所述码表中各阶对应的非零系数的数目,将所述码表中各阶依照非零系数的数目从多到少的顺序重新排列;
对所述非零系数的数目及拖尾系数的数目进行编码;
按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码;
对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码。
本发明实施例还提供了一种CAVLC装置,包括:
排序模块,用于确定各个编码块的拖尾系数之外的非零系数对应的码表,计算所述码表中各阶对应的非零系数的数目,将所述码表中各阶依照非零系数的数目从多到少的顺序重新排列;
第一编码模块,用于对所述非零系数的数目及拖尾系数的数目进行编码;
第二编码模块,与排序模块连接,用于按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码;
第三编码模块,用于对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码;
输出模块,用于将经过所述第一编码模块、第二编码模块和第三编码模块编码后的数据输出。
本发明实施例提供的CAVLC方法及装置,将各个码表中各阶依照非零系数的数目从多到少的顺序排列,这样,对应的系数数目较多的阶(也就是出现概率较多的阶)被排到码表的靠前的位置,对应于较短的编码长度;对应的系数数目较少的阶(也就是出现概率较少的阶)被排到码表的靠后的位置,对应于较长的编码长度。调整后的码表的概率分布特性与待编码的系数的概率分布特性相匹配,采用调整后的码表编码时,出现概率较多的系数采用较短的编码长度编码,从而可以提高压缩效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1所示为本发明CAVLC方法实施例一的流程图;
图2所示为本发明实施例第一指示信息的一种结构示意图;
图3所示为本发明实施例第一指示信息的另一种结构示意图;
图4所示为本发明实施例第二指示信息的一种结构示意图;
图5所示为本发明实施例第二指示信息的另一种结构示意图;
图6所示为本发明实施例第二指示信息的又一种结构示意图;
图7所示为本发明实施例中涉及到的MB量化示意图;
图8所示为本发明CAVLC装置实施例一的结构示意图;
图9所示为本发明CAVLC装置实施例二的结构示意图;
图10所示为本发明CAVLC装置实施例三的结构示意图;
图11所示为本发明CAVLC装置实施例四的结构示意图;
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示为本发明CAVLC方法实施例一的流程图,包括:
步骤101、确定各个编码块的拖尾系数之外的非零系数对应的码表,确定每个码表中每个系数所属的阶,计算每个码表中各阶对应的非零系数的数目,将各个码表中各阶依照非零系数的数目从多到少的顺序重新排列。计算每个码表中各阶对应的非零系数的数目时,可以基于宏块或片计算。
步骤102、对非零系数的数目及拖尾系数的数目进行编码。
步骤103、按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码。
步骤104、编码最后一个非零系数前零的数目以及每个非零系数前连续的零的数目。
该实施例中,在步骤102和103之间还可以包括编码拖尾系数的步骤。
下面详细介绍步骤101的实现过程。
如表一所示为本发明实施例中涉及到的码表Level VLC1的内容,LevelVLC1是7种码表中的一种。
表一、本发明实施例中涉及到的码表Level VLC1的内容
表一中,“阶(Code no)”这一项中,括号内的数字表示待编码的无符号值。
CAVLC的每个码表都有16个阶,每个阶包括一个区间,每个区间里的值采用统一的编码长度。不同阶采用的编码长度不同。阶序号越高,概率越小,编码长度越长。
在步骤101中,首先确定片(slice)或宏块(Micro Block,简称MB)中拖尾系数之外的每个非零系数对应的码表。对于每个码表,确定每个系数所属的阶。以表一为例,基于片(slice)或宏块(MB),对于拖尾系数之外的非零系数属于VLC1的,确定其所属的阶,最后对各阶的系数数目作相应的统计计算。例如:基于MB,对各阶数目作统计计算,得到结果可以如下:
阶0:系数数目75;阶1:系数数目25;阶2:系数数目35;阶3:系数数目32;阶4:系数数目12;阶5:系数数目10;阶6:系数数目10;阶7:系数数目8;阶8:系数数目8;阶9:系数数目38;阶10:系数数目3;阶11:系数数目0;阶12:系数数目0;阶13:系数数目0;阶14:系数数目0;阶15:系数数目0。
根据各阶的系数数目将各阶依照系数数目进行重新排序,例如依照非零系数的数目从多到少的顺序重新排列,将阶9排于阶0后,而阶1排于阶3后,对于系数较多的阶采用较短的码字进行编码,从而可以提高编码效率。重新排序后的码表如表二所示。
表二、重新排列后的码表Level VLC1
然后,采用重新排列后的码表编码拖尾系数之外的非零系数的幅值了。
本发明实施例一提供的方法,将各个码表中各阶依照非零系数的数目从多到少的顺序重新排列,这样,对应的系数数目较多的阶(也就是出现概率较多的阶)被排到码表的靠前的位置,对应于较短的编码长度;对应的系数数目较少的阶(也就是出现概率较少的阶)被排到码表的靠后的位置,对应于较长的编码长度。调整后的码表的概率分布特性与待编码的系数的概率分布特性相匹配,采用调整后的码表编码时,出现概率较多的系数采用较短的编码长度编码,从而可以提高压缩效率。
进一步,7个码表中,码表Level VLC0)的14阶和15阶可以不用调整顺序,因为这个码表中14阶和15阶的待编码的无符号值相对于其他阶来说比较多,如果与其他阶的顺序调整,则无法对应其他阶的待编码的无符号值的数目。码表Level VLC1-Level VLC6中,15阶也可以不用调整顺序,因为这些码表中,15阶的待编码的无符号值相对于其他阶来说比较多,如果与其他阶的顺序调整,则无法对应其他阶的待编码的无符号值的数目。以表一为例,如果将15阶和0阶的顺序对调,那么15阶中的待编码的无符号值的数目要大于0阶的待编码的无符号值的数目,无法对应0阶的无符号值的数目。
在编码时,如果调整了码表,那么需要通过指示信息来把所作的调整通知给解码端,否则解码端无法正确解码。第一指示信息是用于指示码表的调整信息,可以包括进行了重新排列的阶以及码表的信息,以及进行了重新排列的阶最终的位置。例如,第一指示信息中可以指明哪个码表的哪个阶进行了重新排列,重新排列后最终被排列到了码表中的什么位置,等等。
第一指示信息可以携带在片或宏块中,具体可以携带在片的头(sliceheader)中,也可以作为一个独立的部分携带在片中,可以携带在MB的头中,也可以作为一个独立的部分携带在MB中。
下面说明第一指示信息的具体组成。
(1)第一指示信息包括重新列了的阶序号,而不包括没有重新排列的阶序号
如图2所示为本发明第一指示信息的一种结构示意图,该结构包括字段F、字段T和码表排序信息字段。码表排序信息字段可以包括码表标识字段TABLEx、重新排序的字段Qx和阶序号变化信息字段Gx,x的取值可以为0、1、2、3、4、5、6中的任一个,x的每个取值对应于一个码表。例如,如果码表Level VLC1做了调整,那么图2中可以包括TABLE1字段、Q1字段和G1字段这三个字段,这三个字段中的信息可以表示对于码表Level VLC1所作的调整信息。图2的结构中以包括Level VLC1和Level VLC2的调整信息为例,当然,也可以包括更多码表的调整信息。
下面分别描述图2中各个字段的含义。
字段F用于表示是否***表对阶进行了重新排序。该字段包含1比特(bit),如果字段F取值为0,表示没***表对阶进行重新排序,所有的码表都与现有的码表的结构相同。如果字段F的取值为1,表示***表对阶进行了重新排序。
字段T用于表示有几个码表对阶进行了重新排序。该字段包含3比特,000这个比特组合是预留的(reserved)。001表示有一个码表对阶进行了重新排序,010表示有2个码表对阶进行了重新排序,011表示有3个码表对阶进行了重新排序,其余依次类推,总之,除了000之外的其他几种比特组合分别能够表示对阶做了重新排序的码表的数目。
字段TABLEx用于表示对阶做了重新排序的码表标识。该字段包含3比特,000表示码表Level VLC0对阶做了重新排序;001表示码表Level VLC1对阶做了重新排序;010表示码表Level VLC2对阶做了重新排序,其余依次类推,总之,除了111之外的其他几种比特组合分别能够作为对阶做了重新排序的码表的标识。当然,各个码表与3比特的比特组合之间的对应关系也不限于上述所述的关系,例如,也可以用000作为码表Level VLC6的标识。只需要编码端和解码端事先协商好各个码表与3比特的比特组合之间的对应关系即可。
字段Qx用于表示TABLEx中有多少个阶做了重新排序。该字段包含4比特。因为各个码表的总的阶数均为16,因此可以用4比特来表示做了重新排序的阶数。
字段Gx用于表示重新排序前的阶序号和重新排序后的阶序号的信息。该字段包含8*Z比特,N等于字段Qx的取值。例如,如果某个码表中第2、4、5和8这5阶进行了重新排序,那么Gx包含4*8=32个比特。每一阶用8个比特来表示重新排序前和重新排序后的阶序号,前4比特可以用来表示重新排序前的阶序号,后4比特用来表示重新排序后的阶序号。例如,对于第2阶,可以用00100100这8比特来表示,前4比特0010表示重新排序前的阶序号是2,0100表示重新排序后的阶序号是4。
应用如图2所示的结构时,需要满足如下的条件:
(1+3+3+4+8*N+某个码表重新排序后的所有的编码长度)<某个码表重新排序前的所有的编码长度。
也就是说,采用如图2所示的结构时,应当保证对码表重新排序后的CAVLC编码所需的长度小于对码表重新排序前的CAVLC编码的长度,从而能够提高编码效率。
(2)指示信息既包括重新排列了的阶序号,也包括没有重新排列的阶序号
如图3所示为本发明第一指示信息的另一种结构示意图,该结构包括字段F、字段T和码表排序信息字段。码表排序信息字段可以包括码表标识字段TABLEx和阶序号变化信息字段G’x。
字段G’x用于表示所有阶的排列方式。对于Level VLC0,该字段可以包含56个比特,能够表示0-13阶这14个阶的排列方式。每个阶占用4比特,将每个阶对应的4比特顺序排列。对于Level VLC1-Level VLC6,该字段可以包括60个比特,能够表示0-14这15个阶的排列方式。每个阶占用4比特,将每个阶对应的4比特顺序排列。
应用如图3所示的结构时,需要满足如下的条件:
(1+3+3+56+某个码表重新排序后的所有的编码长度)<某个码表重新排序前的所有的编码长度;
或者,(1+3+3+60+某个码表重新排序后的所有的编码长度)<某个码表重新排序前的所有的编码长度。
也就是说,采用如图3所示的结构时,应当保证对码表重新排序后的CAVLC编码所需的长度小于对码表重新排序前的CAVLC编码的长度,从而能够提高编码效率。
通常编码块中0分布特性包括编码块中非零系数的数目以及拖尾系数的数目。如图1所示的实施例中,步骤102中需要编码4x4编码块(Block)中非零系数的数目以及拖尾系数的数目,即,需要编码4x4块中的0分布特性。
现有的0分布特性的编码方式为:遍历编码块,计算出当前块值(NumberCurrent,简称NC)、非零系数数目(TotalCoeffs)和拖尾系数数目(TrailingOnes);根据NC、非零系数数目和拖尾系数上数目查找码表,对0分布特性进行编码。其中,除了色度的直流系数外,其他系数类型的NC值时根据当前块左边4x4块的非零系数数目(NA)和当前块上面4x4编码块的非零系数数目(NB)计算获得。非零系数数目是4x4编码块经过离散余弦变换(Discrete Cosine Transform,简称DCT)和量化后的非零系数的数目。拖尾系数数目即尾部的+1和-1的数目,即4x4编码块经过DCT和量化后,逆序计算出+1和-1的数目,并且自逆序算起的+1和-1这一串数目中除了0以外没有其他数。
这种非0分布特性的编码方式是针对每个4x4编码块分别编码的,这种编码方式的压缩效率比较低。
为了提高压缩效率,可以对具有相同或相近的0分布特性的编码块统一编码。
如图1所示的实施例中,步骤102具体可以包括:
步骤102a、获取各个编码块的当前块值(Number Current,简称NC)、非零系数的数目和拖尾系数的数目。
步骤102b、将具有相同的NC,具有相同或相差1的非零系数的数目,且具有相同或相差1的拖尾系数的数目的编码块列入同一个编码组。
步骤102c、对同一个编码组中的各个编码块统一进行0分布特性的编码,对不在编码组中的其他编码块分别进行0分布特性的编码。
例如,步骤102a中,获取到了各个4x4编码块的NC、非零系数数目和拖尾系数数目,其中,NC、非零系数数目和拖尾系数数目分别为NC1、TotalCoeff1和TrailingOnes1的4x4编码块有X1个,将这X1个4x4编码块列入编码组group0,group0的编码的长度为Y1。非零系数数目和拖尾系数数目分别为NC2、TotalCoeff2和TrailingOnes2的4x4编码块有X2个,将这X2个4x4编码块列入编码组group1,group1的编码的长度为Y2。以此类推,将各个4x4编码块列入各个编码组。
或者,步骤102a中,获取到了各个4x4编码块的NC、非零系数数目和拖尾系数数目,其中,NC、非零系数数目和拖尾系数数目分别为NC1、TotalCoeff1(或者TotalCofeff1+1)和TrailingOnes1(或者TrailingOnes+1)的4x4编码块有X1’个,X1’=X11+X12+......+X1j1,其中,j1小于或等于4。NC、非零系数数目和拖尾系数数目分别为NC1、TotalCoeff1和TrailingOnes1的编码块的数目为X11,编码长度为Y11;NC、非零系数数目和拖尾系数数目分别为NC1、者TotalCofeff1+1和TrailingOnes1的编码块的数目为X12,编码长度为Y12;NC、非零系数数目和拖尾系数数目分别为NC1、TotalCoeff1和TrailingOnes1+1的编码块(将此种编码块称为c类编码块)的数目为X13,编码长度为Y13;NC、非零系数数目和拖尾系数数目分别为NC1、TotalCofeff1+1和TrailingOnes1+1的编码块(将此种编码块称为d类编码块)的数目为X14,编码长度为Y14。将这X1’个4x4编码块列入编码组group0。
非零系数数目和拖尾系数数目分别为NC2、TotalCoeff2(或者TotalCoeff2+1)和TrailingOnes2(或者TrailingOnes2+1)的4x4编码块有X2’个,X2’=X21+X22+......+X2j1,其中,j1小于或等于4。NC、非零系数数目和拖尾系数数目分别为NC2、TotalCoeff2和TrailingOnes2的编码块(将此种编码块称为a’类编码块)的数目为X21,编码长度为Y21;NC、非零系数数目和拖尾系数数目分别为NC2、者TotalCofeff2+1和TrailingOnes2的编码块(将此种编码块称为b’类编码块)的数目为X22,编码长度为Y22;NC、非零系数数目和拖尾系数数目分别为NC2、TotalCoeff2和TrailingOnes2+1的编码块(将此种编码块称为c’类编码块)的数目为X23,编码长度为Y23;NC、非零系数数目和拖尾系数数目分别为NC1、TotalCofeff2+1和TrailingOnes2+1的编码块(将此种编码块称为d’类编码块)的数目为X24,编码长度为Y24。将这X2’个4x4编码块列入编码组group1。以此类推,将各个4x4编码块列入各个编码组。
在编码的时候,如果将具有相同或相近的0分布特性的编码块进行了统一编码,则需要通过第二指示信息来把各个编码组中包括的编码块的信息通知给解码端。第二指示信息是用于指示各个编码组中的编码块的信息。
第二指示信息可以携带在片或MB中,具体可以携带在片的头中,也可以作为一个独立的部分携带在片中,可以携带在MB的头中,也可以作为一个独立的部分携带在MB中。
下面说明第二指示信息的具体组成。
(1)将具有相同的NC、非零系数数目和拖尾系数数目的编码块列入同一个编码组的情况
如图4所示为本发明第二指示信息的一种结构示意图,该结构包括字段F’、字段M和各个编码组的0分布特性字段。编码组的0分布特性字段包括编码块数目字段Ny、编码块位置字段Py和编码组的码字字段Pcy。y的取值可以是0、1、2、......、B。B是字段M2的取值。y的每一个取值对应于一个编码组。例如,如果组成了3个编码组,分别是group0、group1和group2,那么图4中可以包括N0字段、P0字段和Pc0字段,这三个字段的信息表示编码组group0的0分布特性。还可以包括N1字段、P1字段和Pc1字段,这三个字段的信息表示编码组group1的0分布特性。还可以包括N2字段、P2字段和Pc2字段,这三个字段的信息表示编码组group2的0分布特性。
下面分别描述图4中各个字段的含义。
字段F’用于表示片内是否将具有相同的非0分布特性的编码块列入同一个编码组中。该字段包含1比特。字段F’的取值为1可以表示片内没有将具有相同的非0分布特性的编码块列入同一个编码组中。字段F’的取值为0可以表示片内将具有相同的非0分布特性的编码块列入同一个编码组中。
字段M用于表示片内包括几个编码组。该字段包含2比特或3比特,也可以是其他的比特数目。例如,00表示片内包括1个编码组,01表示片内包括2个编码组,等等。
字段Ny用于表示编码组中的编码块的数目。该字段包含4比特。例如,0000表示编码组中包括3个编码块;0001表示编码组中包括4个编码块,等等。每个比特组合所表示的编码块的数目,可以由编码端和解码端事先协商好。通常编码组中编码块的数目应当不低于3个,如果编码组中编码块的数目低于3个,那么压缩效率的提高效果不大。
字段Py用于表示编码组中的每个编码块在片内的相对位置。该字段包含8*(D+3)个比特,D是字段Ny的取值。每个编码块用8比特来表示,总共有D个编码块。前4比特表示编码块所属的MB在片内的相对位置,后4个比特表示编码块在MB内的相对位置。
字段Pcy用于表示编码块的编码块的码字。该字段包括扩6比特。该码字需要保存在编码端和解码端。
如图5所示为本发明第二指示信息的另一种结构示意图,该结构包括字段F’、字段M和各个编码组的0分布特性字段。编码组的0分布特性字段包括编码块数目字段Ny’、编码块位置字段Py’和编码组的码字字段Pcy。y的取值可以是0、1、2、......、B。B是字段M2的取值。y的每一个取值对应于一个编码组。
图5与图4所示的结构的不同之处是:图5中各个编码组的0分布特性字段包括编码块数目字段Ny’、编码块位置字段Py’和编码组的码字字段Pcy,图4中各个编码组的0分布特性字段包括编码块数目字段Ny、编码块位置字段Py和编码组的码字字段Pcy。如果是将同一个片内的具有相同的0分布特性的各个编码块列入同一个编码组的情况,则第二指示信息可以采用图4所示的结构;如果是将同一个MB内的具有相同的0分布特性的编码块列入同一个编码组的情况,则第二指示信息可以采用图5所示的结构。
图5中,字段Ny’也用于表示编码组中的编码块的数目,不过该字段包含的比特数不同于字段Ny,该字段包含3比特。字段Py’用于表示编码组中的每个编码块在MB内的相对位置,该字段包含4比特。
当将同一个片内具有相同的0分布特性的编码块列入同一个编码组进行统一编码时,应当满足如下条件:
其中,S是编码组的数目;
(b)4+8Xi+6<XiYi;
(c)当i大于4时,找到(XiYi)-(4+8Xi+6)的值最大的4个编码组,并且对这四个编码组中的编码块统一编码。
Xi指编码组groupi中具有相同0分布特性的编码块有Xi个,Yi指0分布特性的原编码长度为Yi。
当将同一个MB内具有相同的0分布特性的编码块列入同一个编码组进行统一编码时,应当满足如下条件:
(f)4+4Xi+6<XiYi;
(c)当i大于4时,找到(XiYi)-(4+8Xi+6)的值最大的4个编码组,并且对这四个编码组中的编码块进行统一编码。
也就是说,应当保证将具有相同的0分布特性的编码块列入相同编码组进行统一编码时,所需的编码长度小于没有将相同的0分布特性的编码块列入相同编码组进行编码时所需的编码长度。
(2)将具有相同的NC、具有相近的非零系数数目和拖尾系数数目的编码块列入同一个编码组的情况
如图6所示为本发明第二指示信息的又一种结构示意图,图6所示的结构在图5所示的结构的基础上增加了附加字段E。将具有相同或相近的0分布特性的编码块列入同一个编码组,是指将NC、非零系数数目和拖尾系数数目满足如下四种情况中的任意一种的编码块都列入同一个编码组:
(I)NC=L,TotalCoeff=m,TrailingOnes=n;
(II)NC=L,TotalCoeff=m+1,TrailingOnes=n;
(III)NC=L,TotalCoeff=m,TrailingOnes=n+1;
(IV)NC=L,TotalCoeff=m+1,TrailingOnes=n+1。
上述第(I)中情况对应于0分布特性相同的情况,这种情况下对于编码组内的所有编码块采用统一的编码长度。对于其余的三种情况,编码组内所有编码块也采用统一的编码长度,但是拖尾系数和非零系数的数目不同。附加字段E用于表示拖尾系数的数目和非零系数的数目与0分布特性相同的情况下的拖尾系数和非零系数的差别。附加字段E可以包含2比特。例如,如果字段E取值00,表示编码块的非零系数的数目和拖尾系数的数目与0分布特性相同的情况下的拖尾系数和非零系数的数目相同。如果字段E取值01,表示编码块的非零系数与0分布特性相同的情况下的非零系数的数目相同,拖尾系数与0分布特性相同的情况下相比,加1。如果字段E取值10,表示编码块的非零系数与0分布特性相同的情况下的非零系数的数目相比,加1,拖尾系数与0分布特性相同的情况下相同。如果字段E取值11,表示编码块的非零系数与0分布特性相同的情况下的非零系数的数目相比,加1,拖尾系数与0分布特性相同的情况下比,加1。
对于如图5所示的结构来说,也可以增加字段E。字段E的具体含义以及取值,与图6相同,不再赘述。
当将同一个片内具有相近的0分布特性的编码块列入相同编码组进行统一编码时,应当满足如下条件:
(i)4+8Xi+6+2Xi<Xi1*Yi1+......+Xiji*Yiji;其中,ji小于等于4;
(j)Yiji>10;
(k)当i大于4时,找到(Xi1*Yi1+......+Xiji*Yiji)-(4+8Xi+6+2Xi)值最大的四个编码组,并对此4个编码组采用统一编码方法。
当将同一个MB内具有相近的0分布特性的编码块列入相同编码块进行统一编码时,应当满足如下条件:
(i)4+4Xi+6+2Xi<Xi1*Yi1+......+Xiji*Yiji;其中,ji小于等于4;
(j)Yiji>6;
(k)当i大于4时,找到(Xi1*Yi1+......+Xiji*Yiji)-(4+4Xi+6+2Xi)值最大的四个编码组,并只对此4个编码组采用统一编码方法。
对于编码组中的各个编码块,可以不需要编码0分布特性,而直接编码拖尾系数。因为编码组中的各个编码块的分布特性已经统一编码过了。对于非编码组中的编码块,则需要先编码0分布特性,再编码拖尾系数。
如图1所示的实施例中,在步骤101之前,可以将MB进行DCT后,再分别对各个编码块进行量化。这样可以进一步提高编码效率。如图7所示为本发明实施例中涉及到的MB量化示意图,首先将大小为16x16的MB进行DCT,然后分割得到16个大小为4x4的编码块(Block),然后再分别对各个编码块进行量化。
本发明实施例提供的CAVLC方法,将确定除了拖尾系数之外的非零系数对应的码表,计算每个码表中各阶对应的非零系数的数目,调整各个码表的概率分布特性,使得各个码表中各阶依照非零系数的数目从多到少的顺序排列;这样,对应的系数数目较多的阶(也就是出现概率较多的阶)被排到码表的靠前的位置,对应于较短的编码长度;对应的系数数目较少的阶(也就是出现概率较少的阶)被排到码表的靠后的位置,对应于较长的编码长度。调整后的码表的概率分布特性与带编码的系数的概率分布特性相匹配,采用调整后的码表编码时,出现概率较多的系数采用较短的编码长度编码,从而可以提高压缩效率。
并且,将同一个片内或MB内具有相同或相近的0分布特性的编码块列入到同一个编码组中进行统一编码,而不是对各个编码块的0分布特性进行统一编码,这样能够进一步提高压缩效率。
另外,将MB先进行DCT后,再分别对各个编码块分别量化,可以进一步提高编码效率。
如图8所示为本发明CAVLC装置实施例一的结构示意图,具体应用时可以为一视频编码器,或者是置于具有视频编码功能的设备中。该装置包括排序模块11、第一编码模块12、第二编码模块13和第三编码模块14和输出模块15。排序模块11用于确定各个编码块的拖尾系数之外的非零系数对应的码表,计算码表中各阶对应的非零系数的数目,将码表中各阶依照非零系数的数目从多到少的顺序进行重新排列。第一编码模块12用于对非零系数的数目及拖尾系数的数目进行编码。第二编码模块13与排序模块11连接,用于按照排序模块11重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码。第三编码模块14用于对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码。输出模块15分别与第一编码模块12、第二编码模块13和第三编码模块14连接,用于将经过第一编码模块12、第二编码模块13和第三编码模块14编码后的数据输出。
如图8所示的装置还可以包括第四编码模块16,第四编码模块16与输出模块15连接,第四编码模块16用于编码拖尾系数。输出模块15将第四编码模块16编码后的数据输出。
如图9所示为本发明CAVLC装置实施例二的结构示意图,该实施例提供的装置,在如图8所示的实施例的基础上增加了第一指示模块17,该第一指示模块17与排序模块11连接,用于在MB或片内携带第一指示信息,第一指示信息用于指示经过排序模块11处理后的码表的排序信息。
图9所示的实施例提供的装置,还可以在如图8所示的实施例的基础上增加处理模块18,该处理模块18与排序模块11、第一编码模块12、第二编码模块13、第三编码模块14和第四编码模块16连接,用于对MB进行DCT,把DCT之的MB分割成多个编码块,对编码块量化,使得排序模块11、第一编码模块12、第二编码模块13、第三编码模块14和第四编码模块16对经过量化后的编码块进行处理。
如图10所示为本发明CAVLC装置实施例三的结构示意图,该实施例中,第一编码模块12包括获取单元121、调整单元122和编码单元123。获取单元121用于获取各个编码块的NC。调整单元122与获取单元121连接,用于根据获取单元121获取的NC,把将具有相同的NC,具有相同或相差1的非零系数的数目,且具有相同或相差1的拖尾系数的数目的编码块列入同一个编码组。编码单元123与调整单元122连接,用于对经过调整单元122调整后的同一个编码组中的各个编码块统一进行0分布特性的编码,对不在编码组中的其他编码决分别进行0分布特性的编码。
如图11所示为本发明CAVLC装置实施例四的结构示意图,该实施例在如图10所示的实施例的基础上还包括第二指示模块19,该第二指示模块19与调整单元122连接,用于在片内或MB内携带第二指示信息,第二指示信息是用于指示经过调整单元122调整后的各个编码组中的编码块的信息。
如图11所示的实施例还可以包括第一指示模块17和处理模块18。
如图8到图11所示的装置中各个模块的实现过程,可以参考前述方法实施例部分的描述。
本发明实施例提供的CAVLC装置,排序模块基于宏块或片将各个码表中各阶依照非0系数的数目从多到少的顺序进行重新排列,这样,对应的系数数目较多的阶(也就是出现概率较多的阶)被排到码表的靠前的位置,对应于较短的编码长度;对应的系数数目较少的阶(也就是出现概率较少的阶)被排到码表的靠后的位置,对应于较长的编码长度。调整后的码表的概率分布特性与待编码的系数的概率分布特性相匹配,采用调整后的码表编码时,出现概率较多的系数采用较短的编码长度编码,从而可以提高压缩效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (12)
1.一种上下文自适应可变长编码方法,其特征在于,包括:
确定各个编码块的拖尾系数之外的非零系数对应的码表,计算所述码表中各阶对应的非零系数的数目,将所述码表中各阶依照非零系数的数目从多到少的顺序重新排列;
对所述非零系数的数目及拖尾系数的数目进行编码;
所述对所述非零系数的数目及拖尾系数的数目进行编码包括:获取各个编码块的当前块值、非零系数的数目和拖尾系数的数目;将具有相同的当前块值,具有相同或相差1的非零系数的数目,且具有相同或相差1的拖尾系数的数目的编码块列入同一个编码组;对同一个编码组中的各个编码块统一进行零分布特性的编码,对不在编码组中的其他编码块分别进行零分布特性的编码;
按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码;
对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码。
2.根据权利要求1所述的方法,其特征在于,在对所述非零系数的数目以及拖尾系数的数目进行编码之后,在按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码之前,还包括:编码拖尾系数。
3.根据权利要求1或2所述的方法,其特征在于,还包括在宏块或片内携带第一指示信息,所述第一指示信息是用于指示码表的排列信息。
4.根据权利要求3所述的方法,其特征在于,所述用于指示码表的排列信息包括:进行了重新排列的阶以及码表的信息,以及进行了重新排列的阶最终的位置。
5.根据权利要求3所述的方法,其特征在于,所述码表的排列信息包括进行了重新排列的阶序号;或者,所述码表的排列信息包括进行了重新排列的阶序号,以及没有进行重新排列的阶序号。
6.根据权利要求1所述的方法,其特征在于,还包括在片内或宏块内携带第二指示信息,所述第二指示信息是用于指示各个编码组中的编码块的信息。
7.根据权利要求1或2所述的方法,其特征在于,在对所述非零系数的数目及拖尾系数的数目进行编码之前,还包括:
对宏块进行离散余弦变换;
把离散余弦变换之后的宏块分割成多个编码块;
对编码块量化。
8.一种上下文自适应可变长编码装置,其特征在于,包括:
排序模块,用于确定各个编码块的拖尾系数之外的非零系数对应的码表,计算所述码表中各阶对应的非零系数的数目,将所述码表中各阶依照非零系数的数目从多到少的顺序重新排列;
第一编码模块,用于对所述非零系数的数目及拖尾系数的数目进行编码;
所述第一编码模块包括:
获取单元,用于获取各个编码块的当前块值、非零系数的数目和拖尾系数的数目;
调整单元,与所述获取单元连接,用于根据所述获取单元获取的当前块值、非零系数的数目和拖尾系数的数目,将具有相同的NC,具有相同或相差1的非零系数的数目,且具有相同或相差1的拖尾系数的数目的编码块列入同一个编码组;
编码单元,与所述调整单元连接,用于对经过调整单元调整后的同一个编码组中的各个编码块统一进行零分布特性的编码,对不在编码组中的其他编码块分别进行零分布特性的编码;
第二编码模块,与排序模块连接,用于按照重新排列后的码表对拖尾系数之外的非零系数的幅值进行编码;
第三编码模块,用于对最后一个非零系数前零的数目以及每个非零系数前连续的零的数目进行编码;
输出模块,用于将经过所述第一编码模块、第二编码模块和第三编码模块编码后的数据输出。
9.根据权利要求8所述的装置,其特征在于,还包括第四编码模块,用于编码拖尾系数。
10.根据权利要求8所述的装置,其特征在于,还包括第一指示模块,与所述排序模块连接,用于在宏块或片内携带第一指示信息,所述第一指示信息是用于指示码表的排列信息。
11.根据权利要求10所述的装置,其特征在于,还包括第二指示模块,与调整单元连接,用于在片内或宏块内携带第二指示信息,所述第二指示信息是用于指示各个编码组中的编码块的信息。
12.根据权利要求8-11中任一权利要求所述的装置,其特征在于,还包括处理模块,与第一编码模块连接,用于在第一编码模块编码各编码块中非零系数的数目及拖尾系数的数目之前,对宏块进行离散余弦变换;把离散余弦变换之后的宏块分割成多个编码块;对编码块量化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010248963.5A CN102377996B (zh) | 2010-08-05 | 2010-08-05 | 上下文自适应可变长编码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010248963.5A CN102377996B (zh) | 2010-08-05 | 2010-08-05 | 上下文自适应可变长编码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102377996A CN102377996A (zh) | 2012-03-14 |
CN102377996B true CN102377996B (zh) | 2014-04-30 |
Family
ID=45795884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010248963.5A Active CN102377996B (zh) | 2010-08-05 | 2010-08-05 | 上下文自适应可变长编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102377996B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190031250A (ko) * | 2016-08-10 | 2019-03-25 | 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 | 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법 |
CN108174207A (zh) * | 2017-12-29 | 2018-06-15 | 重庆邮电大学 | 基于zuc算法的h.264熵编码视频加密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1291826A (zh) * | 1999-08-02 | 2001-04-18 | 三星电子株式会社 | 可变长编码方法和装置 |
CN101198055A (zh) * | 2006-12-05 | 2008-06-11 | 华为技术有限公司 | 一种编码方法及编码器 |
CN101309423A (zh) * | 2008-06-26 | 2008-11-19 | 四川虹微技术有限公司 | 一种解码非零系数个数和拖尾系数个数的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010103969A (ja) * | 2008-09-25 | 2010-05-06 | Renesas Technology Corp | 画像復号方法、画像復号装置、画像符号化方法及び画像符号化装置 |
-
2010
- 2010-08-05 CN CN201010248963.5A patent/CN102377996B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1291826A (zh) * | 1999-08-02 | 2001-04-18 | 三星电子株式会社 | 可变长编码方法和装置 |
CN101198055A (zh) * | 2006-12-05 | 2008-06-11 | 华为技术有限公司 | 一种编码方法及编码器 |
CN101309423A (zh) * | 2008-06-26 | 2008-11-19 | 四川虹微技术有限公司 | 一种解码非零系数个数和拖尾系数个数的方法 |
Non-Patent Citations (1)
Title |
---|
毕厚杰.6.8CAVLC(基于上下文自适应的可变长编码).《新一代视频压缩编码标准-H.264/AVC》.人民邮电出版社,2005,118-122. * |
Also Published As
Publication number | Publication date |
---|---|
CN102377996A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105684316B (zh) | 一种Polar码编码方法、装置 | |
CN101779377B (zh) | 编码源信号/解码数据分组序列的设备和方法 | |
CN102186087B (zh) | 用于二进制算术编码可并行的非零系数上下文建模方法 | |
CN104159109B (zh) | 基于vbr视频编码的码率控制方法及*** | |
US7743309B2 (en) | Distributed source coding with context | |
US20050027521A1 (en) | Embedded multiple description scalar quantizers for progressive image transmission | |
CN101945286B (zh) | 压缩编码方法、解码解压方法、装置和通信*** | |
CN104683811A (zh) | 一种基于整数dct系数调制的信息隐藏及提取方法 | |
CN103491377B (zh) | 图像处理设备、方法和计算机可读存储介质 | |
CN107733562B (zh) | 极化码的编解码方法及装置 | |
CN114143557B (zh) | 一种针对视频图像小波变换高频系数的低复杂度编码方法 | |
CN102377996B (zh) | 上下文自适应可变长编码方法及装置 | |
CA2289858C (en) | Lossless image compression with tree coding | |
CN100394693C (zh) | 一种变长码的编码和解码方法 | |
CN101980464B (zh) | 数据编码方法、解码方法、编码器和解码器 | |
JP5837943B2 (ja) | 異種ネットワークを介したコンテンツ配信のクリフ効果を軽減するシステムおよび方法 | |
CN101917608B (zh) | 视频轨迹的可伸缩传输方法 | |
CN102388538A (zh) | 编码输入位序列的方法和设备以及相应解码方法和设备 | |
US8437391B2 (en) | Transmitting video between two stations in a wireless network | |
CN104113394B (zh) | 通信调制信号的压缩及解压方法 | |
Jagadeesh et al. | An approach for image compression using adaptive Huffman coding | |
Shahnas | Performance analysis of regular and irregular ldpc codes on spiht coded image data | |
CN102325252A (zh) | 基于最优小波包的联合信源信道编码方法及图像传输*** | |
Yang et al. | Coefficient rate and significance maps in transform coding | |
CN116456094B (zh) | 一种分布式视频混合数字模拟传输方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210113 Address after: Room 400, building 5, No.11 Deshengmenwai street, Xicheng District, Beijing 100032 (Desheng Park) Patentee after: Migu cultural technology Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |