识别一维条形码,关键环节是对它进行预处理操作,以去除条形码图像区域的噪声污染,以及进行必要的倾斜校正,首先采用相似边距离法计算出条形码所代表的信息,然后通过解码校验以及纠错,最后进行解码过程。本文详细设计了每个环节,完成了较高识别率的条形码识别系统。
条形码识别系统的一般流程为:
对于需要识别的条形码图片,往往需要进行一些预处理,例如降噪处理、倾斜校正等,然后把图片二值化,图是对条形码图像进行识读的流程图。
由相似边距离的方法可以得到算法的具体流程,首先计算的一个字符的总长度以及黑白模块的宽度,则可以得到一个单位模块的长度为L=T/7,而T则为C1-C4的值的相加。然后再把得到的4个模块宽度除单位模块宽度L就可以得到归一化的值ATi 。但是在条形码中还有起始符,中间分隔符于终止符,所以在识别的时候需要去掉无关元素,去掉之后就还剩48条空模块,每四个可分为一组一共12组,代表12个字符。然后根据计算出的归一化值(T1
,T2
)。再通过表3-1可查出字符值,具体流程如图所示。
实验图:
一张正常的条形码图片可以通过一般条形码识别流程成功识别:
如图所示,对于倾斜的条形码图片,需要经过倾斜图片校正后才能正常识别。
但是有些图片未必是倾斜的,有些条形码图片是不能直接进行识别的,所以需要进行一个感兴趣区域提取,如图所示:
这种类型的条形码是不能直接扫描的,所以就需要把条形码区域提取出来。
如图所示,经过感兴趣区域提取后,可以把条形码区域提取出来。
在设计中还有一些其他的图片处理工具,如添加噪声,图像增强,中值滤波等,去除噪声等,目的也是为了是提升读入条形码图片的识别成功率。本次设计一共使用100张图片,不仅有清晰的,也有含噪声的,在实验中一共失败6张图片,识别成功率可达到94%。
本次设计中对于符合EAN-13条形码编码格式的图片能够进行识别,但是对于一些产生畸变的条形码图片、或者光源不充足、条形码图片污染严重,以及像素模糊不高的图片目前还无法识别,所以程序还有提升空间,考虑到程序的简约性,不做深入色痕迹,相信随着计算机技术的发展,或者是更好的技术与算法,能够解决该问题。
设计者:zsm
通信工程专业