基于霍夫曼(Huffman)图像编码的图像压缩和重建-含Matlab代码

目录

  • 一、引言
  • 二、霍夫曼Huffman编码
    • 2.1 霍夫曼编码流程
    • 2.2 输入数据的编码
  • 三、霍夫曼解码
  • 四、实验结果
  • 五、参考文献
  • 六、Matlab代码(GUI界面)获取

一、引言

随着通信与信息技术的迅速发展、网络技术和多媒体技术的兴起,图像、视频相关的应用越来越广泛。图像和视频具有庞大的数据量,难以存储和传输,因此应对其进行压缩编码。

当今,图像与视频压缩国际标准中主要采用了离散余弦变换(Discrete Cosine Transform,DCT),采用这种变换并不一定是最优的选择,原因之一就是量化表比较复杂,量化需要大量的乘法计算。另外,量化表需要占用一定的存储空间。

霍夫曼编码完全依据字符出现的概率来构造异字头的平均长度最短的码字,有时被称为最佳编码。霍夫曼编码将使用次数较多的代码用长度较短的编码代替,将使用次数较少的代码用较长的编码代替,并且确保编码的唯一可解性。其根本原则是压缩编码的长度(即字符的统计数字x字符的编码长度)最小,也就是权值和最小。本文给出了霍夫曼简表生成原理,霍夫曼编码表和解码表生成流程和霍夫曼编解码的详细方案。

二、霍夫曼Huffman编码

2.1 霍夫曼编码流程

尽管理论上,霍夫曼编码能逼近信源符号的嫡,但实用中很难事先得知各符号发生的概率,因此无法保证霍夫曼码长与实际的符号发生概率相匹配。霍夫曼算法编码流程如下图示。

在这里插入图片描述

图1 霍夫曼编码算法框图

2.2 输入数据的编码

对输人数据进行逐系数编码,算法框图如图2所示:

基于霍夫曼(Huffman)图像编码的图像压缩和重建-含Matlab代码_第1张图片

图2 编码流程图

编码分两步进行第一步,将相应的霍夫曼码前缀写人字节;第二步,为了充分利用每一比特,先对数据进行处理再写人相关字节,写人字节的算法实现如下

1) 输人一个数据;

2)查询对应的霍夫曼码(前缀)及其对应长度size;

3)截取对应二进制码的size位

  1. 查询填充的字节地址和位地址;

5)考虑到一般情况下,最大码长应不超过32位,采用无符号整数存储输出,即每32位二进制码填充1字节;

6)对输人数据进行处理;为方便解码 ,所有系数均直接截取所在区间region之对应位数region,因为分区间编码 ,所以该数的绝对值不会超过2region-1,也就是说,不存在溢。出算法采用正数减去所在区间之下限,负数取负构成尾码的算法 ,则正数首位必然为0,负数首位必然为1;查得所在区间的数据长度。

7)重复(3)、(4)、(5)三个步骤;

  1. 继续下一系数的编码,直到全部所有数据编码结束

三、霍夫曼解码

解码是编码的逆过程。由于量化误差,原始数据并不能完全恢复。先从压缩文件中读出最大值max、归一化参数(量化步长)len,构建霍夫曼树的各区间统计频度,再从压缩文件中读出数据的压缩码流,逐系数进行解码。其具体算法如下:

基于霍夫曼(Huffman)图像编码的图像压缩和重建-含Matlab代码_第2张图片

图3 霍夫曼解码流程图

四、实验结果

关联到菜单“霍夫曼压缩”,执行图片的压缩及解压缩操作,读取图片并将之显示到窗体。压缩结果表明,霍夫曼图像压缩可以在无损的前提下有效地进行图像的编解码,具有良好的压缩比,解压缩后的图像与原始图像相比也有较高的PSNR值,可以有效地节省图像在传输、存储等过程中所需要的资源消耗,提高了图像处理的效率。

基于霍夫曼(Huffman)图像编码的图像压缩和重建-含Matlab代码_第3张图片

图4 基于霍夫曼压缩与重建结果

五、参考文献

[1] 杨迎新,张乐平. 基于整数压缩比的SAR图像浮点数据压缩研究[J]. 江西理工大学学报,2006,(4):34-37
[2] 张乐平,吴乐南. 基于非线性预处理的SAR图像浮点数据压缩[J]. 南昌大学学报(理科版),2005,(6):616-618
[3] 张乐平. SAR图像浮点数据压缩研究[D].南京:东南大学, 2006.
[4] 张乐平. 基于自适应编码的SAR浮点模图像数据压缩[J].计算机与现代化,2005,(11):8-2.

六、Matlab代码(GUI界面)获取

上述Matlab(GUI界面)代码的获取可私信博主。


博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法程序科研方面的问题,均可私信交流讨论


你可能感兴趣的:(#,1.3,图像分析技术,霍夫曼编码,Huffman,图像压缩,图像重建,离散余弦变换)