我正在尝试将我拥有的徽标(模板)与一些图像相匹配。我的图像本质上都是彩色的,我这样做的方式是使用来自 openCV 的 cvMatchTemplate() 并在我的源图像上运行模板(徽标)。我将模板缩放到多个级别以找到最佳匹配。请注意,我只是在图像上找到数字印记的徽标,而不是场景中存在的徽标。例如:从这张图片中检测天空运动http://i56.tinypic.com/2v3j3wx.jpg(图片纯粹是为了我的任务的表示和清晰度,而不是我正在使用的图片
我的图像不是固定分辨率,所以我将其放大到标准的 800x600。现在,当我的源图像分辨率很差时说 300x300,结果很普通。我在模板参数中使用 method=CV_TM_CCOEFF_NORMED 并且即使是准确匹配的分数也很低(在 0 到 1.0 的范围内低至 0.4),这让我很难自信地说出徽标是否存在。我对此有两个问题:
1 - 在opencv模板匹配中,它如何处理彩色图像。我试图从文档中理解,我的推论是它分别计算每个通道的分数并取最好的。如果不是这样,我最好考虑所有三个渠道以获得更好的结果
2 - 任何替代方法!:)
让我知道是否有任何不清楚的地方!
编辑(附加信息):正如评论中所讨论的,我附上了我当前的匹配技术,即缩放模板匹配。请注意,所附图像纯粹用于测试目的,并不是我正在使用的实际图像集(无法发布,因为图像是专有的)源图像 徽标图像 输出图像使用模板匹配
尽管模板是匹配的,但对于此最佳匹配,此处获得的分数为 0.59。虽然相对来说这是一个不错的比赛分数,但仍然不足以让我确定所需的标志是否存在。在我的测试图像中,当屏幕上的徽标是透明的时,它仍然会检测到徽标,但得分为 0.3-0.4。使用 SURF/SIFT 可以获得更好的结果吗?
编辑(尝试使用 SURF)我尝试运行已在 opencv 官方文档(minHessian = 2000)中作为示例给出的 SURF 代码。这里的链接 是输出。我不确定如何解释它(2,3 点似乎在预期的范围内。这被认为是好的吗?还有其他建议吗? 谢谢