目錄:
一:概述
二:無失真圖像壓縮編碼
三:有限失真圖像壓縮編碼
四:圖像編碼新技術
一:概述:
由於圖像信息的編碼必須在保持信息源內容不變,或者損失不大的前提下才有意義,這就必然涉及到信息的度量問題。
信息量:
從統計學的角度來看,信息出現的概率是可以度量的,這個度量就是信息量。
一般而言小概率的事件所包含的信息量更大,所以事件所包含的信息量與其發生的概率成反比例關系。
將信息量定義為信息源發出的所有消息中該信息出現概率的倒數的對數。
I(ai)=-logp(ai) (7.1)
式(7.1)中,對數的底數決定了衡量信息的單位。通常取2為對數的底數,這時定義的信息量單位為比特。
信息熵:
對信息源X的各符號的自信息量取統計平均,可得平均自信息量為:
在信息論中,香農借鑒熱力學中的概念,把平均自信息量H(X)稱為信息源X的信息熵,用以衡量信息的不確定性。 信息熵可以理解為信息源 發出的 一個符號所攜帶的平均信息量,單位為比特/符號。
1 I=imread('D:/picture/lenagray.jpg'); 2 x=double(I); 3 n=256;%灰度級總數 4 xh=hist(x(:),n);%計算出圖像的直方圖 5 xh=xh/sum(xh(:));%計算各個灰度級出現的概率 6 i=find(xh);%直方圖對應的灰度級 7 h=-sum(log2(xh(i)).*xh(i));%求出圖像的熵
圖像數據冗余類型:空間冗余,時間冗余,信息熵冗余,視覺冗余,結構冗余,知識冗余
壓縮比:
為了表明某種壓縮編碼的效率,通常引入壓縮比這一參數,它的定義為:
其中b1表示壓縮前圖像每像素的平均比特數, b2表示壓縮后每像素所需的平均比特數,一般的情況下壓縮比Ratio總是大於等於1的, Ratio愈大則壓縮程度愈高。
1 %計算圖像的壓縮比c的值。 2 fi=imread(‘lena.tif’);%讀取非壓縮tif圖像 3 imwrite(fi,’lena.jpg’);以jpg壓縮格式存儲圖像 4 info1=dir(‘lena.tif’); 5 b1=info1.bytes; 6 info2=dir(‘lena.jpg’); 7 b2=info2.bytes; 8 Ratio=b1/b2; 9 figure,imshow(‘lena.tif’); 10 figure,imshow(‘lena.jpg’);
平均碼字長度:
設m為數字圖像中碼字的個數,l(ck)為數字圖像中第k個碼字ck的長度,其相應出現的概率為p(ck),則該數字圖像所賦予的平均碼字長度為:
編碼效率:
其中,H是原始圖像的熵,L是實際編碼圖像的平均碼字長度。
二:無失真圖像壓縮編碼
哈夫曼編碼
1 I=imread('D:/picture/lenagray.jpg'); 2 [zipped,info]=huffencode(I);%調用哈夫曼編碼程序進行壓縮 3 4 unzipped=huffdecode(zipped,info);%調用哈夫曼解碼程序進行解碼 5 6 disp('平均碼長');L=info.avalen 7 8 disp('壓縮比');CR=info.ratio 9 10 disp('信息熵');H=info.h 11 12 disp('編碼效率');CE=info.ce 13 14 subplot(131);imshow(Source);title('原始圖像'); 15 16 subplot(132);imshow(Gray);title('灰度圖像'); 17 18 subplot(133);imshow(unzipped);title('哈夫曼編碼並解碼重構圖像');
%%huffencode.m與huffdecode.m實際代碼展示一部分:
1 info.zeropad=zp;%添加的比特數 2 3 info.huffcodes=huffcodes; 4 5 info.length=length(vector);%灰度圖矩陣長度 6 7 info.rows=m; 8 9 info.cols=n; 10 11 info.avalen=avawordlen;%平均碼長 12 13 info.ratio=8/avawordlen;%壓縮比 14 15 info.h=H; 16 17 info.ce=H/avawordlen;%編碼效率
游程編碼
1 I=imread('D:/picture/ZiXia.jpg'); 2 if ndims(I)>2 3 I=rgb2gray(I); 4 end 5 BW=im2bw(I,0.4);%二值化 6 [zipped,info]=RLEencode(BW);%游程編碼 7 unzipped=RLEdecode(zipped,info);%游程解碼 8 subplot(131);imshow(I); 9 subplot(132);imshow(BW); 10 subplot(133);imshow(uint8(unzipped)*255); 11 cr=info.ratio 12 whos BW unzipped zipped
函數程序直接截圖了
算術編碼:
參考:https://blog.csdn.net/qq_36752072/article/details/77986159
三:有限失真圖像壓縮編碼
預測編碼
參考:https://blog.csdn.net/qingkongyeyue/article/details/76218403
變換編碼
參考:https://blog.csdn.net/qingkongyeyue/article/details/76099927
四:圖像編碼新技術
子帶編碼
子帶編碼是一種在頻率域中進行數據壓縮的算法。其指導思想是首先在發送端將圖像信號在頻率域分成若干子帶,
然后分別對這些子帶信號進行頻帶搬移,將其轉換成基帶信號,再根據奈奎斯特定理對各基帶信號進行取樣、量化和編碼,
最后合並成為一個數據流進行傳送。
模型編碼
模型基編碼主要是一種參數編碼方法,因此它與基於保持信號原始波形的所謂波形編碼相比有着本質區別。相對於對像素進行編碼而言,對參數的編碼所
需的比特數要少得多,因此可以節省大量的編碼數據。 模型基編碼主要依據對圖像內容的先驗知識的了解,根據掌握的信息,編碼器對圖像內容進行復雜的分析,並借助於一定的模型,用一系列模型的參數對圖
像內容進行描述,並把這些參數進行編碼傳輸到解碼器。解碼器根據接收到的參數和用同樣方法建立的模型可以重建圖像的內容。
分型編碼
分形編碼是在分形幾何理論的基礎上發展起來的一種編碼方法。 分形編碼最大限度地利用了圖像在空間域上的自相似性
(即局部與整體之間存在某種相 似性),通過消除圖像的幾何冗余來壓縮數據,對某些特定圖像可獲得10000: 1的壓縮比。