.NET可编程图形匹配?

时间:2009-04-12 18:27:23

标签: .net graphics ocr

有没有人知道用于读取图像文件的.NET可编程/可用API,并将其与现有图像集进行比较?

e.g。我有三张字母A,B和C的图片。然后复制A的图片,并修改它以使其翻转180度。我希望能够拥有一个能够检测到它与现有字母A匹配的软件。

我感谢任何帮助!

编辑:将字母A,B和C替换为苹果,橙色和香蕉的图像。这不是识别字母数字字符,而是比较形状/图像。

编辑#2:想象一下它是一种检测掷骰子结果的方法。想象一下标准的六面模具。滚动六个时,有六个点。它可能以任何方式着陆,但我想要尝试做的是让相机拍摄模具的照片并将其与控制图像进行比较以检测其值。

5 个答案:

答案 0 :(得分:2)

您似乎正在研究的内容(没有双关语意图)是computer vision研究计划的一部分。您的目标图像究竟是什么特征?您是否只寻找尺寸完全相同但方向不同的模板火柴?轻微的位移导致精细和倾斜特征的显着不同的像素图案。是否应该承认res resings?倾斜的视角怎么样?您的编辑建议您实际上涉及更困难的区域:完整图像识别需要完整的AI。你会期望在什么样的角度下认出香蕉,在什么样的光照条件下,以及什么样的香蕉 - 绿色,成熟,稍微挤压​​它们......我希望你明白我的观点!

不要误会我的意思:这很有趣,但需要重型火炮。您可以找到哪些库将帮助您进行繁重的线性代数和统计提升,但您需要了解很多以应用这些库。

为了更轻松的阅读(相对来说!),我对该地区的介绍来自于Hofstadter的Gödel, Escher Bach和他的Metamagical themas识别字母形状。这也让我对排版感兴趣:我从来不知道有很多方法可以画出一个小写的'a'!

答案 1 :(得分:1)

在上面的一条评论中,您提到要使用相机系统检测模具辊。

这个问题有几种方法,这里有两种:

1)非常简单的方法。使用霍夫变换对模具面部的图片进行圆形检测并计算圆圈数。您将大致了解骰子上的点数大小,这有助于设置霍夫算法。

2)复杂的方法。获取骰子每个面的图像并计算傅里叶变换并提取功率谱(2D然后在方向上折叠)。功率谱将为每个模具面提供一个签名,与模具相对于相机的方向无关。您可以将这些特征功率谱与来自模具辊的功率谱进行比较。最接近的匹配应该是你的点数....

希望这有点帮助。

答案 2 :(得分:1)

如果我理解你的问题(尤其是编辑2),你想从相机或扫描仪中搜索数字图像中的圆形图案。

正如RobS所说,在傅立叶频谱中进行霍夫变换和模板匹配是很好的方法。您可能会找到很多用于霍夫变换或FFT的库,但我不确定您是否能够在没有实际理解算法的情况下使用其中一个库。例如:标准霍夫变换仅适用于线条,必须适应圆形。此外,它需要某种预处理来找到圆的边缘。如果您不知道它们的含义,它有一些参数(内部参数空间的大小)很难调整。

如果您可以对图像进行二值化处理,即如果您要查找的圆形图案明显比背景更亮或更暗,则可能更简单

  • 二值化图像
  • 分组连接的像素区域,即Blob(例如使用Flood-Fill)
  • 通过将某些特征(例如总面积,边界像素数,平均亮度,平均对比度)与您期望的模式进行比较,确定斑点是否是您的模式之一

这些子问题(二值化,分段,模式匹配)一般都不简单甚至可解,但如果你的问题很简单,你可能只需要使用一些非常简单的算法。

答案 3 :(得分:0)

如果您安装了Office,则可以use its OCR component

答案 4 :(得分:0)

这是open source图像识别程序。它处于测试阶段。这可能是一个开始。从描述:

  

根据图像本身的特征搜索图像,加载图像后进行快速搜索。显示按相似度排序的结果列表。

您还可以在图像库中搜索重复项。