为什么模板匹配会找不到目标?我们之前讲过特征点匹配(SIFT、SURF),也讲过图像块匹配。
但还有一种最简单、最直观的匹配方法➡️模板匹配(Template Matching)。
它的原理非常简单:把一张小图片(模板)在大图像上滑动,每到一个位置就算一算“像不像”,最像的地方就是目标位置。
《在图像处理中,图像模板匹配怎么实现?》主要讲怎么做。
今天我们从另一个角度来看:为什么有时候模板匹配会找不到目标,甚至找错位置?
这背后隐藏着模板匹配对光照、旋转、缩放的敏感性,以及不同匹配度量方法的优劣。
但是,模板匹配有一个致命的假设:目标的外观在图像中保持不变➡️亮度、方向、大小都不能变。现实世界哪有这么理想?光照会变,工件会旋转,距离会变化。理解模板匹配为什么“脆弱”,才能知道什么时候该用它,什么时候该换更鲁棒的方法。设模板图像T大小为w×h,搜索图像I大小为W×H(W≥w,H≥h)。在I上滑动模板,每个位置(x,y) 计算模板与对应图像子窗口的相似度R(x,y)。- 平方差匹配(Sum of Squared Differences, SSD)
对亮度变化非常敏感:如果目标整体变亮,平方差会很大,导致匹配失败。- 相关系数匹配(Cross-Correlation, CC)
但对幅值变化敏感:如果模板和图像子窗口的像素幅值相差很大(比如一个偏暗、一个偏亮),相关系数会降低。- 归一化互相关(Normalized Cross-Correlation, NCC)
对线性光照变化(整体亮度缩放)具有不变性,因为减去了均值并归一化。假设模板T,图像子窗口
(线性亮度变化,a>0为对比度,b为亮度偏移)。只有当a=1,b=0时才为0,否则很大。所以SSD对光照极敏感。NCC则能消除a,b的影响,因为减均值消除了b,除以标准差消除了a。所以NCC对线性光照变化是鲁棒的。但实际光照变化往往不是简单的线性,比如局部阴影、高光,NCC 也会受影响。模板匹配的“模板”是一个固定大小的矩形,没有任何旋转或缩放不变性。如果目标在图像中旋转了 10°,那么即使使用 NCC,匹配得分也会急剧下降。同理,目标离相机变远(缩小)或变近(放大),模板大小不对应,也会匹配失败。模板匹配的核心是滑动窗口 + 相似度度量。
当模板匹配失效时,可以转向特征点匹配(SIFT),后者具有旋转和缩放不变性;或者结合图像金字塔实现多尺度匹配。
本期内容结束,感谢大家阅读。

PS:有问题的小伙伴,欢迎评论区留言,也请各路大神批评指正!这期结束,下期再会,更多精彩等你来!