CN1658513A - 通过查表实现的算术编解码方法 - Google Patents

通过查表实现的算术编解码方法 Download PDF

Info

Publication number
CN1658513A
CN1658513A CN 200510024304 CN200510024304A CN1658513A CN 1658513 A CN1658513 A CN 1658513A CN 200510024304 CN200510024304 CN 200510024304 CN 200510024304 A CN200510024304 A CN 200510024304A CN 1658513 A CN1658513 A CN 1658513A
Authority
CN
China
Prior art keywords
line segment
bit
output
low
code word
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.)
Granted
Application number
CN 200510024304
Other languages
English (en)
Other versions
CN100423453C (zh
Inventor
华赟
胡波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fudan University
Original Assignee
Fudan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fudan University filed Critical Fudan University
Priority to CNB2005100243042A priority Critical patent/CN100423453C/zh
Publication of CN1658513A publication Critical patent/CN1658513A/zh
Application granted granted Critical
Publication of CN100423453C publication Critical patent/CN100423453C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明为一种通过查表实现的算术编解码方法。算术编解码是对非等概率的数据进行压缩和解压缩的有效方法。算术编解码过程中都需要将线段不断地细化,由于在有限精度的情况下,无法将线段无限细化,所以实现过程中需要将缩小的线段放大和平移,这称为更新,在编码端还要同时将更新信息作为输出的编码码字,在解码端还要更新Value。本方法通过判断更新前线段两端的位置得到“数据表”中的索引信息,快速高效得更新线段和完成其它操作,从而大大节省编解码时需要的运算量,尤其是避免了大量判断和跳转的次数。试验结果证明,该方法为了存放“数据表”增加了有限内存空间,但是可以大大加快算术编解码的速度,提高硬件实现的效率。

Description

通过查表实现的算术编解码方法
技术领域
本发明属于数据压缩技术领域,具体涉及一种通过查表实现的算术编解码方法。
背景技术
算术编码是一种无失真的编码方法,能有效地压缩信源冗余度,属于熵编码的一种,适用于非等概率的数据的压缩。算术编码的基本原理是:根据编码数据中不同符号的概率,把线段划分为互不重叠的子线段,子线段的宽度恰好是各符号的概率。编码一个符号就是找到对应的子线段,然后再对该线段划分得到下一级的子线段,对下一个符号编码。在最后的子线段中的任意实数都可以用来表示对应的符号序列,这个数就是该符号序列所对应的码字。显然,一串符号序列发生的概率越大,对应的子线段就越宽,要表达它所用的比特数就减少,因而相应的码字就越短。算术解码的过程是算术编码的逆过程,通过码字得到线段中的某一个点,称为Value,判断该点位于哪一个子线段中,从而得到与该子线段相应的符号。
但是在具体实现中往往无法做到线段无限细划的精度。在有限精度的条件下,就需要在编码一些符号后,对线段进行放大和平移,保证下一次线段划分精度。而线段放大和平移的信息就是输出码字。其中需要对线段不同的情况做出不同的操作,所以如何减少运算次数和判断跳转次数成了本领域研究的一个热点。
发明内容
本发明的目的是提出一种通过查表实现的算术编解码方法。在编码过程中可以快速的判断当前线段的情况,并且更新线段得到输出码字,大大减少运算量,同时减少判断和跳转操作次数;在解码中,可以用该方法快速的更新子线段更新Value的值。
本发明提出的通过查表实现算术编解码方法,是根据算术编解码中线段的信息查表,得到线断更新和其他操作的信息,从而高效的实现算术编解码。具体来说,是根据更新前线段两端的位置信息,在预存的“数据表”中得到相应的数据。然后,在编码端根据从“数据表”中查得的数据,其中包括线段放大倍数和平移大小,输出码流的信息。在解码端根据从“数据表”中查得的数据,其中包括线段放大倍数和平移大小,更新Value的信息。本发明可以定义不同长度的“数据表”,“数据表”越长,算术编解码越高效。具体表现在运算数度加快,判断跳转次数减少。
本发明提出的通过查表实现的算术编解码方法,编码的具体步骤如下:
(1)首先对一个符号编码,得到新的线段;
(2)然后根据新的线段两端的位置,得到表格中Index;
(3)读取表中的相应数据,该数据中包含更新线段和输出码字的信息;
(4)最后更新线段和输出码字;
(5)判断新的线段是否可以对下一个符号编码,如为真,从步骤(1)开始,对下一个符号编码,否则从步骤(2)开始,继续查表,更新线段并且输出码字。
本发明提出的通过查表实现的算术编解码方法,解码的具体步骤如下:
(1)根据码字得到线段中一点的位置,称为Value,该点位于某个子线段,解码的符号为该子线段对应的符号;
(2)然后根据子线段两端的位置,得到表格中Index;
(3)读取表中的相应数据,该数据中包含更新线段的信息;
(4)最后更新线段,并且同时更新Value;
(5)判断新的线段是否可以对下一个符号解码,如为真,从步骤(1)开始,对下一个符号解码,否则从步骤(2)开始,继续查表,更新线段和Value。
与通常的算术编解码的过程相比,主要的改进在于引入了“数据表”,通过查表得到线段更新和输出码字的信息。该“数据表”可以设置成不同的大小,“数据表”越长,占用的空间越大,但是编解码的效率也越高。
下面举例为8*8的“数据表”。约定:线段初始化为“1”,线段的两端一次定义为Low和High,并且满足Low≤High。当对一个符号编码后,新的线段是原线段的子线段,此时得到新的Low和High。将单位长度“l”的线段等分为8段,根据Low和High所处的位置会有64种项,其中因为要满足Low≤High的条件所以一共有36种可能,如表一。
用于编码端的“数据表”中每一项都对应于Low和High的位置,其中包括了所有输出码字的信息、Low和High放大倍数和偏移量以及线段更新结束的标志。输出码字的信息包括直接放入输出码字的比特和所谓Bit_to_follow个数,Bit_to_follow个数是指当前不输出,直到得到下一个输出比特后才能确定的输出比特个数。例如,当前累加的Bit_to_follow个数为3,下一次查表,要求输出的比特为“010”,那么,由于第一个确定比特为“0”,所以在这个“0”后面要加上3个“1”得到的输出比特为“011110”;反之,如果当前累加的Bit_to_follow个数为3,下一次查表,要求输出的比特为“110”,那么,由于第一个确定比特为“1”,所以在这个“1”后面要加上3个“0”得到的输出比特为“100010”。Low和High的放大倍数是指Low和High左移的比特数,左移后High的低位“0”要变为“1”。由于左移后Low和High的范围往往会超出原来的范围,所以还要减去相应的偏移量,使得Low和High回到原来的范围内。另外,如果Low和High的差值,也就是线段的长度足够大的话,就不需要更新线段;如果Low和High经过一次查表和更新过程,它们的差值仍然太小,就需要再进行下一次查表操作,这需要一个标志来标示。
用于解码端的“数据表”只需要记录更新Low、High和Value的信息,即Low、High和Value放大倍数和偏移量。Low左移后低位填“0”,High左移后低位填“1”,Value左移后低位填入待解码码字的比特,然后减去偏移量,所以可以保证Low≤Value≤High,并且处于有效范围内。,如果Low和High的差值,也就是线段的长度足够大的话,就不需要更新线段;如果Low和High经过一次查表和更新过程,它们的差值仍然太小,就需要再进行下一次查表操作,这需要一个标志来标示。
要求Low和High的差值足够大是为了保证设下一个符号的概率为p,那么(High-Low)next=[(High-Low)·P]-1≥0,要使上式在P=Pmin时也成立,就要求High-Low足够大,即 High - Low ≥ 1 p min .
表一
本发明提出的通过查表实现算术编解码方法,大大节省了算术编解码的运算量,主要表现在:
(1)通过查表,编码端可以在一次更新线段的时候得到多个输出比特和Bit_to_follow信息,而不是一次更新线段只得到一个输出比特或Bit_to_follow增加1。解码端可以在一次更新线段的时候将多个输入比特放入Value中。
(2)通过查表,可以直接得到线段的信息,而避免了大量的判断和跳转操作。
具体实施方式
本发明的重点在于数据表的设计和查表、更新线段的操作,现分别进一步具体介绍如下:
一、“数据表”的设计
编码端“数据表”的内容有:
(1)单位“1”线段划分段数;
(2)数据表的表长;
(3)线段是否需要更新标志(比特);
(4)线段更新时有无输出比特标志(比特);
(5)线段更新时输出的第一个比特(比特);
(6)线段更新后是否需要再次更新标志(比特);
(7)线段放大后的偏移量(比特);
(8)线段更新时输出的比特(比特);
(9)线段更新时输出比特数(比特);
(10)Bit to follow的比特数(比特);
(11)数据表中每一项合计的比特数(比特)。
随着对单位“1”线段划分的增多,“数据表”长度增长,同时“数据表”中每一项需要的比特数也增多。通常线段划分的段数取为2n,取n为2-16。
表2为n取2、3、4时“数据表”形式。
单位“1”线段划分段数 数据表的表长 线段是否需要更新标志(比特) 线段更新时有无输出比特标志(比特) 线段更新时输出的第一个比特(比特) 线段更新后是否需要再次更新标志(比特) 线段放大后的偏移量(比特) 线段更新时输出的比特(比特) 线段更新时输出比特数(比特) Bit tofollow的比特数(比特) 数据表中每一项合计的比特数(比特)
4 16 1 1 1 1 3 2 2 1 12
8 64 1 1 1 1 4 3 2 2 15
16 256 1 1 1 1 5 4 3 2 18
                                                      表二
解码端“数据表”的内容有:
(1)单位“1”线段划分段数;
(2)数据表的表长;
(3)线段是否需要更新标志(比特);
(4)线段更新后是否需要再次更新标志(比特);
(5)线段放大的左移位数(比特);
(6)线段放大后的偏移量(比特);
(7)数据表中每一项合计的比特数(比特)。
同样的随着对单位“1”线段划分的增多,“数据表”长度增长,同时“数据表”中每一项需要的比特数也增多。表3为n取2、3、4时“数据表”形式。
 单位“1”线段划分段数 数据表的表长   线段是否需要更新标志(比特)   线段更新后是否需要再次更新标志(比特)   线段放大的左移位数(比特)  线段放大后的偏移量(比特)   数据表中每一项合计的比特数(比特)
 4 16   1   1   2  3   7
 8 64   1   1   2  4   8
 16 256   1   1   3  5   10
                                                 表三
二、查表和更新线段的操作
查表就是根据当前线段Low和High的位置得到相应的Index,然后得到“数据表”的信息。如果Low和High都用16个比特标示,单位“1”线段为0到65535,将线段分为8段,那么将Low和High的最高3比特组成Index,即
Index=Low15Low14Low13High15High14High13
然后在“数据表”中得到数据。
编码的操作如下:
(1)如果“线段是否需要更新标志”为“非”,那么操作完成;反之,进行下一步操作;
(2)如果“线段更新时有无输出比特标志”为“是”,那么进行步骤(3)操作;反之进行步骤(4)操作;
(3)判断编码器之前累加的Bit_to_follow是否大于0。如果为“是”,则将“线段更新时输出的第一个比特”放入输出码字中,然后将Bit_to_follow个取反的“线段更新时输出的第一个比特”也放入输出码字中,再将剩余的“线段更新时输出的比特”放入输出码字中;如果为“非”,则将“线段更新时输出的比特”直接放入输出码字中;
(4)如果“数据表”中得到的“Bit_to_follow的比特数”不为0,则将其累加到编码器的Bit_to_follow中;
(5)“线段更新时输出的比特数”和“Bit_to_follow的比特数”之和为Low和High左移的位数,左移后将High的低位置为“1”,然后减去偏移量。偏移量是通过“线段放大后的偏移量”得到的,由于不同情况下偏移量的若干低位都是“0”,“线段放大后的偏移量”只记录了偏移量的高位,所以要通过左移得到实际需要的偏移量;
(6)如果“线段更新后是否需要再次更新标志”为“是”,则根据新得到的Low和High重新查表,然后从步骤(1)开始继续操作;反之,则完成当前操作,可以对下一个符号进行编码了。
解码的操作如下:
(1)如果“线段是否需要更新标志”为“非”,那么操作完成;反之,进行下一步操作;
(2)Low、High和Value左移“线段放大的左移位数”,Low左移后低位填“0”,High左移后低位填“1”,Value左移后低位填入待解码码字的比特,然后减去偏移量;和编码端一样,偏移量是通过“线段放大后的偏移量”得到的;
(3)如果“线段更新后是否需要再次更新标志”为“是”,则根据新得到的Low和High重新查表,然后从步骤(1)开始继续操作;反之,则完成当前操作,可以对下一个符号进行编码了。
三、与改进前算术编解码效果的比较
在标准视频流Salesman、Claire、Miss American中各选择一帧,分别进行一下操作。先对其进行梯度自适应预测(GAP),得到非等概率分布的符号集合,符号包括0到255,所以用8比特表示。任意选取64511个预测结果符号,统计预测结果各符号的概率,根据概率可以将线段划分为256个子线段,每个线段对应一个符号。Low和High都用16个比特表示,初始值Low=0,High=65535。
以下比较改进前和改进后算术编码的效率。
单位“1”线段划分段数 有输出比特操作的次数 将bit tofollow个比特输出次数 判断和挑砖的次数 查表的次数 更新线段的次数
MissAmerican 改进前 206505 29436 329921 0 427576
4 178334 29436 123383 242845 178334
8 122925 29436 123383 156386 122925
16 93725 29436 123383 132095 93725
Claire 改进前 185057 25113 300078 0 375946
4 157781 25113 114737 222292 157781
8 111154 25113 114737 148240 111154
16 90085 25113 114737 114294 90085
Salesman 改进前 312863 31433 440469 0 594792
4 235683 31433 127377 300194 235683
8 160543 31433 127377 197859 160543
16 130454 31433 127377 149675 130454
                                            表四
显然,使用查表的方法,可以使得计算的次数大大降低,其中减少判断和跳转的次数还意味着减少流水线排空的次数。这些都将大大提高算术编解码的效率。

Claims (6)

1、一种通过查表实现的算术编解码方法,其特征在于编码的具体步骤如下:
(1)首先对一个符号编码,得到新的线段;
(2)然后根据新的线段两端的位置,得到表格中Index;
(3)读取表中的相应数据,该数据中包含更新线段和输出码字的信息;
(4)最后更新线段和输出码字;
(5)判断新的线段是否可以对下一个符号编码,如为真,从步骤(1)开始,对下一个符号编码,否则从步骤(2)开始,继续查表,更新线段并且输出码字。
2、根据权利要求1所述的算术编解码方法,其特征在于解码
(1)根据码字得到线段中一点的位置,称为Value,该点位于某个子线段,解码的符号为该子线段对应的符号;
(2)然后根据子线段两端的位置,得到表格中Index;
(3)读取表中的相应数据,该数据中包含更新线段的信息;
(4)最后更新线段,并且同时更新Value;
(5)判断新的线段是否可以对下一个符号解码,如为真,从步骤(1)开始,对下一个符号解码,否则从步骤(2)开始,继续查表,更新线段和Value。
3、根据权利要求1所述的算术编解码方法,其特征在于用于编码端的“数据表”中每一项都对应于Low和High的位置,其中包括了所有输出码字的信息、Low和High放大倍数和偏移量以及线段更新结束的标志,输出码字的信息包括直接放入输出码字的比特和所谓Bit_to_follow个数,Bit_to_follow个数是指当前不输出,直到得到下一个输出比特后才能确定的输出比特个数。
4、根据权利要求2所述的算术编解码方法,其特征在于用于解码端的“数据表”只需要记录更新Low、High和Value的信息,即Low、High和Value放大倍数和偏移量。
5、根据权利要求3所述的算术编解码方法,其特征在于编码中更新线段的操作步骤如下:
(1)如果“线段是否需要更新标志”为“非”,那么操作完成;反之,进行下一步操作;
(2)如果“线段更新时有无输出比特标志”为“是”,那么进行步骤(3)操作;反之进行步骤(4)操作;
(3)判断编码器之前累加的Bit_to_follow是否大于0,如果为“是”,则将“线段更新时输出的第一个比特”放入输出码字中,然后将Bit_to_follow个取反的“线段更新时输出的第一个比特”也放入输出码字中,再将剩余的“线段更新时输出的比特”放入输出码字中;如果为“非”,则将“线段更新时输出的比特”直接放入输出码字中;
(4)如果“数据表”中得到的“Bit_fo_follow的比特数”不为0,则将其累加到编码器的Bit_to_follow中;
(5)“线段更新时输出的比特数”和“Bit_to_follow的比特数”之和为Low和High左移的位数,左移后将High的低位置为“1”,然后减去偏移量;
(6)如果“线段更新后是否需要再次更新标志”为“是”,则根据新得到的Low和High重新查表,然后从步骤(1)开始继续操作;反之,则完成当前操作,可以对下一个符号进行编码了。
6、根据权利要求4所述的算术编解码方法,其特征在于在解码中更新线段的操作步骤如下:
(1)如果“线段是否需要更新标志”为“非”,那么操作完成;反之,进行下一步操作;
(2)Low、High和Value左移“线段放大的左移位数”,Low左移后低位填“0”,High左移后低位填“1”,Value左移后低位填入待解码码字的比特,然后减去偏移量;
(3)如果“线段更新后是否需要再次更新标志”为“是”,则根据新得到的Low和High重新查表,然后从步骤(1)开始继续操作;反之,则完成当前操作,可以对下一个符号进行编码了。
CNB2005100243042A 2005-03-10 2005-03-10 通过查表实现的算术编解码方法 Expired - Fee Related CN100423453C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100243042A CN100423453C (zh) 2005-03-10 2005-03-10 通过查表实现的算术编解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100243042A CN100423453C (zh) 2005-03-10 2005-03-10 通过查表实现的算术编解码方法

Publications (2)

Publication Number Publication Date
CN1658513A true CN1658513A (zh) 2005-08-24
CN100423453C CN100423453C (zh) 2008-10-01

Family

ID=35007803

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100243042A Expired - Fee Related CN100423453C (zh) 2005-03-10 2005-03-10 通过查表实现的算术编解码方法

Country Status (1)

Country Link
CN (1) CN100423453C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901588B (zh) * 2009-05-31 2012-07-04 比亚迪股份有限公司 一种嵌入式系统的图像平滑显示方法
CN102664636A (zh) * 2012-05-16 2012-09-12 苏州大学 一种变长编码、解码方法及装置
CN103096062A (zh) * 2011-11-01 2013-05-08 珠海扬智电子科技有限公司 算术解码方法
CN107314780A (zh) * 2016-04-27 2017-11-03 财团法人工业技术研究院 定位绝对码的解码装置及解码方法
CN112636765A (zh) * 2019-09-24 2021-04-09 无锡江南计算技术研究所 基于数据压缩存储的细粒度并行查表方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298087B1 (en) * 1998-08-31 2001-10-02 Sony Corporation System and method for decoding a variable length code digital signal
CN1137431C (zh) * 1999-02-02 2004-02-04 罗平候 一种线符的编码输入方法
US6404362B1 (en) * 1999-09-21 2002-06-11 Unisys Corporation Method and apparatus for reducing the time required for decompressing compressed data
JP2002141807A (ja) * 2000-11-02 2002-05-17 Matsushita Electric Ind Co Ltd 可変長復号化器
CN1281066C (zh) * 2004-05-27 2006-10-18 复旦大学 一种三维小波等级树集合划分算法的视频压缩编码方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901588B (zh) * 2009-05-31 2012-07-04 比亚迪股份有限公司 一种嵌入式系统的图像平滑显示方法
CN103096062A (zh) * 2011-11-01 2013-05-08 珠海扬智电子科技有限公司 算术解码方法
CN102664636A (zh) * 2012-05-16 2012-09-12 苏州大学 一种变长编码、解码方法及装置
CN102664636B (zh) * 2012-05-16 2016-03-23 苏州大学 一种变长编码、解码方法及装置
CN107314780A (zh) * 2016-04-27 2017-11-03 财团法人工业技术研究院 定位绝对码的解码装置及解码方法
US10243668B2 (en) 2016-04-27 2019-03-26 Industrial Technology Research Institute Positioning measurement device and the method thereof
CN107314780B (zh) * 2016-04-27 2020-06-12 财团法人工业技术研究院 定位绝对码的解码装置及解码方法
CN112636765A (zh) * 2019-09-24 2021-04-09 无锡江南计算技术研究所 基于数据压缩存储的细粒度并行查表方法
CN112636765B (zh) * 2019-09-24 2022-07-12 无锡江南计算技术研究所 基于数据压缩存储的细粒度并行查表方法

Also Published As

Publication number Publication date
CN100423453C (zh) 2008-10-01

Similar Documents

Publication Publication Date Title
US9851945B2 (en) Bit remapping mechanism to enhance lossy compression in floating-point applications
CN1183683C (zh) 使用前缀预测的位自适应编码方法
US10528539B2 (en) Optimized selection of hash collision chains
CN1658513A (zh) 通过查表实现的算术编解码方法
CN101771879B (zh) 基于cabac的并行归一化编码实现电路及编码方法
US20110154169A1 (en) System, method, and apparatus for a scalable processor architecture for a variety of string processing applications
CN1933334A (zh) 从比例二进制编码十进制转换到十进制浮点的系统和方法
CN1945981A (zh) 从十进制浮点转换到比例二进制编码十进制的系统和方法
CN1898874A (zh) 具有子块处理和基于子块的停止标准的siso解码器
CN1645751A (zh) 加速译码装置及其方法
US20090201180A1 (en) Compression for deflate algorithm
CN1514548A (zh) 纠错编码设备及方法
CN101562455A (zh) 内容可适性二元算数编码的译码装置及其译码方法
CN1868127A (zh) 数据压缩系统和方法
CN1262816A (zh) 对信息信号的算术编码与解码
CN116595568B (zh) 一种基于区块链的隐私数据加密方法
CN1758543A (zh) 提高Turbo码译码速度的并行译码方法及译码装置
CN1866218A (zh) 软件系统的资源管理方法
CN102740066A (zh) Cavlc解码方法和系统
CN1209925C (zh) 基于信源高阶熵的数据压缩方法
CN116707545A (zh) 低消耗、高吞吐的5gldpc译码器实现方法及装置
CN105653506A (zh) 一种基于字符编码转换的gpu内文本处理的方法及装置
CN101079636A (zh) 将一位热码译码为二进制码的方法及一位热码译码器
US9171032B2 (en) Radix sort with read-only key
CN1645750A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081001

Termination date: 20150310

EXPY Termination of patent right or utility model