gusucode.com > 《matlab图像处理与界面编程宝典》秦襄培 编著,每章的MATLAB源代码程序 > 第16章/代码16-7.txt

    
I = imread('cameraman.tif');               % 输入图像
I = im2double(I);                          % 数据类型转换
T = dctmtx(8);                             % 计算二维离散DCT矩阵
dct = @(x)T * x * T';                      % 设置函数句柄
B = blkproc(I,[8 8],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],@(x)mask.* x);         % 图像块处理
invdct = @(x)T' * x * T;                    % 设置函数句柄
I2 = blkproc(B2,[8 8],invdct);              % 图像块处理 
imshow(I), figure, imshow(I2)               % 显示原始图像和压缩重构图像