【问题标题】:CUDA cufftPlan2d plan size questionCUDA cufftPlan2d 计划尺寸问题
【发布时间】:2011-04-03 11:07:50
【问题描述】:

我正在研究Nvidia CUDA sdk的convolutionFFT2D示例背后的代码,但我不明白这一行的意义:

cufftPlan2d(&fftPlan, fftH, fftW/2, CUFFT_C2C);

显然这为要运行的 FFT 初始化了一个复平面,但我看不到将平面宽度除以 2 的意义。

确切地说:fftH 和 fftW 是 imageX+kernelX+1 和 imageY+kernelY+1 维度的四舍五入值(仅出于速度原因)。我知道在频域中你通常有一个相同频率的正分量和一个对称的负分量..但这听起来像是把我的图像数据的一半剪掉了..

有人可以向我解释一下吗?我从未使用过 FFT(我只知道傅立叶变换背后的理论)

【问题讨论】:

    标签: c++ cuda fft


    【解决方案1】:

    当您执行实数到复数 FFT 时,由于对称性,一半的频域数据是冗余的。不过,这仅适用于 2D FFT 的一个轴。您可以将 2D FFT 视为两个 1D FFT 操作,第一个操作对所有行进行操作,对于实值图像,这将为您提供复杂的行值。在第二阶段,您将 1D FFT 应用于每一列,但由于行值现在是复数,这将是复数到复数 FFT,输出中没有冗余。因此,您只需要水平轴上的宽度 / 2 个点,但您仍然需要垂直轴上的高度点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2012-11-05
      • 2016-08-21
      相关资源
      最近更新 更多