如何避免匹配模板中的错误匹配

时间:2016-05-09 06:27:50

标签: c# image-processing emgucv

如果matchTemplate找到匹配项,则会使用围绕它的矩形显示结果。但是如果MatchTemplate找不到准确的结果该怎么办? 如何处理minmax值?

示例查询图片:

enter image description here

相关代码段:

 if ((minValues[0] >= 0.95) || (minValues[0] <= 0.3))
            //if ((maxValues[0] >= 0.95))
            {
                Rectangle rect = new Rectangle(new Point(minLocations[0].X, minLocations[0].Y), new Size(imgTemplate.Width, imgTemplate.Height));
                imgSource.Draw(rect, new Bgr(0, 0, 255), 1);
                isFoundMatch = true;
                ImageViewer.Show(imgSource);
                if (isFoundMatch == true)
                {
                    imgSource.Save("C:/Misc/MatchFound/warning.png");
                }
            }

编辑:我已经检查了图片中没有的模板。但它给出了错误的匹配。

1 个答案:

答案 0 :(得分:2)

首先,您需要查看您认为有效的实例和您认为无效的实例的分数。

如果您看到它们之间有明显的分离,那么您可以在分数值上设置一个阈值。但是如果范围之间存在一些重叠,则单独的匹配分数不足以判别。然后,您需要找出额外的标准来区分真假阳性。这些将取决于模式的类型和出现的混淆类型。给出一般规则是不容易的。