Matlab 影象處理-哈夫曼編碼(huffman)
阿新 • • 發佈:2019-01-07
哈夫曼編碼是一種可變長無損編碼,應用範圍廣。這裡介紹利用matalb實現哈夫曼編碼方法。matalb中帶有相關函,下面一一介紹:
ENCO = huffmanenco(SIG, DICT) : 哈夫曼編碼函式,SIG為輸入編碼訊號,DICT為編碼字典,由函式huffmandict()生成;
DECO = huffmandeco(COMP, DICT) :哈夫曼解碼函式,COMP為哈夫曼編碼向量,即上面的ENCO;
DICT = huffmandict(SYM, PROB) : 哈夫曼字典生成函式,SYM為信源符號向量,包含資訊中所有符號,PROB為相應符號出現的概率;
程式碼實現:
clear;
clear all;
I = imread('F:\Myfile\Matlab\Test_picture\1_1.jpg' );
[M,N] = size(I);
I1 = I(:);
P = zeros(1,256);
%獲取各符號的概率;
for i = 0:255
P(i+1) = length(find(I1 == i))/(M*N);
end
k = 0:255;
dict = huffmandict(k,P); %生成字典
enco = huffmanenco(I1,dict); %編碼
deco = huffmandeco(enco,dict); %解碼
Ide = col2im(deco,[M,N],[M,N],'distinct'); %把向量重新轉換成影象塊;
subplot(1 ,2,1);imshow(I);title('original image');
subplot(1,2,2);imshow(uint8(Ide));title('deco image');