資源簡介
圖像壓縮的代碼,使用DCT,變換,量化,熵編碼。可以直接運行,運行結(jié)果很好。

代碼片段和文件信息
%程序功能:模擬DCT編碼解碼過程,生成帶“塊效應(yīng)”的圖像
%步驟:灰度圖像→DCT→量化→反量化→IDCT
%下一步目標(biāo):實現(xiàn)對任意大小圖象的處理。(判斷圖象大小,若不是2的整數(shù)次方,則補零)
I=imread(‘Camera.tif‘)
I=im2double(I)?????????????????%轉(zhuǎn)換圖像矩陣為雙精度型。
T=dctmtx(8)%產(chǎn)生二維DCT變換矩陣
%計算二維DCT,矩陣T及其轉(zhuǎn)置是DCT函數(shù)P1*X*P2的參數(shù)
a1=[16?11?10?16?24??40??51??61;
????12?12?14?19?26??58??60??55;
????14?13?16?24?40??57??69??56;
????14?17?22?29?51??87??80??62;
????18?22?37?56?68??109?103?77;
????24?35?55?64?81??104?113?92;
????49?64?78?87?103?121?120?101;
????72?92?95?98?112?100?103?99?];
for?i=1:8:200
????for?j=1:8:200
????????P=I(i:i+7j:j+7);
????????K=T*P*T‘;
????????I2(i:i+7j:j+7)=K;
????????K=K./a1;%量化
????????K(abs(K)<0.03)=0;
????????I3(i:i+7j:j+7)=K;
????end
end
figure;
imshow(I2);
title(‘DCT變換后的頻域圖像‘);%顯示DCT變換后的頻域圖像
for?i=1:8:200
????for?j=1:8:200
????????P=I3(i:i+7j:j+7).*a1;%反量化
????????K=T‘*P*T;
????????I4(i:i+7j:j+7)=K;
????end
end
figure;
imshow(I4);
title(‘復(fù)原圖像‘);
imwrite(I4‘復(fù)原圖像6.jpg‘);
B=blkproc(I[88]‘P1*x*P2‘TT‘)?%二值掩模,用來壓縮DCT系數(shù),只留下DCT系數(shù)中左上角的10個
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)??????????????????%只保留DCT變換的10個系數(shù)
I2=blkproc(B2[8?8]‘P1*x*P2‘T‘T)?????????????%重構(gòu)圖像
figure
imshow(I)
title(‘原始圖像‘);
figure
imshow(I2);
title(‘壓縮圖像‘);
figure
imshow(dct2(I));
figure
mesh(dct2(I))
colorbar(‘horiz‘)
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????65126??2014-05-28?17:53??圖像壓縮\Camera.tif
?????文件????????1661??2014-06-04?11:02??圖像壓縮\tuxiangyasuo.m
?????目錄???????????0??2014-06-04?11:42??圖像壓縮\
評論
共有 條評論