資源描述:
《實驗3圖像壓縮》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、實驗三、圖像壓縮一.實驗目的1.理解有損壓縮和無損壓縮的概念;2.理解圖像壓縮的主要原則和目的; 3.了解幾種常用的圖像壓縮編碼方式。4.利用MATLAB程序進行圖像壓縮。二.實驗原理1.圖像壓縮原理圖像壓縮主要目的是為了節(jié)省存儲空間,增加傳輸速度。圖像壓縮的理想標準是信息丟失最少,壓縮比例最大。不損失圖像質量的壓縮稱為無損壓縮,無損壓縮不可能達到很高的壓縮比;損失圖像質量的壓縮稱為有損壓縮,高的壓縮比是以犧牲圖像質量為代價的。壓縮的實現(xiàn)方法是對圖像重新進行編碼,希望用更少的數(shù)據(jù)表示圖像。信息的冗余量有許多種,如空間冗余,時間冗余,結構冗余,知識冗余,視覺冗余等,數(shù)據(jù)壓縮實質上是減少這些冗
2、余量。高效編碼的主要方法是盡可能去除圖像中的冗余成分,從而以最小的碼元包含最大的圖像信息。編碼壓縮方法有許多種,從不同的角度出發(fā)有不同的分類方法,從信息論角度出發(fā)可分為兩大類。(1).冗余度壓縮方法,也稱無損壓縮、信息保持編碼或嫡編碼。具體說就是解碼圖像和壓縮編碼前的圖像嚴格相同,沒有失真,從數(shù)學上講是一種可逆運算。(2)信息量壓縮方法,也稱有損壓縮、失真度編碼或煙壓縮編碼。也就是說解碼圖像和原始圖像是有差別的,允許有一定的失真。應用在多媒體中的圖像壓縮編碼方法,從壓縮編碼算法原理上可以分為以下3類:(1)無損壓縮編碼種類哈夫曼(Huffman)編碼,算術編碼,行程(RLE)編碼,Lemp
3、elzev編碼。(2)有損壓縮編碼種類預測編碼,DPCM,運動補償;頻率域方法:正交變換編碼(如DCT),子帶編碼;空間域方法:統(tǒng)計分塊編碼;模型方法:分形編碼,模型基編碼;基于重要性:濾波,子采樣,比特分配,向量量化;(3)混合編碼。有JBIG,H261,JPEG,MPEG等技術標準。本實驗主要利用MATLAB程序進行離散余弦變換(DCT)壓縮和行程編碼(RunLengthEncoding,RLE)。1)離散余弦變換(DCT)圖像壓縮原理離散余弦變換DCT在圖像壓縮中具有廣泛的應用,它是JPEG、MPEG等數(shù)據(jù)壓縮標準的重要數(shù)學基礎。和相同圖像質量的其他常用文件格式(如GIF(可交換的圖
4、像文件格式),TIFF(標簽圖像文件格式),PCX(圖形文件格式))相比,JPEG是目前靜態(tài)圖像中壓縮比最高的。JPEG比其他幾種壓縮比要高得多,而圖像質量都差不多(JPEG處理的圖像只有真彩圖和灰度圖)。正是由于其高壓縮比,使得JPEG被廣泛地應用于多媒體和網(wǎng)絡程序中。JPEG有幾種模式,其中最常用的是基于DCT變換的順序型模式,又稱為基本系統(tǒng)(Baseline)。用DCT壓縮圖像的過程為:(1)首先將輸入圖像分解為8×8或16×16的塊,然后對每個子塊進行二維DCT變換。(2)將變換后得到的量化的DCT系數(shù)進行編碼和傳送,形成壓縮后的圖像格式。用DCT解壓的過程為:(1)對每個8×8或
5、16×16塊進行二維DCT反變換。(2)將反變換的矩陣的塊合成一個單一的圖像。余弦變換具有把高度相關數(shù)據(jù)能量集中的趨勢,DCT變換后矩陣的能量集中在矩陣的左上角,右下的大多數(shù)的DCT系數(shù)值非常接近于0。對于通常的圖像來說,舍棄這些接近于0的DCT的系數(shù)值,并不會對重構圖像的畫面質量帶來顯著的下降。所以,利用DCT變換進行圖像壓縮可以節(jié)約大量的存儲空間。壓縮應該在最合理地近似原圖像的情況下使用最少的系數(shù)。使用系數(shù)的多少也決定了壓縮比的大小。在壓縮過程的第2步中,可以合理地舍棄一些系數(shù),從而得到壓縮的目的。在壓縮過程的第2步,還可以采用Huffman編碼來進一步壓縮。三.實驗程序與結果8*8:
6、I=imread('L:/lena.jpg');K=rgb2gray(I);I=im2double(K);imshow(I);T=dctmtx(8);B=blkproc(I,[88],'P1*x*P2',T,T');mask=[1111000011100000110000001000000000000000000000000000000000000000];B2=blkproc(B,[88],'P1.*x',mask);I2=blkproc(B2,[88],'P1*x*P2',T',T);I=imread('L:/lena.jpg');subplot(2,2,1);imshow(I);ti
7、tle('原始圖像');subplot(2,2,2);imshow(K);title('灰度圖');subplot(2,2,3);imshow(B2);title('壓縮圖');subplot(2,2,4);imshow(I2);title('復原圖');16*16:I=imread('L:/lena.jpg');K=rgb2gray(I);I=im2double(K);imshow(I);T=dctmtx(16);B=