两者的区别是什么? 我有一个Image矩阵,我把它变成了一个fftw_complex连续数组? 我应该去哪一个fftw_plan_dft_2d或fftw_plan_dft_1d?
我试过了两个但两者的行为完全不同?
我尝试阅读文档,但在他们的差异和用法方面却无法获得太多。
答案 0 :(得分:3)
我相信你的问题实际上是关于傅立叶变换的。具体来说,一维FFT和二维FFT的区别是什么。
简短的回答是2D FFT与以下内容相同:
fftw计划都采用扁平复杂矩阵,但是,fftw_plan_dft_2d使用n0和n1尺寸参数来正确地将复杂数组解释为2D矩阵。
答案 1 :(得分:0)
大小为n的信号X的1D dft Y写道:
给定1d变换的可分离乘积沿着阵列的每个维度。
因此,2D dft包括将dft取在第一维上,然后将dft取向另一个方向。它写道:
请注意,首先将dft放在另一个维度上不会改变结果:
确实,总和可以是factored,另见the doc of opencv:
它与整个扁平阵列上的1D dft不同,后者不具备此属性。基于卷积到内核(高斯或其他)的2D线性图像滤波器依赖于2D dft将卷积转换为傅立叶空间中的逐点乘法。如果图像是2D,则变换后的图像也是2D。有关说明,请参阅此course。