可以处理模糊条码的一维barcode解码算法(blur barcode decoding)part 1

 

新人报道。。。

开个玩笑。瓜农叔叔带你们收割,请大家准备好装备,大炮一定要记得带着。。。

  之前看过很多关于一维条码的算法,但效果都不行,也下过很多开源库,比如ZXing和Zbar,但这两个对于模糊条码的处理基本没作用。因为大部分的时候一维条码的算法用于移动终端较多,基于图像的这种处理方式,会有个比较明显的缺点,就是一般的算法只能在摄像机聚焦后才能解码,也即只有在获取清晰地图像之后才能解码。但摄像机的聚焦需要时间,快则1-2秒,慢则3-4秒,再加上解码以及镜头调整的时间,会导致这款应用的用户体验很差。

  之所以在这里说这么多废话,是给那些新同学看的,老同学就算了。你们可以忽略上述废话。

这里提到的模糊条码是指摄像机没有聚焦的情况下,导致摄像机拍出的图片或者视频流中的条码部分不清晰。如下图所示:

                                        

                                                                                                   图 1

 

 

  ZXing和ZBar是无法解码上述图像的,因为仔细看了他们的代码就可以知晓一二了,他们的处理就是从图像中找出一条穿越整个条码的线(或者几条取平均值)。这样的处理就等于默认图像是清晰的。但图像如上图一所示时,这两个算法就显得无能为力了。在做这个算法之前,我也对此很是苦恼。(这就等于说你需要半年或许更久去研究新的算法并自己实现)。目前市场上比较流行的有我查查、redlaser(已经被ebay收购),这两个应用是可以扫描模糊的条码的。有兴趣的同学可以去下载玩玩看。但这两个应用对他们的算法细节只字未提,redlaser对开发者而言是可以购买的,具体的金额不太记得了,貌似挺贵的,是按照你的应用被多少终端使用来计算的,貌似需要0.06美元一个,也就是用户每次下载一个你的应用,你就需要向redlaser支付0.36RMB,其实这还是挺贵的。如果你的应用下载次数为一百万,那么就需要向他支付36万RMB,当然,作为一款这样的应用,如果只被下载一百万次,那么你的盈利肯定是不多的。据说我查查已经有一千两百万用户了,而redlaser在全球有2亿设备在使用。

  扯远了,回归主题。看了很多论文,但是真正有用的却屈指可数,于是找了一篇实现了下,感觉效果还不错,大体上已经脱离opencv了,但是条码定位部分还没将opencv的源码抠出来,现在也懒得做,因为手机端只要一个窗口对准条码部分就行了,这部分做只是浪费时间而已。文章名为"Reading 1-D Barcodes with Mobile Phones Using Deformable Templates",大致意思就是使用可变模型在手机上面进行以为条形码的解码,翻译的不太好,望见谅。

  文章的大体就是介绍一维条码的解码算法。重点就是算法使用的是full gray-level information,也就是说并不进行二值化(binarize)。将穿越条码的一条或者几条线拿出来做分析,并进行模板匹配,当然还有一些如何使得接触的码是正确的条码数字的算法。

  可恨的是文章给出的算法还是有很多缺陷的,比如对于光照比较强烈的时候导致的大光斑,如图2所示:

                           

                                                                                                  图 2

  图2所示的这些图片使用正常的算法是很难解码的, 使用上述文章的算法也比较困难。因此本人在实现算法的基础上加了一些其他的东西,比如如何将这些光斑去除,以及球面图像的校正算法。当然对于整个的框架作用并不是那么巨大。只是锦上添花的作用而已(这部分的功能暂不完整,还在处于调试的阶段)。

  很晚了,叔叔要睡觉了。明天继续part2。将会讲解一下关于算法的知识。

  转载请注明出处,否则追究版权责任!

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/GNSS/p/barcode_decoder.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值