CN100394693C - 一种变长码的编码和解码方法 - Google Patents
一种变长码的编码和解码方法 Download PDFInfo
- Publication number
- CN100394693C CN100394693C CNB2005100181794A CN200510018179A CN100394693C CN 100394693 C CN100394693 C CN 100394693C CN B2005100181794 A CNB2005100181794 A CN B2005100181794A CN 200510018179 A CN200510018179 A CN 200510018179A CN 100394693 C CN100394693 C CN 100394693C
- Authority
- CN
- China
- Prior art keywords
- code
- decinfo
- bit
- code word
- sequence number
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种变长码的编码和解码方法。该方法首先根据信源符号的出现概率,按照从大到小的原则对要编码的信源符号集中的信源符号进行重新排序,分配对应的编码序号;利用得到的编码序号计算出编码的码字层次和码字长度;在得到码字层次和码字长度后,产生与该编码序号相对应的码字。而在接收到一个输入变长码码流后;从所接收的变长码码流中得出码字层次和DECINFO字段;然后利用所得出的码字层次和DECINFO字段来确定对应的编码序号,再根据编码序号得到对应的信源符号。本发明的变长码具有非常规则的结构,可以通过简单的算法实现编解码,从而避免传递及存储码表,节省了传输带宽和存储空间。
Description
技术领域
本发明涉及信源编码领域,尤其涉及一种在信源编码领域广泛应用的变长码的编码和解码方法。
背景技术
变长编码是一种无损数据压缩方法,其通过给信源符号集中出现概率越大的符号分配长度越短的码字来减少编码每个符号所需的平均码长,从而提高整体压缩效率。码字长度与对应信源符号出现的概率匹配得越好,编码效率就越高。变长编码是现代图像和视频编码系统中的重要组成部分。在实际应用中,不仅要求变长码的压缩效率高,而且要求其编解码规则尽可能简单。
图像和视频编码中经离散余弦变换(DCT)、量化后的系数分布可看作广义高斯信源。在现有变长编码方法中,Golomb-Rice(GR)码[Rice R F.Somepractical universal noiseless coding techniques.Tech.Rep.JPL.CA Pasadena:Jet Propulsion Laboratory,1979:79-22]和Exp-Golomb(EG)码[Teuhola J.Acompression method for clustered bit-vectors.Inf.Process.Lett,1978,10(7):308-311]是目前既能较好地与此概率分布相匹配,编解码规则又相对简单的两种码字。
GR码是以后缀长度(记为k)为参数的码字,它的前缀长度是一个一元函数,后缀具有固定的长度k。GR码的码字长度是呈线性增长的,而且具有相同码字长度的码字数目是固定不变的。因此,GR码是一种针对几何分布的准最优编码,也就是针对υ=1(υ为高斯信源的形状参数)的高斯信源(即拉普拉斯信源)的最优编码。但是随着υ值的减小,广义高斯分布具有更尖锐的峰值和更缓慢的拖尾,所以GR码的效率会越来越低。
EG码是一种异前缀变长编码。它实际上是Elias提出的码字的一种特殊形式[Elias P.Universal codeword sets and representations of the integers.IEEE Trans.on Inf.Theory,1975,3(21):194-203]。EG码的相同码长的码字的数目随着码长的增长而呈指数增长。因此,EG码能较好地表征具有尖锐峰值的0<υ<1的广义高斯分布,而且随着υ值的减小,EG码相对于GR码的优势越来越明显,但是EG码对于υ值接近于1的量化广义高斯信源来说,其最优效率达不到GR码的性能。
由此可见,无论是EG码,还是GR码,都不能在υ值的整个区间上取得最优编码性能。
为了在υ值的整个区间上取得最优编码性能,需要提出一种新的变长码编解码方法。
发明内容
本发明的一个目的是提供一种变长码的编码和解码方法。该方法可以在υ值的整个区间上取得良好的编码性能,并能用简单的算法进行编码和解码。
本发明提供的一种变长码的编码方法,其步骤包括:
(A)设要编码的信源符号集为S={s0,s1,…,sN-1},对应的出现概率分布为P={p0,p1,…,pN-1},其中N为信源符号的个数,按照概率从大到小的原则对信源符号集S中的符号进行重新排序,分配对应的编码序号c分别为0,1,…,N-1;
(B)设中间变量M,令M=c/2k,其中k为后缀码的码字长度,按如下规则计算MG码的层次j和码字长度l:
(B1)若M等于0,则令j=0,l=1+k,转入步骤(C);
(B2)若M等于1,则令j=1,l=2+k,转入步骤(C);
(B3)若M大于1,设中间变量t和s,并令j=1,t=1,s=1,再进行以下步骤:
(B31)重复赋值过程:s=s×2,t=t+s+1,j=j+1,直至t≥M时转入步骤(B32);
(B32)如果t≥(M+2),则l=2×j+k,转入步骤(C);否则,l=2×j+k+1,转入步骤(C);
(C)若j=0或1,无信息字段INFO,k个比特的后缀为0~(2k-1)的二进制表示;若j>1,按如下规则计算信息字段DECINFO的十进制值,记为[DECINFO]10:
若l=2×j+k,则[DECINFO]10=c-(t-s)×2k;
若l=2×j+k+1,则[DECINFO]10=c-(t+1-2×s)×2k;
(D)所得到的与编码序号对应的MG码字为:
[j个0][1][INFO][k个比特的后缀],其中,由INFO字段与k个比特的后缀构成的部分记为DECINFO。
上述编码的解码方法,其步骤包括:
(A)在接收端,接收一个编码码流;
(B)从得到的编码码流中读取0,直到遇到1为止,记读出0的个数为j,并按如下规则继续进行:
若j≤1,则再读取k个比特,其中k为后缀码的码字长度,将这k个比特记为DECINFO;
若j>1,则再读取j+k-1个比特,并将与其对应的十进制值记为MEDINFO;如果MEDINFO≥(2k+j-1-2k),则再读取一个比特,将这j+k个比特记为DECINFO,其码长l=2×j+k+1;如果MEDINFO<(2k+j-1-2k),则将此j+k-1个比特记为DECINFO,其码长为l=2×j+k;
(C)记DECINFO字段的十进制值为[DECINFO]10,按如下规则计算出编码序号c:
若j=0,则c=[DECINFO]10;
若j=1,则c=2k+[DECINFO]10;
若j>1,当l=2×j+k时,则 否则,
计算得到编码序号,再根据编码序号得到对应的信源符号。
本发明结合了EG和GR码的优点,每一层码字都包含两种码长的码字,其中一种的码字数目随层数的增加呈指数增长,另一种则保持不变;从而对于形状参数在更大范围内变化的量化广义高斯信源,也具有稳定的编码性能。而且,本发明所获得的变长码具有非常规则的结构,可以通过简单的算法实现编解码,从而避免传递及存储码表,节省了传输带宽和存储空间。
附图说明
图1示出了根据本发明的变长码的编码方法的流程示意图;
图2示出了根据本发明的变长码的解码方法的流程示意图。
具体实施方式
本发明首先根据信源符号的概率分布,按照出现概率从大到小的原则对要编码的信源符号集中的符号进行重新排序,分配对应的编码序号;利用得到的编码序号计算出编码的码字层次和码字长度;在得到码字层次和码字长度后,产生与该编码序号相对应的码字。而在接收到一个输入变长码码流后;从所接收的变长码码流中得出码字层次和信息字段DECINFO;然后利用所得出的码字层次和信息字段DECINFO来确定对应的编码序号;最后根据编码序号得到对应的信源符号。
对本发明作进一步详细说明之前,首先对变长码(以下简称MG码)的构成进行简单介绍。
MG码中的一个码字通常由前缀码和后缀码两部分构成,后缀码的码字长度为k位。k是一个事先给定的的非负整数,用来控制每层码字的数目。k不宜过大,本发明约定k<256。MG码由若干层(层数记为j)组成,每层码字的数目设置如下:
1对于MG码最短的两层码字,即j=0和j=1,码字数目保持为2k不变。
2在j>1时,MG码的每一层存在两种码长的码字,即码长为2j+k或2j+k+1。对于码长为2j+k的码字,其码字数目随层数增加呈指数增长,数目为2k+j-1~2k;而对于码长为2j+1+k的码字,保持码字数目不变,均为2k+1。
当MG码的后缀长度设为k时,第一层(即j=0时)的2k个码字的前缀为“1”,第二层(即j=1时)的2k个码字的前缀为“01”。第一层和第二层的码字均是各自的前缀与k个比特的后缀连接而成,其中k个比特的后缀为0~(2k-1)的二进制表示。对于其余层次(即j>1时)的码字,按以下规则产生:
(1)对于码长为2j+k的码字,即前缀为偶数位比特的码字,先用j个0与一个1连接,然后再与j+k-1个比特连接来构成。其中,后j+k-1个比特为0~(2k+j-1-2k-1)的二进制表示。
(2)对于码长为2j+1+k的码字,即前缀为奇数位比特的码字,先用j个0与一个1相连,然后再与j+k个比特连接来构成。其中,后j+k个比特为(2k+j-1-2k+1)~(2k+j-1)的二进制表示。
总之,MG码字的构成如下:
[j个0][1][INFO][k个比特的后缀]
其中,第一层码字(即j=0)没有前置0及INFO字段。第二层码字(即j=1)有一个前置0,但没有信息字段INFO。当j>1时,若码字长度为2j+k,则信息字段INFO为j-1个比特,其值为0~(2j-1-2)的二进制表示;若码字长度为2j+1+k,则信息字段INFO为j个比特,其值为(2j-2)~(2j-1)的二进制表示。而k个比特的后缀则为0~(2k-1)的二进制表示。为方便起见,将MG码字中由INFO字段与k个比特的后缀构成的部分记为DECINFO。
下面结合附图1和2来具体说明变长码的编码和解码方法。
MG码的编码方法
如图1所示,假设要编码的信源符号集为S={s0,s1,…,sN-1},对应的出现概率分布为P={p0,p1,…,pN-1},其中N为信源符号的个数。按照概率从大到小的原则对信源符号集S中的符号进行重新排序,分配对应的编码序号(用c表示)分别为0,1,…,N-1(步骤S10)。其中,概率最大的符号对应的编码序号为0,概率第二大的符号对应的编码序号为1,依此类推,概率最小的符号对应的编码序号为N-1。
MG码的构造是与码字所在的层次数j及码字的后缀长度k相关的。要得到MG码的码字,首先要由编码序号c计算出j。另外,由于同一层次的码字有两类:长度分别为2j+k和2j+1+k。因此,还需要确定码字所属的类别。具体编码步骤如下:
第一步,根据编码序号c计算对应MG码的层次j及码字长度l(步骤S20)。令M=c/2k,按如下规则进行计算:
(1)若M等于0,则令j=0,l=1+k,转入第二步。
(2)若M等于1,则令j=1,l=2+k,转入第二步。
(3)若M大于1,则j和l由下面的步骤得到:(设中间变量t和s,其中t用于表示累加和。实际上,t的值为j层的最后一个码字的编码序号)。
(3.1)开始时,令j=1,t=1,s=1;
(3.2)重复赋值过程:s=s×2,t=t+s+1,j=j+1,直至t≥M时转入步骤(3.3)继续进行;
(3.3)如果t≥(M+2),则l=2×j+k;否则,l=2×j+k+1;
第二步,在得到j和l后,按照下述方法产生与编码序号c对应的码字(步骤S30)。前j+1个比特为j个0与一个1相连而成,后j-1+k/j+k个比特为信息字段INFO和k个比特的后缀,即信息字段DECINFO,其中,信息字段DECINFO的十进制值记为[DECINFO]10。其计算规则如下:
若j=0或1,无信息字段INFO,k个比特的后缀为0~(2k-1)的二进制表示;
若j>1,则[DECINFO]10由以下步骤得到:
若l=2×j+k,则[DECINFO]10=c-(t-s)×2k;
若l=2×j+k+1,则[DECINFO]10=c-(t+1-2×s)×2k;
由此,就得到与编码序号对应的MG码字为:
[j个0][1][INFO][k个比特的后缀],其中,由INFO字段与k个比特的后缀构成的部分即为DECINFO。
MG码的解码方法
如图2所示,在接收端,解码器对输入码流进行解码,得出编码序号。解码步骤如下:
首先,在接收端,接收一个编码码流(步骤S40)。
其次,基于接收的输入码流,获取MG码的层次j和DECINFO字段(步骤S50)。即从得到的编码码流中读取0,直到遇到1为止,记读出0的个数为j,并按如下规则继续进行:
(1)若j≤1,则再读取k个比特,这k个比特记为DECINFO。
(2)否则再读取j+k-1个比特,并将与其对应的十进制值记为MEDINFO。如果MEDINFO≥(2k+j-1-2k),则再读取一个比特。将这j+k个比特记为DECINFO。此时,码长为l=2×j+k+1。如果MEDINFO<(2k+j-1-2k),则将此j+k-1个比特记为DECINFO,码字的码长为l=2×j+k。
然后,在得到j和DECINFO(DECINFO字段的十进制值记为[DECINFO]10)后,按如下规则进行计算出编码序号c(步骤S60),即:
若j=0,则c=[DECINFO]10;
若j=1,则c=2k+[DECINFO]10;
若j>1,可依照以下步骤来计算得到c:
若l=2×j+k,则 否则,
由此,通过计算表达式,就可根据编码码流得到对应的编码序号。再根据编码序号得到对应的信源符号,至此,解码过程完成。
实例
表1给出了MG码的一个具体例子(k=0)。
由前面的内容可知,码长为2j+k(j>1)的码字对应的编码序号的范围是:
而码长为2j+k+1(j>1)的码字对应的编码序号的范围是:
由于相同码字长度的码字个数均是2k的整数倍,将编码序号除以2k,记所得的值为M,则M相同的编码序号对应的码字的长度是相同的,而且这些码字的区别仅在于k个比特的后缀。也就是说,与原编码序号c对应的MG码字的[j个0][1][INFO]部分,就是通过对编码序号M进行k=0的MG编码构造出来的。以上分析结果给出了MG码的层次特点,其如表2所示。其中,k为MG码的后缀长度;M=c/2k(c为编码序号)。
表1MG码的一个例子(k=0)
编码序号(c) | 码字 | 码长 |
0 | 1 | 1 |
1 | 01 | 2 |
2 | 0010 | 4 |
3 | 00110 | 5 |
4 | 00111 | 5 |
5 | 000100 | 6 |
6 | 000101 | 6 |
7 | 000110 | 6 |
8 | 0001110 | 7 |
9 | 0001111 | 7 |
10 | 00001000 | 8 |
…… | …… | …… |
表2MG码的层次特点
Claims (2)
1.一种变长码的编码方法,其步骤包括:
(A)设要编码的信源符号集为S={s0,s1,…,sN-1},对应的出现概率分布为P={p0,p1,…,pN-1},其中N为信源符号的个数,按照概率从大到小的原则对信源符号集S中的符号进行重新排序,分配对应的编码序号c分别为0,1,…,N-1;
(B)设中间变量M,令M=c/2k,其中k为后缀码的码字长度,按如下规则计算变长码的层次j和码字长度l:
(B1)若M等于0,则令j=0,l=1+k,转入步骤(C);
(B2)若M等于1,则令j=1,l=2+k,转入步骤(C);
(B3)若M大于1,设中间变量t和s,并令j=1;t=1;s=1,再进行以下步骤:
(B31)重复赋值过程:s=s×2,t=t+s+1,j=j+1,直至t≥M时转入步骤(B32);
(B32)如果t≥(M+2),则l=2×j+k;否则,l=2×j+k+1;
(C)若j=0或1,无信息字段INFO,k个比特的后缀为0~(2k-1)的二进制表示;若j>1,按如下规则计算信息字段DECINFO的十进制值,记为[DECINFO]10:
若l=2×j+k,则[DECINFO]10=c-(t-s)×2k;
若l=2×j+k+1,则[DECINFO]10=c-(t+1-2×s)×2k;
(D)所得到的与编码序号对应的变长码字为:
[j个0][1][INFO][k个比特的后缀],其中,由INFO字段与k个比特的后缀构成的部分即为DECINFO。
2.一种变长码的解码方法,其步骤包括:
(A)在接收端,接收一个编码码流;
(B)从得到的编码码流中读取0,直到遇到1为止,记读出0的个数为j,并按如下规则继续进行:
若j≤1,则再读取k个比特,其中k为后缀码的码字长度,将这k个比特记为DECINFO;
若j>1,则再读取j+k-1个比特,并将与其对应的十进制值记为MEDINFO;如果MEDINFO≥(2k+j-1-2k),则再读取一个比特,将这j+k个比特记为DECINFO,其码长l=2×j+k+1;如果MEDINFO<(2k+j-1-2k),则将此j+k-1个比特记为DECINFO,其码长为l=2×j+k;
(C)记DECINFO字段的十进制值为[DECINFO]10,按如下规则计算出编码序号c:
若j=0,则c=[DECINFO]10;
若j=1,则c=2k+[DECINFO]10;
若j>1,当l=2×j+k时,则 否则,
计算得到编码序号,再根据编码序号得到对应的信源符号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100181794A CN100394693C (zh) | 2005-01-21 | 2005-01-21 | 一种变长码的编码和解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100181794A CN100394693C (zh) | 2005-01-21 | 2005-01-21 | 一种变长码的编码和解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1645750A CN1645750A (zh) | 2005-07-27 |
CN100394693C true CN100394693C (zh) | 2008-06-11 |
Family
ID=34875678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100181794A Expired - Fee Related CN100394693C (zh) | 2005-01-21 | 2005-01-21 | 一种变长码的编码和解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100394693C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167366B (zh) * | 2005-12-05 | 2010-10-27 | 华为技术有限公司 | 一种二进制化方法及装置 |
CN103260022A (zh) * | 2012-02-21 | 2013-08-21 | 安凯(广州)微电子技术有限公司 | 一种低功耗的视频解码方法和装置 |
EP3252758B1 (en) * | 2015-01-30 | 2020-03-18 | Nippon Telegraph and Telephone Corporation | Encoding apparatus, decoding apparatus, and methods, programs and recording media for encoding apparatus and decoding apparatus |
CN114726926B (zh) * | 2022-03-30 | 2023-03-31 | 电子科技大学 | 一种用于拉普拉斯信源的自适应变长编码方法 |
CN116684003B (zh) * | 2023-07-27 | 2023-10-24 | 南京中科齐信科技有限公司 | 一种基于量子通信的铁路沿线空地综合监测方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5589829A (en) * | 1994-10-26 | 1996-12-31 | Intel Corporation | Decoding variable-length encoded signals |
JPH1168579A (ja) * | 1997-08-25 | 1999-03-09 | Matsushita Electric Ind Co Ltd | 可変長復号化方法および装置 |
CN1219803A (zh) * | 1997-12-08 | 1999-06-16 | 大宇电子株式会社 | 可变长编码方法及其装置 |
CN1259801A (zh) * | 1998-12-16 | 2000-07-12 | 汤姆森消费电子有限公司 | 变长码字解码器 |
CN1463500A (zh) * | 2001-05-22 | 2003-12-24 | 皇家菲利浦电子有限公司 | 解码变长码字序列的方法 |
-
2005
- 2005-01-21 CN CNB2005100181794A patent/CN100394693C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5589829A (en) * | 1994-10-26 | 1996-12-31 | Intel Corporation | Decoding variable-length encoded signals |
JPH1168579A (ja) * | 1997-08-25 | 1999-03-09 | Matsushita Electric Ind Co Ltd | 可変長復号化方法および装置 |
CN1219803A (zh) * | 1997-12-08 | 1999-06-16 | 大宇电子株式会社 | 可变长编码方法及其装置 |
CN1259801A (zh) * | 1998-12-16 | 2000-07-12 | 汤姆森消费电子有限公司 | 变长码字解码器 |
CN1463500A (zh) * | 2001-05-22 | 2003-12-24 | 皇家菲利浦电子有限公司 | 解码变长码字序列的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1645750A (zh) | 2005-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7845571B2 (en) | Data compression | |
US6404931B1 (en) | Code book construction for variable to variable length entropy encoding | |
US7043088B2 (en) | Adaptive variable length decoding method | |
JPH05300027A (ja) | 可逆可変長符号化方式 | |
CN100394693C (zh) | 一种变长码的编码和解码方法 | |
US5694128A (en) | Tree structured binary arithmetic coder | |
CN1193427A (zh) | 编码数字信息信号的方法和装置 | |
US20220174329A1 (en) | Image encoding method and apparatus, image decoding method and apparatus, and chip | |
CN113632397A (zh) | 短块长度分布匹配算法 | |
JP4163680B2 (ja) | コードワードインデックスに対してパラメータ値のマッピングを行うための適応型方法およびシステム | |
CN114726926A (zh) | 一种用于拉普拉斯信源的自适应变长编码方法 | |
CN116827354B (zh) | 一种文件数据分布式存储管理系统 | |
CN101657973B (zh) | 采用位精度的编码装置和编码方法 | |
US8175403B1 (en) | Iterative backward reference selection with reduced entropy for image compression | |
KR100636370B1 (ko) | 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법 | |
JP3808241B2 (ja) | データ圧縮方法および装置並びに記録媒体 | |
US5708431A (en) | Method for compression coding of potentially unbounded integers | |
CN113453002B (zh) | 量化与熵编码方法及装置 | |
CN110739974B (zh) | 数据压缩方法及装置和计算机可读存储介质 | |
US20060125660A1 (en) | Digital data compression robust relative to transmission noise | |
Jagadeesh et al. | An approach for image compression using adaptive Huffman coding | |
CN114614832A (zh) | 基于前后游程长度编码的测试数据压缩及解压方法 | |
CN102377996B (zh) | 上下文自适应可变长编码方法及装置 | |
Nangir et al. | A new recursive algorithm for universal coding of integers | |
CN117082154B (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080611 Termination date: 20110121 |