資源簡介
使用matlab實(shí)現(xiàn)灰度圖的jpeg編碼過程,包括dct變換,mask矩陣量化和游程編碼
代碼片段和文件信息
clc;?clear?all;?close?all;
img?=?imread(‘lena.jpg‘);?%?讀取圖片
f_img?=?im2double(img)?;%圖片存儲類型轉(zhuǎn)換
dct_matrix?=?dctmtx(8);%離散余弦變換矩陣
dct_img?=?blkproc(f_img[8?8]‘P1*x*P2‘dct_matrixdct_matrix‘);%對源圖像進(jìn)行DCT變換
mask1?=?[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
????????0?0?0?0?0?0?0?0
????????0?0?0?0?0?0?0?0
????????0?0?0?0?0?0?0?0];
mask6?=?[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
????????0?0?0?0?0?0?0?0];
mask15?=?[1?1?1?1?1?0?0?0
????????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];
mask28?=?[1?1?1?1?1?1?0?0
????????1?1?1?1?1?0?0?0
????????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];
%數(shù)據(jù)壓縮,丟棄右下角高頻數(shù)據(jù)
B1?=?blkproc(dct_img[8?8]‘P1.*x‘mask1);%1個分量
B6?=?blkproc(dct_img[8?8]‘P1.*x‘mask6);%6個分量
B15?=?blkproc(dct_img[8?8]‘P1.*x‘mask15);%15個分量
B28?=?blkproc(dct_img[8?8]‘P1.*x‘mask28);%28個分量
img1=B1;
img1=reshape(img1175*121);
%進(jìn)行反DCT變換
I1?=?blkproc(B1[8?8]‘P1*x*P2‘dct_matrix‘dct_matrix);%1個分量
I6
評論
共有 條評論