matlab实现:1. 对棋盘图像(checkerboard(10,2))进行压缩,显示原图像大小、压缩图像大小以及压缩比。 2. 对DCT变换矩阵舍弃系数后重构的图像和原图像进行比较。qtdemo是Matlab自带的一个演示程序。输入qtdemo后,就会运行程序。 qtdemo dctdemo
时间: 2024-02-13 20:02:52 浏览: 111
基于Matlab的图像DCT变换并压缩
好的,以下是您需要的 Matlab 代码实现:
1. 对棋盘图像进行压缩并显示信息
```matlab
% 读取棋盘图像
I = checkerboard(10,2);
% 显示原图像大小
orig_size = numel(I);
fprintf('原图像大小:%d bytes\n', orig_size);
% 进行压缩
compressed_I = imresize(I, 0.5);
% 显示压缩后图像大小
compressed_size = numel(compressed_I);
fprintf('压缩后图像大小:%d bytes\n', compressed_size);
% 显示压缩比
compression_ratio = orig_size/compressed_size;
fprintf('压缩比:%f\n', compression_ratio);
% 显示原图像和压缩后图像
figure;
subplot(1,2,1);
imshow(I);
title('原图像');
subplot(1,2,2);
imshow(compressed_I);
title('压缩后图像');
```
2. 对DCT变换矩阵舍弃系数后重构的图像和原图像进行比较
```matlab
% 读取图像
I = checkerboard(10,2);
% 进行DCT变换
dct_I = dct2(I);
% 舍弃系数
coeffs_to_keep = 100;
dct_I(coeffs_to_keep:end,:) = 0;
dct_I(:,coeffs_to_keep:end) = 0;
% 进行逆DCT变换
idct_I = idct2(dct_I);
% 显示原图像和重构图像
figure;
subplot(1,2,1);
imshow(I);
title('原图像');
subplot(1,2,2);
imshow(idct_I);
title('重构图像');
% 计算误差
err = immse(I, idct_I);
fprintf('均方误差:%f\n', err);
```
您可以在 Matlab 命令窗口中输入 `qtdemo` 或 `dctdemo` 来调用自带的演示程序。
阅读全文