- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
huffman编码
基于HUFFMAN编码的灰度图像压缩
一 实验目的
1)熟悉huffman编码的基本原理;
2)掌握Matlab语言编写图像压缩程序;
3)培养学习解决图像处理问题的能力.
二 实验内容
1. 实验原理
1.1加密以及解密
数字图像加密就是在发送端采用一定的算法作用于一幅图像明文,使其变成不可识别的密文,达到图像必威体育官网网址的目的。在接收端采用相应的算法解密,恢复出原文。其通用算法模型如下图所示。
数字图像加密通用模型
基于矩阵变换像素置换的图像加密技术原理
Arnold变换,俗称猫脸变换.设像素的坐标x , y ∈S = {0, 1, 2, …, N-1},
则Arnold变换为:
Arnold变换可以看做是裁剪和拼接的过程。通过这一过程将离散化的数字图像矩阵S中的点重新排列。由于离散数字图像是有限点集,这种反复变换的结果, 在开始阶段S中像素点的位置变化会出现相当程度的混乱,但由于动力系统固有的特性, 在迭代进行到一定步数时会恢复到原来的位置。
解密为加密的逆过程,其基本思想与加密相同,
1.2 huffman编码的原理
该编码方式是无损压缩方法,它是从事图像、语音等海量信息压缩研究的基础。其原理是基于数据符号出现的概率进行编码,概率越大其编码越短;反之,概率越小其编码越长。
2. Huffman图像编码实验步骤:
l)将信号源的符号按照出现概率递减的顺序排列(其根据灰度值)。
2)将最下面的两个最小出现概率进行合并相加,得到的结果作为新符号的出现概率。? 3)重复进行步骤1和2直到概率相加的结果等于1为止。? 4)在合并运算时,概率大的符号用编码0表示,概率小的符号用编码1表示。? 5)记录下概率为1处到当前信号源符号之间的0,1序列,从而得到每个符号的编码。
3. Huffman编码的特点
1) 编出来的码都是异字头码,保证了码的唯一可译性。 2) 由于编码长度可变。因此译码时间较长,使得Huffman编码
的压缩与还原相当费时。 3) 编码长度不统一,硬件实现有难度。 4) 对不同信号源的编码效率不同,当信号源的符号概率为 2 的负幂次方时,达到100%的编码效率;若信号源符号的概率相等,则编码效率最低。 5) 由于0与1的指定是任意的,故由上述过程编出的最佳码不是唯一的,但其平均码长是一样的,故不影响编码效率与数据压缩性能。
4. 实验源代码(详见附录)
三 实验内容及步骤
1) 采用Matlab对下图进行huffman编码并计算huffman编码的编码效率。(详细代码见附录一)
2)采用Matlab对下图先进行加密,然后进行huffman编码,译码,最后通过解密恢复原始图像,(详细代码见附二)。
四 实验结果
1)实验图像以及其灰度直方图如下图所示:该方法的编码效率=99.5018 %
对其压缩结果编写加密解密解压缩详细见下图
五 实验总结与心得
1)在该实验的过程中,利用一个矩阵记录每次排序前概率的所在位置,是该实验的关键,在编码的过程中利用该矩阵就能比较容易进行huffman编码。
2)通过这个实验,对huffman编码,加密,解密算法的具体实现原理了解的更加深刻,在实验的过程中也遇到了一些问题,通过查找资料和相关书籍得到了解决,总的来说,在完成该实验的过程中,还是学到了比较多的知识,包括使对一些matlab语句的掌握的更加熟练,完成一个算法必须要有一个整体的把握等等。
附录
附录一
clear all;
I=imread(cameraman.tif); %以矩阵方式选取读入一幅灰度图像
subplot(1,2,1),imshow(I);title(读入用于Huffman编码的原始图像)
%绘出读入图像的直方图
[m n]=size(I); %计算该图像矩阵的行、列值(图像的尺寸参数)
[con pixv]=imhist(I);
subplot(1,2,2),stem(pixv,con,filled,r);
xlabel(灰度值);ylabel(对应灰度值的像素个数);
%统计像素不为0的灰度级出现的概率
L=length(find(con0)); %找出像素不为0的灰度级索引和个数
Pgrade=pixv(find(con0));%统计像素不为0的灰度级
文档评论(0)