如何用MATLAB进行图像压缩
用3种不同的压缩比进行DCT余弦离散变换
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) % 显示原始图像和压缩重构图像。