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