2

我们有一些图片示例。

我们有输入图片集。每张输入图片都是接下来的东西组合后的一个例子

1) 旋转

2) 缩放

3)切掉一部分

4)添加噪音

5)使用一些颜色的过滤器

是人类能够轻松识别图片的保证。

我需要简单但有效的算法来识别我们从哪个基本示例中获取输入图片。

我正在用 C# 和 Java 编写

4

4 回答 4

1

我认为没有一种简单的算法可以让您在您提到的所有条件下识别图像。

一种可能涵盖最多的技术是对图像进行傅里叶变换,但这不能用任何想象力来描述为简单,并且会涉及一些非常繁重的数学概念。

您可能会发现搜索包括图像处理在内的数字信号处理领域很有用,因为它们只是二维信号。

编辑:显然问题仅限于识别 MONEY(纸币和硬币),因此搜索的第一个问题是避免使用其图像识别产品而不是作为图像来源提及金钱的网站。

无论如何,我通过搜索“货币图像识别”找到了更多有用的点击。包括一些提到隐马尔可夫模型(不管是什么意思)。它可能是您正在搜索的算法。

通过拥有一小组目标图像可以简化问题,但由于需要检测伪造品而变得复杂。

仍然认为这项工作没有“简单的算法”。祝您搜索顺利。

于 2009-10-18T10:39:21.953 回答
1

在计算机视觉领域正在进行一些很好的研究。正在解决的问题之一是识别对象,而不考虑比例变化、噪声添加和引入的倾斜,因为照片是从不同的视图中点击的。作为计算机视觉课程的一部分,两年前我几乎没有做任何作业。有一种称为尺度不变特征变换的变换通过它您可以提取角点的各种特征。角点是与其所有相邻像素不同的点。如您所见,如果从两个不同的视图单击照片,某些边缘可能会消失并看起来像其他东西,但角落几乎保持不变。这个转换解释了如何为所有角点提取大小为 128 的特征向量,并告诉你如何使用这些特征向量来找出两个图像之间的相似性。在您的情况下,您可以为您拥有的所有纸币之一提取这些特征,并检查您应该测试的测试图像中是否存在这些角点

由于这种转换对旋转、缩放、裁剪、噪声添加和颜色过滤是稳健的,我想这是我能建议你的最好的。您可以查看此演示以更好地了解我所解释的内容。

于 2009-10-19T06:16:36.427 回答
1

OpenCV有很多算法和功能,我想它应该适合您的问题,但是您必须使用 PInvoke 才能从 c#(它是 C 库)中使用它 - 可行,但需要一些工作。

于 2009-10-19T07:45:26.730 回答
1

您需要构建一组函数来计算两个图像 f(A,B) 之间特定变换的概率。许多变换以前被建议作为答案,例如傅立叶。您可能无法以任何可靠性一次计算多个变换的概率 fgh(A,B)。因此,您将计算每个变换独立应用 f(A,B) g(A,B) h(A,B) 的概率,并且 P 高于阈值的那些是解决方案。

If the order is important, i.e you need to know that f(A,B) then g(f,B) then h(g,B) was performed, then you would need to adopt a state based probability framework such as Hidden Markov Models or a Bayesian Network (well, this is a generalization of HMMs) to model the likelihood of moving between states. See the BNT toolbox for Matlab (http://people.cs.ubc.ca/~murphyk/Software/BNT/bnt.html) for more details on these or any good modern AI book.

于 2009-10-19T16:27:33.653 回答