CN101022552A - 一种实现霍夫曼译码的方法和装置 - Google Patents
一种实现霍夫曼译码的方法和装置 Download PDFInfo
- Publication number
- CN101022552A CN101022552A CN 200710064367 CN200710064367A CN101022552A CN 101022552 A CN101022552 A CN 101022552A CN 200710064367 CN200710064367 CN 200710064367 CN 200710064367 A CN200710064367 A CN 200710064367A CN 101022552 A CN101022552 A CN 101022552A
- Authority
- CN
- China
- Prior art keywords
- code
- word
- address
- huffman
- decoded
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000000052 comparative effect Effects 0.000 claims description 47
- 230000008878 coupling Effects 0.000 claims description 38
- 238000010168 coupling process Methods 0.000 claims description 38
- 238000005859 coupling reaction Methods 0.000 claims description 38
- 230000000155 isotopic effect Effects 0.000 claims description 20
- 230000000295 complement effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种实现霍夫曼译码的方法,其步骤包括:接收到经过霍夫曼编码的数据流;截取该数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。本发明还公开了一种实现霍夫曼译码的装置,该装置包括接收模块和执行模块。本发明能够高速低耗地实现霍夫曼译码。
Description
技术领域
本发明涉及编码领域,特别是涉及一种实现霍夫曼译码的方法和装置。
背景技术
目前,对于网络摄像芯片、手机、数码相机及数字电视等产生的数字图像信号或模拟电视经采样量化后的数字图像信号,在传输数字图像信号前,需要在发送端通过压缩编码的方式去掉数字图像信号中的冗余成分,以达到压缩码率和带宽,实现数字图像信号有效传输的目的,经过压缩编码的数据流传输到接收端后,需要经过译码过程,将经过压缩编码的数据流恢复成数字图像信号。
霍夫曼编码(Huffman)是广泛应用于图像压缩的编码技术,霍夫曼编码是一种可变长编码方法,其编码的基本思想是:将数字图像信号中出现概率越高的数据符号编成越短的码字,将数字图像信号中出现概率越低的数据符号编成越长的码字。在霍夫曼编码过程中,通常需要两次扫描数据符号,第一次扫描可得到数据符号出现概率的统计结果,由此产生霍夫曼树,第二次扫描则是根据霍夫曼树对数据符号进行编码,编码规则是从霍夫曼树的根节点出发,走访霍夫曼树,直至找出数据符号出现概率的树叶节点,记录下走访的路径,如果路径为左子树,则编码为“0”,如果为右子树则编码为“1”。比如,字母ABCDE出现频率分别为0.19 0.09 0.210.12 0.39,首先根据出现频率排序,得到新顺序:0.09 0.12 0.19 0.210.39,取出最小的0.09和0.12,合并成另一棵新的二元树,其根节点的频率为0.21;取出0.19和0.21合并后,得到0.40的新二元树;取出0.21和0.39,合并后得到0.60的新二元树;取出0.40和0.60,合并后得到1.0的新二元树。建立的霍夫曼树如图1所示。对数据A编码时,从霍夫曼树的根节点1.0出发,找到0.19(A)树节点,路径为左子树-左子树,因此,A的编码是“00”,同理,对D编码时,则路径为右子树-左子树-右子树,因此,D的编码是“101”。采用霍夫曼编码方法的优点在于,对于同样的信息源,霍夫曼编码能够有效地减小数据符号冗余,使输出码字的平均码长最短,编码效率高。
在应用霍夫曼编码的场合,在接收端,需要对接收到的经过霍夫曼编码的数据流进行霍夫曼译码,将其恢复成原数据符号,再将数据符号输出或做其它后续处理。目前,霍夫曼译码的方法有两种,一种是树搜索法,另一种是查表法。
方法一
这种将经过霍夫曼编码的数据流恢复成原数据符号的方法是采用树搜索对数据流进行霍夫曼译码,将其恢复成原数据符号。树搜索法是指根据编码过程中产生的霍夫曼树,对输入的数据流按位进行译码,直至数据流全部译完。常采用有限状态机来实现树搜索法译码,其具体步骤如下:
1、首先将霍夫曼树中的每个节点看作成一个状态。
2、读取输入数据流的一位,将该输入作为下一个状态跳转的条件,如果输入为“0”,向左跳,如果输入为“1”,向右跳。
3、判断是否跳到树叶节点,如果是,则表示命中,译码完毕,否则继续读入一位数据,重复步骤2-3。
图2为采用树搜索法译码的一个示例,图2中,S1-S4为中间状态,A、B、C、D、E为原数据符号,假如输入数据流为“1100”,读入第一位“1”,由状态S1跳至状态S2,没有命中,继续读入下一位“1”,则跳至状态S3,没有命中,继续读入下一位“0”,则跳至树叶节点C,此时,译码的码字为“110”,对应的数据符号为“C”。继续译码,读入下一位“0”,命中,对应的数据符号为“A”。
采用树搜索法译码时,每读取判断一位数据流,就需要占用一个时钟周期,由于输入数据流的码字长度的不同,因而译码所占用的时钟周期数也各不相同,并且树搜索法要进行一位一位的读取判断,译码速度低,不适合应用在要求实时译码条件的系统中。
方法二
这种将经过霍夫曼编码的数据流恢复成原数据符号的方法是采用查表法对数据流进行霍夫曼译码,将其恢复成原数据符号。查表法的基本思想是:将待译数据流中的码字与霍夫曼码表或霍夫曼树中码字进行比较,找出匹配的码字,实现译码目的。由于霍夫曼编码为可变长编码,因此应在每次译出一个码字后,重新确定查找位置,通常采用图3所示的结构实现查表法译码。
查表器310由数据指针311和存储器313组成,存储器313中预先存储着译码时要使用的霍夫曼码表或霍夫曼树。数据指针311用于依次查找匹配霍夫曼码表或霍夫曼树。
缓冲器320用于缓存固定位数的经过霍夫曼编码的输入数据流,比如输入数据流为4位。4位的数据输入长度有可能包含多于一个码字的数据,这样需要一个缓冲器320来保存输入的经过霍夫曼编码的数据流。缓冲器320的另外一个功能是能保证在一个码字译完以后,可以移位到正确的位置。缓冲器320中的码字译完以后,开始接收新的输入数据流,重复上面的过程,直到所有输入数据流中的数据全部译完。
累加器330用于指出缓冲器320中下一个待译码字的位置,以便下次查表时,也就是下一个译码周期,从数据流中未译出码字的第一位数据开始截取数据。这一步是通过累加前几次码字的长度来计算的;另外,当所有码字译完以后,累加器330会通知缓冲器320接收新的输入数据流。
仍以方法一中的例子说明,假设缓冲器中固定位数的输入数据流为“1100”。在译码的第一个周期,累加器的值为“0”,从数据流的第一位“1”开始截取,译码的码字为“110”对应的数据符号为“C”,码长为“3”。则累加器的值为第一周期译码的码长“3”,在第二个周期,累加器的值为第一周期译码的码长“3”,累加器控制缓冲器移位3,这时,应从数据流的第4位开始截取,这样,译码的码字为“0”对应的数据符号为“A”,码长为“1”。第三个周期,累加器的值为“4”,累加器控制缓冲器将四位数据移出,接收新的输入数据流。继续重复以上过程,直到输入数据流中的数据全部解完。
采用查表法译码时,每解一个码字,就需要占用一个时钟周期,因此,不管码字的长短,各码字译码所需要的时钟周期都是相同的,而且译码的时间相对也比较短,比较适合要求实时译码的环境。但是查表法需要占用大量的硬件组合电路资源或存储空间,例如霍夫曼码字最长为16位,则其霍夫曼码表占用的存储空间为64K表项,占用的硬件资源大,译码功耗高。
综上所述,目前的现有技术均不能高速低耗地实现霍夫曼译码,将经过霍夫曼编码的数据流恢复成原数据符号。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现霍夫曼译码的方法,该方法能够高速低耗地实现霍夫曼译码。
本发明的另一个主要目的在于提供一种实现霍夫曼译码的装置,该装置能够高速低耗地实现霍夫曼译码。
为了达到上述第一个目的,本发明提出的技术方案为:一种实现霍夫曼译码的方法,该方法包括:
A.接收到经过霍夫曼编码的数据流;
B.截取该数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。
步骤B所述的地址索引表的设置方法是:
根据预置的霍夫曼码表得到霍夫曼码表中每个码长的起始码字、终止码字以及起始码字在霍夫曼码表中的位置地址,按照码长顺序排列,得到霍夫曼码表的地址索引表。
步骤B所述的截取该数据流的不同位数作为待译码字,分别与地址索引表相比较的方法是:
根据预先设定的短码码长,分别截取数据流,得到不同位数的待译码字,将得到的待译码字同时与地址索引表相比较,得到同时查找地址索引表的比较结果,如果比较结果为不匹配,将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字与地址索引表相比较,直到比较结果为匹配或者截取的数据位数达到设定的最大值。
所述的根据预先设定的短码码长,分别截取数据流的方法是:
每次均从数据流中未译出码字的第一位数据开始截取,依次增加一位截取数据,直到截取的数据位数等于预先设定的短码码长为止。
所述的得到同时查找地址索引表的比较结果的方法是:
判断同时与地址索引表相比较的不同位数的待译码字是否都不与地址索引表相匹配,如果是,则同时查找地址索引表的比较结果为不匹配,否则,同时查找地址索引表的比较结果为匹配。
所述待译码字与地址索引表相比较的方法是:
将待译码字与地址索引表中同一码长的起始码字和终止码字相比较,如果待译码字大于同一码长的终止码字或者小于同一码长的起始码字,则待译码字与地址索引表不匹配,否则,待译码字与地址索引表相匹配。
在得到的比较结果为匹配后,步骤B所述的得到霍夫曼码表地址的方法是:
根据待译码字与地址索引表的比较结果,得到与地址索引表匹配的最小码长值,查地址索引表得到码长为最小码长值的起始码字的位置地址,则霍夫曼码表地址等于最小码长起始码字的位置地址加上最小码长的待译码字与该起始码字的比较差值。
为了达到上述第二个目的,本发明提出的技术方案为:一种实现霍夫曼译码的装置,该装置包括接收模块和执行模块;
接收模块,用于接收经过霍夫曼编码的数据流,将接收到的数据流输入到执行模块;
执行模块,用于截取接收模块输入的数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。
所述的执行模块包括短码字比较单元、长码字比较单元、地址产生单元和霍夫曼码表查找单元;
所述的短码字比较单元,用于根据预先设定的短码码长,分别截取数据流,得到不同位数的待译码字,将得到的待译码字同时与地址索引表相比较,得到同时查找地址索引表的比较结果,在同时比较的结果为匹配时,将位数最小的匹配待译码字产生的比较差值输入到地址产生单元,在同时比较的结果为不匹配时,将不匹配的比较结果输入到长码字比较单元;
所述的长码字比较单元,用于根据短码字比较单元输入的不匹配比较结果,将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字与地址索引表相比较,在比较结果为匹配时,将待译码字产生的比较差值输入到地址产生单元,在截取的数据位数超出设定的最大值仍不匹配时,进行错误处理;
所述的地址产生单元,用于根据短码字比较单元或长码字比较单元输入的比较差值产生霍夫曼码表地址,将产生的霍夫曼码表地址输入到霍夫曼码表查找单元;
所述的霍夫曼码表查找单元,用于根据地址产生单元输入的霍夫曼码表地址得到霍夫曼码字。
所述的短码字比较单元包括位数从一到短码码长的多个短码比较子单元以及判决子单元;
所述的短码比较子单元,用于根据该短码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的比较结果输入到判决子单元,并在判决子单元选通时,将产生的比较差值输入到地址产生单元;
所述的判决子单元,用于根据短码比较子单元输入的比较结果,确定与地址索引表匹配的最小码长值,选通位数等于最小码长的短码比较子单元与地址产生单元间的通路。
所述的长码字比较单元包括多个长码比较子单元、最长码比较子单元以及错误处理子单元;
所述的长码比较子单元,用于根据该长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元;
所述的最长码比较子单元,用于根据该最长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元,将得到的不匹配的比较结果输入到错误处理子单元;
所述的错误处理子单元,用于根据最长码比较子单元输入的比较结果,对数据流进行错误处理。
所述的霍夫曼码表查找单元包括霍夫曼码表存储子单元;
所述的霍夫曼码表存储子单元用于存储霍夫曼码表。
综上所述,本发明提出的一种实现霍夫曼译码的方法和装置,具有以下优点:
第一、本发明结合霍夫曼编码的特点,对出现概率占绝大部分的较短码字同时译码,实现了在使用尽可能少的硬件资源的情况下,提高绝大部分码字的译码效率的目的,能够低耗地实现霍夫曼译码。
第二、本发明在分析霍夫曼码表的基础上,建立存储空间较小的地址索引表,先将数据流与地址索引表相比较,得出霍夫曼码表地址后,再进一步查找霍夫曼码表,避免了直接查找霍夫曼码表,能够提高译码速度,实现霍夫曼实时译码。
因此,本发明提供的一种实现霍夫曼译码的方法和装置,能够高速低耗地实现霍夫曼译码。
附图说明
图1为霍夫曼树一个示例的示意图;
图2为采用树搜索法译码的一个示例的示意图;
图3为实现查表法译码的一种结构示意图;
图4为本发明实现霍夫曼译码的流程图;
图5为本发明的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的基本思想是:截取经过霍夫曼编码的数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。该方法还可以结合霍夫曼编码的特点,对出现概率占绝大部分的较短码字同时译码,能够高速低耗地实现霍夫曼译码。
图4为本发明实现霍夫曼译码的流程示意图,包括以下步骤:
步骤401:根据预置的霍夫曼码表建立霍夫曼码表的地址索引表。
步骤402:接收到经过霍夫曼编码的数据流。
步骤403:根据预先设定短码码长逐次截取数据流。
步骤404:小于等于短码码长的不同位数的待译码字同时与地址索引表相比较。
步骤405:判断比较结果是否为匹配,如果匹配,则选择的最小码长的比较差值,根据比较差值和地址索引表产生霍夫曼码表地址,执行步骤409,否则,执行步骤406。
步骤406:截取的数据位数增加一位。
步骤407:判断截取的数据位数是否大于设定的最大码长值,如果是,则执行错误处理,否则,执行步骤408。
步骤408:待译码字与地址索引表相比较。
步骤409:判断比较结果是否为匹配,如果是,根据比较差值和地址索引表产生霍夫曼码表地址,执行步骤410,否则,执行步骤406。
步骤410:查霍夫曼码表得到编码前的数据符号。
步骤411:输出译码后的数据符号。
下面结合流程图给出具体的实施例,假设霍夫曼码表为如表1所示:
霍夫曼编码 | 数据符号 |
…… | …… |
1000 | A0 |
1001 | A1 |
1010 | A2 |
1011 | A3 |
10000 | B0 |
10001 | B1 |
10010 | B2 |
10011 | B3 |
…… | |
1111000111000000 | C0 |
表1
首先建立霍夫曼码表的地址索引表,建立的方法是:根据霍夫曼码表得到霍夫曼码表中每个码长的起始码字、终止码字及该码长的起始码字在霍夫曼码表中的位置地址,按照码长顺序排列,根据表1所示霍夫曼码表可得到如表2所示的霍夫曼码表的地址索引表:
…… |
1000 |
1011 |
Adr_4 |
10000 |
10011 |
Adr_5 |
…… |
1111000111000000 |
1111000111000000 |
Adr_16 |
表2
如表2中,码长为4的起始码字为“1000”,终止码字为“1011”,起始码字在霍夫曼码表中的位置地址为“Adr_4”。
接着,根据统计规律得到大部分霍夫曼码字的比特数,也就是出现频率较高的短码字的码长,将其作为预先设置的短码码长。比如85%的霍夫曼码字占用的比特数小于5位比特,则预先设置的短码码长为5位比特。
在本实施例中,霍夫曼设定的最大码长为16位比特,预先设置的短码码长为5位比特,则根据预先设置的短码码长截取数据流,截取的方法是:每次均从数据流中未译出码字的第一位数据开始截取,依次增加一位数据,直到截取的数据位数等于预先设定的短码码长为止,这样,根据短码码长可以得到位数小于等于5的5个不同位数的待译码字。例如一次数据流为8位“10001110”,则截取数据流得到的待译码字分别为“1”,“10”,“100”,“1000”,“10001”。
然后,将这5个不同位数的待译码字先与地址索引表相比较,当找出匹配的霍夫曼码表地址后,再与霍夫曼码表相比较。将这5个不同位数的待译码字与地址索引表相比较的方法是:5个不同位数的待译码字同时与地址索引表中相同码长的起始码字、终止码字相比较。而每个待译码字与地址索引表相比较的方法是:待译码字与地址索引表相同码长的起始码字和终止码字相比较,如果大于终止码字或者小于起始码字,则待译码字与地址索引表不匹配,否则,待译码字与地址索引表为匹配。以表2所示的地址索引表为例,如果待译码字为“1000”,等于地址索引表中的起始码字,所以比较的结果为匹配。而待译码字“10001”与表2所示的地址索引表比较时,也会输出匹配的比较结果。在这种情况下,需要根据待译码字与地址索引表的比较结果,得到与地址索引表匹配的最小码长值,假设前3个位数不同的待译码字“1”,“10”,“100”与地址索引表均不匹配,那么可以确定出最小码长值为4。并且,选择码长为4的比较差值作为产生霍夫曼码表地址的比较差值,即将码长为4的待译码字减去码长为4的起始码字的差值作为产生霍夫曼码表地址的比较差值。
下面,根据比较差值和地址索引表产生霍夫曼码表地址,即最小码长起始码字的位置地址加上最小码长的待译码字与该起始码字的比较差值。在本实施例中,位数为4的数据流“1000”与地址索引表中相同码长的起始码字“1000”的比较差值为0,再加上地址索引表中相同码长的起始码字的位置地址Adr_4,就得到霍夫曼码表地址。
最后,根据查霍夫曼码表得到编码前的数据符号A0。
如果输入的数据流为“110001111”,假若截取的数据位数等于1、2、3、4和5位时,得到的5个位数不同的待译码字与地址索引表均不匹配,那么对照表2,可以得出在第一周期内截取的5个数据流“1”,“11”,“110”,“1100”,“11000”均不匹配,则将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字,也就是将6作为截取的数据位数的初始值,按该截取的数据位数截取的数据流作为新的待译码字,新的待译码字为“110001”,将得到的新的待译码字与地址索引表进行比较,如果比较结果为匹配,将码长为6的比较差值,作为产生霍夫曼码表地址的比较差值,再根据比较差值和地址索引表产生出霍夫曼码表地址,查霍夫曼码表得到数据符号。如果比较结果为不匹配,则再增加一位截取的数据,将得到待译码字“1100011”再次与地址索引表相比较,直到比较结果为匹配或者截取的数据位数到16位比特为止。
本实施例中,采用了对出现频率高的待译码字中的短码字并行译码,对其余的长码字采用串行译码的方法,也可以对所有的待译码字采用统一的并行译码或串行译码方式,即所有的待译码字先与地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号。
图5为本发明的装置结构示意图,该装置包括接收模块550和执行模块500,
接收模块550,接收经过霍夫曼编码的数据流,将接收到的数据流输入到执行模块500;
执行模块500,截取接收模块550输入的数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。
其中,执行模块500还包括短码字比较单元510、长码字比较单元520、地址产生单元530和霍夫曼码表查找单元540;
短码字比较单元510,单元,用于根据预先设定的短码码长,分别截取数据流,得到不同位数的待译码字,将得到的待译码字同时与地址索引表相比较,得到同时查找地址索引表的比较结果,在同时比较的结果为匹配时,将位数最小的匹配待译码字产生的比较差值输入到地址产生单元530,在同时比较的结果为不匹配时,将不匹配的比较结果输入到长码字比较单元520;
长码字比较单元520,根据短码字比较单元输入的不匹配比较结果,将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字与地址索引表相比较,在比较结果为匹配时,将待译码字产生的比较差值输入到地址产生单元530,在截取位数超出设定的最大值仍不匹配时,进行错误处理;
地址产生单元530,用于根据短码字比较单元410或长码字比较单元420输入的比较差值产生霍夫曼码表地址,将产生的霍夫曼码表地址输入到霍夫曼码表查找单元540;
霍夫曼码表查找单元540,用于根据地址产生单元530输入的霍夫曼码表地址得到霍夫曼码字。
其中,短码字比较单元510包括判决子单元512以及多个短码比较子单元511;
所述的短码比较子单元511,根据该短码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字,与地址索引表中同一码长的起始码字和终止码字相比较,将得到的比较结果输入到判决子单元512,并在判决子单元512选通时,将产生的比较差值输入到地址产生单元530;
所述的判决子单元512,用于根据比较子单元511输入的比较结果,确定与地址索引表匹配的最小码长值,选通位数等于最小码长的短码比较子单元511与地址产生单元530间的通路。
长码字比较单元520包括最长码比较子单元522、错误处理子单元523以及多个长码比较子单元521;
长码比较子单元521,根据该长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字,与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元530;
最长码比较子单元522,根据该最长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字,与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元530,将得到的不匹配的比较结果输入到错误处理子单元523;
错误处理子单元523,用于根据最长码比较子单元522输入的比较结果,对数据流进行错误处理。
霍夫曼码表查找单元540包括霍夫曼码表存储子单元541;
霍夫曼码表存储子单元541,用于存储霍夫曼码表,可以为RAM或ROM或者组合电路。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1、一种实现霍夫曼译码的方法,其特征在于,该方法包括:
A.接收到经过霍夫曼编码的数据流;
B.截取该数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。
2、根据权利要求1所述的方法,其特征在于,步骤B所述的地址索引表的设置方法是:
根据预置的霍夫曼码表得到霍夫曼码表中每个码长的起始码字、终止码字以及起始码字在霍夫曼码表中的位置地址,按照码长顺序排列,得到霍夫曼码表的地址索引表。
3、根据权利要求2所述的方法,其特征在于,步骤B所述的截取该数据流的不同位数作为待译码字,分别与地址索引表相比较的方法是:
根据预先设定的短码码长,分别截取数据流,得到不同位数的待译码字,将得到的待译码字同时与地址索引表相比较,得到同时查找地址索引表的比较结果,如果比较结果为不匹配,将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字与地址索引表相比较,直到比较结果为匹配或者截取的数据位数达到设定的最大值。
4、根据权利要求3所述的方法,其特征在于,所述的根据预先设定的短码码长,分别截取数据流的方法是:
每次均从数据流中未译出码字的第一位数据开始截取,依次增加一位截取的数据,直到截取的数据位数等于预先设定的短码码长为止。
5、根据权利要求4所述的方法,其特征在于,所述的得到同时查找地址索引表的比较结果的方法是:
判断同时与地址索引表相比较的不同位数的待译码字是否都不与地址索引表相匹配,如果是,则同时查找地址索引表的比较结果为不匹配,否则,同时查找地址索引表的比较结果为匹配。
6、根据权利要求5所述的方法,其特征在于,所述待译码字与地址索引表相比较的方法是:
将待译码字与地址索引表中同一码长的起始码字和终止码字相比较,如果待译码字大于同一码长的终止码字或者小于同一码长的起始码字,则待译码字与地址索引表不匹配,否则,待译码字与地址索引表相匹配。
7、根据权利要求3、4、5或6所述的方法,其特征在于,在得到的比较结果为匹配后,步骤B所述的得到霍夫曼码表地址的方法是:
根据待译码字与地址索引表的比较结果,得到与地址索引表匹配的最小码长值,查地址索引表得到码长为最小码长值的起始码字的位置地址,则霍夫曼码表地址等于最小码长起始码字的位置地址加上最小码长的待译码字与该起始码字的比较差值。
8、一种实现霍夫曼译码的装置,其特征在于,该装置包括接收模块和执行模块;
所述的接收模块,用于接收经过霍夫曼编码的数据流,将接收到的数据流输入到执行模块;
所述的执行模块,用于截取接收模块输入的数据流的不同位数作为待译码字,分别与设置的用于指示码字在霍夫曼码表中位置的地址索引表相比较,得到对应的霍夫曼码表地址,再根据得到的霍夫曼码表地址查找霍夫曼表,得到霍夫曼编码前的数据符号后输出。
9、根据权利要求8所述的装置,其特征在于,所述的执行模块包括短码字比较单元、长码字比较单元、地址产生单元和霍夫曼码表查找单元;
所述的短码字比较单元,用于根据预先设定的短码码长,分别截取数据流,得到不同位数的待译码字,将得到的待译码字同时与地址索引表相比较,得到同时查找地址索引表的比较结果,在同时比较的结果为匹配时,将位数最小的匹配待译码字产生的比较差值输入到地址产生单元,在同时比较的结果为不匹配时,将不匹配的比较结果输入到长码字比较单元;
所述的长码字比较单元,用于根据短码字比较单元输入的不匹配比较结果,将所述预先设定的短码码长加一作为截取的数据位数的初始值,步长为一,递增截取的数据位数,将按截取的数据位数截取的数据流作为待译码字与地址索引表相比较,在比较结果为匹配时,将待译码字产生的比较差值输入到地址产生单元,在截取位数超出设定的最大值仍不匹配时,进行错误处理;
所述的地址产生单元,用于根据短码字比较单元或长码字比较单元输入的比较差值产生霍夫曼码表地址,将产生的霍夫曼码表地址输入到霍夫曼码表查找单元;
所述的霍夫曼码表查找单元,用于根据地址产生单元输入的霍夫曼码表地址得到霍夫曼码字。
10、根据权利要求9所述的装置,其特征在于,所述的短码字比较单元包括位数从一到短码码长的多个短码比较子单元以及判决子单元;
所述的短码比较子单元,用于根据该短码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的比较结果输入到判决子单元,并在判决子单元选通时,将产生的比较差值输入到地址产生单元;
所述的判决子单元,用于根据短码比较子单元输入的比较结果,确定与地址索引表匹配的最小码长值,选通位数等于最小码长的短码比较子单元与地址产生单元间的通路。
11、根据权利要求9所述的装置,其特征在于,所述的长码字比较单元包括多个长码比较子单元、最长码比较子单元以及错误处理子单元;
所述的长码比较子单元,用于根据该长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元;
所述的最长码比较子单元,用于根据该最长码比较子单元的处理码长截取数据流,将截取的数据流作为待译码字与地址索引表中同一码长的起始码字和终止码字相比较,将得到的匹配的比较差值输入到地址产生单元,将得到的不匹配的比较结果输入到错误处理子单元;
所述的错误处理子单元,用于根据最长码比较子单元输入的比较结果,对数据流进行错误处理。
12、根据权利要求9所述的装置,其特征在于,所述的霍夫曼码表查找单元包括霍夫曼码表存储子单元;
所述的霍夫曼码表存储子单元用于存储霍夫曼码表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710064367 CN100525450C (zh) | 2007-03-13 | 2007-03-13 | 一种实现霍夫曼译码的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710064367 CN100525450C (zh) | 2007-03-13 | 2007-03-13 | 一种实现霍夫曼译码的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101022552A true CN101022552A (zh) | 2007-08-22 |
CN100525450C CN100525450C (zh) | 2009-08-05 |
Family
ID=38710181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710064367 Expired - Fee Related CN100525450C (zh) | 2007-03-13 | 2007-03-13 | 一种实现霍夫曼译码的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100525450C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN103067125A (zh) * | 2012-12-18 | 2013-04-24 | 浙江工业大学 | 一种基于ook调制的无线传感器网络中高发送能量效率源编码方法 |
CN104253993A (zh) * | 2013-06-28 | 2014-12-31 | 炬力集成电路设计有限公司 | 一种多媒体数据处理方法、电路及装置 |
CN105828083A (zh) * | 2015-01-06 | 2016-08-03 | 中兴通讯股份有限公司 | 数据流的解码方法及装置 |
CN107565974A (zh) * | 2017-08-14 | 2018-01-09 | 同济大学 | 一种静态哈夫曼并行全编码实现方法 |
CN107682018A (zh) * | 2017-09-28 | 2018-02-09 | 西安万像电子科技有限公司 | 解码方法及装置 |
CN109831544A (zh) * | 2019-01-30 | 2019-05-31 | 重庆农村商业银行股份有限公司 | 一种应用于电子邮箱地址的编码存储方法及系统 |
CN109889205A (zh) * | 2019-04-03 | 2019-06-14 | 杭州嘉楠耘智信息科技有限公司 | 编码方法及系统、解码方法及系统、编解码方法及系统 |
CN111970007A (zh) * | 2020-08-13 | 2020-11-20 | 山东云海国创云计算装备产业创新中心有限公司 | 一种解码方法、解码器、设备及介质 |
CN113965207A (zh) * | 2021-12-17 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717499B (zh) * | 2015-03-31 | 2018-06-05 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
-
2007
- 2007-03-13 CN CN 200710064367 patent/CN100525450C/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN103067125B (zh) * | 2012-12-18 | 2015-08-05 | 浙江工业大学 | 一种基于ook调制的无线传感器网络中高发送能量效率源编码方法 |
CN103067125A (zh) * | 2012-12-18 | 2013-04-24 | 浙江工业大学 | 一种基于ook调制的无线传感器网络中高发送能量效率源编码方法 |
CN104253993B (zh) * | 2013-06-28 | 2018-01-12 | 炬芯(珠海)科技有限公司 | 一种多媒体数据处理方法、电路及装置 |
CN104253993A (zh) * | 2013-06-28 | 2014-12-31 | 炬力集成电路设计有限公司 | 一种多媒体数据处理方法、电路及装置 |
CN105828083A (zh) * | 2015-01-06 | 2016-08-03 | 中兴通讯股份有限公司 | 数据流的解码方法及装置 |
CN107565974A (zh) * | 2017-08-14 | 2018-01-09 | 同济大学 | 一种静态哈夫曼并行全编码实现方法 |
CN107565974B (zh) * | 2017-08-14 | 2020-06-12 | 同济大学 | 一种静态哈夫曼并行全编码实现方法 |
CN107682018A (zh) * | 2017-09-28 | 2018-02-09 | 西安万像电子科技有限公司 | 解码方法及装置 |
CN109831544A (zh) * | 2019-01-30 | 2019-05-31 | 重庆农村商业银行股份有限公司 | 一种应用于电子邮箱地址的编码存储方法及系统 |
CN109889205A (zh) * | 2019-04-03 | 2019-06-14 | 杭州嘉楠耘智信息科技有限公司 | 编码方法及系统、解码方法及系统、编解码方法及系统 |
CN111970007A (zh) * | 2020-08-13 | 2020-11-20 | 山东云海国创云计算装备产业创新中心有限公司 | 一种解码方法、解码器、设备及介质 |
CN111970007B (zh) * | 2020-08-13 | 2022-03-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种解码方法、解码器、设备及介质 |
CN113965207A (zh) * | 2021-12-17 | 2022-01-21 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
CN113965207B (zh) * | 2021-12-17 | 2022-03-15 | 苏州浪潮智能科技有限公司 | 一种基于deflate霍夫曼编码的动态码表生成装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100525450C (zh) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
CN105227189B (zh) | 分段crc辅助的极化码编译码方法 | |
US9998145B2 (en) | Data processing method and device | |
US6982661B2 (en) | Method of performing huffman decoding | |
CN111884660B (zh) | 一种哈夫曼编码设备 | |
CN101282121B (zh) | 一种基于条件概率的哈夫曼解码的方法 | |
CN106849956B (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
CN100578943C (zh) | 一种优化的霍夫曼解码方法和装置 | |
US7148821B2 (en) | System and method for partition and pattern-match decoding of variable length codes | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN110602498A (zh) | 一种自适应有限状态熵编码的方法 | |
US20090058694A1 (en) | Decompressing Dynamic Huffman Coded Bit Streams | |
US4990910A (en) | Variable length code conversion system | |
KR101030726B1 (ko) | 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치 | |
CN100581258C (zh) | 霍夫曼解码方法和霍夫曼解码装置 | |
CN101741392A (zh) | 一种快速解析码长的哈夫曼解码方法 | |
CN102751994B (zh) | 一种基于两个有限群符号的短码长分组码译码器装置 | |
CN112422987B (zh) | 适用于avc的熵解码硬件并行计算方法及应用 | |
CN100591137C (zh) | 一种基于查找表的变长码解码方法及设备 | |
CN101707484B (zh) | 一种适合硬件实现的快速指数哥伦布码解码方法 | |
US10742783B2 (en) | Data transmitting apparatus, data receiving apparatus and method thereof having encoding or decoding functionalities | |
CN112181869A (zh) | 信息存储方法、装置、服务器及介质 | |
CN104717499B (zh) | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 | |
CN103024380A (zh) | 一种数据的熵编码方法和装置 | |
CN113271107B (zh) | 一种Huffman硬件解码方法 |
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: 20090805 Termination date: 20120313 |