c# - 识别子图像

标签 c# image-processing aforge

我有一个非常简单的任务:目标是检测另一个图像中的图像模式。特别是,我必须从扫描仪获取的图片中以尽可能低的错误率识别盒式药物滥用测试的正确一侧。我在 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)。然后,拿一个像 Caffelibccv 这样的现成包,在这个数据集上训练它。您几乎可以使用任何网络模型,但 Caffe 中的 CaffeNet 可以正常工作,请按照 this tutorial 为您的应用程序重新训练经过全面训练的 CaffeNet(这比从头开始更容易,并且可以使用更少的数据)。要开始,最简单的方法可能是启动一个预装了 Caffe 的 AWS 实例,比如 this one 。考虑到您的数据的性质,我认为您很容易达到 <1% 的错误率(或者可能更低,如果您有更多数据)。

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

关于c# - 识别子图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199226/

相关文章:

object - 使用卡尔曼滤波器来跟踪物体的位置,但需要知道该物体的位置作为卡尔曼滤波器的输入。到底是怎么回事?

c# - Kinect 红外灰色 Pixelformat 转换为 8bpp

c# - 音频,FFT不起作用

python - 使用图像效果创建视频

c# - Mongo Atlas - 连接限制低?

c# - asp.net Treeview 问题(无法显示子节点)

c# - 无法用 lambda 表达式替换字符串 propertyName 参数

python - 创建自定义数据集

c# - 认识一个简单的字母

c# - 如何使 TextBox 的自动完成列表可编辑?