2

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

1 回答 1

2

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

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

其他一切都应该没问题。

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

I = im2double(I);
于 2017-05-18T08:24:53.830 回答