对示例图像进行DFT: 1.1得到其幅度谱和相位谱。 1.2分别由幅度谱、相位谱、以及结合二者进行图像重建 。给出matlab代码
时间: 2023-10-16 08:10:36 浏览: 87
以下是对示例图像进行DFT并得到幅度谱和相位谱的代码:
```matlab
% 读入示例图像
img = imread('example.jpg');
% 将图像转为灰度图像
img = rgb2gray(img);
% 对图像进行DFT
F = fft2(double(img));
% 获取幅度谱
A = abs(F);
% 获取相位谱
P = angle(F);
% 绘制幅度谱
subplot(1,2,1);
imshow(log(1+A), []);
title('Amplitude Spectrum');
% 绘制相位谱
subplot(1,2,2);
imshow(P, []);
title('Phase Spectrum');
```
以下是由幅度谱、相位谱、以及结合二者进行图像重建的代码:
```matlab
% 读入示例图像
img = imread('example.jpg');
% 将图像转为灰度图像
img = rgb2gray(img);
% 对图像进行DFT
F = fft2(double(img));
% 获取幅度谱
A = abs(F);
% 获取相位谱
P = angle(F);
% 重建图像(仅使用幅度谱)
F_recon = A .* exp(1i*0);
img_recon_amp = real(ifft2(F_recon));
% 重建图像(仅使用相位谱)
F_recon = 0 + 1i*P;
img_recon_phase = real(ifft2(F_recon));
% 重建图像(结合幅度谱和相位谱)
F_recon = A .* exp(1i*P);
img_recon_both = real(ifft2(F_recon));
% 显示重建图像
figure;
subplot(2,2,1);
imshow(img, []);
title('Original Image');
subplot(2,2,2);
imshow(img_recon_amp, []);
title('Reconstructed Image (Amplitude Only)');
subplot(2,2,3);
imshow(img_recon_phase, []);
title('Reconstructed Image (Phase Only)');
subplot(2,2,4);
imshow(img_recon_both, []);
title('Reconstructed Image (Both Amplitude and Phase)');
```
阅读全文