2 一维条码的介绍
2.1 一维条码的概述
一维条形码的主要功能就是进行物品标识,该技术研发与大范围内应用于物流产业发展密不可分。但传统的条形码技术在新形势下无法满足自动化管理的需要,因此迅速、准确、阅读方便的条形码信息是条形码技术发展的方向[12,13,14]。
一维条形码有很多种。市面上就有较高利用率的有 EAN-8码、Code39码、Codel28码、UPC-E 码等。UPC(Universal Product Code)是商品编码领域应用最广泛的条形码系统,因而也可以称为万能码。它具有固定长度和连续性的特点。在北美的国家广泛使用。UPC码有五种版本:A、B、C、D、E等,商品领域一般都用UPC-A码,于医药卫生领域用UPC-B码用,工业生产领域用UPC-C码,仓库批发用UPC-D码。而商品短码主要是UPC-E码。
EAN(European Article Number)商业条码又称"普通产品条形码",作为一种国际标准化的商品代码,或是作为单个商品标识,或者用于销售端商品。这种条码由全球商品编码协会研制,使用普遍,在国际贸易上使用最为普遍。EAN条形码中有两个常见的编码方式,它们分别是 EAN-13编码方案和 EAN-8编码方案,其中 EAN-13由13位数字编码构成称为标准版 EAN,EAN-8由8位数字编码构成被称为缩短版 EAN,我国也大量采用这种编码方案对商品进行编码。生活中,最常用的国家代号是690-693,当中以690、691为首时,厂家标识码为四位,而产品项目代号则为五位;以692、693开始时,厂家标识码是五位,而产品项目代号则是四位。
它们都有共同特征,它们由一组排列整齐的条形和空格组成,但它们的条形和空格宽度编码方法不同。由于可以表达的字符范围和类型不同,它们有不同的应用。图2是几种常用的条形码。
3 条形码的定位
3.1 YOLOv3目标算法检测
YOLOv3算法是YOLOv1和YOLOv2的改进,具有检测精度高、定位准、速度快的优点。具有易实现性,同时还能够提供更高准确性,目前在图像处理场合被深度利用,如交通检测或视频监控等场合[15]。同时也被人脸识别等生物信息领域加以利用。特别是在小目标的检测中,它对环境场景有很好的鲁棒性,因而成为一个热门的研究课题。DBL层是YOLOv3网路结构的基础部分,由卷积算层、BN层和leakyrelu激活函数所构成,在加深神经网络层数同时,这两个DBL的卷积和跳跃连接残差单元有效地避免了梯度的消失。YOLOv3通过以Darknet-53网络为其主干网络,实现了效果更为突出的特征提取。特征提取方面采用多层感知器(MLP)方法。其中,第二层和第三层的特征图是通过将第一层的特征图与低层网络中相同尺寸的特征合并得到的。由于在浅层网络系统中的含义信息内容较少,高度信息内容较多,在深层网络系统中的含义信息内容则较多,因此YOLOv3采用类FPN结构将浅层内容和深度信息相结合,从而得到了预测的特征图,提高了提取不同尺度特征的效率,以增加目标检测准确率。网络结构如图6所示。
YOLOv3的先验测试(Prior detection)系统经过将类别器或定位仪重新用来完成测试任务。他们可以将模型运用在整个图片的各个部位和尺度上。而某个评分较高的部分也可视为测试结果。另外,相比于其它目标测试方式,我们采取了绝对多样化的方式。我们可以将某个单神经应用于整张图片上,该网络系统将整个图片划分为各种各样的地区,从而可以预计每一种地区的边境框大小和几率,而其中边境框会经过对估计的几率权重。因此我们的模式相对于使用类别器的网络系统来说具有一定优越性。它可以在检测时看到全部像素,从而对它的估计也使用了像素中的全局信号。其预测依据或来源可以建立在对单一网络评估之上,也使得YOLOv3具有与同类算法产品更快的速度,如图7,从中可以看到,其速度超过R-CNN千倍,同时即便是与Fast的R-CNN进行比较,也超过百倍。
4 条码识别
在通常一般的图片中,大部分的信息都包括在一起,不过真正有用途的内容并不一定是指所有图片信息。而图形预处理的主要目的,正是经过对图形信号的过滤以及提炼后,把比较有益的信号加以增强,并分拣起来送到识别模块中加以鉴别。在图形分类中,有必要对图形进行特征提取,分离以及匹配等,这都称为对图形的预处理。
图片预处理主要用来对图片中不相关的数据筛除,使相关数据的可分析度增加,以此来改善特征提取的准确性。在本文的道路测试中,原始图片由于环境的差异而呈现不同的画质,因此本文中采取了用Canny边缘检测和Hough变换直线检测[16]的方法调整条码的距离,以便让ZBar更好的识别条码。
4.1 基于Hough变换矫正图片
4.1.1 图像灰度化
现在的图象测量仪器拍摄到的图片通常都为彩色图像的,但在我们的条码定位算法中并不需要图形的色彩信号。为降低运算复杂性、提高效率,在数据处理前要把输入的彩色图片灰度化。一个最常见的将彩色像素转化成灰度图像的方式是加权平均值法,对R、G、B三种通道根据相应的关系进行平均值,以获得灰度值。用公式(1)将图像灰度化。
(1)
4.1.2 图像滤波
在图像去噪流程中,首先要进行预先制备的环节就是图像预处理,其主要作用路径就是在图像细节完整性尽量不被破坏或削弱的条件下,利用噪声滤波对这些细节部分进行处理控制。而滤波处理控制效果达到的程度好坏等则将直接地影响到着后期的图像噪声处理计算和结果分析工作的安全有效性度和可信度。
- 高斯滤波器
高斯滤波产生的脉冲响应函数一般是高斯函数,因此被广泛认为是另一种经济、理想、有效的空间噪声滤波方法,这也非常有利于有效地降低高斯白噪声。由于高斯图像函数是一个离散化的二维矩阵,所以我们需要考虑通过把一个高斯函数矩阵在某一定空间尺度上的二维窗口空间内进行采样,从而可以得到一个离散化矩阵的高斯模板系数。二维的高斯函数为
(2)
5 实验设计与结果
5.1 实验环境
运行系统:Win10系统
实验软件:PyCharm、YOLOv3、OpenCv、ZBar
5.2 实验设计
本实验设计如图13所示。
1)实验数据收集,本文所采用的WWU Muenster 条码数据集和ArTe-Lab 条码数据集[17]。
2)对数据进训练,从中数据中选用了600张图片进行了标注,通过YOLOv3对图片进行数据训练,训练出的模型通过OpenCv加载使用。
3)图像偏转角度获取过程,利用的是OpenCv中提供的工具,即最小外接矩形法,对其校正过程,则主要利用了仿射变换实现。最后,利用ZBar算法对处理后的条码图像进行解码,并以字符串格式输出解码信息。最终实现了条码的校准和解析。
6 总结与展望
6.1 工作总结
本文研究重点是条形码识别算法,涉及两部分内容,其一是定位,其二是译码。
条形码定位部分采用的是深度学习检测目标,通过YOLOv3对标注好的条形码数据进行训练,获得权重文件,再通过OpenCv的最小外接矩阵获得条码数据。对于倾斜的条码需要使用Hough变换直线检测调整条码的角度,以提高ZBar的识别率。
条形码识别是通过对条形码区域使用自适应直方图均衡化和二值化来增强条形码的对比度,从而让条形码的识别效果更好。
6.2 工作展望
本文的条码识别算法仍然存在一些缺点和不足:1)在条形码旋转角度时可能会把条形码区域覆盖,造成条码损坏,无法识别。2)对条形码区域处理时最困难的部分,因为条形码会因为各种原因造成辨识度很差,例如照射光线不均匀、条码边行、条码模糊等。所以要改进对图像处理的算法,提高条码的识别率。3)优化识别算法,降低识别耗时。
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。