二维 FFTW 帮助
我目前正在尝试通过 fftw_plan_dft_2d。
为了使用这个函数,我将图像数据线性化到一个 in 数组中,并调用上面提到的函数(下面详细介绍)。
ftw_plan fftw_plan_dft_2d(int n0, int n1,
fftw_complex *in, fftw_complex *out,
int sign, unsigned flags);
func 修改一个复杂的数组 out,其大小等于原始图像中的像素数。
您知道这是否是计算图像 2D FFT 的正确方法吗?如果是的话,out里面的数据代表什么? IE 数组中的高频值和低频值在哪里?
谢谢, DJ22
I'm currently trying to compute the fft of an image via fftw_plan_dft_2d.
To use this function, I'm linearizing the image data into an in array and calling the function mentioned above (and detailed below)
ftw_plan fftw_plan_dft_2d(int n0, int n1,
fftw_complex *in, fftw_complex *out,
int sign, unsigned flags);
The func modifies a complex array, out, with a size equal to the number of pixels in the original image.
Do you know if this is the proper way of computing the 2D FFT of an image? If so, what does the data within out represent? IE Where are the high and low frequency values in the array?
Thanks,
djs22
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
2D FFT 相当于在一次传递中对图像的每一行应用 1D FFT,然后对第一遍输出的所有列应用 1D FFT。
2D FFT 的输出就像 1D FFT 的输出一样,只不过 x、y 维度上有复数幅值,而不是单一维度。正如预期的那样,空间频率随着 x 和 y 索引的增加而增加。
FFTW 手册中有一节(此处)涵盖了实数到复数 2D FFT 输出数据的组织(假设您正在使用该数据)。
A 2D FFT is equivalent to applying a 1D FFT to each row of the image in one pass, followed by 1D FFTs on all the columns of the output from the first pass.
The output of a 2D FFT is just like the output of a 1D FFT, except that you have complex magnitudes in x, y dimensions rather just a single dimension. Spatial frequency increases with the x and y index as expected.
There's a section in the FFTW manual (here) which covers the organisation of the real-to-complex 2D FFT output data, assuming that's what you're using.
这是。
尝试计算 2 个计划:
您将在 ifft 中获得原始数据。
希望它有帮助:)
It is.
Try to compute 2 plans:
You'll obtain the original data in ifft.
Hope it helps :)