使用apple Accelerate框架选择Real vs Complex 2D FFT

时间:2012-12-15 03:56:53

标签: iphone fft

有人可以建议使用正确的FFT(真实还是复杂)?我看了here,但仍然有疑问。

我想进行图像关联以识别主图像中子图像的位置。我理解FFT和iFFT的基础知识。

计划:

  1. 对主图像执行FFT。 512×512
  2. 采用子图像的复共轭。
  3. 对子图像执行FFT。 30x30但用零填充到512x512
  4. 复数乘以两个结果矩阵
  5. 在结果
  6. 上执行iFFT
  7. 即使结果应该(大部分)是真实的,也要考虑结果矩阵的大小
  8. 查找应与最大相关性对应的最大值。
  9. 我无法获得我预期的结果。

    如果我使用真正的2d fft(vDSP_fft2dzrip),结果采用压缩格式,这使得很难使用vDSP_zvmul来乘以两个结果矩阵。

    如果我使用复合fft(vDSP_fft2dzip),我根本无法获得任何相关性。

    苹果示例和大多数音频示例对正向FFT的结果除了反向之外没有做任何事情。

    任何人都可以帮我开始图像关联吗?第一个问题......我可以使用复数FFT并避免打包格式吗?

1 个答案:

答案 0 :(得分:3)

真实和复杂FFT之间的唯一区别在于,通过使用将2 ^ n实FFT变换为2 ^(n-1)复FFT的智能打包方案,实际FFT可以稍微更高效。两种情况下的结果应该相同。如果我是你,我会坚持使用复杂的FFT来简化,至少在你完成所有工作之前。

您是否也看过vImageConvolve_ARGB8888?它似乎做了你想要做的事情,而且付出的努力要少得多:)