일부 이미지를 그레이 스케일로 변환하고 허프만 인코딩을 사용하여 압축해야하는 숙제가 있습니다. 나는 그 (것)들을 그레이 스케일로 변환했다, 그리고 나는 그들을 압축하려고 노력했다. 그러나 나는 오류를 얻는다. 내가 찾은 코드를 here으로 사용했습니다.MATLAB - 이미지 허프만 인코딩
A=imread('Gray\36.png');
[symbols,p]=hist(A,unique(A))
p=p/sum(p)
[dict,avglen]=huffmandict(symbols,p)
comp=huffmanenco(A,dict)
이것은 내가 오류는 다음과 같습니다
내가 사용하고 코드입니다. 그것은 두 번째 줄에서 발생합니다.Error using eps
Class must be 'single' or 'double'.
Error in hist (line 90)
bins = xx + eps(xx);
내가 뭘 잘못하고 있니?
감사합니다.
P. 각 이미지의 압축률을 어떻게 찾을 수 있습니까?
나는 그것을했다. 다음은 코드'A = imread ('Gray \ 36.png')입니다. A = 이중 (A); [기호, p] = hist (A, 고유 한) p = p/sum (p) [dict, avglen] = huffmandict (symbols, p) comp = huffmanenco (A, dict)'지금 '오류를 사용하여 오류 huffmandict (줄 71) 기호 입력 벡터합니다' –
그래서 다른 오류가 있습니다. 당신의 행운의 날입니다 : D – CTZStef
symbols은 벡터가 아닙니다. 사실, hist는 각 행의 빈도 수를 제공하고 빈 위치 (예 : 회색 수)를 xout으로 제공합니다. 그것들은 양방향이다. 그래서 제가 이해할 때, 심볼의 값을 각각의 열에 합하면, 여러분이 원하는 벡터를 얻을 수 있습니다. 추측 : symbols = symbols/sum (symbols);) – CTZStef