0

我试图在图像中找到一个数字。为了测试我的代码,我拍摄了一个数字的图像,然后使用 AForge 的详尽模板匹配算法在另一个图像中搜索它。但我认为存在一个问题,即数字显然不是矩形,而包含它的图像是。这意味着有很多不应该参与比较的像素。有什么方法可以在忽略这些像素的情况下进行比较?如果不在 AForge 中,那么可能是 EMGU/OpenCV 或 Octave?

这是我的代码:

Grayscale gray = new GrayscaleRMY();
Bitmap template = (Bitmap)Bitmap.FromFile(@"5template.png");
template = gray.Apply(template);
Bitmap image = (Bitmap)Bitmap.FromFile(filePath);
Bitmap sourceImage = gray.Apply(image);
ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.7f);
TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template);

这是一个示例图像。

4

1 回答 1

4

如评论中所述,您应该预处理数据以改善匹配。

首先想到的是形态开放(腐蚀然后膨胀)以减少背景噪声

读入您的图像并将其反转,以使您的字符向量为白色:

在此处输入图像描述

使用尽可能小的结构元素/窗口 (3x3) 应用开口:

在此处输入图像描述

您可以尝试稍大的结构元素(5x5):

在此处输入图像描述

将其反转回原来的:

在此处输入图像描述

看看有没有帮助!

于 2013-05-11T15:18:39.193 回答