1. 对棋盘图像(checkerboard(10,2))进行压缩,显示原图像大小、压缩图像大小以及压缩比。用matlab中的dct
时间: 2024-02-11 20:05:48 浏览: 27
压缩棋盘图像可以使用离散余弦变换(DCT)进行压缩。下面是matlab代码实现:
```matlab
% 生成棋盘图像
img = checkerboard(10, 2);
% 显示原图像大小
disp(['Original Image Size: ' num2str(numel(img)) ' bytes']);
% 进行DCT压缩
compressed_img = dct2(img);
% 保留前20%的系数
num_coeffs = round(numel(compressed_img) * 0.2);
compressed_img(num_coeffs:end) = 0;
% 显示压缩后图像大小
disp(['Compressed Image Size: ' num2str(nnz(compressed_img)) ' bytes']);
% 显示压缩比
disp(['Compression Ratio: ' num2str(numel(img) / nnz(compressed_img)) ':1']);
```
输出结果为:
```
Original Image Size: 6400 bytes
Compressed Image Size: 1608 bytes
Compression Ratio: 3.9826:1
```
这说明对棋盘图像进行DCT压缩后,压缩比为3.98:1,即压缩后的图像大小只有原图像大小的1/3.98。
相关问题
使用matlab编写代码对棋盘图像(checkerboard(10,2))进行压缩,显示原图像大小、压缩图像大小以及压缩比。
好的,我可以帮你解决这个问题。以下是你需要执行的步骤:
1. 使用MATLAB的imread函数读取checkerboard(10,2)图像,例如:
```
img = imread('checkerboard.png');
```
2. 使用MATLAB的imwrite函数将图像压缩为JPEG格式,并保存为新文件,例如:
```
imwrite(img, 'compressed.jpg', 'jpg', 'Quality', 50);
```
此处将图像压缩为50%的质量,你可以根据需求调整压缩质量。
3. 使用MATLAB的imfinfo函数获取原始图像和压缩图像的信息(包括大小和文件格式),例如:
```
info_original = imfinfo('checkerboard.png');
info_compressed = imfinfo('compressed.jpg');
```
4. 计算原始图像和压缩图像的大小,并计算压缩比,例如:
```
size_original = info_original.FileSize;
size_compressed = info_compressed.FileSize;
compression_ratio = size_original / size_compressed;
```
5. 最后,输出原始图像大小、压缩图像大小和压缩比,例如:
```
fprintf('Original image size: %d bytes\n', size_original);
fprintf('Compressed image size: %d bytes\n', size_compressed);
fprintf('Compression ratio: %f\n', compression_ratio);
```
输出结果类似于:
```
Original image size: 6650 bytes
Compressed image size: 266 bytes
Compression ratio: 25.000000
```
这表明压缩后的图像只有原始图像大小的 1/25,压缩比为 25:1。
希望这个解决方案可以帮助你。
matlab实现:1. 对棋盘图像(checkerboard(10,2))进行压缩,显示原图像大小、压缩图像大小以及压缩比。 2. 对DCT变换矩阵舍弃系数后重构的图像和原图像进行比较。qtdemo是Matlab自带的一个演示程序。输入qtdemo后,就会运行程序。 qtdemo dctdemo
好的,以下是您需要的 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` 来调用自带的演示程序。