当使用opencv cvMatchTemplate时,如何选择一个好的模板来进行更准确的匹配?

use*_*436 1 opencv image-processing template-matching

我正在使用opencv cvMatchTemplate在一堆图像中查找商标图案.

现在我所做的就是查看图片,从商标中找到一些独特的补丁,并将其用作我的模板.我发现使用整个商标图片并不一定比使用它的一部分更好.我的问题是

这是正常的吗?或者我做错了.

如果是正常的,我如何选择一个好的模板来进行更准确的匹配?

换句话说,选择好模板背后是否有任何数学理论,这可以帮助我选择最佳模板.

我没有使用特征检测,因为我发现模板匹配不准确.

And*_*uri 5

为什么模板匹配与特征检测一样好(当每个人都喜欢特征检测时)

模板匹配与特征检测不同,假设您要查找的内容与模板位于同一平面(图像平面)."扭曲"模板不起作用(与变形模板匹配的模板称为数字图像相关).

因此,如果您要在与相机对齐的纸张图像中寻找徽标,那么模板匹配就是您的选择,但如果您要在街道的随机图像上查找徽标,则功能检测是你的东西.

模板匹配如何工作?

openCV有一个很好的例子:http: //docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

为什么模板的一部分与整体一样好?

但是你想知道为什么只有一块模板和整个模板一样好(不总是,但可能发生).

这很容易理解:模板的"部分"具有足够的信息可供识别.

例*:

http://www.senseimarketing.com/wp-content/uploads/2015/01/Logos.jpg

如果我要求您找到以下图像,您会准确找到它吗?

在此输入图像描述

我希望答案是肯定的.为什么你不需要整个图像找到它?

->因为图像的这一部分有足够的信息可以准确识别!你不需要整个形象!

但是,如果我给你以下图片:

在此输入图像描述

您将无法识别徽标,因为至少有3或4个其他徽标上有徽标.

我怎么知道我的模板是否足够好?

没有办法"确定"知道模板是否足以唯一标识,但有一种方法可以知道图像中是否有信息.

由于模板匹配依赖于相关系数和平方和系数,这意味着模板具有的"不同"信息量越多越好.这可以用图像梯度的总和来近似.

计算模板在X和Y方向上的渐变并求它们,然后对结果求和.这个数字越大,模板就越好!**


*标志是一个很好的例子,我与这些公司没有关联.

**这在数学上已在http://www.ncbi.nlm.nih.gov/pubmed/18545407中得到证实.