基于机器视觉的条码定位识别算法研究
徐达圣 李桂熙 覃翔宇
摘 要:本文通过对条码图像进行预处理、边缘检测、闭运算实现条码定位,同时提出一种新的条码倾斜角度计算方法,以校正歪斜条码,通过改进的自适应分段线性灰度变换方法、基于迭代阈值的二值化方法进行条码图像预处理,提高了解码率。
关键词:条形码;图像处理;解码率
DOI:10.16640/j.cnki.37-1222/t.2019.09.135
0 引 言
基于图像的条码识别属于模式识别的研究范畴,主要应用于智能终端、物体分类等领域,国内外学者已经取得诸多重要研究成果并进行了实际应用。但这些研究仍存在不足,对于对比度不高或者存在歪斜的条码,识别率和准确度还待提高。
1 条码识别
条码识别经过条码定位、条码校正、预处理、条码解码四步完成。
1.1 条码定位
条码定位过程包括图像灰度化、混合滤波器降噪、边缘检测、形态学闭运算。
1.1.1 混合滤波器降噪
采用几何均值滤波器和中值均值滤器组成的混合滤波器[1]对图像进行降噪,保持去噪能力的同时能保留更多图像边缘细节。
1.1.2 边缘检测
Roberts算子先计算像素梯度幅值,而后对其进行阈值处理[2]。如果大于设定阈值,该点判定为边缘点,否则为非边缘点,所有边缘点构成图像边缘。
(1)
1.1.3 形态学闭运算
图像处理中,常用集合描述图像,被处理的图像称为目标图像,结构元素是具有一定形状的集合,尺寸小于目标图像,通常将结构元素的原点选在其中心位置上。
目标图像关于结构元素的闭运算,定义[3]为:
(2)
经过对边缘检测图的形态学闭运算处理,得到多个连通域,筛选最大联通域作为条码区域,完成条码定位,如图1。
1.2 条码校正
条码校正包括倾斜角计算和旋转映射。
1.2.1 倾斜角计算
本文基于条码特性和形态学闭运算特征提出一种新的倾斜角计算方法。条码具有水平间断竖直连续的特性,而闭运算能保持原連续边界。通过将最大联通域图像的边缘检测图像与闭运算前的边缘检测图像比对,重合点保留,其余舍弃,滤除散点得到条码左右两条短边侧线,利用短侧线的斜率即可计算出条码倾斜角度。
1.2.2 旋转映射
旋转映射需进行特定处理:利用取反图像进行旋转映射,再将所得图像取反得校正图像。所做处理避免了直接旋转映射而产生的矩形四角填充问题。
1.3 预处理
图像的预处理过程包括自适应灰度拉伸、基于迭代阈值的二值化。
1.3.1 自适应灰度拉伸
自适应灰度拉伸处理将10%最大灰度值中的最小值记为,将10%最小灰度值中的最大值记为,进而将图像的灰度分为、、三个区间。而后,将处于灰度区间的像素灰度压缩为0,将处于灰度区间的像素灰度压缩为255,而对处于灰度区间的像素灰度做下述运算:
(3)
其中,、 分别为输入、输出图像的灰度值,是图像理论灰度最大值。
1.3.2 基于迭代阈值的二值化
阈值法二值化首先将图像中最小、最大灰度值记为和 ,初始阈值为 ,为迭代次数。而后根据阈值将图像中像素分为目标像素点和非目标像素点两类,记目标像素及非目标像素点个数及其灰度平均值分别为、、 、。并利用、二者平均值求取新阈值。当或时,结束迭代,利用新阈值进行二值化处理,否则,重新划分目标与非目标像素点,继续迭代。
1.4 条码解码
Code128码是最常用的一维条码,由一系列条空相间组成,分为起始符、数据符、检验符、终止符和空白区。条码解码需解决两个关键问题,一是消除不同图像采集距离的影响,二是解决因条码污损而无法解码的难题。针对前者,由于同一条码上条空宽度呈比例关系,利用该关系可确定条码编码序列,从而实现不同采集距离下的解码。针对后一问题,可以通过在条码解码操作前确立一条垂直且覆盖全部条、空的扫描线解决。
2 系统运行结果分析
本文测试环境为Matlab 2016a,测试图像来源于muenster数据集,数量为300张。经测试:
由表可知,本文设计的条码识别算法,识别成功率为93.6%。其对于条码倾斜的情况,校正率亦能达86%以上,识别耗时平均为0.745s。
3 结语
本文提出了一种新的条码定位与识别算法,有效提高了条码定位识别率。系统实际运行表明,该算法具有效率高、可靠性强的优点。
参考文献:
[1]宋人杰,刘超,王保军.一种自适应的Canny边缘检测算法[J]. 南京邮电大学学报(自然科学版),2018,38(03):72-76.
[2]贺桂娇.几种经典的图像边缘检测算子分析比较[J].计算机光盘软件与应用,2014(09):182-183.
[3]闫海霞.基于数学形态学的图像边缘检测和增强算法的研究[D]. 吉林大学,2009.
基金项目:吉林大学大学生创新创业训练计划基金资助项目( 2018A2017)。