如何将图像分解为幅度和相位并使用 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);
我如何将图像(例如 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);