gpt4 book ai didi

opencv - 如何通过在频域中指定感兴趣区域来加速 DFT

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:31 27 4
gpt4 key购买 nike

注意:这个问题最初是在 OpenCV forum 上提出的几天前。

我正在构建一个广泛使用二维 dft、离散傅立叶变换的图像处理程序。我正在尝试加速以实时运行。

在该应用程序中,我仅使用由矩形 ROI 指定的部分 dft 输出。我当前的实现遵循以下步骤:

  1. 计算输入图像 f(通常大小为 512x512)的 dft 并获得整个 dft 结果 F
  2. F 裁剪到预先指定的感兴趣区域(ROI,通常大小为 32x32,任意位置),R

这个过程基本上运行良好,但涉及无用的计算,因为我只需要 F 的部分信息。我正在寻找一种仅通过计算 dft 的必要部分来加速此计算的方法。

我发现带有英特尔 IPP 的 OpenCV 使用英特尔 IPP 函数计算 dft,这比单纯的 OpenCV 实现快一个数量级。我想知道是否可以仅通过计算预先指定的 dft 频域来加速此计算。

由于我是 OpenCV 的新手,所以我在这里迷路了,所以我希望你能提供一种方法来做到这一点。

请注意,我并不是要对图像的 ROI 进行 dft,即 dft(ROI(f)),但我想计算 ROI(dft( f)).

提前致谢。

最佳答案

只是一个片面的想法。

DFT 是可分离的。它始终是通过首先将 FFT 算法应用于图像的行,然后应用于结果的列来计算的(或者相反,顺序无关紧要)。

如果您只想要输出的 ROI,则在第二步中您只需要处理落在 ROI 内的列。

我认为您不会找到一种方法来仅计算每个一维行/列的频率子集。这可能需要破解您自己的 FFT,这可能比在 IPP 或 FFTW 中使用 FFT 的计算成本更高。

关于opencv - 如何通过在频域中指定感兴趣区域来加速 DFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50521283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com