识别子图像

Recognize sub image

我有一个非常简单的任务:目标是检测另一个图像中的图像模式。特别是,我必须从扫描仪获取的图片中以尽可能低的错误率识别盒式药物滥用测试的正确一侧。我在 C# 中使用 AForge.NET 库。

DOA测试图:

link http://www.atbsrl.com/media/SO/doa-test-sample.png

测试进行中图片:

link http://www.atbsrl.com/media/SO/Schema03.png

盒面非常相似,但第一个(A 面)有 3 个掺假条(带有彩色区域),另一个只有滥用药物条(B 面)。

为了非常确定地识别 A 面,我尝试混合使用不同的方法,例如颜色匹配和模板匹配,但由于输入图像的可变性,目前我使用 AForge.NET 的测试没有产生预期的结果。

你有什么建议吗?

使用卷积神经网络。对于错误率如此低的经典图像处理,您几乎无能为力。

为了应用这个,收集尽可能多的图像(最好是一千张或更多;一百张可能不够,一万张是理想的),并制作一个文本文件,其中包含文件名和标签他们来自的一侧(0 代表前面或 1 代表后面)。然后,拿一个像Caffe or libccv and train it on this data set. You can use just about any network model but CaffeNet in Caffe will work fine, follow this tutorial to retrain a fully trained CaffeNet for your application (which is easier than starting from scratch, and can work with less data). To get started, it may be easiest to just launch an AWS instance which Caffe preinstalled, like this one这样的现成包。考虑到您的数据的性质,我认为您很容易达到 <1% 的错误率(或者可能更低,如果您有更多数据)。

如果您可以修改被检测的对象,则可以使用更简单的算法:例如给每张脸涂上颜色,或者放置基准标记或简单的条形码。