如何将图像分解为幅度和相位并使用Matlab重新构建它?

时间:2017-05-18 08:18:07

标签: matlab image-processing fft phase magnitude

如何将图像(例如Lena)分解为幅度图像和相位图像,并使用Matlab从这两个图像中重新构建它?

这是我在Matlab编写的代码,但我不知道为什么重建的图像太暗或太亮了!

I = imread('lena.png');
I_fft = fft2(I);
I_amp = abs(I_fft);
I_phase = angle(I_fft);

I_fft_recon = I_amp .* exp(I_phase);
I_recon = ifft2(I_fft_recon);
imshow(I_recon)

1 个答案:

答案 0 :(得分:2)

您忘记将相位乘以复数单位j

I_fft_recon = I_amp .* exp(j * I_phase);

其他一切都应该没问题。

顺便说一句,您可能希望在处理之前将图像转换为double

I = im2double(I);