如何将图像(例如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)
答案 0 :(得分:2)
您忘记将相位乘以复数单位j
:
I_fft_recon = I_amp .* exp(j * I_phase);
其他一切都应该没问题。
顺便说一句,您可能希望在处理之前将图像转换为double
I = im2double(I);