?? jpeg.txt
字號:
JPEG圖像壓縮算法:
輸入圖像被分成8*8或16*16的小塊,然后對每一小塊進行二維DCT(離散余弦變換)變換,變換后的系數量化、編碼并傳輸;
JPEG文件解碼量化了的DCT系數,對每一塊計算二維逆DCT變換,最后把結果塊拼接成一個完整的圖像。在DCT變換后舍棄那些不嚴重影響圖像重構的接近0的系數。
DCT變換的特點是變換后圖像大部分能量集中在左上角,因為左上放映原圖像低頻部分數據,右下反映原圖像高頻部分數據。而圖像的能量通常集中在低頻部分。
實例程序:
function Jpeg
I=imread('D:\MATLAB7\toolbox\images\imdemos\cameraman.tif');
%該圖片在安裝matlab的目錄中找,原圖為灰度圖象
I=im2double(I);%圖像存儲類型轉換
T=dctmtx(8);%離散余弦變換矩陣
B=blkproc(I,[8 8],'P1*x*P2',T,T');
%對原圖像進行DCT變換
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];
B2=blkproc(B,[8 8],'P1.*x',mask);
%數據壓縮,丟棄右下角高頻數據
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
%進行DCT反變換,得到壓縮后的圖像
imshow(I)
title('原始圖像')
figure;
imshow(I2)
title('壓縮后的圖像')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -