谁能解释fftw_plan_dft_2d和fftw_plan_dft_1d之间的区别?

时间:2017-10-23 18:46:33

标签: signal-processing fft fftw

两者的区别是什么? 我有一个Image矩阵,我把它变成了一个fftw_complex连续数组? 我应该去哪一个fftw_plan_dft_2d或fftw_plan_dft_1d?

我试过了两个但两者的行为完全不同?

我尝试阅读文档,但在他们的差异和用法方面却无法获得太多。

2 个答案:

答案 0 :(得分:3)

我相信你的问题实际上是关于傅立叶变换的。具体来说,一维FFT和二维FFT的区别是什么。

简短的回答是2D FFT与以下内容相同:

  1. 将1-D FFT独立应用于矩阵中的每一行。
  2. 从步骤1中获取结果,并对矩阵中的每列独立应用1-D FFT。
  3. fftw计划都采用扁平复杂矩阵,但是,fftw_plan_dft_2d使用n0和n1尺寸参数来正确地将复杂数组解释为2D矩阵。

答案 1 :(得分:0)

大小为n的信号X的1D dft Y写道:

2D dft is defined as

  

给定1d变换的可分离乘积沿着阵列的每个维度。

因此,2D dft包括将dft取在第一维上,然后将dft取向另一个方向。它写道:

请注意,首先将dft放在另一个维度上不会改变结果:

确实,总和可以是factored,另见the doc of opencv

它与整个扁平阵列上的1D dft不同,后者不具备此属性。基于卷积到内核(高斯或其他)的2D线性图像滤波器依赖于2D dft将卷积转换为傅立叶空间中的逐点乘法。如果图像是2D,则变换后的图像也是2D。有关说明,请参阅此course