快速二维互相关算法

信息处理 图像处理 算法 互相关 模板匹配
2022-02-18 06:39:34

我想将一个小模板匹配到一个更大的图像,使模板与模板大小相同的子图像之间的距离最小化。它可以直接求解,也可以通过应用二维互相关来求解,两种方法的时间复杂度都是 O(n^4)。是否有任何方法可以通过降低复杂性或应用预处理来简化算法?

2个回答

如果您的模板或内核很小,那么直接卷积可能是最快的方法。当在频域中执行卷积比直接时间/空间域卷积更快时存在一个交叉点,并且它可能取决于硬件,但通常当内核(模板)接近图像频域大小的 1/4-1/2 时卷积更快。

如果您有一台多核机器,您可以将较大的图像拆分为 4 个象限,然后在 4 个线程上运行空间卷积并将结果融合在一起。这实际上应该很快。

你知道,除了天真地使用 MATLAB 的surf()函数之外,我从来没有做过 2D 信号处理,但我敢打赌,如果你对你的 2D 数据进行 2D-FFT(可能通过镜像反射数据以减少边缘效应,使长度和宽度都加倍) ,或者你应该补零),将数据的 FFT 与模板的 FFT 的复共轭相乘,然后 iFFT 得到结果,你将得到 2D 互相关。“FFT”中的第一个“F”代表“快速”。