Difficulty in applying huffman encoding for image compression
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I got the given code to apply Huffman Encoding for image compression. But i am getting the error-
Error using huffmandict (line 71)
The symbol input must be a vector
Error in new (line 5)
[dict,avglen]=huffmandict(symbols,p)
The code is:
A=imread('xyz.jpg');
[symbols,p]=hist(A,double(unique(A)))
p=p/sum(p)
[dict,avglen]=huffmandict(symbols,p)
comp=huffmanenco(A,dict)
Help me as i am new to all these concepts.
0 Kommentare
Antworten (2)
KALYAN ACHARJYA
am 10 Okt. 2018
Bearbeitet: KALYAN ACHARJYA
am 10 Okt. 2018
When I have tested your code with the test image, both symbols and p have different sizes (see in the attached image) Read the documentation about huffmandict Clearly mentioned that-
The length of p must equal the length of symbols.
-------------------------------------------------------------------------------------------------------------------------------------------- Updated Answer
I have suspected another issue if you consider any 1 D array, the following code is working (Note that an image is 2D)
%A=double(imread('test.jpg'));
p=[.5 .125 .125 .125 .0625 .0625];
A=randsrc(100,1,[1:6; p]);
%[symbols,p]=hist(A,double(unique(A)));
[p,symbols]=hist(A,double(unique(A)));
p=p/sum(p);
[dict,avglen]=huffmandict(symbols,p);
comp=huffmanenco(A,dict);
3 Kommentare
KALYAN ACHARJYA
am 10 Okt. 2018
Bearbeitet: KALYAN ACHARJYA
am 10 Okt. 2018
I have updated the answer, please check.
Walter Roberson
am 10 Okt. 2018
[symbols,p] = hist(A(:), double(unique(A)));
6 Kommentare
Walter Roberson
am 14 Okt. 2018
The output is not an image: it is a double vector containing the values 0 and 1.
Siehe auch
Kategorien
Mehr zu Denoising and Compression finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!