How to compress an color image using Huffman compression in matlab?

1 回表示 (過去 30 日間)
Anushka
Anushka 2015 年 6 月 27 日
コメント済み: Walter Roberson 2020 年 9 月 22 日
How to compress an color image using Huffman compression and also how to decompress it using Huffman decompression in matlab?
  2 件のコメント
Anushka
Anushka 2015 年 6 月 27 日
As I am new to matlab can any one please help me?
Avinash Macharla
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
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 件のコメント
Bhaumik chaudhari
Bhaumik chaudhari 2020 年 9 月 22 日
can you send me the code my email id:bhaumikchaudhari225@gmail.com
Walter Roberson
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 ExchangeDenoising and Compression についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by