sumarize11_4_2dct.m

来自「matlab7.0从入门到精通(光盘内容)」· M 代码 · 共 24 行

M
24
字号
I = imread('cameraman.tif');
I = im2double(I);
%产生二维DCT变换矩阵
T = dctmtx(8);
%计算二维DCT
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];
%只保留DCT变换的11个系数
B2 = blkproc(B,[8 8],'P1.*x',mask);
%DCT反变换,用来重构图像
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);
subplot(1,2,1)
imshow(I), 
subplot(1,2,2)
imshow(I2)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?