数字图像处理实验6图像编码

本文介绍了图像编码的实验,包括哈夫曼编码和行程长度编码(RLE)。通过实验,展示了使用MATLAB进行图像压缩的过程,如哈夫曼编码的平均码长、压缩比和编码效率,以及行程编码的压缩效果和解码恢复。实验结果显示,哈夫曼编码在图像数据分布不均匀时能实现较高的压缩效率。

一、实验目的

(1)了解图像编码的目的及意义,加深对图像编码的感性认识。

(2)熟练掌握哈夫曼编码的实现与应用。

(3)掌握行程长度编码的实现与应用,尤其是BMP和PCX文件的行程长度编码*。

二、实验内容

(1)选择图像,对其进行哈夫曼编码,总结哈夫曼编码的压缩思想。

(2)选择图像,对其进行行程编码,观察将图像保存为PCX文件后,图像占用空间的变化,并总结PCX的编码特点*三、实验代码及结果、分析

三、实验原理、代码、结果、分析

(1)哈夫曼编码

  • 原理:η

哈夫曼编码是一种无损编码,依据信源符号出现的概率来构造其码字,对出现概率大的字符使用较短的码字,对出现概率低的字符则使用较长的码字,从而达到压缩数据的目的,哈夫曼编码又称为最佳编码。

编码的基本步骤:

  1. 统计信源字符中各符号出现的概率,将各字符出现的概率由大到小的顺序排列;
  2. 将最小的两个概率相加,合并成新的概率,与其他概率重新按由大到小的顺序排列;
  3. 重新排列后将两个最小概率合并相加合并为新的概率,即重复步骤b),直到最后两个概率之和为1;
  4. 将每个相加的组合中,概率大的指定为0,概率小的指定为1,相等则任意指定
  5. 找出由每一个信源字符到达概率为1.0处的路径,顺序记录路径的每一个1和0的数字编码
  6. 反向写出编码,即为该信源字符的哈夫曼编码
  • 代码:

HuffmanCode.m:

I=imread('lena.jpg');

Gray=rgb2gray(I);

[zipped,info]=huffencode(Gray);%调用哈夫曼编码程序进行压缩

unzipped=huffdecode(zipped,info);%调用哈夫曼解码程序进行解码

disp('平均码长');L=info.avalen

disp('压缩比');CR=info.ratio

disp('信息熵');H=info.h

disp('编码效率');CE=info.ce

subplot(131);imshow(Source);title('原始图像');

subplot(132);imshow(Gray);title('灰度图像');

subplot(133);imshow(unzipped);title('哈夫曼编码并解码重构图像');

huffencode.m与

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39569242

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值