【问题标题】:How can i make GNU Octave ifft2 command work?我怎样才能使 GNU Octave ifft2 命令工作?
【发布时间】:2015-04-02 21:02:25
【问题描述】:

我正在尝试使用 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) % 生成黑色图像

【问题讨论】:

  • 抱歉链接,我不能发布图片(还)
  • 你能展示你的代码吗?
  • 相关代码,您可以在其中执行您描述的所有操作(不要评论,编辑您的帖子)。
  • 刚刚做了,我把它放在问题上,对不起

标签: image-processing fft octave ifft


【解决方案1】:

如果您尝试实际使用例如一个jpg,你会发现它给你一个非常不同的结果,与你的png相比。您的问题是您正在加载带有 imread 的 uint8 但 fft2 会产生双值结果(您可以在this 答案上查看更多详细信息)。此外,图像以 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)

导致灰度图像恢复:

如果你有镜像包,你还可以使用im2double等函数(例如here)。

【讨论】:

  • 伙计,你刚刚救了我。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 2021-01-22
相关资源
最近更新 更多