在图像中发现不完全相同的模板

finding not exactly same template in image

我想在我的输入图像中找到一个字符。当我从图像中裁剪字符并使用模板匹配时,几乎在所有情况下,它都能完美运行;但是如果我将该模板用于另一张字符形状略有不同的图像,则会失败。

这是我的问题:如何在我的图像中找到与我的模板相似但斜率或线条粗细或...有一点变化的对象?有没有模板匹配的方法,或者您根据您的经验建议其他方法?

如果有任何相关的回答,我将不胜感激。

我认为您在这里遇到了模板匹配的限制。看起来您已经在使用正确的指标(标准化 cross-correlation)。也许您可以做的最后一件事是检查 5 个模板:一个 'perfect' 一个(取自一张完美的图像)和 4 个旋转版本。然后,为每个模板找到最佳匹配,然后相互比较 5 个最佳匹配以选出最佳匹配。

根据你想投入多少时间,以及你希望达到什么样的鲁棒性水平,你也可以使用神经网络!这将是解决这个问题的更稳健的方法。当然,也有一些针对字符检测训练的神经网络,比如here, and some available tutorial like this one.

如果你不想使用NN,你可以考虑另一种方法,它可以与线检测一起使用。 '/' 字符具有非常有特色的形状:闭合路径,旋转一定角度,'inertia' 围绕一个轴。这很容易用检测到的闭合形状的一些数学特性来描述。这种方法称为 形状描述符 并被描述(例如)here。我认为,如果您对文本的大小有一些了解,并且图像质量非常好,那么这种 'low-level' 方法就有一定的潜力。它通常效果很好。

希望本文能帮助您解决问题。