注意:这个问题最初是几天前在http://answers.opencv.org/question/191988/speed-up-dft-by-specifying-roi-in-frequency-domain/上提出的。
我正在建立一个图像处理程序,它广泛使用二维dft,离散傅里叶变换.我正试着加快速度以便实时跑。
在该应用程序中,我只使用由矩形ROI指定的dft输出的一部分。我目前的实现遵循以下步骤:
这个过程基本上运行良好,但涉及无用的计算,因为我只需要F的部分信息,我正在寻找一种方法来加速这一计算,只通过计算必要的一部分dft。
我发现带有Intel的OpenCV使用Intel函数计算dft,这比简单的OpenCV实现快一个数量级。我想知道我是否还能通过计算dft的预先指定的频域来加速这个计算。
由于我刚开始接触OpenCV,我在这里迷失了方向,所以我希望你能提供一种方法来做到这一点。
请注意,我并不打算对图像的ROI进行dft,即dft(ROI(f)),但是我想计算ROI(dft(f))。
提前谢谢。
发布于 2018-05-25 04:18:24
只是一个部分的想法。
DFT是可分离的。它总是通过首先将FFT算法应用于图像的行,然后应用到结果的列(或者反过来,顺序并不重要)来计算。
如果您只想要输出的ROI,那么在第二步中,您只需要处理ROI中的列。
我不认为你会找到一种方法,只计算每个一维行/列的频率子集。这可能需要侵入您自己的FFT,这可能比使用IPP或FFTW中的FFT要昂贵得多。
https://stackoverflow.com/questions/50521283
复制相似问题