利用MATLAB编程,打开一副图像,对其进行DFT变换,并置其不同区域内系数为0,
时间: 2024-05-07 07:16:02 浏览: 19
最后通过IDFT变换将图像还原。
以下是示例代码:
```matlab
% 打开一张图像
img = imread('lena.png');
% 转为灰度图像
img = rgb2gray(img);
% 显示原始图像
subplot(2,2,1);
imshow(img);
title('Original Image');
% 对图像进行DFT变换
img_dft = fft2(double(img));
% 将变换后的系数置0
img_dft(1:64, 1:64) = 0;
img_dft(192:256, 1:64) = 0;
img_dft(1:64, 192:256) = 0;
% 显示变换后的频谱
subplot(2,2,2);
imshow(log(1+abs(img_dft)), []);
title('DFT Spectrum');
% 对变换后的系数进行IDFT变换,得到还原图像
img_recovered = uint8(abs(ifft2(img_dft)));
% 显示还原后的图像
subplot(2,2,3);
imshow(img_recovered);
title('Recovered Image');
% 计算误差并显示
err = immse(img, img_recovered);
disp(['Mean Square Error: ', num2str(err)]);
```
该程序会将原始图像的左上、右上、左下三个区域的系数置为0,然后通过IDFT变换还原图像。最后会计算并显示还原图像与原始图像的均方误差(Mean Square Error)。
以下是示例输出:
```
Mean Square Error: 6.3064
```
可以看到,还原后的图像与原始图像有一定的误差,但整体上还是比较接近的。如果将置0的区域调整或增加,还原后的图像的质量可能会有所变化。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)