比较图像以找出差异

sve*_*vit 8 .net compare image image-processing

任务:我在装配线的末端安装了一个摄像头,可以捕获生产物品的图像.比如说,我们制作门票(上面有一些文字和图片).因此,每张制作的票都被拍照并保存到磁盘上作为图像.现在我想检查这些保存的图像是否有异常(即将它们与图像(模板)进行比较,这是正常的).因此,如果我们的装配线上的票证有问题(缺少图片,污点......),我的应用程序应该找到它(因为它的图像与我的模板差别太大).

问题:比较图片和找出它们之间的差异最简单的方法是什么?我需要编写自己的方法,还是可以使用现有方法?如果我只设置一个公差值(即图像可以相差1%),将两个图像放在一个函数中并获得返回值true或false,那就太好了:)

工具:C#或VB.NET,Emgu.CV(OpenCV的.NET包装器)或类似的东西

Mat*_*ren 2

我建议您查看AForge Imaging 库,因为它对于此类工作有很多非常有用的功能。

您可以使用以下几种方法:

  1. 简单减法(模板图像 - 当前)并查看有多少像素不同。您可能想要对结果进行阈值设置,即仅包含相差 10 或更多的像素(例如)。
  2. 如果票证可以在视野中移动,则第 1) 项将不起作用,除非您可以先找到票证。例如,如果票证是黑底白字,您可以在图像上设置阈值,这样您就可以很好地了解票证的位置。
  3. 我之前使用过的另一种技术是“模型查找”或“模式匹配”,但我只知道一个商业库Matrox Imaging Library(或 MIL)包含这些函数,因为它们并不简单。

您还需要确保知道票证的哪些部分更重要。例如,我认为缺少徽标或水印是一个大问题。但某些区域可能具有可变文本,例如序列号,因此您希望它们有所不同。基本上,您可能需要以不同于其他区域的方式处理图像的某些区域。