CN102572425A - 霍夫曼解码的方法 - Google Patents
霍夫曼解码的方法 Download PDFInfo
- Publication number
- CN102572425A CN102572425A CN2011104295592A CN201110429559A CN102572425A CN 102572425 A CN102572425 A CN 102572425A CN 2011104295592 A CN2011104295592 A CN 2011104295592A CN 201110429559 A CN201110429559 A CN 201110429559A CN 102572425 A CN102572425 A CN 102572425A
- Authority
- CN
- China
- Prior art keywords
- mapping table
- code
- value
- mapping
- read
- 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
Abstract
本发明涉及霍夫曼解码的方法,包括:a.根据霍夫曼码表中霍夫曼码字的值和长度,设置至少2个映射表;b.如果读入的码流数据符合第一张映射表的对应值,则直接从第一张映射表中得到解码值;否则进入步骤c;c.继续读入码流,进行或运算;d.将步骤c得到的编码和相匹配的值按位与;e.如果已有码流的符合当前映射表的对应值,则通过当前映射表得到解码值;否则从步骤c循环,直到从最后一个映射表中得到解码值;f.循环步骤a直到所有数据解码完成。本发明霍夫曼解码的方法,能够大幅度提高霍夫曼解码的速度,使视频文件能够快速解码,使视频图像或视频语音更加流畅和清晰,并且耗时短,消耗资源少,实现成本低,稳定性好。
Description
技术领域
本发明涉及视频解码领域,具体的讲是霍夫曼解码的方法,特别适合但不仅限于对MJPED压缩视频的解码。
背景技术
随着信息技术的发展和因特网的普及,信息传输量不断膨胀,对视频处理的速度和压缩技术提出了越来越高的要求。通常原始视频文件都是大型文件,为了能够快速将视频呈现于用户面前,就需要设法将大型视频文件进行快速解码。而实时视频监控及其传输用到的MJPEG视频编码格式,更需要进行快速的解码。
MJPEG视频编码格式广泛应用于非线性编辑领域,它可精确到帧编辑和多层图像处理,把运动的视频序列作为连续的静止图像来处理。这种压缩方式能够单独完整地压缩每一帧,在编辑过程中可随机存储每一帧,进行精确到帧的编辑。此外MJPEG格式的压缩和解压缩是对称的,可由相同的硬件和软件实现。它通过DCT变换(离散余弦变换)、量化及霍夫曼编码等算法,获得了较高的压缩效率和较好的视频质量。由于MJPEG格式的视频压缩性能优异,在互联网、视频监控等诸多领域中都获得了广泛的应用。对于终端用户来讲,如何快速、准确的获得MJPEG压缩后的视频是很重要的,其中便涉及到快速解压缩出MJPEG视频。对MJPEG压缩的视频进行解压缩,首先需对输入的码流做霍夫曼解码,得到直流系数或游程长度编码后的码字;然后通过这些码字,获得相应的直流系数和交流系数;再进行反量化及反DCT变换等工作,就可以解压缩出视频信息。在对MJPEG视频做解压缩时,其关键一步就是霍夫曼解码。目前的霍夫曼解码采用逐比特与码表判断比较,即从码表中依次比较,比如:起始读入2个比特,就要和码表中长度为2的码字依次比较,如不同则需继续读入1个比特,接着和长度为3的码字依次比较,以此类推,直到与码字相等为止,耗时巨大,同时也消耗了巨大的硬件资源。
发明内容
针对以上出现的问题,本发明提供了一种霍夫曼解码的方法,能够提高霍夫曼解码的速度,使视频文件能够快速解码,视频图像或视频语音更加流畅和清晰,并且耗时短,消耗资源少,实现成本低,稳定性好。
本发明霍夫曼解码的方法,包括:
a.根据霍夫曼码表中霍夫曼码字的值和长度,设置至少2个二进制的映射表,映射表中的每个码字在霍夫曼码表中都有对应,并且映射表中的所有码字按二进制的值从小到大分布在所述各映射表中;
b.从码流中读入与最小映射值所在映射表的码字长度相等的二进制编码,如果读入码流的十进制值≤最小映射值所在映射表的最大码字的十进制值与最小码字的十进制值之差,则根据映射表和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则进入步骤c;
c.从码流中继续读入二进制编码,按照映射码值从小到大分布的映射表顺序,使读入后的码流总位数等于下一个映射表的二进制码字位数,将已有编码和新读入的二进制编码按位或;
d.将步骤c得到的编码和相匹配的值按位与,以屏蔽掉所述二进制编码的高位1;
e.如果已有码流的十进制值≤当前匹配映射表的最大码字的十进制值与最小码字的十进制值之差,则根据当前映射表和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则从步骤c循环,直到将读入码流和最后一个映射表比对完成得到相应的霍夫曼解码值;
f.从步骤a执行下一组码流解码,直到所有数据解码完成。
MJPEG编码中共有直流洗漱的亮度和色度、交流系数的亮度和色度4个霍夫曼码表,通过对各霍夫曼码表的规律进行分析和总结得知,霍夫曼码表中码字越短其出现的概率越大,而同等长度的码字的值是递增的。因此本发明的方法将MJPEG标准的霍夫曼编码表进行划分,构成若干个映射表。在霍夫曼解码时,每次可读入多个比特的数据,通过少量的判断比较,即可在某个映射表中直接得到霍夫曼解码的结果,方便快捷。
为了权衡霍夫曼码字的长度和映射表的数量,达到较快的解码速度,优选的一种方案是所述的映射表为4个,其中映射表1的映射码值为00000~11011;映射表2的映射码值为111000000~111110111;映射表3的映射码值为11111100000~11111110111;映射表4的映射码值为1111111100000000~1111111111111110。通过对霍夫曼码表的分析得知,如果从码流开始或分析出一个霍夫曼码字后,读入的任意长度二进制编码的前两位是00,则此长度的二进制编码中必含有一个对应的霍夫曼码字为00的编码;如果前两位是01,则必含有一个对应的霍夫曼码字为01的编码;如果前五位是11100,则必含有一个对应的霍夫曼码字为11100的编码。于是本发明的方法将霍夫曼码表中长度≤5的码字对应为映射表1,其中映射码00000~00111都代表霍夫曼码字00(头两位都是00),映射码01000~01111都代表霍夫曼码字01(头两位都是01),其它以此类推。因此映射表1的映射码为00000~11011(共28个,对应的霍夫曼码字为:00,01,100,1010,1011,1100,11010,11011)。最大值为11011是因为11011对应的霍夫曼码字的长度为5位,如果是11111则对应的霍夫曼码字长度至少为8位,位数越多解码速度越慢。同理对应出其它映射表:映射表2的映射码为111000000~111110111(共56个,对应的霍夫曼码字为:11100,111010,111011,1111000,1111001,1111010,1111011,11111000,11111001,11111010,111110110,111110111);映射表3的映射码为11111100000~11111110111(共24个,对应的霍夫曼码字为:111111000,111111001,111111010,1111110110,1111110111,1111111000,1111111001,1111111010,11111110110,11111110111);映射表4的映射码为1111111100000000~1111111111111110(共255个,对应的霍夫曼码字为霍夫曼码表中剩余的全部码字)。
具体的,步骤c中所述继续读入二进制编码的位数为:与映射表2对比时,已读入的码流左移4位后继续读入4位;与映射表3对比时,已读入的码流左移2位后继续读入2位;与映射表4对比时,已读入的码流左移5位后继续读入5位。
进一步的,与映射表2对比时,将当前的码流和十六进制数0x3F按位与;与映射表3对比时,将当前的码流和十六进制数0x1F按位与;与映射表4对比时,将当前的码流和十六进制数0xFF按位与。由此屏蔽掉码流中的高位1,方便后面的比较。
测试得知,本发明霍夫曼解码的方法,能够大幅度提高霍夫曼解码的速度,使视频文件能够快速解码,使视频图像或视频语音更加流畅和清晰,并且耗时短,消耗资源少,实现成本低,稳定性好。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
具体实施方式
本发明霍夫曼解码的方法,包括:
a.根据霍夫曼码表中霍夫曼码字的值和长度,设置4个二进制的映射表,映射表中的每个码字在霍夫曼码表中都有对应,并且映射表中的所有码字按二进制的值从小到大分布在所述各映射表中。以交流系数的亮度霍夫曼表为例,其中映射表1的映射码值为00000~11011(共28个,对应的霍夫曼码字为:00,01,100,1010,1011,1100,11010,11011);映射表2的映射码值为111000000~11111011(共56个,对应的霍夫曼码字为:11100,111010,111011,1111000,1111001,1111010,1111011,11111000,11111001,11111010,111110110,111110111)1;映射表3的映射码值为11111100000~11111110111(共24个,对应的霍夫曼码字为:111111000,111111001,111111010,1111110110,1111110111,1111111000,1111111001,1111111010,11111110110,11111110111);映射表4的映射码值为1111111100000000~1111111111111110(共255个,对应的霍夫曼码字为霍夫曼码表中剩余的全部码字);
b.从码流中读入与映射表1的码字长度相等的5位二进制编码,如果读入码流的十进制值≤映射表1的最大码字的十进制值(27)与最小码字的十进制值(0)之差(27),则根据映射表1和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则进入步骤c;
c.从码流中继续读入二进制编码,按照映射码值从小到大分布的映射表顺序,使读入后的码流总位数等于下一个映射表的二进制码字位数,具体为:与映射表2对比时,已读入的码流左移4位后继续读入4位;与映射表3对比时,已读入的码流左移2位后继续读入2位;与映射表4对比时,已读入的码流左移5位后继续读入5位。将已有编码和新读入的二进制编码按位或;
d.当与映射表2对比时,将步骤c得到的码流和十六进制数0x3F按位与;当与映射表3对比时,将步骤c得到的码流和十六进制数0x1F按位与;当与映射表4对比时,将步骤c得到的码流和十六进制数0xFF按位与。由此屏蔽掉码流中的高位1,方便后面的比较;
e.如果已有码流的十进制值≤当前匹配映射表的最大码字的十进制值与最小码字的十进制值之差(映射表2对应的差为55,映射表3对应的差为23),则根据当前映射表和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则从步骤c循环,直到将读入码流和映射表4比对完成得到相应的霍夫曼解码值;
f.从步骤a执行下一组码流解码,直到所有数据解码完成。
本发明的方法在霍夫曼解码时,每次可读入多个比特的数据,通过少量的判断比较,即可在其中一个映射表中用数组下标直接得到霍夫曼解码的结果,解码速度快,运行效率高,实现成本低,稳定性好。
Claims (4)
1.霍夫曼解码的方法,其特征为包括:
a.根据霍夫曼码表中霍夫曼码字的值和长度,设置至少2个二进制的映射表,映射表中的每个码字在霍夫曼码表中都有对应,并且映射表中的所有码字按二进制的值从小到大分布在所述各映射表中;
b.从码流中读入与最小映射值所在映射表的码字长度相等的二进制编码,如果读入码流的十进制值≤最小映射值所在映射表的最大码字的十进制值与最小码字的十进制值之差,则根据映射表和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则进入步骤c;
c.从码流中继续读入二进制编码,按照映射码值从小到大分布的映射表顺序,使读入后的码流总位数等于下一个映射表的二进制码字位数,将新读入的二进制编码和已有编码按位或;
d.将步骤c得到的编码和相匹配的值按位与,以屏蔽掉所述二进制编码的高位1;
e.如果已有码流的十进制值≤当前匹配映射表的最大码字的十进制值与最小码字的十进制值之差,则根据当前映射表和霍夫曼码表的映射关系得到读入二进制码字的霍夫曼解码值;否则从步骤c循环,直到将读入码流和最后一个映射表比对完成得到相应的霍夫曼解码值;
f.从步骤a执行下一组码流解码,直到所有数据解码完成。
2.如权利要求1所述霍夫曼解码的方法,其特征为:所述的映射表为4个,其中映射表1的映射码值为00000~11011;映射表2的映射码值为111000000~111110111;映射表3的映射码值为11111100000~11111110111;映射表4的映射码值为1111111100000000~1111111111111110。
3.如权利要求2所述霍夫曼解码的方法,其特征为:步骤c中所述继续读入二进制编码的位数为:与映射表2对比时,已读入的码流左移4位后继续读入4位;与映射表3对比时,已读入的码流左移2位后继续读入2位;与映射表4对比时,已读入的码流左移5位后继续读入5位。
4.如权利要求3所述霍夫曼解码的方法,其特征为步骤d包括:与映射表2对比时,将当前的码流和十六进制数0x3F按位与;与映射表3对比时,将当前的码流和十六进制数0x1F按位与;与映射表4对比时,将当前的码流和十六进制数0xFF按位与。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104295592A CN102572425A (zh) | 2011-12-20 | 2011-12-20 | 霍夫曼解码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104295592A CN102572425A (zh) | 2011-12-20 | 2011-12-20 | 霍夫曼解码的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102572425A true CN102572425A (zh) | 2012-07-11 |
Family
ID=46416734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104295592A Pending CN102572425A (zh) | 2011-12-20 | 2011-12-20 | 霍夫曼解码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102572425A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717499A (zh) * | 2015-03-31 | 2015-06-17 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993013603A1 (en) * | 1991-12-23 | 1993-07-08 | Intel Corporation | Circuitry for decoding huffman codes |
CN1662063A (zh) * | 2004-02-24 | 2005-08-31 | 上海交通大学 | 可变长码解码方法 |
-
2011
- 2011-12-20 CN CN2011104295592A patent/CN102572425A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993013603A1 (en) * | 1991-12-23 | 1993-07-08 | Intel Corporation | Circuitry for decoding huffman codes |
CN1662063A (zh) * | 2004-02-24 | 2005-08-31 | 上海交通大学 | 可变长码解码方法 |
Non-Patent Citations (1)
Title |
---|
张霍;刘钊: "两种基于JPEG的快速霍夫曼解码算法", 《中国电子学会第十五届信息论学术年会暨第一届全国网络编码学术年会论文集(上册)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717499A (zh) * | 2015-03-31 | 2015-06-17 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
CN104717499B (zh) * | 2015-03-31 | 2018-06-05 | 豪威科技(上海)有限公司 | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106170921B (zh) | 涉及符号压缩的数据的源编码和解码方法及装置 | |
CN103067022B (zh) | 一种整型数据无损压缩方法、解压缩方法及装置 | |
US9454552B2 (en) | Entropy coding and decoding using polar codes | |
CN106549673B (zh) | 一种数据压缩方法及装置 | |
CN106407285B (zh) | 一种基于rle和lzw的优化比特文件压缩与解压缩方法 | |
CN101783788B (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
CN110518917B (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
CN104868922A (zh) | 数据压缩方法及装置 | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
JP2003218703A (ja) | データ符号化装置及びデータ復号装置 | |
CN112506879A (zh) | 数据处理方法及相关设备 | |
CN102323541A (zh) | 基于参考向量和位掩码的soc的测试方法 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
CN102572425A (zh) | 霍夫曼解码的方法 | |
US8175403B1 (en) | Iterative backward reference selection with reduced entropy for image compression | |
CN108829930A (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
CN104301726A (zh) | 一种图像无损压缩与解压缩的方法 | |
US20130222159A1 (en) | Entropy method of binary-ternary lossless data coding | |
CN105007083A (zh) | 一种lz77压缩算法输出结果的存储方法 | |
Rani et al. | A survey on lossless text data compression techniques | |
Kamal et al. | Iteration free fractal compression using genetic algorithm for still colour images | |
US20240013864A1 (en) | System and method for auto-configurable data compression framework | |
CN109698704B (zh) | 比对型基因测序数据解压方法、系统及计算机可读介质 | |
Krainyk | Combined Run-Length and Huffman Encoding for Image Compression |
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 |
Application publication date: 20120711 |