CN106603081B - 一种通用算术编码方法及其解码方法 - Google Patents
一种通用算术编码方法及其解码方法 Download PDFInfo
- Publication number
- CN106603081B CN106603081B CN201610945027.7A CN201610945027A CN106603081B CN 106603081 B CN106603081 B CN 106603081B CN 201610945027 A CN201610945027 A CN 201610945027A CN 106603081 B CN106603081 B CN 106603081B
- Authority
- CN
- China
- Prior art keywords
- file
- decoding
- information
- coding
- source
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开一种通用算术编码方法,没有结束符,并在编码文件开头添加信源大小信息,其步骤:1.在编码文件的开头记录信源大小信息FILELEN;2.读入一个符号的信源,用计数器统计信源字节数;编码器编码,若编码器有输出,则所述计数器清零,并重新计数;3.编码器重复步骤2的过程,在编码器编码完最后一个符号后,计数器的值除以FMod,舍掉小数部分,保留整数部分LEFTSYMBOL,编码器再额外输出LEFTSYMBOL数量的、值为0的比特;4.在编码文件末尾,添加一个值为1的比特,以标示编码文件结束。本发明还给出相应解码方法。本发明提高数据压缩率,即使数据不可压缩,其产生的冗余信息较少,所以可以代替扰码,把数据白噪声化,以利于数据在信道的传输。
Description
技术领域
本发明属于信息编解码技术领域,具体而言,涉及一种通用算术编码方法,同时本发明还给出了相应的解码方法。
背景技术
算术编码是一项非常成熟的无损压缩编码技术,分为静态模型和自适应模型。算术编码先把信源映射到一个符号集,如果符号的长度是8比特,则有256个符号;如果符号的长度是4比特,则有16个符号;另外,还需要一个结束符,所以算术编码总符号数相应的是257或者17。结束符在信源中并不存在,在解码时,解码到结束符时,就认为解码结束了,是解码结束标志。
对静态模型来说,首先需要统计整个信源中各个符号的概率,编码过程不必更新此概率分布。对自适应模型来说,首先假定各个符号出现的概率相等,每编码一个符号更新一次概率分布。符号集初始的概率区间是大于等于0,小于1的区间[0,1),计算信源中第一个符号在[0,1)的概率区间[A1,B1),并更新概率分布,计算第二个符号在[A1,B1)的概率区间[A2,B2),并更新概率分布,注意[A2,B2)区间宽度小于[A1,B1)的区间宽度,实际上当前求出的概率区间宽度总是小于上一个概率区间宽度。以此类推,直到求出信源中的最后一个符号的概率区间[An,Bn),再更新概率分布,最后求出结束符在区间[An,Bn)的区间[Ae,Be),然后输出区间[Ae,Be)内的任意一个数值作为整个压缩编码的输出,编码完成。
当前,算术编码无损压缩算法的一大技术缺陷是,如果数据不具备可压缩性,编码后,会增加相当数量的冗余信息。上述提及,算术编码需要将信源映射到符号集,符号集里面有一个特殊的符号作为结束符,解码时用来标示解码结束。实际上,信源中并没有这个符号,因为总概率是1,结束符法的出现,会降低其余各个符号的概率,相当于人为提高信源中各个符号的熵,导致编码输出需要更多的比特,而且结束符也需要消耗相当数量的比特数。这些额外的比特在信源数据量少,比重更明显,这就是传统算术编码压缩率偏低的根本原因。
发明内容
本发明需要解决的技术问题:算术编码无损压缩算法虽作为一项成熟的编码技术,如果信源数据不具备可压缩性,编码后会增加相当数量的冗余信息,这些冗余信息主要由结束符产生。
为了解决上述技术缺陷,以提高数据压缩率,本发明对传统算术编码方法进行了优化设计,提供了一种通用的算术编码方法。本发明所述方法可以提高数据压缩率,即使数据不具备可压缩性,产生的冗余信息也会较少,所以可代替扰码,把数据白噪声化,以利于数据在信道的传输。
为了实现上述目的,本发明采取如下的技术方案:
首先,本发明给出一种通用算术编码方法,与传统算数编码相比,没有结束符,并在编码文件开头添加信源大小信息,作为一种具体的实施方法,这里约定统计信源大小的单位是字节,该方法的实现包括下述步骤:
1.1)在编码文件的开头记录信源大小信息FILELEN,计算并输出信源大小信息FILELEN;
1.2)读入一个符号的信源数据,用计数器统计信源字节数;
1.3)编码器编码,若编码器有输出,则所述计数器清零,并重新计数;
1.4)重复1.2和1.3步骤,在编码器编码完最后一个符号后,计数器的值除以FMod,舍掉小数部分,保留整数部分LEFTSYMBOL,编码器再额外输出LEFTSYMBOL数量的、值为0的比特;
1.5)在编码文件末尾,添加一个值为1的比特,以标示编码文件结束。
进一步地,在步骤1)中,在编码文件中添加信源大小信息FILELEN,信源大小信息并不用记录整个信源的大小,利用编码文件大小和信源大小本身存在的相关性,进一步去除冗余信息。
进一步地,在步骤1)中,编码和解码过程不再需要结束符,在编码文件末尾,添加一个值为1的比特,以标示编码文件结束。
进一步地,在步骤1)中,在编码器编码完最后一个符号后,编码器再额外输出LEFTSYMBOL数量的、值为0的比特,以此来保证编码结果的唯一性,不同的输入序列对应不同的编码结果。
进一步地,在步骤1)中,按需求自定义信源大小信息FILELEN的比特长度BITLEN。
再者,与所述算术编码方法相对应的,本发明还给出了所述通用算术编码方法的解码方法。所述解码方法包括下述步骤:
6.1)读出编码文件中的信源大小信息FILELEN,然后开始解码;
6.2)解码器统计输出信源字节数DECLEN;
6.3)解码器检测到结束标志后,用DECLEN除以FMod取余数DECLEFT,如果DECLEFT小于FILELEN,继续解码,直到DECLEFT等于FILELEN为止,解码完成。
作为所述解码方法的优选,其还进一步包括下述步骤:
7.1)把解码得到的信源数据重新编码,并将新编码文件与原编码原文件进行比较;
7.2)若新编码文件与原编码原文件相等,则解码完成;
7.3)若新编码文件与原编码原文件不相等,则在原解码的基础上继续解码FMod数量的字节,再把解码得到的信源数据重新编码,并与原编码原文件比较,直至新编码文件与原编码原文件相等,解码完成。
与传统技术相比,本发明至少具有如下的有益效果或优点:
(1)根据信息论,如果数据本身具备可压缩性,对比传统算术编码,则本发明所述算术编码方法可以提高数据的压缩率;如果数据不具备可压缩性,产生的冗余信息比传统算术编码低。
(2)本发明在自组网技术、物联网技术等嵌入式无线通信系统具有非常重大的意义。此类应用的无线信道传输数据量不大,但是无线通信容易受到干扰,为保证数据传输可靠性、稳定性,需要对传输的数据做很多处理,需要加扰码,将其白噪声化等。但是传统的加扰码的方式,不仅不能保证100%加扰,有些特殊的序列加扰以后,反而适得其反。本发明能代替扰码,实现对数据白噪声化,还能起到加密的效果,克服了传统加扰方式的缺陷,同时能对数据进行无损压缩,降低传输带宽,传输的数据少了,可靠性、稳定性也相应提高。
附图说明
图1是一实施例所述通用的算术编码方法的编码流程图。
图2是一实施例所述解码方法的解码流程图。
具体实施方式
以下将结合附图和实施例对本发明做进一步详细阐述。
为叙述方便,下文中所称的“左”、“右”、“上”、“下”与附图本身的“左”、“右”、“上”、“下”方向一致。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本实施例所述通用的算术编码方法,是对传统的算术编码的一种优化改进。关于传统算术编码的原理,这里不再赘述,在此只把原理阐述需要用的一些符号作出说明,这里作为一种具体的方案,约定信源大小单位为字节。
BITLEN:信源大小信息记录在编码文件的开头,信源大小信息的比特长度用BITLEN表示,是一个约定值,与信源大小无关,最小值是1。
FMod:是信源大小信息FILELEN的模,即2的BITLEN次方。如果BITLEN等于4,FMod等于16;如果BITLEN等于3,FMod等于8。
FILELEN:信源大小信息。在编码文件开头,用BITLEN个比特记录,信源字节大小除以FMod,取余数,即为信源大小信息。
LEFTSYMBOL:编码时,用一个计数器统计信源字节数。编码器是一个比特一个比特输出,比特组成字节,字节组成最终的输出文件,一旦编码器有输出,则该计数器清零,并重新计数。编码器编码完最后一个符号后,计数器的值除以FMod,舍掉小数部分,保留整数部分,即为LEFTSYMBOL。
DECLEN:解码时,用一个计数器统计解码器输出的信源字节数,计数器的值即为DECLEN。
DECLEFT:解码过程中,解码器检测到结束标志,用DECLEN除以FMod取余数,即为DECLEFT。
算术编码先把信源映射到一个符号集,符号集里面有一个特殊的符号作为结束符。解码时,结束符用来标示解码结束。传统算术编码压缩率偏低的根本原因在于结束符的存在。然而,实际上信源中并没有这个符号,因为总概率是1,这个特殊符号的出现,会降低其余各个符号的概率,相当于人为提高信源中各个符号的熵,导致编码输出需要更多的比特,同时,结束符本身也要消耗相当数量的比特数,这些额外的比特在信源数据量少,比重更明显。
基于传统算术编码的技术缺陷,本实施例提出一种改进型的算术编码方法。在本实施例所述算术编码方法中,去掉了符号集中的结束符,并把信源大小信息记录在编码文件的开头。如果在编码文件的开头记录整个信源大小信息,这将消耗相当数量的比特。实际上,只需要几个比特的信息就足够符合要求,原则是小于符号的比特长度,具体需要几个比特,可以按需求自定义。信源字节大小除以FMod,取余数,就是信源大小信息FILELEN。在实际应用中,一种编码算法确定以后,编码后文件的大小和信源的大小是密切相关的。本实施例所述算术编码方法利用了这种相关性。
为了被正确解码,需要在编码器端做一些额外的处理。
首先,在编码文件末尾,添加一个值为‘1’的比特,标示编码文件结束。
其次,在编码的同时,用一个计数器统计信源字节数。由于编码器是一个比特一个比特输出,一旦编码器有输出,则该计数器清零,并重新计数。编码器编码完最后一个符号后,计数器的值除以FMod,舍掉小数部分,保留整数部分LEFTSYMBOL,编码器再额外输出LEFTSYMBOL数量的、值为0的比特。
按照上述方式进行编码,其原因在于:如果信源数据末尾,数据全部由一个符号组成,没有别的符号,这样将导致该符号的熵很低,如此编码器编码“LEFTSYMBOL×FMod+N”(‘×’是乘号;’+’是加号;N是小于FMod的非负整数)数量的字节后,信源数据已经读完,但是编码器还没有输出,这时候编码器需要额外输出值为0的LEFTSYMBOL个比特,BITLEN越大,FMod越大,LEFTSYMBOL越小,也就是编码文件越小。这种情况下,BITLEN越大越好,但是这种极端情况一般较少出现;而且BITLEN越大,编码文件需要更多的比特来保存文件大小信息FILELEN。因此,需要根据实际应用场景合理选取BITLEN,如果想实现扰码的功能,BITLEN取值为1即可。
编码器最后输出LEFTSYMBOL个0比特的目的在于:保证编码结果的唯一性,对不同的编码输入序列,编码输出序列也是不同的。解码时,本实施例所述解码方法利用了这种唯一性。本实施例所述编码方法参见图1。
下面,本实施例对相应的解码方法进行说明。
解码过程,首先读出信源大小信息FILELEN,然后开始解码,同时,统计解码器输出数据字节数DECLEN。解码器检测到结束标志后,用DECLEN除以FMod取余数DECLEFT,如果DECLEFT小于FILELEN,继续解码,直到DECLEFT等于FILELEN为止,解码完成。
通常,解码器检测到结束标志后,如果DECLEFT小于FILELEN,继续解码,直到DECLEFT等于FILELEN,解码结束。但是,这样并不全面,前面说过,如果信源数据末尾,一个符号连续出现,而且没有出现别的符号,这样导致该符号的熵很低,这样情况,仅仅判断DECLEFT是否等于FILELEN,也许还不够,首先需要把解码得到的信源数据重新编码,和编码原文件比较,如果相等,则解码完成。如上所述,编码输入序列确定后,编码输出是唯一确定的。所以,如果比较结果不相等,则在原来解码的基础上再多解码FMod数量的字节,再把解码得到的信源数据重新编码,再和编码原文件比较,相等,解码完成,不相等,则重复上一步,继续解码,再编码,再和编码原文件比较,直到结果相等。本实施例所述解码方法参见图2。
根据信息论,不是任何数据都具备可压缩性,如果数据不能被压缩,那么编码后,会增加多少信息,这里比较下传统算术编码和本发明的差别。举例说明,本发明的应用场景倾向小数据压缩,所以都采用自适应模型,符号用4比特长。考虑最极端的情况,信源数据只有一个字节,随便取一个数0x03。
按照本发明的设计思路,BITLEN取1,信源数据“0x03”总共只有两个符号,所以FILELEN等于0。需要编码两个符号‘0’和‘3’,第一个符号的概率是1/16,第二个符号的概率是1/17,需要的比特数分别是4和4.09,还有一个比特的结束符,文件头还有一个比特的信源大小信息FILELEN,所以整个编码文件是10.9比特,实际是11比特。
按传统的算术编码,第一个符号是0,第二个符号是3,第三个符号是结束符,概率分别是1/17,1/18,1/19,第一个符号需要4.09bit,第二个符号需要4.17bit,第三个符号需要4.25bit,总共需要12.51bit,实际是13比特。
通过上述比较可以看出,本发明的编码结果优于传统的算术编码。
在本说明书的描述中,参考术语“实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例,而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
上面结合实施例对本发明做了进一步的叙述,但本发明并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (7)
1.一种通用算术编码方法,与传统算数编码相比,没有结束符,并在编码文件开头添加信源大小信息,其特征在于,该方法的实现包括下述步骤:
1.1)在编码文件的开头记录信源大小信息FILELEN,计算并输出信源大小信息FILELEN,所述信源大小信息的比特长度用BITLEN表示;
1.2)读入一个符号的信源,用计数器统计读入的信源字节数;
1.3)编码器编码,若编码器有输出,则所述计数器清零,并重新计数;
1.4)重复1.2)和1.3)的过程,在编码器编码完最后一个符号后,计数器的值除以FMod,舍掉小数部分,保留整数部分LEFTSYMBOL,编码器再额外输出LEFTSYMBOL数量的、值为0的比特,其中,FMod是信源大小信息FILELEN的模,即2的BITLEN次方,信源字节大小除以FMod,取余数,即为信源大小信息;
1.5)在编码文件末尾,添加一个值为1的比特,以标示编码文件结束。
2.根据权利要求1所述的通用算术编码方法,其特征在于,在步骤1)中,在编码文件中添加信源大小信息FILELEN,信源大小信息并不用记录整个信源的大小,利用编码文件大小和信源大小本身存在的相关性,进一步去除冗余信息。
3.根据权利要求1所述的通用算术编码方法,其特征在于,在步骤1)中,编码和解码过程不再需要结束符,在编码文件末尾,添加一个值为1的比特,以标示编码文件结束。
4.根据权利要求1所述的通用算术编码方法,其特征在于,在步骤1)中,在编码器编码完最后一个符号后,编码器再额外输出LEFTSYMBOL数量的、值为0的比特,以此来保证编码结果的唯一性,不同的输入序列对应不同的编码结果。
5.根据权利要求1所述的通用算术编码方法,其特征在于,在步骤1)中,按需求自定义信源大小信息FILELEN的比特长度BITLEN。
6.一种通用算术编码方法的解码方法,与权利要求1所述算术编码方法相对应,所述解码方法包括下述步骤:
6.1)读出编码文件中的信源大小信息FILELEN,然后开始解码;
6.2)解码器统计输出信源字节数DECLEN;
6.3)解码器检测到结束标志后,用DECLEN除以FMod取余数DECLEFT,如果DECLEFT小于FILELEN,继续解码,直到DECLEFT等于FILELEN为止,解码完成。
7.根据权利要求6所述的通用算术编码方法的解码方法,其特征在于,还包括下述步骤:
7.1)把解码得到的信源数据重新编码,并将新编码文件与原编码原文件进行比较;
7.2)若新编码文件与原编码原文件相等,则解码完成;
7.3)若新编码文件与原编码原文件不相等,则在原解码文件的基础上继续解码FMod数量的字节,再把解码得到的信源数据重新编码,并与原编码原文件比较,直至新编码文件与原编码原文件相等,解码完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610945027.7A CN106603081B (zh) | 2016-11-02 | 2016-11-02 | 一种通用算术编码方法及其解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610945027.7A CN106603081B (zh) | 2016-11-02 | 2016-11-02 | 一种通用算术编码方法及其解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106603081A CN106603081A (zh) | 2017-04-26 |
CN106603081B true CN106603081B (zh) | 2020-02-18 |
Family
ID=58590572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610945027.7A Active CN106603081B (zh) | 2016-11-02 | 2016-11-02 | 一种通用算术编码方法及其解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106603081B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111954263B (zh) * | 2020-07-10 | 2023-09-19 | 杭州红岭通信息科技有限公司 | 一种5gnr基带数字信号的压缩传输方法及其系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447603A (zh) * | 2003-01-10 | 2003-10-08 | 李春林 | 基于信源高阶熵的数据压缩方法 |
US7982641B1 (en) * | 2008-11-06 | 2011-07-19 | Marvell International Ltd. | Context-based adaptive binary arithmetic coding engine |
CN103248896A (zh) * | 2013-05-15 | 2013-08-14 | 中国科学院光电技术研究所 | Mq算术编码器 |
CN104869397A (zh) * | 2015-05-20 | 2015-08-26 | 哈尔滨工业大学 | 一种基于slwe概率估计模型的自适应区间编码方法及解码方法 |
-
2016
- 2016-11-02 CN CN201610945027.7A patent/CN106603081B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447603A (zh) * | 2003-01-10 | 2003-10-08 | 李春林 | 基于信源高阶熵的数据压缩方法 |
US7982641B1 (en) * | 2008-11-06 | 2011-07-19 | Marvell International Ltd. | Context-based adaptive binary arithmetic coding engine |
CN103248896A (zh) * | 2013-05-15 | 2013-08-14 | 中国科学院光电技术研究所 | Mq算术编码器 |
CN104869397A (zh) * | 2015-05-20 | 2015-08-26 | 哈尔滨工业大学 | 一种基于slwe概率估计模型的自适应区间编码方法及解码方法 |
Non-Patent Citations (1)
Title |
---|
"H.264视频编码标准的熵编码研究";梁林荣;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130315(第03期);18-19 * |
Also Published As
Publication number | Publication date |
---|---|
CN106603081A (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kalker et al. | Capacity bounds and constructions for reversible data-hiding | |
KR101924249B1 (ko) | 계위적 엔트로피 인코딩 및 디코딩 | |
CN108768403A (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
CN101222637A (zh) | 具有特征标志的编码方法 | |
CN1675842B (zh) | 算术编码的方法、设备以及相应解码方法 | |
CN103702133A (zh) | 一种图像压缩展示方法及其装置 | |
CN101494461B (zh) | 联合信源信道可变长符号级可逆编解码方法 | |
Banister et al. | Robust image transmission using JPEG2000 and turbo-codes | |
CN106603081B (zh) | 一种通用算术编码方法及其解码方法 | |
CN103178968B (zh) | 基于哈夫曼压缩的数据传输门限方案的加密方法 | |
CN116033034B (zh) | 一种无线收发平台用数据处理系统 | |
CN102655588B (zh) | 用于视频图像传输的信源信道联合解码方法 | |
CN103138769B (zh) | 一种具有不等错误保护的编码方法 | |
US20220005229A1 (en) | Point cloud attribute encoding method and device, and point cloud attribute decoding method and devcie | |
EP1449306A1 (en) | Method of decoding a variable-length codeword sequence | |
CN102388538A (zh) | 编码输入位序列的方法和设备以及相应解码方法和设备 | |
CN104682966A (zh) | 列表数据的无损压缩方法 | |
US6101281A (en) | Method for improving data encoding and decoding efficiency | |
CN100527847C (zh) | 基于零前缀码的变长码解码方法 | |
US20060125660A1 (en) | Digital data compression robust relative to transmission noise | |
CN106559085A (zh) | 一种范式哈夫曼解码方法及其装置 | |
CN112134644A (zh) | 编码方法、装置及存储介质 | |
JP4780350B2 (ja) | シリアルデータ通信のための符号化方式 | |
WO2003091942A1 (en) | System and method for arithmetic encoding and decoding | |
CN113904900B (zh) | 一种实时遥测信源分阶相对编码方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |