1.将图像内容读入内存; 2.用Fourier变换算法,对图像作二维Fourier变换; 3.将其幅度谱进行搬移,在图像中心显示; 4.用Fourier系数的幅度进行Fourier反变换; 5.用Fourier系数的相位进行Fourier反变换; 6.比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。matlab实现
时间: 2024-02-15 14:03:31 浏览: 443
基于matlab的一些算法实现,频谱分析,和系统仿真
4星 · 用户满意度95%
以下是用 MATLAB 实现将图像进行二维 Fourier 变换、幅度谱搬移、Fourier 反变换的代码。其中包含了使用 Fourier 系数的幅度和相位进行反变换的部分。
```
% 读入图像内容
img = imread('lena.png');
% 对图像作二维 Fourier 变换
F = fft2(img);
% 将幅度谱搬移,在图像中心显示
F_shifted = fftshift(F);
A = abs(F_shifted);
% 用 Fourier 系数的幅度进行 Fourier 反变换
F_amp = abs(F);
img_amp = ifft2(F_amp);
% 用 Fourier 系数的相位进行 Fourier 反变换
F_phase = angle(F);
img_phase = ifft2(exp(1i * F_phase));
% 比较幅度反变换和相位反变换的结果
figure;
subplot(1,3,1);
imshow(img);
title('原始图像');
subplot(1,3,2);
imshow(uint8(img_amp));
title('幅度反变换');
subplot(1,3,3);
imshow(uint8(img_phase));
title('相位反变换');
```
这个代码中,我们首先使用 `imread` 函数读入一张图像,并使用 `fft2` 函数对其进行二维 Fourier 变换。然后,我们使用 `fftshift` 函数将幅度谱搬移,在图像中心显示。我们将搬移后的幅度谱保存在变量 `A` 中,以备后续使用。
接着,我们使用 `abs` 函数获取 Fourier 系数的幅度,并使用 `ifft2` 函数进行 Fourier 反变换,得到使用幅度进行反变换后的图像。我们将其保存在变量 `img_amp` 中。
然后,我们使用 `angle` 函数获取 Fourier 系数的相位,并使用 `ifft2` 函数进行 Fourier 反变换,得到使用相位进行反变换后的图像。我们将其保存在变量 `img_phase` 中。
最后,我们使用 `imshow` 函数将三张图像显示在一个窗口中,比较幅度反变换和相位反变换的结果。根据实验结果,人眼对于图像的幅频特性和相频特性的敏感度是相对较低的,两种方法得到的结果在视觉上并没有太大的区别。
阅读全文