1. 程式人生 > >Matlab 影象處理-哈夫曼編碼(huffman)

Matlab 影象處理-哈夫曼編碼(huffman)

哈夫曼編碼是一種可變長無損編碼,應用範圍廣。這裡介紹利用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');