【发布时间】:2017-10-23 18:46:33
【问题描述】:
两者有什么区别? 我有一个图像矩阵,我已将其展平为 fftw_complex 连续数组? 我应该选择 fftw_plan_dft_2d 还是 fftw_plan_dft_1d 哪个?
我都试过了,但两者的行为完全不同?
我尝试阅读文档,但对它们的差异和用法了解不多。
【问题讨论】:
标签: signal-processing fft fftw
两者有什么区别? 我有一个图像矩阵,我已将其展平为 fftw_complex 连续数组? 我应该选择 fftw_plan_dft_2d 还是 fftw_plan_dft_1d 哪个?
我都试过了,但两者的行为完全不同?
我尝试阅读文档,但对它们的差异和用法了解不多。
【问题讨论】:
标签: signal-processing fft fftw
我相信您的问题实际上是关于傅立叶变换的。具体来说,一维 FFT 和二维 FFT 有什么区别。
简短的回答是 2D FFT 与以下内容相同:
两个 fftw 计划都采用展平的复数矩阵,但是,fftw_plan_dft_2d 使用 n0 和 n1 大小参数能够正确地将您的复数数组解释为 2D 矩阵。
【讨论】:
大小为 n 的信号 X 的一维 dft Y 写入:
给定一维变换沿数组每个维度的可分积。
因此,2D dft 包括在第一个维度上取 dft,然后在另一个方向上取 dft。它写道:
请注意,首先将 dft 放在另一个维度上不会改变结果:
确实,总和可以是factored,另见the doc of opencv:
它与整个展平阵列上的一维 dft 不同,后者不具有此属性。基于卷积到内核(高斯或其他)的 2D 线性图像滤波器依靠 2D dft 将卷积转换为傅里叶空间中的逐点乘法。如果图像是二维的,则变换后的图像也是二维的。请参阅此course 以获取说明。
【讨论】: