Can anyone provide me with the matab code for Huffman encoding to compress an image?

I am new to matab and have to write the code for Huffman encoding. I found many functions to apply Huffman encoding but i am not able to write the rest of the code or to use that function. So it would be very helpful if anyone can provide me the code from starting to end for image compression using Huffman encoding and for decoding too.

2 comentarios

do yo apply huffman encoding in a 2D image???
You CAN apply Huffman coding to a 2d image.

Iniciar sesión para comentar.

Respuestas (2)

Check here
Also here

5 comentarios

The ppt shows a function which takes probability as an parameter. I am not able to get the value of that parameter. I totally have to idea how and what to pass in that function as parameters.
Which PPT are you talking? It would be easier to give the answer, if you share the code, what you have tried so far?
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
I want to take an image as input and save the compressed form.
You have
sig_encoded=huffmanenco(string,dict)
The variable sig_encoded is the compressed image. It has one bit of usable information for each vector location.
You can write the compressed image to file using one bit per location, if you use fwrite() with 'bit1' conversion specification.
Note that really you should also write the dictionary to the file as well. You do not need to write the probabilities, but you do need to write the table of which bit combinations correspond to which symbol. You also need to find a way of writing into the file information about where the bit stream stops, because it is not possible to stop writing in the middle of a byte. You probably also want to write information about the image size so that you know how to rearrange the decoded bits.

Iniciar sesión para comentar.

Categorías

Más información sobre Large Files and Big Data en Centro de ayuda y File Exchange.

Preguntada:

el 26 de Ag. de 2018

Comentada:

el 31 de Ag. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by