簡單的實現(xiàn)JPEG圖像壓縮編碼方法一
clear all;
RGB=imread('C:\Users\ADMINISTRATOR\Desktop\123.bmp');%讀取內(nèi)存中bmp格式的彩色圖像
I=rgb2gray(RGB);%將彩色圖像轉(zhuǎn)換為灰度圖像
I1=im2double(I);%將圖像變換為雙精度格式
T=dctmtx(8);%處理后返回一個8*8階的DCT矩陣
B1=blkproc(I1,[8
8],'P1*x*P2',T,T');%對圖像的每個8*8子塊應(yīng)用矩陣式‘P1*x*P2(像素塊的處理函數(shù),x是形式參數(shù))進行處理,P1=T,P2=T’
mask=[1 1 1 1 0 0
0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ];%選取10個DCT系數(shù)重構(gòu)圖像(DCT具有能量集中的性質(zhì),數(shù)據(jù)集中在左上角,故進行圖像壓縮時離散余弦變換矩陣可以舍棄右下角的高頻數(shù)據(jù))
B2=blkproc(B1,[8
8],'P1.*x',mask);%舍棄每個塊中的高頻系數(shù),達到壓縮的目的
I2=blkproc(B2,[8
8],'P1*x*P2',T',T);%余弦反變換,重構(gòu)圖像
subplot(2,2,1);imshow(RGB);%原彩色圖像
subplot(2,2,2);imshow(I);%灰度圖像
subplot(2,2,3);imshow(I1);%雙精度灰度圖像
subplot(2,2,4);imshow(I2);%重構(gòu)圖像
標(biāo)簽:
matlab
上傳時間:
2018-03-15
上傳用戶:wlmelody