0

我正在尝试使用 fft2 命令在 GNU Octave 中进行一些图像处理,但我遇到了逆变换问题。

我可以毫无问题地计算变换,用它做任何我想做的事情,但是当我返回空间域并尝试绘制图像时,我得到的只是一张全黑的图像。

我什至试图只做正向和逆变换,仅此而已,仍然是同样的问题。

我能做些什么?

顺便说一句,我用来测试的图像是:

http://bootstrapbay.com/blog/wp-content/uploads/2014/05/yellow-taxi_vvvjao.png

代码:

I = imread('image.jpg');

imshow(I) % 正确生成图像

I2 = fft2(I);

I2 = ifft2(I2);

imshow(I2) % 生成黑色图像

4

1 回答 1

1

如果您尝试实际使用例如 jpg 文件,您会发现与 png 文件相比,它会给您带来非常不同的结果。您的问题是您正在使用 imread 加载 uint8 但 fft2 会产生双值结果(您可以查看有关答案的更多详细信息)。此外,图像以 RGB 格式导入 - 1 维太多了。

所以要修复它,只需为您的转换选择一个通道并告诉它您的比例(dmin,dmax):

a = double(imread('image.png'));
a = a(:,:,1);
ffta = fft2(a);
img = ifft2(ffta);

dmin = min(min(abs(img)));
dmax = max(max(abs(img)));

imshow(img, [dmin dmax])
pause(5)

导致灰度图像的恢复:

在此处输入图像描述

如果您有图像包,您还可以使用诸如im2doubleetc 之类的功能(参见例如此处)。

于 2015-02-03T17:53:18.717 回答