我怎样才能使 GNU Octave ifft2 命令工作?
How can i make GNU Octave ifft2 command work?
我正在尝试使用 fft2 命令在 GNU Octave 中进行一些图像处理,但我在逆变换方面遇到了问题。
我可以毫无问题地计算变换,用它做任何我想做的事,但是当我 return 到 space 域并尝试绘制图像时,我得到的只是全黑图片。
我什至尝试只做正向和反向变换,仅此而已,还是同样的问题。
我能做什么?
顺便说一句,我用来测试的图像是:
http://bootstrapbay.com/blog/wp-content/uploads/2014/05/yellow-taxi_vvvjao.png
代码:
我 = imread('image.jpg');
imshow(I) % 正确生成图像
I2 = fft2(I);
I2 = ifft2(I2);
imshow(I2) % 生成黑色图像
如果您实际尝试使用例如一个 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)。
我正在尝试使用 fft2 命令在 GNU Octave 中进行一些图像处理,但我在逆变换方面遇到了问题。
我可以毫无问题地计算变换,用它做任何我想做的事,但是当我 return 到 space 域并尝试绘制图像时,我得到的只是全黑图片。
我什至尝试只做正向和反向变换,仅此而已,还是同样的问题。
我能做什么?
顺便说一句,我用来测试的图像是:
http://bootstrapbay.com/blog/wp-content/uploads/2014/05/yellow-taxi_vvvjao.png
代码:
我 = imread('image.jpg');
imshow(I) % 正确生成图像
I2 = fft2(I);
I2 = ifft2(I2);
imshow(I2) % 生成黑色图像
如果您实际尝试使用例如一个 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)。