![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/197492/image.png)
Difficulty in applying huffman encoding for image compression
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (2개)
KALYAN ACHARJYA
2018년 10월 10일
편집: KALYAN ACHARJYA
2018년 10월 10일
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/197492/image.png)
-------------------------------------------------------------------------------------------------------------------------------------------- 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
KALYAN ACHARJYA
2018년 10월 10일
편집: KALYAN ACHARJYA
2018년 10월 10일
I have updated the answer, please check.
Walter Roberson
2018년 10월 10일
[symbols,p] = hist(A(:), double(unique(A)));
댓글 수: 6
Walter Roberson
2018년 10월 14일
The output is not an image: it is a double vector containing the values 0 and 1.
참고 항목
카테고리
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!