0

我正在尝试在 Octave/Matlab 中编写一个程序,该程序旨在拍摄图像,对该图像执行 2D 快速傅里叶变换,然后获取 FFT 数据并将其分成一系列箱,从中可以看出平均 FFT 强度进行计算。这些箱需要计算该光谱的每个 5 度段的傅立叶光谱强度:

即想象一个 500x500 的数组,然后将其分成 72 个相等的切片(如切片披萨),每个切片相隔 5 度。然后这些切片形成箱,并计算其中的平均值。

我知道要产生这个,我必须将得到的 FFT 的笛卡尔坐标转换为极坐标,以便我可以使用 theta 的值计算 bin。此外,要将阵列像披萨一样切片,极坐标必须起源于图像的中心。我有一个好主意如何做到这一点,但是一旦我完成了这个,我就被困在如何将阵列分成垃圾箱了。

任何人都可以帮忙吗?假设这个解释是有道理的?

4

1 回答 1

0

实际上,这并不完全清楚。

但是我假设您的意思是傅立叶域中的极坐标,在这种情况下,您可以从诸如atan2(f_y, f_x)wheref_yf_x是傅立叶​​域中的 y 和 x 坐标之类的东西中获取每个点的角度。对于 FFT,这些通常通过排序与数组索引相关

f = [0, 1, 2, ..., n/2-1, -n/2, ..., -1]

对于 matlab,另见fftshift

于 2011-04-23T14:50:21.507 回答