matlab对图像进行膨胀_霍夫曼编码对图像进行编码(matlab代码)

该部分代码只包括用matlab自带函数写的,由于是作业的关系,自己写的函数暂时不发出来。代码仅供参考,切勿抄袭。

%% 作业要求:完成任意图像的霍夫曼编码,并计算冗余度.

% author:xxxx

% date :2020.6.3

clear,clc;

I1=imread("peppers.png");

I2=rgb2gray(I1);

imshow(I2);

%% 运行编码函数

%编码我们可以使用自带的函数,同时也可以使用自己写的函数

[R,C]=size(I2);

a=I2(:);%1:M*N;

P=zeros(1,256);%获取符号的概率

for i=0:255

P(i+1)=length(find(a==i))/(R*C);

end

k=0:255;

dict=huffmandict(k,P);%编码结果

%调用自己写的函数

[output,p]=hufuman(I2);

%% 计算冗余度r

% %计算H,在这一步要把为0的值去掉,否则永远会出错误。

H=0;

for i=1:256

if p(i) ~= 0

H=H+p(i)*log2(1/p(i));

end

end

%计算平均码长

R=0;

for i=1:256

R=length(strtrim(output(i,:)))*p(i)+R;

end

%计算冗余度

n=1-(H/(R*log2(256)));

fprintf('冗余度n为 %fn',n )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值