1、图像变换(代码+图像+分析) 对图像做余弦变换后,并截取图像的主要信息,并做反余弦变换,显示丢失了部分信息的图像,并分析比较余弦变换后的频谱图的不同取值,对图像清晰度的影响,分析图像的压缩空间。matlab代码怎么写?
时间: 2024-02-12 19:02:35 浏览: 63
基于3D 离散余弦变换实现图像的快速压缩重构附matlab代码.zip
以下是MATLAB代码和解释:
```
% 读入图像
img = imread('lena.png');
% 转换为灰度图像
img_gray = rgb2gray(img);
% 显示原始图像
subplot(2,2,1);
imshow(img_gray);
title('Original Image');
% 对图像进行二维余弦变换
D = dct2(img_gray);
% 取D的前50x50个系数
D(51:end,:) = 0;
D(:,51:end) = 0;
% 对截取后的系数进行反余弦变换
img_dct = idct2(D);
% 显示截取后的图像
subplot(2,2,2);
imshow(img_dct);
title('Truncated DCT Image');
% 计算频谱图
f = abs(fftshift(fft2(img_gray)));
f_truncated = abs(fftshift(fft2(img_dct)));
% 显示原始图像的频谱图
subplot(2,2,3);
imshow(log(1+f),[]);
title('Original Spectrum');
% 显示截取后的图像的频谱图
subplot(2,2,4);
imshow(log(1+f_truncated),[]);
title('Truncated Spectrum');
```
代码中,我们首先读入了一张图像,并将其转换为灰度图像。然后,我们对图像进行了二维余弦变换,并截取了前50x50个系数。接下来,我们对截取后的系数进行反余弦变换,得到了丢失了部分信息的图像。最后,我们计算了原始图像和截取后的图像的频谱图,并将其显示出来。
运行代码后,我们可以看到四幅图像。第一幅图像是原始图像,第二幅图像是截取后的图像。可以看到,截取后的图像丢失了一些细节,但整体上保留了原始图像的大部分信息。第三幅图像是原始图像的频谱图,第四幅图像是截取后的图像的频谱图。可以看到,在原始图像的频谱图中,高频部分的取值比较大,而在截取后的图像的频谱图中,高频部分的取值变小了。这说明,截取后的图像的高频部分被压缩了,导致图像失去了一些清晰度。
阅读全文