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

how to decompose an image into magnitude and phase and reconstruct it again using Matlab?

我如何将图像(例如 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)

你忘了用复数单位乘以相位 j:

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

其他一切都应该没问题。

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

I = im2double(I);