我们有一些图片的例子。
我们有输入图片集。每个输入图片是下一个事物组合后的一个例子
1)旋转
2)缩放
3)切割部分
4)添加噪音
5)使用某种颜色的滤镜
保证人类可以识别图片的轻松。
我需要简单但有效的算法来识别我们从哪个基本示例获得输入图片。
我用C#和Java编写
答案 0 :(得分:1)
我不认为是一个简单的算法,它可以让你在所提到的所有条件下识别图像。
一种可能涵盖最多的技术是Fourier transform图像,但这在任何想象中都不能简单描述,并且会涉及一些非常沉重的数学概念。
您可能会发现在Digital Signal Processing字段中搜索包含图像处理非常有用,因为它们只是二维信号。
编辑:显然问题仅限于识别MONEY(纸币和硬币),因此搜索的第一个问题就是避免因使用图像识别产品而提及金钱的网站,而不是作为图像的来源。
无论如何,我通过搜索“Currency Image Recognition”找到了更多有用的匹配。包括一些提到隐马尔可夫模型( 意味着什么)。它可能是您正在搜索的算法。
通过使用一小组目标图像简化了问题,但由于需要检测伪造品而变得复杂。
我仍然认为这项工作没有'简单的算法'。祝你好运。
答案 1 :(得分:1)
计算机视觉领域正在进行一些很好的研究。要解决的问题之一是识别物体,而不管因为从不同视图点击照片而引入的比例变化,噪声添加和偏斜。作为计算机视觉课程的一部分,我在这两年后做了很少的任务。有一个名为scale invariant feature transform的变换,通过它可以为角点提取各种特征。角点是与其所有相邻像素不同的角点。正如您所观察到的,如果从两个不同的视图中单击了照片,则某些边缘可能会消失,并且看起来像其他一些东西,但角落保持几乎相同。此转换解释了如何为所有角点提取128的特征向量,并告诉您如何使用这些特征向量来找出两个图像之间的相似性。在你的情况下 您可以为您拥有的所有纸币之一提取这些功能,并检查您应该测试的测试图像中是否存在这些角点
由于这种转换对于旋转,缩放,裁剪,噪声添加和颜色过滤都很稳健,我想这是我能建议的最好的。您可以查看此demo以更好地了解我的解释。
答案 2 :(得分:1)
OpenCV有很多算法和功能,我想它应该适合你的问题,但你必须使用PInvoke从c#(它的C库)中使用它 - 可行,但需要一些工作
答案 3 :(得分:1)
您需要构建一组函数来计算两个图像f(A,B)之间特定变换的概率。先前已经提出了许多变换作为答案,例如,傅立叶。您可能无法以任何可靠性计算多次变换的概率fgh(A,B)。因此,您将计算每个变换独立应用的概率f(A,B)g(A,B)h(A,B)和P高于阈值的那些是解决方案。
如果顺序很重要,即你需要知道f(A,B)然后g(f,B)然后执行h(g,B),那么你需要采用一个基于状态的概率框架,如作为隐马尔可夫模型或贝叶斯网络(嗯,这是HMM的推广)来模拟在状态之间移动的可能性。有关这些或任何优秀的现代AI书的更多详细信息,请参阅Matlab的BNT工具箱(http://people.cs.ubc.ca/~murphyk/Software/BNT/bnt.html)。