Matlab-数字图像编码实验-无损编码/压缩算法实验
代码链接:https://download.csdn.net/download/qq_43571150/12033273
问题
实现哈夫曼压缩, 计算原图和压缩以后的尺寸,计算压缩率并比较分析
结果👇
Matlab代码👇
clear;
clear all;
A=imread('01.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); %生成字典
enco = huffmanenco(I1,dict); %编码
deco = huffmandeco(enco,dict); %解码
Ide = col2im(deco,[M,N],[M,N],'distinct'); %把向量重新转换成图像块;
decolength=length(deco);
encolength=length(enco);
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(Ide));title('压缩');
OB=encolength;
sumcode=decolength;
CR=sumcode/OB;
disp(['原图 Bit: ',num2str(OB),' bit']);
disp(['压缩图像 Bit: ',num2str(sumcode),' bit']);
disp(['压缩率: ',num2str(CR)]);