【问题标题】:Normalize scipy.ndimage.filters.correlate标准化 scipy.ndimage.filters.correlate
【发布时间】:2026-01-27 02:55:01
【问题描述】:

有人知道如何规范化

scipy.ndimage.filters.correlate

获取函数:

XCM = 1/N(xc(a-mu_a,b-mu_b)/(sig_a*sig_b))

什么是N 的相关性?它通常是图像的数据点数/像素数。 我应该为scipy.ndimage.filters.correlate 选择哪个值? 我的图像大小不同。我猜 scipy 相关函数将小图像填充为零?

最终矩阵的大小 N = XCM.sizeX() * XCM.sizeY() ?

谢谢, 埃尔

【问题讨论】:

    标签: python numpy scipy correlation


    【解决方案1】:

    在我看来,您正在尝试计算两个图像的标准化互相关(我怀疑您可能正在尝试进行模板匹配?)。此答案假定标准化的互相关是您想要的。

    • 当您计算两幅图像之间的归一化互相关时,您相当于在它们重叠的区域中减去模板和参考图像的平均值并除以标准差。

    • 这里,N 将等于您的模板中的像素数,这与模板和参考图像之间的局部重叠区域中的像素数相同当您将模板滑过参考时。

    • 您应该阅读Wikipedia article on cross-correlation,尤其是this bit,了解标准化互相关的定义以及每个术语的含义。

    • This article by Lewis (1995) 有更深入的解释,还描述了一些有效计算归一化互相关的巧妙技巧。

    • 我还编写了自己的 Python 函数用于模板匹配,包括基于 Lewis 和一些 MATLAB 的 sn-ps 的标准化互相关。您可以找到来源here

    如果您还有其他问题,请告诉我,我会尽力解释。

    【讨论】:

    • 确实我在做 TM,你的第二点正是我想要的。它只是提醒了我。我不确定这个函数会做什么,但显然这也是我之前多次实现的。干杯,EL
    【解决方案2】:

    标准化互相关 (NCC) 也包含在 scikit-image 中,名称为 skimage.feature.match_template。见this template matching example

    您也可以使用 matchTemplate 方法对 OpenCV 执行相同的操作。从 Python 到 OpenCV 有很多很好的绑定,但是如果你只需要模板匹配就有点过头了。我会选择 scikit-image。

    【讨论】: