TL; 博士
何时以及为什么互相关优于平方差异(使用模板匹配时)?
细节
根据OpenCV的模板匹配的documentation(你必须向下滚动一点),平方差定义为:
和互相关为:
(其中 T 是模板, I 是图像)
如果我没记错的话,square diff 是唯一可以保证在每个图像中找到最佳匹配(在数字意义上)的方法(也与互相关系数相比)。
如果我们看一下互相关,我们会注意到乘法对图像中较亮的部分产生了更高的结果(因为亮像素比暗像素具有更高的数值)。这意味着,如果我们在明亮的图像上使用暗模板执行模板匹配,则在使用互相关时很可能会得到不好的结果。
例如,如果我们拍摄这张图片:
并执行与此模板匹配的模板:
我们得到这些结果(红色是互相关,绿色是平方差异):
显然,平方差异在这里是更好的选择,因为互相关会产生非常糟糕的结果。在使用互相关而不是平方差异时,我看到的唯一优势是计算复杂性,因为互相关应该更快一点,因为它只需要计算乘积(而不是总和和平方)。
我的问题是:有什么我看不到的好处吗?我什么时候应该选择一种方法而不是另一种方法?
最佳答案
Rosa Gronchi 是对的,你应该使用归一化互相关。
归一化互相关测量是归一化向量的互相关,因此所有向量的长度为 1,均值为 0。
这样,较亮的补丁将不会比较暗的补丁具有“优势”。
关于复杂性,平方差异也必须计算乘积,因为它扩展到:
乘积是使用快速傅立叶变换算法计算的。
关于opencv - 模板匹配 - 互相关与平方差异 - 何时选择一个?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48543029/