Matlab/Octave 二维离散傅里叶变换
Matlab/Octave 2D Discrete Fourier Transform
我想在 Octave 中重新创建如图所示的步骤,但我认为我做的完全错了。
I = imread('424a.png');
subplot(2,2,1);
imshow(I);
title('Original Image');
subplot(2,2,2);
F = fft2(I);
imshow(abs(F),[]);
title('FFT');
subplot(2,2,3);
imshow(log(abs(F)),[])
title('log - FFT');
F = fftshift(F);
subplot(2,2,4);
imshow(log(abs(F)),[])
title('centered - log - FFT');
非常感谢您的帮助:)
此致!
编辑:
现在看起来像这样:
您可以使用MATLAB对数函数进行对数变换。它有助于查看转换的缩放版本。
I = imread('testimage.png');
subplot(2,2,1);
imshow(I);
title('Original Image');
subplot(2,2,2);
F = fft2(I);
imshow(abs(F),[]);
title('FFT');
subplot(2,2,3);
imshow(log(abs(F)),[])
title('log - FFT');
F = fftshift(F);
subplot(2,2,4);
imshow(log(abs(F)),[])
title('centered - log - FFT');
问题是 F 的最小值为 0,当您取 log(F)
时,您将得到最小值 -Inf
。 imshow(F,[])
函数在 MIN 和 MAX 之间缩放图片,因此在您的情况下它将显示为黑色图像。您可以在获取日志之前向 F 添加一个小值,或者手动设置限制 [0 8.8](8.8 是 log(max(F(:)))
)
编辑 1:
如果我在 imshow(log(abs(F)+1),[])
中添加一个小常量,我会得到以下结果(在 Ubuntu 17.10 下使用 Octave 4.2.1):
结果与您展示的论文有所不同,但看起来它们没有线性灰度色图(它从中等灰度级开始)
编辑 2:
他们似乎使用了 2 版本图像的下采样。如果你使用 imresize(I,0.5)
对其进行下采样,你将得到与论文中类似的图。
我想在 Octave 中重新创建如图所示的步骤,但我认为我做的完全错了。
I = imread('424a.png');
subplot(2,2,1);
imshow(I);
title('Original Image');
subplot(2,2,2);
F = fft2(I);
imshow(abs(F),[]);
title('FFT');
subplot(2,2,3);
imshow(log(abs(F)),[])
title('log - FFT');
F = fftshift(F);
subplot(2,2,4);
imshow(log(abs(F)),[])
title('centered - log - FFT');
非常感谢您的帮助:) 此致!
编辑: 现在看起来像这样:
您可以使用MATLAB对数函数进行对数变换。它有助于查看转换的缩放版本。
I = imread('testimage.png');
subplot(2,2,1);
imshow(I);
title('Original Image');
subplot(2,2,2);
F = fft2(I);
imshow(abs(F),[]);
title('FFT');
subplot(2,2,3);
imshow(log(abs(F)),[])
title('log - FFT');
F = fftshift(F);
subplot(2,2,4);
imshow(log(abs(F)),[])
title('centered - log - FFT');
问题是 F 的最小值为 0,当您取 log(F)
时,您将得到最小值 -Inf
。 imshow(F,[])
函数在 MIN 和 MAX 之间缩放图片,因此在您的情况下它将显示为黑色图像。您可以在获取日志之前向 F 添加一个小值,或者手动设置限制 [0 8.8](8.8 是 log(max(F(:)))
)
编辑 1:
如果我在 imshow(log(abs(F)+1),[])
中添加一个小常量,我会得到以下结果(在 Ubuntu 17.10 下使用 Octave 4.2.1):
编辑 2:
他们似乎使用了 2 版本图像的下采样。如果你使用 imresize(I,0.5)
对其进行下采样,你将得到与论文中类似的图。