How to compress an color image using Huffman compression in matlab?
1 次查看(过去 30 天)
显示 更早的评论
How to compress an color image using Huffman compression and also how to decompress it using Huffman decompression in matlab?
2 个评论
Avinash Macharla
2018-9-23
编辑:Walter Roberson
2019-4-12
filename = input('enter the image file name', 's');
string = imread(filename);
string = string(:); %input string
symbol=[]; %initialise variables
count=[];
j=1;
%------------------------------------------loop to separate symbols and how many times they occur for i=1:length(string)
flag=0;
flag=ismember(symbol,string(i)); %symbols
if sum(flag)==0
symbol(j) = string(i);
k=ismember(string,string(i));
c=sum(k); %no of times it occurs
count(j) = c;
j=j+1;
end
end
ent=0;
total=sum(count); %total no of symbols
prob=[];
%-----------------------------------------for loop to find probability and %entropy
for i=1:1:size((count)');
prob(i)=count(i)/total;
ent=ent-prob(i)*log2(prob(i));
end
var=0;
%-----------------------------------------function to create dictionary [dict avglen]=huffmandict(symbol,prob);
% print the dictionary.
temp = dict;
for i = 1:length(temp)
temp{i,2} = num2str(temp{i,2});
var=var+(length(dict{i,2})-avglen)^2; %variance calculation
end
temp
%-----------------------------------------encoder and decoder functions
sig_encoded=huffmanenco(string,dict)
deco=huffmandeco(sig_encoded,dict);
equal = isequal(string,deco)
%-----------------------------------------decoded string and output %variables
str ='';
for i=1:length(deco)
str= strcat(str,deco(i));
end
disp('**str**')
str
disp('**ent**')
ent
disp('**avglen**')
avglen
disp('**var**')
var
回答(1 个)
Walter Roberson
2015-6-27
reshape() the content of the image into a vector. Then use Huffman encoding on the vector.
When decoding, decode the encoding data into a vector and reshape() the vector into a 3D array.
5 个评论
Walter Roberson
2020-9-22
The code for exactly what, Bhaumik chaudhari ? Do you need to be able to do Huffman encoding on CT reconstructions read in from DICOM files?
另请参阅
类别
在 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!