作为一个宠物项目/学习经验(不,这不是家庭作业),我正在开发从照片中识别条形码的软件。我并不是在寻找能做到这一点的软件或库--相反,我只是把它当做一个学习练习来使用,我在博客上写了这篇文章,并将其发布到Codeplex上。
I have code that successfully recognizes EAN13 barcodes (which I published on CodePlex)和UPC版本A/E应该很快就会出现。不过,我有两个方面需要关注。首先是解码图片中的条形码,这些条形码有点模糊或对比度差,等等。其次是在更大的图片中简单地找到实际的条形码(现在你必须给我一张条形码的照片)。
我有种直觉,某种形式的人工智能会在这里帮到我。我过去玩过一点遗传算法,几年前我上过一门关于人工智能的课程,所以它对我来说并不完全陌生,但我不太确定从哪里开始。
哪种类型的算法最适合这类问题?有没有推荐的阅读或代码来完成人工智能的工作?是的,我想知道发生了什么,但我不一定想自己深入到编码的层次,等等。
发布于 2010-08-18 05:16:37
我建议搜索条形码所具有的属性。我想说的是:
颜色直方图在about distribution
其他的?
有了这些,我会将图像分成几个部分,并用这些特征进行分类,然后对结果进行cobine,以计算出图像是否包含条形码。
对于你的第二个问题(模糊图像),我建议计算灰度值的1st order derivative,然后检测这个空间中线条的边缘。如果图像是模糊的,导数的最大值较低,但它应该可以检测到一定的模糊因子。
这对你有帮助吗?
发布于 2010-08-18 15:26:49
正如mp已经指出的,你不需要任何真正的AI技术。请看一下Real World Haskell的第12章。它实现了一个几乎完整的条形码识别器。示例代码是用Haskell编写的,但是有很多解释,所以即使没有Haskell的经验,您也可能理解其中的思想和技巧。
如果你想用人工智能来解决这个问题,那么最好的选择可能是使用人工神经网络。对于给定的问题,我建议使用一种非常高级的技术,称为HyperNEAT。请参阅我的解释(和链接)作为SO问题Neural Network Size...的第一个答案
我可能会使用两到三个不同的网络,
也许对图像做一些预处理也会有帮助,例如那些在RWH中描述的图像。
发布于 2010-08-18 05:19:53
你不需要任何特定的AI或软计算技术。您需要应用图像处理技术来提高图像质量或将条形码从较大的图像中分离出来。你可以使用Matlab进行原型设计,并学习更多关于图像处理的知识。
https://stackoverflow.com/questions/3506948
复制相似问题