哈夫曼编码图像压缩Matlab

哈夫曼编码图像压缩Matlab:

图像压缩有多种方法,请选择一种图像压缩方法实现对图像的压缩,要求显示出解码重建图像。

clear;
clc;
close all;
A=imread('as3.jpg');
I=rgb2gray(A);%将彩色图像转为灰度图像
 
[M,N] = size(I);%将图像转为二维矩阵
I1 = I(:);%转为一维向量
P = zeros(1,256);
%获取各符号的概率;
for i = 0:255
    P(i+1) = length(find(I1 == i))/(M*N);
end
 
k = 0:255;
dict = huffmandict(k,P); %根据灰度级k和概率数组P生成Huffman字典
enco = huffmanenco(I1,dict); %哈夫曼编码
deco = huffmandeco(enco,dict); %哈夫曼解码
Ide = col2im(deco,[M,N],[M,N],'distinct'); %把向量重新转换成图像块;
 
subplot(1,2,1);imshow(I);title('原始图像');
subplot(1,2,2);imshow(uint8(Ide));title('解码图像');
 
B=length(enco);%原始图像比特长度
sumcode=length(deco);%编码后比特长度
CR=sumcode/B;%计算压缩率
disp(['原始图像 Bit:          ',num2str(B),' bit']);
disp(['压缩图像 Bit:          ',num2str(sumcode),' bit']);
disp(['压缩率:                ',num2str(CR)]);

在这里插入图片描述
在这里插入图片描述
说明:
huffmandict函数建立哈夫曼字典:需要传入的第一个参数是图像的各个灰度值,第二个参数是图像的各个灰度值的出现概率。
调用格式:
在这里插入图片描述
huffmanenco函数建立哈夫曼编码:需要传入的第一个参数是图像的一维矢量数据,第二个参数是dict哈夫曼字典。
调用格式:
在这里插入图片描述
huffmandeco函数进行哈夫曼译码:需要传入的第一个参数是哈夫曼编码数据,第二个参数是哈夫曼字典。
调用格式:
在这里插入图片描述

  • 14
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值