필터 지우기
필터 지우기

Difficulty in applying huffman encoding for image compression

조회 수: 2 (최근 30일)
Nidhi Kumari
Nidhi Kumari 2018년 10월 9일
댓글: Walter Roberson 2018년 10월 14일
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.

답변 (2개)

KALYAN ACHARJYA
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.
-------------------------------------------------------------------------------------------------------------------------------------------- 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
KALYAN ACHARJYA 2018년 10월 10일
편집: KALYAN ACHARJYA 2018년 10월 10일
I have updated the answer, please check.
Have you read here?
Nidhi Kumari
Nidhi Kumari 2018년 10월 11일
I am using R2014a ,so histcounts() is not present. Can you suggest any other alternative?

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2018년 10월 10일
[symbols,p] = hist(A(:), double(unique(A)));
  댓글 수: 6
Nidhi Kumari
Nidhi Kumari 2018년 10월 14일
The output image is a vertical thin line along with the message-
Warning: Image is too big to fit on screen; displaying at 0%
Walter Roberson
Walter Roberson 2018년 10월 14일
The output is not an image: it is a double vector containing the values 0 and 1.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Denoising and Compression에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by