首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AI识别条形码

使用AI识别条形码
EN

Stack Overflow用户
提问于 2010-08-18 05:05:16
回答 3查看 2.4K关注 0票数 7

作为一个宠物项目/学习经验(不,这不是家庭作业),我正在开发从照片中识别条形码的软件。我并不是在寻找能做到这一点的软件或库--相反,我只是把它当做一个学习练习来使用,我在博客上写了这篇文章,并将其发布到Codeplex上。

I have code that successfully recognizes EAN13 barcodes (which I published on CodePlex)和UPC版本A/E应该很快就会出现。不过,我有两个方面需要关注。首先是解码图片中的条形码,这些条形码有点模糊或对比度差,等等。其次是在更大的图片中简单地找到实际的条形码(现在你必须给我一张条形码的照片)。

我有种直觉,某种形式的人工智能会在这里帮到我。我过去玩过一点遗传算法,几年前我上过一门关于人工智能的课程,所以它对我来说并不完全陌生,但我不太确定从哪里开始。

哪种类型的算法最适合这类问题?有没有推荐的阅读或代码来完成人工智能的工作?是的,我想知道发生了什么,但我不一定想自己深入到编码的层次,等等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-18 05:16:37

我建议搜索条形码所具有的属性。我想说的是:

颜色直方图在about distribution

  • Doing a

  • 中显示两种截然不同的颜色hough transformation

  • 许多平行线,这些线的粗细有两个不同的维度。

其他的?

有了这些,我会将图像分成几个部分,并用这些特征进行分类,然后对结果进行cobine,以计算出图像是否包含条形码。

对于你的第二个问题(模糊图像),我建议计算灰度值的1st order derivative,然后检测这个空间中线条的边缘。如果图像是模糊的,导数的最大值较低,但它应该可以检测到一定的模糊因子。

这对你有帮助吗?

票数 9
EN

Stack Overflow用户

发布于 2010-08-18 15:26:49

正如mp已经指出的,你不需要任何真正的AI技术。请看一下Real World Haskell的第12章。它实现了一个几乎完整的条形码识别器。示例代码是用Haskell编写的,但是有很多解释,所以即使没有Haskell的经验,您也可能理解其中的思想和技巧。

如果你想用人工智能来解决这个问题,那么最好的选择可能是使用人工神经网络。对于给定的问题,我建议使用一种非常高级的技术,称为HyperNEAT。请参阅我的解释(和链接)作为SO问题Neural Network Size...的第一个答案

我可能会使用两到三个不同的网络,

  • 是第一个在大图上找到条形码的人。每个像素/一组像素一个输出神经元,如果该像素似乎是条形码的一部分,则输出值是置信度。基于结果,我将使用一些图像转换来将其转换为“标准”格式(x*y矩形)
  • ,如果您在查找条形码的位置时遇到困难,请使用另一个。输入第一个结果,并要求它给出两个角的坐标。然而,我不太确定这是不是很容易进化。
  • 最后一个会在标准化格式上工作,输出每一条线的神经元(如果你使用可能的二维条形码,也可以是正方形),说明给定的区域应该被认为是黑色还是白色。

也许对图像做一些预处理也会有帮助,例如那些在RWH中描述的图像。

票数 4
EN

Stack Overflow用户

发布于 2010-08-18 05:19:53

你不需要任何特定的AI或软计算技术。您需要应用图像处理技术来提高图像质量或将条形码从较大的图像中分离出来。你可以使用Matlab进行原型设计,并学习更多关于图像处理的知识。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3506948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档