Image processing 二维FFTW帮助

Image processing 二维FFTW帮助,image-processing,fft,fftw,Image Processing,Fft,Fftw,我目前正试图通过计算图像的fft 为了使用这个函数,我将图像数据线性化为一个in数组,并调用上面提到的函数(如下所述) func修改复杂数组out,其大小等于原始图像中的像素数 你知道这是计算图像2D FFT的正确方法吗?如果是,out中的数据代表什么?即阵列中的高频和低频值在哪里 谢谢, djs222D FFT相当于在一次过程中对图像的每一行应用1D FFT,然后对第一次过程输出的所有列应用1D FFT 2D FFT的输出与1D FFT的输出类似,不同的是,在x、y维度上有复量值,而不仅仅是一

我目前正试图通过计算图像的fft

为了使用这个函数,我将图像数据线性化为一个in数组,并调用上面提到的函数(如下所述)

func修改复杂数组out,其大小等于原始图像中的像素数

你知道这是计算图像2D FFT的正确方法吗?如果是,out中的数据代表什么?即阵列中的高频和低频值在哪里

谢谢,
djs22

2D FFT相当于在一次过程中对图像的每一行应用1D FFT,然后对第一次过程输出的所有列应用1D FFT

2D FFT的输出与1D FFT的输出类似,不同的是,在x、y维度上有复量值,而不仅仅是一个维度。空间频率随着x和y指数的增加而增加

FFTW手册()中有一节介绍了实际到复杂2D FFT输出数据的组织,假设您正在使用该数据。

。 尝试计算两个计划:

plan1 = fftw_plan_dft_2d(image->rows, image->cols, in, fft, FFTW_FORWARD, FFTW_ESTIMATE); 
plan2 = fftw_plan_dft_2d(image->rows, image->cols, fft, ifft, FFTW_BACKWARD, FFTW_ESTIMATE);
您将在ifft中获得原始数据


希望有帮助:)

谢谢你的回答。我遇到的问题是,这个2D FFT返回一个1D数组。将其重新配置为大小合适的2D阵列非常容易,但我仍然不太确定如何处理数据
我很确定这意味着我的最低频率的内容会在左上角,而较高频率的内容会在右下角
关于手册中的章节;正如您所说,这是显式地用于从实到复的函数,但不幸的是,我使用的是fftw_plan_dft_2d。@djs22:好的-数组不是真正的1D,它是n0 x n1的行主顺序-请参阅fftw手册的第2.2节。
plan1 = fftw_plan_dft_2d(image->rows, image->cols, in, fft, FFTW_FORWARD, FFTW_ESTIMATE); 
plan2 = fftw_plan_dft_2d(image->rows, image->cols, fft, ifft, FFTW_BACKWARD, FFTW_ESTIMATE);