我使用opencv cvMatchTemplate在一堆图像中查找商标图案。
现在我所做的就是查看图片,从商标中找到一些独特的补丁,并将其用作我的模板。 我发现使用整个商标图片并不一定比使用它的一部分更好。我的问题是
这是正常的吗?或者我错了。如果是正常的,我如何选择一个好的模板来进行更准确的匹配?
或换句话说,选择好的模板背后是否有任何数学理论,这可以帮助我选择最佳模板。
我没有使用特征检测,因为我发现它不像模板匹配那样准确。
答案 0 :(得分:5)
模板匹配与特征检测不同,假设您要查找的内容与模板位于同一平面(图像平面)。 “扭曲”模板不起作用(与变形模板匹配的模板称为数字图像相关)。
因此,如果您要在与相机对齐的纸张图像中寻找徽标,那么模板匹配就是您的选择,但如果您在街道的随机图像上寻找徽标,那么特征检测是你的事。
openCV有一个很好的例子: http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html
但是你想知道为什么只有一块模板和整个模板一样好(并不总是,但可能发生)。
这很容易理解:模板的“部分”有足够的信息可供识别。
示例*:
如果我要求您找到以下图片,您会准确找到吗?
我希望答案是肯定的。为什么你不需要整个图像来找到它?
->
因为图像的这一部分有足够的信息可以准确识别!你不需要整个形象!
但是,如果我能给你以下图片:
您将无法识别徽标,因为至少有3或4个其他徽标上有黄色。
无法“确定”知道模板是否足以唯一标识,但有一种方法可以知道图像中是否有信息。
由于模板匹配依赖于相关系数和平方和系数,这意味着模板具有的“不同”信息量越多越好。这可以用图像梯度的总和来近似。
计算模板在X和Y方向上的渐变并求它们,然后对结果求和。这个数字越大,模板越好!**
*徽标是一个很好的例子,我与这些公司没有任何联系。
中得到了数学证明