CN101017574A - 一种适于jpeg码流的哈夫曼解码方法 - Google Patents
一种适于jpeg码流的哈夫曼解码方法 Download PDFInfo
- Publication number
- CN101017574A CN101017574A CN 200710037614 CN200710037614A CN101017574A CN 101017574 A CN101017574 A CN 101017574A CN 200710037614 CN200710037614 CN 200710037614 CN 200710037614 A CN200710037614 A CN 200710037614A CN 101017574 A CN101017574 A CN 101017574A
- Authority
- CN
- China
- Prior art keywords
- numeral
- code stream
- length
- minimum
- decoding method
- 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.)
- Pending
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种适于JPEG码流的哈夫曼解码方法;其中,该方法包括如下步骤:a.根据JPEG码流中码子个数表构建最小码子表;b.根据码子个数表构建最小码子地址表;c.采用0到16位比较器,并行方法得到哈夫曼码子对应的RUN/SIZE表;d.根据SIZE值恢复编码前数据。与现有技术相比,本发明的解码方法构建不同码子长度的最小码子表以及最小码子的地址表,可以降低寄存器阵列资源的占用,通过并行的哈夫曼码子判断,减少码子判断所需要的时间,提高硬件解码速度;根据解码得到的RUN/SIZE符号中的SIZE值,快速得到解码数据。该方法具有两个时钟周期快速解码的优点,特别适合于嵌入式设计或芯片设计。
Description
技术领域
本发明属于数字图像处理领域,是一种能够以较少资源快速实现JPEG码流哈夫曼解码的方法。
背景技术
哈夫曼(Hufferman)编码主要应用于流媒体的压缩编码,是一种可变长的游程编码,其指导思想是对出现概率比较高的游程数据采用较少的比特编码,而对出现概率小的游程数据采用较长的比特编码,从而达到压缩数据文件的目的。
对于哈夫曼的软件解码,传统的方法是先恢复码流中码表信息,该码表信息是编码端根据统计信息产生的,因而在不同的码流中,其哈夫曼码表内容和长度都是不同的,码表通常会占用相当大的内存空间,比如jpeg标准T.81中列出的典型的码表总长约为4k bit,对于PC来说,这是很小的内存占有量,但对于嵌入式系统或ASIC设计而言,这将是不小的资源占用。
另外,在进行码流中码子的判断时,传统的实现方法是采用基于二叉树的查找方法,是串行的逐比特判断方法,通常解码一个码子将需要较多的时钟周期。
因此,当在嵌入式系统或用ASIC实现哈夫曼解码时,就应该考虑寄存器阵列资源的占用以及解码的速度问题。
发明内容
本发明的目的在于提供一种适于JPEG码流哈夫曼解码的新方法,其可以采用较少资源快速实现JPEG码流哈夫曼解码。
为实现上述目的,本发明提供一种适于JPEG码流的哈夫曼解码方法;其中,该方法包括如下步骤:a.根据JPEG码流中码子个数表构建最小码子表;b.根据码子个数表构建最小码子地址表;c.采用0到16位比较器,并行方法得到哈夫曼码子对应的RUN/SIZE表;d.根据SIZE值得到解码数据。
与现有技术相比,本发明的解码方法构建不同码子长度的最小码子表以及最小码子的地址表,可以降低寄存器阵列资源的占用,通过并行的哈夫曼码子判断,减少码子判断所需要的时间,提高硬件解码速度;根据解码得到的RUN/SIZE符号中的SIZE值,快速得到解码数据。该方法具有两个时钟周期快速解码的优点,特别适合于嵌入式设计或芯片设计。
附图说明
通过以下对本发明一实施例结合其附图的描述,可以进一步理解其发明的目的、具体结构特征和优点。其中,附图为:
图1是JPEG码流提取框图;
图2是码子长度实现框图;
图3是码子偏移地址实现框图;
图4是码子绝对地址实现框图。
具体实施方式
请参阅图1,图2,图3及图4,本发明提供的适于JPEG码流的哈夫曼解码方法包括如下步骤:
a)从JPEG码流中的码子个数得到最小码子表和最小码子地址表;
JPEG码流中的哈夫曼码表分为两部分。第一部分16个字节对应1到16位码子的个数;第二部分对应具体的RUN/SIZE符号,其个数为前16字节之和,通过前16字节可以得到最小码子表C(n)n(0<n<17,n取整数)和最小码子地址表A(n)n(0<n<17,n取整数)。
假设L(n)表征长度为n(0<n<17,n取整数)的码子个数,根据哈夫曼编码特点,长度为n的最小码子C(n)与长度为n+1的最小码子C(n+1)的关系由公式一表述,根据公式一可得到最小码子表C(n)(0<n<17,n取整数)。
C(n+1)=[C(n)+L(n)]*2 公式一
然后,假设长度为n(0<n<17,n取整数)的码字地址为A(n),公式二表征了A(n)和L(n)的关系,A(1)=0,L(x)为不同长度码子的个数,根据公式二可以得到最小码子地址表A(n)。
b)采用0到16位比较器,用并行方法得到哈夫曼码子对应的RUN/SIZE表;
请参阅图2,编码后的哈夫曼码子不是字节对齐的,而是1到16比特,对应建立比较器阵列。该比较器阵列包括17个比较器,前16个比较器的一个输入端分别为输入码流的1到16比特S(n)(0<n<17,n取整数),另一个输入端分别为最小码子表C(n);第17个比较器的一个输入端为输入码流的16比特,另一个输入端为一16位的二进制数:1111111111111110。
R(n)(0<n<18,n取整数)表征比较器的输出。当S(n)大于等于C(n),比较器输出R(n)为1;反之,比较器输出R(n)为0。当最小码子表C(n)中如果该长度的码子时,根据比较器的长度补齐比较器,前面的采用补全“0”方法,后面的采用补全“1”方法。
R(n)中只有一个0与1分界点,将R(n)与R(n+1)(0<n<17,n取整数)进行异或操作得到X(n)(0<n<17,n取整数),X(n)为1的n值即为码子长度。
请参阅图3,根据码子长度n值取出S(n)(0<n<17,n取整数),根据公式三将S(n)和C(n)进行减法运算得到哈夫曼码子和该长度最小码子的偏移地址B(n)。
B(n)=S(n)-C(n) 公式三
请参阅图4,根据公式四,通过最小码子地址A(n)与偏移地址B(n)进行加法运算后得到对应的RUN/SIZE表的绝对地址AB(n),查现有的RUN/SIZE符号表得到对应的RUN/SIZE值。
AB(n)=A(n)+B(n) 公式四
c)由SIZE值得到解码数据。
据SIZE值,从码流中提取SIZE位比特,判断首位比特,若为1,将结果的符号位置为0(正数),将SIZE位比特作为绝对值赋值;若为0,将结果的符号位置为1(负数),将SIZE位比特取反后作为绝对值赋值。
本发明可以通过如下实施例加以详述。
首先构建最小码子表和码子地址表。表1是JPEG码流中哈夫曼DC分量码子个数表L(n),表1中数据表明长度为2,3,4,5的码子个数分别为2,3,1,1,而其他长度的码子个数都为0。
根据公式一可以构建如表2所示的最小码子表C(n)。根据公式二可以得到如表3所示的最小码子地址表A(n)。表4是现有的RUN/SIZE符号表。
C(n+1)=[C(n)+L(n)]*2 公式一
表1 DC分量码子个数表L(n)
00 | 00 | 07 | 01 | 01 | 01 | 01 | 01 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
表2 DC分量最小码子表C(n)
无 | 无 | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 1110 | 11110 | 111110 | 1111110 | 无 | 无 | 无 | 无 |
表3 DC分量最小码子地址表A(n)
0 | 0 | 0 | 7 | 8 | 9 | 10 | 11 | 12 | 无 | 无 | 无 | 无 | 无 | 无 | 无 |
表4 RUN/SIZE符号表
04 | 05 | 03 | 02 | 06 | 01 | 00 | 07 | 08 | 09 | 0A | 0B |
采用0到16位比较器,并行方法得到哈夫曼码子对应的RUN/SIZE索引。如输入码流为FB A9 69……,取前16比特S(16)(0<n<17,n取整数)1111110110101001,最小码子表按表2的数据取值,其中长度为1最小码子始终为1’b0,表2中表明为“无”的按两种方法处理,前面部分的“无”按全0处理,后面部分的“无”按全“1”处理。处理中间结果见表5。
表5解码处理结果
1-16比特S(n) | 最小码子C(n) | 比较器输出R(n) | 异或结果X(n) |
1 | 0 | 1 | 0 |
11 | 00 | 1 | 0 |
111 | 000 | 1 | 0 |
1111 | 1110 | 1 | 0 |
11111 | 11110 | 1 | 0 |
111111 | 111110 | 1 | 0 |
1111110 | 1111110 | 1 | 1 |
11111101 | 11111111 | 0 | 0 |
111111011 | 111111111 | 0 | 0 |
1111110110 | 1111111111 | 0 | 0 |
11111101101 | 11111111111 | 0 | 0 |
111111011010 | 111111111111 | 0 | 0 |
1111110110101 | 1111111111111 | 0 | 0 |
11111101101010 | 11111111111111 | 0 | 0 |
111111011010100 | 111111111111111 | 0 | 0 |
1111110110101001 | 1111111111111111 | 0 | 0 |
1111110110101001 | 11111111111111111 | 0 | 0 |
从表5中得到码子长度n=7,偏移地址B(7)=S(7)-C(7)=1111110-1111110=0,长度为7的最小码子地址为A(7)=10,绝对地址AB(n)=A(n)+B(n)=10+0=10,所以哈夫曼码子所对应的RUN/SIZE值为0X09,size值为9,在1111110后取9个比特进行判断,9个比特为:110101001,首位比特为“1”,符号位为0(正数),绝对值为110101001=468,至此,第一个哈夫曼码子解码完成。
虽然上文详尽地描述了本发明,但本发明不限于上文的优选实例,本发明仅受权利说明书要求的精髓和范围限制。
Claims (8)
1、一种适于JPEG码流的哈夫曼解码方法;其特征在于:该方法包括如下步骤:
a.根据JPEG码流中码子个数表构建不同码子长度的最小码子表;
b.根据码子个数表构建最小码子地址表;
c.采用0到16位比较器,并行方法得到哈夫曼码子对应的RUN/SIZE表;
d.根据SIZE值得到解码数据。
2、如权利要求1所述的适于JPEG码流的哈夫曼解码方法,其特征在于:步骤a中采用如下公式构建最小码子表,C(n+1)=[C(n)+L(n)]*2(0<n<17,n取整数),其中C(n)表征长度为n的最小码子,C(n+1)表征长度为n+1的最小码子,L(n)表征长度为n(0<n<17,n取整数)的码子个数。
3、如权利要求1所述的适于JPEG码流的哈夫曼解码方法,其特征在于:步骤b中采用如下公式构建最小码子地址表,
(1<n<17);其中,A(n)表征长度为n的码字地址,L(x)为不同长度码子的个数。
4、如权利要求1所述的适于JPEG码流的哈夫曼解码方法,其特征在于:步骤c通过构建0到16位比较器以及异或逻辑得到码子长度n。
5、如权利要求1所述的适于JPEG码流的哈夫曼解码方法,其特征在于:当最小码子表没有该长度的码子时,根据比较器的长度补齐,前面的采用补全“0”方法,后面的采用补全“1”方法。
6、如权利要求4所述的适于JPEG码流的哈夫曼解码方法,其特征在于:获得码子长度n后,采用公式B(n)=S(n)-C(n)获得偏移地址B(n)。
7、如权利要求6所述的适于JPEG码流的哈夫曼解码方法,其特征在于:获得偏移地址B(n)以后,再通过公式AB(n)=A(n)+B(n)得到绝对地址AB(n)。
8、如权利要求1所述的适于JPEG码流的哈夫曼解码方法,其特征在于:在步骤d中,通过判断首位比特,得到编码前的原始数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710037614 CN101017574A (zh) | 2007-02-16 | 2007-02-16 | 一种适于jpeg码流的哈夫曼解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710037614 CN101017574A (zh) | 2007-02-16 | 2007-02-16 | 一种适于jpeg码流的哈夫曼解码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101017574A true CN101017574A (zh) | 2007-08-15 |
Family
ID=38726563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710037614 Pending CN101017574A (zh) | 2007-02-16 | 2007-02-16 | 一种适于jpeg码流的哈夫曼解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101017574A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101998122A (zh) * | 2010-12-13 | 2011-03-30 | 山东大学 | Jpeg图像中范式霍夫曼的硬件解码方法及装置 |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN101557517B (zh) * | 2008-04-07 | 2012-04-18 | 联发科技股份有限公司 | 解码器、解码装置及解码方法 |
CN102545910A (zh) * | 2010-12-30 | 2012-07-04 | 无锡华润矽科微电子有限公司 | 一种jpeg霍夫曼解码电路及其解码方法 |
US8339406B2 (en) | 2004-01-30 | 2012-12-25 | Nvidia Corporation | Variable-length coding data transfer interface |
US8477852B2 (en) | 2007-06-20 | 2013-07-02 | Nvidia Corporation | Uniform video decoding and display |
US8502709B2 (en) | 2007-09-17 | 2013-08-06 | Nvidia Corporation | Decoding variable length codes in media applications |
US8593469B2 (en) | 2006-03-29 | 2013-11-26 | Nvidia Corporation | Method and circuit for efficient caching of reference video data |
US8599841B1 (en) | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
US8687875B2 (en) | 2007-12-03 | 2014-04-01 | Nvidia Corporation | Comparator based acceleration for media quantization |
US8725504B1 (en) | 2007-06-06 | 2014-05-13 | Nvidia Corporation | Inverse quantization in audio decoding |
US8849051B2 (en) | 2007-09-17 | 2014-09-30 | Nvidia Corporation | Decoding variable length codes in JPEG applications |
US8934539B2 (en) | 2007-12-03 | 2015-01-13 | Nvidia Corporation | Vector processor acceleration for media quantization |
CN104980161A (zh) * | 2015-04-02 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 一种哈夫曼解码方法及装置 |
US9307267B2 (en) | 2008-12-11 | 2016-04-05 | Nvidia Corporation | Techniques for scalable dynamic data encoding and decoding |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
-
2007
- 2007-02-16 CN CN 200710037614 patent/CN101017574A/zh active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8339406B2 (en) | 2004-01-30 | 2012-12-25 | Nvidia Corporation | Variable-length coding data transfer interface |
US8427494B2 (en) | 2004-01-30 | 2013-04-23 | Nvidia Corporation | Variable-length coding data transfer interface |
US8599841B1 (en) | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
US8593469B2 (en) | 2006-03-29 | 2013-11-26 | Nvidia Corporation | Method and circuit for efficient caching of reference video data |
US8725504B1 (en) | 2007-06-06 | 2014-05-13 | Nvidia Corporation | Inverse quantization in audio decoding |
US8477852B2 (en) | 2007-06-20 | 2013-07-02 | Nvidia Corporation | Uniform video decoding and display |
US8502709B2 (en) | 2007-09-17 | 2013-08-06 | Nvidia Corporation | Decoding variable length codes in media applications |
US8849051B2 (en) | 2007-09-17 | 2014-09-30 | Nvidia Corporation | Decoding variable length codes in JPEG applications |
US8687875B2 (en) | 2007-12-03 | 2014-04-01 | Nvidia Corporation | Comparator based acceleration for media quantization |
US8934539B2 (en) | 2007-12-03 | 2015-01-13 | Nvidia Corporation | Vector processor acceleration for media quantization |
CN101557517B (zh) * | 2008-04-07 | 2012-04-18 | 联发科技股份有限公司 | 解码器、解码装置及解码方法 |
US9307267B2 (en) | 2008-12-11 | 2016-04-05 | Nvidia Corporation | Techniques for scalable dynamic data encoding and decoding |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN102244518B (zh) * | 2010-05-10 | 2016-01-20 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN101998122A (zh) * | 2010-12-13 | 2011-03-30 | 山东大学 | Jpeg图像中范式霍夫曼的硬件解码方法及装置 |
CN101998122B (zh) * | 2010-12-13 | 2012-05-02 | 山东大学 | Jpeg图像中范式霍夫曼的硬件解码方法及装置 |
CN102545910A (zh) * | 2010-12-30 | 2012-07-04 | 无锡华润矽科微电子有限公司 | 一种jpeg霍夫曼解码电路及其解码方法 |
CN102545910B (zh) * | 2010-12-30 | 2015-10-28 | 无锡华润矽科微电子有限公司 | 一种jpeg霍夫曼解码电路及其解码方法 |
CN104980161A (zh) * | 2015-04-02 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 一种哈夫曼解码方法及装置 |
CN106788451A (zh) * | 2016-11-30 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种哈夫曼解码方法及其装置 |
CN106788451B (zh) * | 2016-11-30 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种哈夫曼解码方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101017574A (zh) | 一种适于jpeg码流的哈夫曼解码方法 | |
US7365658B2 (en) | Method and apparatus for lossless run-length data encoding | |
EP3108583B1 (en) | Devices and methods of source-encoding and decoding of data | |
CN100517979C (zh) | 一种数据压缩及解压缩方法 | |
CN1322405A (zh) | 信息字的平均信息量编码设备和方法,平均信息量编码信息字的解码设备和方法 | |
CN101557517B (zh) | 解码器、解码装置及解码方法 | |
CN101795407A (zh) | 用于对比特序列进行编码的方法和设备 | |
CN102438145A (zh) | 一种基于Huffman编码的图片无损压缩方法 | |
CN102143039A (zh) | 数据压缩中数据分段方法及设备 | |
CN100425066C (zh) | 图像压缩的方法 | |
CN101534124B (zh) | 一种用于短小自然语言的压缩算法 | |
KR100969748B1 (ko) | 직렬 통신 시스템에서 직렬 데이터의 송수신 방법 및 장치와 이를 위한 직렬 통신 시스템 | |
US8754792B2 (en) | System and method for fixed rate entropy coded scalar quantization | |
CN104125475B (zh) | 一种多维量子数据压缩、解压缩方法及装置 | |
CN103036641A (zh) | 数据交换方法、系统及反序列化方法 | |
CN116033034A (zh) | 一种无线收发平台用数据处理系统 | |
WO2010044099A1 (en) | Lossless content encoding | |
US8532415B2 (en) | Data compression method | |
CN101325418B (zh) | 一种基于概率查表的哈夫曼快速解码方法 | |
CN101657973B (zh) | 采用位精度的编码装置和编码方法 | |
CN104980749A (zh) | 算术编码的解码装置及方法 | |
VidyaSagar et al. | Modified run length encoding scheme for high data compression rate | |
CN1615590A (zh) | 数字信息信号的数据压缩和扩展 | |
KR100636370B1 (ko) | 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법 | |
Chudasama et al. | Survey of image compression method lossless approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |