仅通过图像傅里叶变换的幅度来恢复图像

信息处理 图像处理 matlab fft 震级
2022-02-10 20:39:03

我有一个图像,我想计算它的 fft2,之后我只想通过它的大小来恢复图像。我怎样才能完成这项工作?

I=imread('1.bmp');
I = rgb2gray(I);
imafft = fft2(double(I));

 % Gets magnitude and phase.
 mag = abs(imafft);

 % Generates the modified spectrum
 newfft = mag.*exp(0*angle(imafft));
 ima_out = ifft2(newfft);
 imshow(abs(ima_out));

这是给我的白页。

3个回答

看看这个来自 Oppenheim, AV, & Lim, JS (1981) 的经典例子。“相位在信号中的重要性”。a) 和 b) 是原始图像,c) 是使用 a) 的相位和 b) 的幅度创建的图像,d) 是使用 b) 的相位和 a) 的幅度创建的图像。相位承载图像中的大部分信息。

在此处输入图像描述

您无法仅使用频率幅度来恢复图像。您还需要相位信息来恢复它。

尝试使用im2double而不是

fft2(double(I));

所以,会像:

ima_double = im2double(I);

imafft = fft2(ima_double);

当您将显示输出图像时,请使用:

ima_out_u8 = im2uint8(ima_out);

imshow(ima_out_u8);

可以在这里找到更好的解释。