1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档