面向实时嵌入式系统的一维条码识别方法
【技术领域】
[0001]本发明涉及计算机视觉和实时嵌入式系统领域,尤其是一种在智能相机中内嵌入条码识别算法,对贴于工业生产流水线上的产品及零件上的一维条码进行识别的方法。
【背景技术】
[0002]现今,一维条码在商品流通领域的应用已经十分广泛和成熟,如最具代表性的EAN-13商品条形码已经在国际上广为流通,并且由国际物品编码协会管理其标识国家的前缀码,而中国物品编码中心被分配的是690?695。与商品流通领域的成熟广泛应用相比,工业生产上的应用是一个尚在发展、充满前景的领域。
[0003]目前,一维条码的识别方法广泛采用光电识别技术。虽然光电识别技术已经十分成熟,但是它是建立在对条码质量要求高、需要人工定位条码的基础上的。在商品流通领域中,由于销售人员的人工参与,光电识别技术的基础被很好满足。但是,对于工业生产领域,为了满足生产过程的自动化,工人不能去人工参与,利用计算机视觉的方法去研宄条码的定位和识别成了新的研宄方向。
[0004]自主研发一种基于计算机视觉的一维条码识别方法,对于国内工业生产领域的条形码的推广应用具有重大的意义。
【发明内容】
[0005]本发明的目的在于克服现有技术中存在的不足,提供一种面向实时嵌入式系统的一维条码识别方法,该方法是一种应用于实时嵌入式系统的图像式条码识别方法,基于计算机视觉处理过程,不需要人工参与可以自动定位,适合工业生产领域的条形码应用。本发明采用的技术方案是:
一种面向实时嵌入式系统的一维条码识别方法,包括下述步骤:
步骤SI,对于采集的图像进行处理,获得降低分辨率的二值化图像和原分辨率的二值化图像;
步骤S2,在降低分辨率的二值化图像中定位条码区域;
步骤S3,利用上述条码区域定位信息,对原分辨率的二值化图像进行识别,进行条码解码。
[0006]进一步地,所述步骤SI具体包括:
5101),将采集的RGB图像转化为灰度图;
5102),对灰度图进行图像增强的处理;
5103),进行图像去噪的处理;
5104),将灰度图转化为二值化图像;
5105),降低上个步骤S104)所得二值化图像的分辨率,获得降低分辨率的二值化图像。
[0007]进一步地,所述步骤S2具体包括:
S201),对降低分辨率的二值化图像进行边缘强化处理; 5202),然后对上述降低分辨率的二值化图像进行形态学处理,将整个条码区域连通;
5203),进行区域过滤的处理;
5204),获取条码区域的四个角点位置,即可定位条码区域。
[0008]进一步地,所述步骤S3具体包括:
5301),进行位置信息转换,将条码区域在降低分辨率的二值化图像中的位置信息转换为在原分辨率二值化图像中的位置信息;
5302),在原分辨率二值化图像中进行条码旋正;
5303),进行垂直投影的处理:将条码上同一列的像素值累加;
5304),进行获取模块比例的处理:获取条码上条空的宽度比例;
5305),进行译码和校验,即根据所得模块比例解析条码携带信息。
[0009]本发明的优点在于:本发明主要提供了一种基于计算机视觉的条码识别方法,该方法不需要人工参与可以自动定位,对所处理的条码质量要求也比光电技术的低。适合工业生产领域的条形码应用,对工业生产的自动化起到了重要作用。
【附图说明】
[0010]图1为本发明的条码预处理阶段流程图。
[0011]图2为本发明的条码定位阶段流程图。
[0012]图3为本发明的条码解码阶段流程图。
【具体实施方式】
[0013]下面结合具体附图和实施例对本发明作进一步说明。
[0014]本发明提出的面向实时嵌入式系统的一维条码识别方法,按阶段分为三个部分,下面参照附图1?附图3,对于该方法进行详细描述。
[0015]步骤SI,图像预处理:对于采集的图像进行处理,获得降低分辨率的二值化图像和原分辨率的二值化图像;
如图1所示,是算法的第一阶段即预处理阶段的流程(第一阶段不含图1中的两个虚线框)。其输入是一个由智能相机采集的RGB图像,输出是降低分辨率的二值化图像和原分辨率的二值化图像。具体处理的过程如下:
S101),将采集的RGB图像转化为灰度图;灰度化是指将RGB图像转化为灰度图的过程,一般有求算数平均值、求加权平均值、求最大值三种方法,本方案采取的是求加权平均值的方法。其公式为:灰度值Gray=0.30*R+0.59*G+0.11*B,公式中的R、G、B代表红、绿、蓝三个通道的颜色。灰度图本例中采用8位灰度图。
[0016]S102),对灰度图进行图像增强的处理;图像增强的主要目的是为了增强图像的对比度,这里采用的图像增强方法主要是USM锐化算法。Unsharp Mask(USM),翻译为“非锐化遮罩”或翻译为“虚化掩模锐化”,即在进行锐化计算的过程中,可对边缘进行锐化处理,而对色调连续的部分予以保护,达到既进行锐化,又不产生噪点的目的。
[0017]该算法主要思想就是通过增强图像的高频部分来使得图像的边缘更加明显。USM锐化算法可用如下公式(I)表达为:
G(x, y)=F(x, y)+k*H(x, y) ;(I) 其中(X,y)表示图像中的一个点,F(x,y)为输入图像,G(x,y)为输出图像,而H(x, y)为校正信号,一般可通过对F(x,y)进行高通滤波获取;k是用于控制增强效果的一个缩放因子。这里H(x,y)可用如下公式(2)获取:
H(X,y) =4*F (x,y) -F (χ-l, y) -F (x+1, y) -F (x, y-1) -F (x, y+1)。 (2)
S103),进行图像去噪的处理;图像去噪即是去除图像噪声的过程,这里采用的是自适应结构元大小的高斯模糊算法。
[0018]该算法可用如下公式⑶表示:
G(x, y)= Σ Σ K(i, j) * F(x+i, y+j) ;(3)
其中,G(x, y)表示输出图像,F(x, y)表示输入图像,公式(3)中的两个连加符号表示对(-m€ i ^ m, -n ^ j ^ η)范围内的i和j进行连加;这里所取的结构元大小为(2m+l)*(2n+l) ;K(i,j)表示的是相对于当前处理点(x,y)距离(i,j)的点的加权;这里K(i, j)是一个二阶正态分布函数;如下所示:
K(i,j) = (l/ (2* JT * σ ~2))* exp(_(x~2+y~2)/(2* σ ~2)(4)
σ表示的是二阶正态分布的标准差,取值介于0.5?3之间。此例中m和η取值均为I,则i和j都是取_1,O, I ο
[0019]S104),将灰度图转化为二值化图像;二值化即是将灰度图像转化为二值化图像的过程,二值化的方法根据选取阈值的统计样本可分为局部二值化、全局二值化两种策略,根据选取阈值的统计量有OtSlK平均值等方法,这里采用的是动态迭代的OtSU 二值化算法,也可以采用上述提到的现有技术中其它方法。该过程后所得图像可以作为解码用图像,也就是原分辨率的二值化图像。
[0020]动态迭代的otsu 二值化算法;该算法的具体步骤如下:
1.取初始阈值T=128 ;即初始阈值T取灰度图灰度总级数的一半。此例灰度图共有256级灰度。
[0021]2.扫描图像,计算小于T的所有点的均值minT和大于T的所有点的均值maxT ;进而求出 T’ =(minT+maxT)/2 ;
3.如果T=T’,则结束,以此时的T为二值化的阈值;否则令Τ=Τ’,并跳至第二步。
[0022]4.以上述第三步确定的T为二值化的阈值,将灰度图转化为二值化图像。
[0023]S105),降低上个步骤S104)所得二值化图像的分辨率,获得降低分辨率的二值化图像;降分辨率是从二值化图像获取低分辨率图像副本的过程,这里采用的是隔点取样的方法,图像在一个方向上的分辨率降低η倍,就相隔η点取样。该过程后所得图像可以作为定位用图像。
[0024]步骤S2,在降低分辨率的二值化图像中定位条码区域;
如图2所示,是算法的第二阶段即定位阶段的流程。其输入是预处理阶段所获得的二值化图像低分辨率副本,输出是该图像中的条码位置信息。具体定位的过程如下所述:S201),对降低分辨率的二值化图像进行边缘强