我有一個作業,我必須將一些圖像轉換爲灰度並使用哈夫曼編碼進行壓縮。我將它們轉換爲灰度,然後嘗試壓縮它們,但出現錯誤。我用我發現的代碼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.S.我怎樣才能找到每個圖像的壓縮率?
我做到了。這裏是代碼'A = imread('Gray \ 36.png'); A =雙(A); [symbols,p] = hist(A,unique(A)) p = p/sum(p) [dict,avglen] = huffmandict(symbols,p) comp = huffmanenco(A,dict)我得到的錯誤,'錯誤使用huffmandict(71行) 符號輸入必須是一個向量' –
所以你有另一個錯誤。這是你猜我幸運的一天:D – CTZStef
符號不是矢量。實際上,hist會給出每行中的頻率計數,並且給出bin位置(即灰度級的數量)。他們是二維的。據我瞭解,只需將符號中的值分別總結到列中,即可得到您想要的矢量。 GUESS:symbols = symbols/sum(symbols);) – CTZStef