【问题标题】:Reading out specific points off the Matlab / Octave fft2() function output从 Matlab / Octave fft2() 函数输出中读出特定点
【发布时间】:2017-04-03 19:26:01
【问题描述】:

我正在熟悉 Octave 和函数 fft2()。在这个玩具示例中,我的目标是生成以下 256 x 256 png 图像的 2D DFT:

为了便于理解输出,我尝试将此图像转换为 256 x 256 图像,消除颜色信息:

Im = imread('circ.png');
pkg load image
Im = rgb2gray(Im);
figure, imshow(Im)

在这个簿记准备工作之后,我运行:

A = fft2(double(Im));


好的。现在我拍摄相同的图像,并使用 ImageJ 对其进行分析,检查点 (157, 96) 的输出,如下所示:

所以幅度将是sqrt(7.448^2 + 10.458^2) = 12.83

还有相位,arctan(-10.458 / 7.448) = 54.54 degrees

问题是,如何从fft2() 输出中获取这些值?


如果它有所不同,这就是我绘制 Octave 输出 2D DFT 的方式:

subplot(132);
h = imshow(abs(fftshift(A)),[24 100000]);
h2 = get(h,'Parent');
set(h2,'YDir','Normal');
axis equal tight;
title("2D FFT Magnitude");

subplot(133);
h = imshow(angle(fftshift(A)),[-pi pi]);
h2 = get(h,'Parent');
set(h2,'YDir','Normal');
axis equal tight;
title("2D FFT Phase");

这是 ImageJ 中的过程:

【问题讨论】:

  • 使用索引? A(157,96)?
  • 对不起,我的意思是A(96,157)
  • @Suever 还差得很远...可能我不知道如何正确读取输出...我不知道...>> A(96,157) ans = -472.89 - 2050.46i
  • 你有 ImageJ 为你计算 FFT 吗?
  • Ashift = fftshift(A); rad2deg(angle(Ashift(96, 157))); 提供几乎相同的角度输出 (-53.0599°)。正如@Suever 所建议的那样,幅度可能会发生变化。

标签: matlab output fft octave


【解决方案1】:

这里有一些观察可以阐明所使用的缩放比例:

  • ImageJ 的 X 和 Y 位置是从 0 开始的,而 Matlab 的索引是从 1 开始的。
  • 增加ImageJ的X位置对应于增加Matlab中的列索引,增加ImageJ的Y位置对应增加Matlab中的行索引,因此ImageJ中的(X,Y)坐标对将在Matlab中的索引(Y+1,X+1)处找到.
  • ImageJ 在图像中间显示具有 0 频率分量的图像,因此可以有效地在 fftshift(Im) 的等效项上进行测量
  • ImageJ 将 0-255 灰度值缩放为 0.0-1.0 范围内的浮点值(即通过除以 255 缩放所有值)

因此,考虑到这一点,我们有:

>> Ashifted = fftshift(A);
>> Ashifted(97,158)/255
ans =   7.4484 - 10.4582i
>> Ashifted(93,165)/255
ans =  12.1928 -  4.9850i

这与您分别在(X,Y) = (157,96)(X,Y) = (164,92) 位置对实部和虚部的图示测量完全对应。

请注意,通过 FFT 的线性特性,您还可以将输入除以得到相同的结果:

A = fft2(double(Im)/255.0);
>> Ashifted = fftshift(A);
>> Ashifted(97,158)
ans =   7.4484 - 10.4582i
>> Ashifted(93,165)
ans =  12.1928 -  4.9850i

【讨论】:

  • 太棒了!我有一个关于在 Matlab 中任意点提取频率和方向(theta)的后续问题。除非它是一个非常快速的答案,否则我会提出另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多