Which of the following method is correct for finding the image compression ratio in matlab
1 次查看(过去 30 天)
显示 更早的评论
I am using Huffman coding for image compression.Here I have mentioned three methods for finding the compression ratio.
clear all
clc
%Read the input image
Ao=imread('Lena.bmp');
Ao = imresize(Ao,[256 256]);
in = imfinfo('Lena.bmp')
% figure,
subplot(221)
imshow(Ao);
title('input image')
A=double(Ao);
%
% A=[10 2 3 4;5 6 7 8];
% display(A);
e=A;
tic
%Perform prediction error
for i = 1:size(A,1)
for j = 2:size(A,2)
e(i,j)=e(i,j)-A(i,j-1);
end
end
display(e);
%Huffman coding
C=reshape(e,[],1);
[D1,x]=hist(C,min(min(e)):max(max(e)));
sym=x(D1>0);
prob=D1(D1>0)/numel(e);
[dict,avglen] = huffmandict(sym,prob);
compressed = huffmanenco(C,dict);
imwrite(uint8(compressed),'comp.bmp')
cmprsd = imfinfo('comp.bmp');
%Three methods for finding the compression ratio
Compression_Ratio_1 = in.FileSize/length(compressed)
Compression_Ratio_2 = (in.Width*in.Height*in.BitDepth/8)/cmprsd.FileSize
Compression_Ratio_3 = (in.Width*in.Height*in.BitDepth/8)/length(compressed)
Kindly help me to identify which among the 3 is correct for finding the compression ratio.
0 个评论
回答(1 个)
ahcen aliouat
2022-1-28
编辑:ahcen aliouat
2022-1-28
Hello,
I think the third is the correct. W*H*BitDepth will give you the number of bits needed for the uncompressed image, divided by the number of bits of the compressd image (compressed) gives you the exact compression Ratio.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Denoising and Compression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!