CN107633192B - 一种基于机器视觉的复杂背景下条形码分割与识读方法 - Google Patents

一种基于机器视觉的复杂背景下条形码分割与识读方法 Download PDF

Info

Publication number
CN107633192B
CN107633192B CN201710723748.8A CN201710723748A CN107633192B CN 107633192 B CN107633192 B CN 107633192B CN 201710723748 A CN201710723748 A CN 201710723748A CN 107633192 B CN107633192 B CN 107633192B
Authority
CN
China
Prior art keywords
bar code
gradient
value
code
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710723748.8A
Other languages
English (en)
Other versions
CN107633192A (zh
Inventor
康波
王琳
庄孟雨
钱志敏
李云霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201710723748.8A priority Critical patent/CN107633192B/zh
Publication of CN107633192A publication Critical patent/CN107633192A/zh
Application granted granted Critical
Publication of CN107633192B publication Critical patent/CN107633192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于机器视觉的复杂背景下条形码分割与识读方法,通过利用条形码图像所具有的梯度方向的一致性特征,运用基于局部梯度信息融合的条形码分割方法将条形码从复杂背景下精确提取出来;而后对获得的条形码区域进行校正与采样,运用结束码定标的方法得到条形码最小单位宽度,再采用动态阈值法对条形码进行条空界定,最终进行条形码解码、容错和检验。

Description

一种基于机器视觉的复杂背景下条形码分割与识读方法
技术领域
本发明属于图像处理技术领域,更为具体地讲,涉及一种基于机器视觉的复杂背景下条形码分割与识读方法。
背景技术
条形码技术的广泛使用为不同国家和地区的贸易往来提供了统一且简便的语言,利用条形码的标识信息,很容易便可将其转化为可识的电子数据,从而达到快速读入的目的,也避免了手动输入容易出错的问题。一维条形码虽然表现形式、储存数据的方式各有不同,但其基本的特征是一致的,都是靠不同宽度的黑白相间的条纹组合来表示信息。在当前电子制造业中,条形码的读取主要还是通过人工手持传统的激光式条形码扫描器进行读取,这个虽然操作不复杂,但是工人的操作熟练度也会对扫描条形码效率有所影响,因为手持式条形码扫描器需要将激光线对准要扫描的条形码,有时候会需要多次调整扫描的方位、距离等才能正确将条形码扫出。尤其现在国内用工成本日益增加,生产线产量迫切提高的情况下,开发出基于数字图像的条形码解码方法迫在眉睫。
通过数字式图像的方式对条形码进行扫码,必然包括两个步骤:条形码的定位和条形码解码。尤其对于复杂背景如电路板、曝光不足、光照不均匀、电路板反光等条件下,条形码定位的效果好坏直接决定了最后是否能成功扫码。
条形码的定位经常会用到其几何形状、方向梯度、边缘方向、直方图这几大特征较为直观的定位做法便是将采集到的图像转换为灰度图,然后进行去噪操作、二值化,对得到的图像进行直线检测,得到众多平行直线。该方法虽然从理论上来说是较完善的,但实际效果极不稳定,不具备工业的应用价值。
在条形码识读方面,目前大多是基于在很好分割了条空界限的基础上所做的相关解码操作,然而根据不同的环境,不同的分割条形码条空界限的方法带来的效果大不相同,相关的研究相对较少。尤其在光照条件等不均匀的情况下,采用普通的固定阈值来确定条形码的条空界限就会存在问题,界限分割不正确将直接导致各宽度比例发生变化,最终导致解码失败。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于机器视觉的复杂背景下条形码分割与识读方法,具有较强的鲁棒性。
为实现上述发明目的,本发明一种基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,包括以下步骤:
(1)条形码分割
(1.1)、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];
Figure BDA0001385526370000021
Figure BDA0001385526370000022
其中,C(x,y)表示(x,y)处像素值大小,Gx(x,y)表示(x,y)处x方向梯度值,Gy(x,y)表示(x,y)处y方向梯度值,G(x,y)表示(x,y)处近似梯度幅值,θ(x,y)表示(x,y)处梯度方向;
(1.2)、对梯度幅值图T进行分块,并进行梯度直方图统计
(1.2.1)、设置大小为m*n的滑动窗口,m为滑动窗口的长,n为滑动窗口的宽;设置滑动步长step;
从梯度幅值图T的左上角顶点出发,以步长step滑动,每滑动一次得到一图像块patch,用符号Ip表示,p=1,2,…,L,L表示图像块的个数;
(1.2.2)、对L个patch进行梯度直方图统计;
将所有梯度方向分为K个bin,即将梯度方向分成K个区域,每个区域跨度为θ,在某一个patch中,当某个像素点的梯度方向落在某一区域内,则判断像素点的梯度幅值μ是否小于阈值σ,如果μ<σ则该像素点不参与投票,如果μ>σ,则向该区域进行投票且票数加一,最后统计每个区域的投票结果,将票数最多的bin作为该patch的主方向角度;
同理,可以得到其余L-1个patch的主方向角度;
(1.2.3)、记录下各个patch的3维特征向量(x,y,θ),分别对应每个patch的x坐标、y坐标以及该patch的主方向角度;其中,(x,y)为该patch左上角顶点的坐标;然后对每一个patch,将各自patch主方向占比低于20%的剔除,最后对剩下的patch进行kmeans聚类,得到聚类图K;
(1.3)、提取像素点图
(1.3.1)、采用最大类间方差法对灰度图I进行二值化处理,得到二值化图像E;
(1.3.2)、对二值化图像E进行轮廓查找操作;
在二值化图像E中,剔除掉面积小于阈值F的轮廓,然后对剩下的部分采用Graham扫描法进行凸包拟合,得到疑似包含条形码的轮廓区域S;
再根据轮廓区域S在聚类图K中找到相对应区域,得到该区域拓扑方向,再删除主梯度方向与区域拓扑方向不一致或区域包含聚为一类的patch数过少的区域,得到符合条形码特征的轮廓区域S1;
最后根据轮廓区域S1在梯度幅值图T中找到相对应区域,处理这个区域所包含的每个patch,分别提取出每个patch内的像素点梯度值与该patch的主方向相差正负3°以内的像素点,构成像素点图;
(1.4)、角度精确搜索及条码区域细提取
(1.4.1)、将像素点图在范围为[θ-δ,θ+δ]内按每个角度进行校正,δ为常数,得到像素分布为近似水平的多张校正图像,再分别进行水平投影;
然后计算各水平投影的一阶梯度,选取一阶梯度值最大的水平投影所对应的旋转角度作为最终条形码的精确角度β;
(1.4.2)、根据精确角度β对各像素点进行映射,使各像素点组成的条形码块拓扑呈水平,再根据自适应的横向膨胀系数,采用具有纵向约束的膨胀算法将各孤立的像素连接起来形成条形码块;
对条形码块进行最小外接矩形求取,并根据最小外接矩形的四个顶点信息及精确角度β进行逆向仿射变换,找到四个顶点的初始位置,从而求出灰度图I中条形码的位置,并标记出条形码图像B;
(2)、条形码识读
(2.1)、条形码区域校正及采样
采用仿射变换的方法将条形码图像B校正为水平状态,再对校正后的条形码图像进行双线性插值,得到条形码图像B1,然后对条形码图像B1进行采样,得到六条采样曲线,记为Cj(j=1,2,...6);
(2.2)、获取条形码最小单位宽度及结束码标定
采用结束码定标法对Cj进行处理,获取条形码最小单位宽度,并定位结束码的位置;
(2.3)、采用动态阈值对条形码条空信息界定
将条形码最小单位宽度向上取整,再将取整后的值作为极值点搜索半径,根据采样曲线Cj找出所有极值点;
从采样曲线Cj的中间开始,依次向两边推进,计算当前位置的左右各一个峰谷值的均值,再取它们的平均值决定当前点的阈值应该为多少。当左或右的极值点不足时,这点的阈值就延续上一点的取值。这样依据动态阈值,再计算得到条形码各模块宽度信息;
(2.4)、条形码解码、容错及校验
(2.4.1)、在采样曲线Cj中,根据各模块宽度与最小单位宽度的比值得到一系列条空比例信息,再搜索定位起始码;
(2.4.2)、对起始码和终止码之间的条形码字元模块进行解码,依次固定取3个条及3个空,检查其是否符合条形码字元最小单位个数,若符合,则利用对应的映射表解码,然后进入步骤(2.4.3);若不符合,对该条形码字元模块进行纠错,依情况增加或降低对应模块的条空比例,再重新执行步骤(2.4.2);
(2.4.3)、对解码结果进行校验:
Figure BDA0001385526370000041
其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值
Figure BDA0001385526370000042
范围内选定新的动态阈值,重复上述(2.4.2)、(2.4.3),直至得到一个能成功解码的条形码。
本发明的发明目的是这样实现的:
本发明基于机器视觉的复杂背景下条形码分割与识读方法,通过利用条形码图像所具有的梯度方向的一致性特征,运用基于局部梯度信息融合的条形码分割方法将条形码从复杂背景下精确提取出来;而后对获得的条形码区域进行校正与采样,运用结束码定标的方法得到条形码最小单位宽度,再采用动态阈值法对条形码进行条空界定,最终进行条形码解码、容错和检验。
同时,本发明基于机器视觉的复杂背景下条形码分割与识读方法还具有以下有益效果:
(1)、本方法在条形码分割时,采用基于局部梯度信息融合的条形码分割方法,很好地排除了背景区域的干扰,提升了算法的鲁棒性和适应性;
(2)、本方法在条形码识别时,采用动态阈值的方法,一定程度上解决了光照不均匀的界限分割问题;
(3)、本方法能够在复杂背景图像中精确提取条形码图像以及光照条件不理想时依然保证识读成功。
附图说明
图1是本发明基于机器视觉的复杂背景下条形码分割与识读方法流程图;
图2是归一化后梯度幅值分块图;
图3是区域主方向方向投票图;
图4是经剔除后的patch聚类图;
图5是符合条形码特征的轮廓区域;
图6是条形码区域角度的搜索过程图;
图7是运用动态阈值进行条空界定。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明基于机器视觉的复杂背景下条形码分割与识读方法流程图。
在本实施例中,如图1所示,本发明一种基于机器视觉的复杂背景下条形码分割与识读方法,包括以下步骤:
S1、条形码分割
S1.1、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];
Figure BDA0001385526370000061
Figure BDA0001385526370000062
其中,C(x,y)表示(x,y)处像素值大小,Gx(x,y)表示(x,y)处x方向梯度值,Gy(x,y)表示(x,y)处y方向梯度值,G(x,y)表示(x,y)处近似梯度幅值,θ(x,y)表示(x,y)处梯度方向;
梯度幅值图T其归一化到[0,255]后如图2所示,计算整个灰度图中各像素点梯度幅值及所代表的梯度方向,得到梯度幅值图后进行归一化,然后选取合适的窗口大小,将梯度图分为n个patch;
S1.2、对梯度幅值图T进行分块,并进行梯度直方图统计
S1.2.1、设置大小为m*n的滑动窗口,m为滑动窗口的长,n为滑动窗口的宽;设置滑动步长step;
从梯度幅值图T的左上角顶点出发,以步长step滑动,每滑动一次得到一图像块patch,用符号Ip表示,p=1,2,…,L,L表示图像块的个数;每个patch的大小原则上应不小于条形码最粗条纹的宽度
S1.2.2、对L个patch进行梯度直方图统计;
在本实施例中,如图3所示,将梯度方向分成60个区域,每个区域跨度为3°,在某一个patch中,当某个像素点的梯度方向落在某一区域内,则判断像素点的梯度幅值μ是否小于阈值σ,σ一般取200;
如果μ<σ则该像素点不参与投票,如果μ>σ,则向该区域进行投票且票数加一,最后统计每个区域的投票结果,将票数最多的bin作为该patch的主方向角度;
同理,可以得到其余L-1个patch的主方向角度;
这样便形成了n×3特征矩阵,然后这些特征块中,筛选出满足的主方向特征,即对不满足主方向一定占比的块进行剔除,减小干扰。除此之外,为降低运算量,剔除这些孤立的无意义的特征块,因为对条形码特征块来说,其一定是一团方向较为一致的块特征;
S1.2.3、然后我们记录下各个patch的3维特征向量(x,y,θ),分别对应每个patch的x坐标、y坐标以及该patch的主方向角度;其中,(x,y)为该patch左上角顶点的坐标;然后对每一个patch,将各自patch主方向占比低于20%的剔除,最后对剩下的patch进行kmeans聚类,得到聚类图K。如图4所示,该图中(a)为原灰度图,(b)为符合主方向特征的所有patch,(c)为去除了孤立点的所有感兴趣patch,(d)为各patch根据特征向量聚类的结果,同一种颜色为一类;
S1.3、提取像素点图
S1.3.1、采用最大类间方差法对灰度图I进行二值化处理,得到二值化图像E;
S1.3.2、对二值化图像E进行轮廓查找操作;
在二值化图像E中,剔除掉面积小于阈值F的轮廓,然后对剩下的部分采用Graham扫描法进行凸包拟合,得到疑似包含条形码的轮廓区域S;
再根据轮廓区域S在聚类图K中找到相对应区域,得到该区域拓扑方向,再删除主梯度方向与区域拓扑方向不一致或区域包含聚为一类的patch数过少的区域,得到符合条形码特征的轮廓区域S1
最后根据轮廓区域S1在梯度幅值图T中找到相对应区域,处理这个区域所包含的每个patch,分别提取出每个patch内的像素点梯度值与该patch的主方向相差正负3°以内的像素点,构成像素点图,如图5所示,该图展示了在聚类图中依据条形码特征进行轮廓查找,最终精确定位到包含条形码的轮廓区域,再在梯度幅值图中该对应区域内提取出满足条件的像素点;
S1.4、角度精确搜索及条码区域细提取
S1.4.1、将像素点图在范围为[θ-δ,θ+δ]内按每个角度进行校正,δ为常数,得到像素分布为近似水平的多张校正图像,再分别进行水平投影;
然后计算各水平投影的一阶梯度,选取一阶梯度值最大的水平投影所对应的旋转角度作为最终条形码的精确角度β;
图6展示了条形码区域所对应的主方向角度的搜索过程,该图中展示了条形码图像的角度细搜索,从4°~14°分别计算了从以上获得的条形码点集往纵轴投影的结果,从理论上来说,正确角度所对应的条形码投影图像越陡,分布越窄,并且其一阶梯度也就越大。所以根据该图可判断,条形码的精确角度应该是12°,此处的角度所表示的是条形码黑条纹理所对应的角度,顺时针为正,范围[0,180]。
S1.4.2、根据精确角度β对各像素点进行映射,使各像素点组成的条形码块拓扑呈水平,再根据自适应的横向膨胀系数,采用具有纵向约束的膨胀算法将各孤立的像素连接起来形成条形码块,同时不会在纵向上与条形码上的一些文字信息粘连,达到纯净提取的目的;
然后对条形码块进行最小外接矩形求取,并根据最小外接矩形的四个顶点信息及精确角度β进行逆向仿射变换,找到四个顶点的初始位置,从而求出灰度图I中条形码的位置,并标记出条形码图像B;
S2、条形码识读
S2.1、条形码区域校正及采样
为方便采样以及获得较为准确的参考阈值,需要将各种角度下的条形码定位结果转换为水平状态,本实施例中,采用仿射变换的方法将条形码图像B校正为水平状态,再对校正后的条形码图像进行双线性插值,得到条形码图像B1,然后对条形码图像B1进行采样,得到六条采样曲线,记为Cj(j=1,2,...6);
其中,采用仿射变换的方法将条形码图像B校正为水平状态的过程为:首先求取各顶点仿射到目标图像的仿射变换矩阵,根据各点对应关系,由变换矩阵原理,从中选取任意3个点对,求得仿射变换矩阵H,H矩阵的形式如式:
Figure BDA0001385526370000081
其中,H是2×3矩阵,M是2×2矩阵,表示坐标的旋转与缩放,B是2×1矩阵,表示坐标的平移,所以坐标点(x,y)仿射变换后所得点(x′,y′)的计算公式如式:
Figure BDA0001385526370000091
经校正后的条形码图像为保证采样精度,对条形码图像进行插值,确保每个条空宽度至少在3个像素以上;
S2.2、获取条形码最小单位宽度及结束码标定
采用结束码定标法对Cj进行处理,获取条形码最小单位宽度,并定位结束码的位置;
其中,获取条形码最小单位宽度及定位结束码位置的具体方法为:
1)、从采样曲线Cj的尾端开始,以最大类间方差法的参考阈值ref为基准,利用亚像素宽度计算法切分出7个基于阈值跳变的宽度(Code128码的结束码为4个黑条、3个白空),再标记出第一个宽度的像素起始位置
Figure BDA0001385526370000092
及最后一个宽度的像素结束位置
Figure BDA0001385526370000093
τ=1,2,…,7;
那么,条形码最小单位宽度σ的计算公式为:
Figure BDA0001385526370000094
其中,Nstop为Code128结束码的最小单元数,为固定值13;
2)、在起始位置Pstart及结束位置Pstop内,按照范围为[ref-γ,ref+γ],以步进1为单位,重新分割结束码条空宽度,并计算该条空宽度与条形码最小单位宽度σ的比值,取比值与标准比率Ri之差Δ最小时,对应的分割值即为最佳阈值;
其中,Δ计算的计算公式为:
Figure BDA0001385526370000095
其中,di为Code128码结束码第i个条空的宽度,Ri为第i个条空的标准比率;
3)、根据最佳阈值分割获得的比率信息,验证是否符合Code128结束码特征,如果符合,则得到条形码最小单位宽度和结束码位置,否则跳过一个宽度,再返回步骤1);
S2.3、采用动态阈值对条形码条空信息界定
将条形码最小单位宽度向上取整,再将取整后的值作为极值点搜索半径,根据采样曲线Cj找出所有极值点;
从采样曲线Cj的中间开始,依次向两边推进,计算当前位置的左右各一个峰谷值的均值,再取它们的平均值决定当前点的阈值应该为多少。当左或右的极值点不足时,这点的阈值就延续上一点的取值。这样依据动态阈值,再计算得到条形码各模块宽度信息,如图7所示,在采样曲线上得到了一条动态阈值线,现在采样曲线上,从左至右,将大于等于此点阈值的记为1,显示为白色;将小于此点阈值的记为0,显示为黑色。这样,就得到了一系列条空,由这些条空的组合从而能得到条形码各模块宽度;
S2.4、条形码解码、容错及校验
S2.4.1、在采样曲线Cj中,根据各模块宽度与最小单位宽度的比值得到一系列条空比例信息,再搜索定位起始码;
S2.4.2、对起始码和终止码之间的条形码字元模块进行解码,依次固定取3个条及3个空(Code128码每个字元结构由3个黑条及3个白空组成,固定占11个最小单位),检查其是否符合条形码字元最小单位个数,若符合,则利用对应的映射表解码,然后进入步骤S2.4.3;若不符合,对该条形码字元模块进行纠错,依情况增加或降低对应模块的条空比例,再重新执行步骤S2.4.2;
S2.4.3、对解码结果进行校验:
Figure BDA0001385526370000101
其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值
Figure BDA0001385526370000102
范围内选定新的动态阈值,重复上述S2.4.2、S2.4.3,直至得到一个能成功解码的条形码。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

Claims (3)

1.一种基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,包括以下步骤:
(1)、条形码分割
(1.1)、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];
Figure FDA0002291085920000011
Figure FDA0002291085920000012
其中,C(x,y)表示(x,y)处像素值大小,Gx(x,y)表示(x,y)处x方向梯度值,Gy(x,y)表示(x,y)处y方向梯度值,G(x,y)表示(x,y)处近似梯度幅值,θ(x,y)表示(x,y)处梯度方向;
(1.2)、对梯度幅值图T进行分块,并进行梯度直方图统计
(1.2.1)、设置大小为m*n的滑动窗口,m为滑动窗口的长,n为滑动窗口的宽;设置滑动步长step;
从梯度幅值图T的左上角顶点出发,以步长step滑动,每滑动一次得到一图像块patch,用符号Ip表示,p=1,2,…,L,L表示图像块的个数;
(1.2.2)、对L个patch进行梯度直方图统计;
将所有梯度方向分为K个bin,即将梯度方向分成K个区域,每个区域跨度为θ',在某一个patch中,当某个像素点的梯度方向落在某一区域内,则判断像素点的梯度幅值μ是否小于阈值σ,如果μ<σ则该像素点不参与投票,如果μ>σ,则向该区域进行投票且票数加一,最后统计每个区域的投票结果,将票数最多的bin作为该patch的主方向角度,记为θ*
同理,可以得到其余L-1个patch的主方向角度;
(1.2.3)、记录下各个patch的3维特征向量(x,y,θ*),分别对应每个patch的x坐标、y坐标以及该patch的主方向角度;其中,(x,y)为该patch左上角顶点的坐标;然后对每一个patch,将各自patch主方向占比低于H%的剔除,H取值为20,最后对剩下的patch进行kmeans聚类,得到聚类图K;
(1.3)、提取像素点图
(1.3.1)、采用最大类间方差法对灰度图I进行二值化处理,得到二值化图像E;
(1.3.2)、对二值化图像E进行轮廓查找操作;
在二值化图像E中,剔除掉面积小于阈值F的轮廓,然后对剩下的部分采用Graham扫描法进行凸包拟合,得到疑似包含条形码的轮廓区域S;
再根据轮廓区域S在聚类图K中找到相对应区域,得到该区域拓扑方向,再删除主梯度方向与区域拓扑方向不一致或聚为一类的patch数小于一定阈值的区域,得到符合条形码特征的轮廓区域S1;
最后根据轮廓区域S1在梯度幅值图T中找到相对应区域,处理这个区域所包含的每个patch,分别提取出每个patch内的像素点梯度值与该patch的主方向相差正负3°以内的像素点,构成像素点图;
(1.4)、角度精确搜索及条码区域细提取
(1.4.1)、将像素点图在范围为[θ*-δ,θ*+δ]内按每个角度进行校正,δ为常数,得到像素分布为近似水平的多张校正图像,再分别进行水平投影;
然后计算各水平投影的一阶梯度,选取一阶梯度值最大的水平投影所对应的旋转角度作为最终条形码的精确角度β;
(1.4.2)、根据精确角度β对各像素点进行映射,使各像素点组成的条形码块拓扑呈水平,再根据自适应的横向膨胀系数,采用具有纵向约束的膨胀算法将各孤立的像素连接起来形成条形码块;
对条形码块进行最小外接矩形求取,并根据最小外接矩形的四个顶点信息及精确角度β进行逆向仿射变换,找到四个顶点的初始位置,从而求出灰度图I中条形码的位置,并标记出条形码图像B;
(2)、条形码识读
(2.1)、条形码区域校正及采样
采用仿射变换的方法将条形码图像B校正为水平状态,再对校正后的条形码图像进行双线性插值,得到条形码图像B1,然后对条形码图像B1进行采样,得到六条采样曲线,记为Cj(j=1,2,...6);
(2.2)、获取条形码最小单位宽度及结束码标定
采用结束码定标法对Cj进行处理,获取条形码最小单位宽度,并定位结束码的位置;
(2.3)、采用动态阈值对条形码条空信息界定
将条形码最小单位宽度向上取整,再将取整后的值作为极值点搜索半径,根据采样曲线Cj找出所有极值点;
从采样曲线Cj的中间开始,依次向两边推进,计算当前位置的左右各一个峰谷值的均值,再取它们的平均值来决定当前点的阈值;当左或右的极值点不足时,这点的阈值就延续上一点的取值;这样依据动态阈值,再计算得到条形码各模块宽度信息;
(2.4)、条形码解码、容错及校验
(2.4.1)、在采样曲线Cj中,根据各模块宽度与最小单位宽度的比值得到一系列条空比例信息,再搜索定位起始码;
(2.4.2)、对起始码和终止码之间的条形码字元模块进行解码,依次固定取3个条及3个空,检查其是否符合条形码字元最小单位个数,若符合,则利用对应的映射表解码,然后进入步骤(2.4.3);若不符合,对该条形码字元模块进行纠错,依情况增加或降低对应模块的条空比例,再重新执行步骤(2.4.2);
(2.4.3)、对解码结果进行校验:
Figure FDA0002291085920000031
其中,Ids为起始码ID值,Idr为第r个字元的ID值,r=1,2,…,k,k为字元个数,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值
Figure FDA0002291085920000032
范围内选定新的动态阈值,重复上述(2.4.2)、(2.4.3),直至得到一个能成功解码的条形码。
2.根据权利要求1所述的基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,所述的滑动窗口的大小不小于条形码最粗条纹宽度的平方。
3.根据权利要求1所述的基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,所述的获取条形码最小单位宽度及定位结束码位置的具体方法为:
(3.1)、从采样曲线Cj的尾端开始,以最大类间方差法的参考阈值ref为基准,利用亚像素宽度计算法切分出7个基于阈值跳变的宽度,再标记出第一个宽度的像素起始位置
Figure FDA0002291085920000041
及最后一个宽度的像素结束位置
Figure FDA0002291085920000042
那么,条形码最小单位宽度
Figure FDA0002291085920000043
的计算公式为:
Figure FDA0002291085920000044
其中,Nstop为Code128结束码的最小单元数;
(3.2)、在起始位置
Figure FDA0002291085920000045
及结束位置
Figure FDA0002291085920000046
内,按照范围为[ref-γ,ref+γ],以步进1为单位,重新分割结束码条空宽度,并计算该条空宽度与条形码最小单位宽度
Figure FDA0002291085920000047
的比值,取比值与标准比率Ri之差Δ最小时,对应的分割值即为最佳阈值;
其中,Δ计算的计算公式为:
Figure FDA0002291085920000048
其中,di为Code128码结束码第i个条空的宽度,Ri为第i个条空的标准比率;
(3.3)、根据最佳阈值分割获得的比率信息,验证是否符合Code128结束码特征,如果符合,则得到条形码最小单位宽度和结束码位置,否则跳过一个宽度,再返回步骤(3.1)。
CN201710723748.8A 2017-08-22 2017-08-22 一种基于机器视觉的复杂背景下条形码分割与识读方法 Active CN107633192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710723748.8A CN107633192B (zh) 2017-08-22 2017-08-22 一种基于机器视觉的复杂背景下条形码分割与识读方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710723748.8A CN107633192B (zh) 2017-08-22 2017-08-22 一种基于机器视觉的复杂背景下条形码分割与识读方法

Publications (2)

Publication Number Publication Date
CN107633192A CN107633192A (zh) 2018-01-26
CN107633192B true CN107633192B (zh) 2020-05-26

Family

ID=61100935

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710723748.8A Active CN107633192B (zh) 2017-08-22 2017-08-22 一种基于机器视觉的复杂背景下条形码分割与识读方法

Country Status (1)

Country Link
CN (1) CN107633192B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109190434B (zh) * 2018-06-25 2021-08-24 广东工业大学 一种基于亚像素级角点检测的条码识别算法
CN109583535B (zh) * 2018-11-29 2023-04-18 中国人民解放军国防科技大学 一种基于视觉的物流条形码检测方法、可读存储介质
CN109405790B (zh) * 2018-12-14 2021-04-02 北京无线电测量研究所 一种用于伺服传动系统的角度测量方法和系统
CN111582000B (zh) * 2019-02-19 2023-09-12 中科微至科技股份有限公司 一种条形码定位方法、装置及相关设备
CN111767750A (zh) * 2019-05-27 2020-10-13 北京沃东天骏信息技术有限公司 图像处理方法和装置
CN110245537B (zh) * 2019-05-28 2020-10-02 北京三快在线科技有限公司 图形码解码方法,装置,存储介质及电子设备
CN110490020B (zh) * 2019-07-31 2023-01-13 珠海市杰理科技股份有限公司 条码识别方法、装置、计算机设备和存储介质
CN110807342B (zh) * 2019-10-18 2023-08-11 珠海市杰理科技股份有限公司 条形码定位方法、装置、计算机设备和存储介质
CN110780849B (zh) * 2019-10-29 2021-11-30 中昊芯英(杭州)科技有限公司 矩阵处理方法、装置、设备及计算机可读存储介质
CN111581999A (zh) * 2020-05-13 2020-08-25 上海浩创亘永科技有限公司 用于商品扫码的方法、设备、存储介质和指环式扫描器
CN111597853B (zh) * 2020-05-26 2023-02-24 成都鹏业软件股份有限公司 一种混凝土标识提取方法
CN111652233B (zh) * 2020-06-03 2023-04-25 哈尔滨工业大学(威海) 一种针对复杂背景的文本验证码自动识别方法
CN114462440A (zh) * 2022-02-14 2022-05-10 浙江华睿科技股份有限公司 对象位置的确定方法及装置
CN114882370A (zh) * 2022-07-07 2022-08-09 西安超嗨网络科技有限公司 商品智能识别方法、装置、终端及存储介质
CN117574930B (zh) * 2024-01-15 2024-04-12 北京航空航天大学杭州创新研究院 立体条形码信息生成方法、装置、电子设备和可读介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102136058A (zh) * 2011-04-26 2011-07-27 中国农业大学 条形码图像识别方法
CN102346850A (zh) * 2011-10-13 2012-02-08 西北工业大学 复杂金属背景下DataMatrix条码区域定位方法
CN102799850A (zh) * 2012-06-30 2012-11-28 北京百度网讯科技有限公司 一种条形码识别方法和装置
CN105956509A (zh) * 2016-04-26 2016-09-21 昂纳自动化技术(深圳)有限公司 基于聚类算法的一维条码检测的方法及装置
CN107025639A (zh) * 2017-04-05 2017-08-08 中科微至智能制造科技江苏有限公司 一种复杂环境下的条码定位方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1182604A1 (en) * 2000-08-22 2002-02-27 Setrix AG Method and apparatus for reading a bar code
JP5379626B2 (ja) * 2009-09-29 2013-12-25 日本電産サンキョー株式会社 スタック型バーコード情報読取方法及びスタック型バーコード情報読取装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102136058A (zh) * 2011-04-26 2011-07-27 中国农业大学 条形码图像识别方法
CN102346850A (zh) * 2011-10-13 2012-02-08 西北工业大学 复杂金属背景下DataMatrix条码区域定位方法
CN102799850A (zh) * 2012-06-30 2012-11-28 北京百度网讯科技有限公司 一种条形码识别方法和装置
CN105956509A (zh) * 2016-04-26 2016-09-21 昂纳自动化技术(深圳)有限公司 基于聚类算法的一维条码检测的方法及装置
CN107025639A (zh) * 2017-04-05 2017-08-08 中科微至智能制造科技江苏有限公司 一种复杂环境下的条码定位方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
复杂背景下一维条形码定位算法研究;陈俊名;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215;全文 *

Also Published As

Publication number Publication date
CN107633192A (zh) 2018-01-26

Similar Documents

Publication Publication Date Title
CN107633192B (zh) 一种基于机器视觉的复杂背景下条形码分割与识读方法
CN110866924B (zh) 一种线结构光中心线提取方法及存储介质
CN108388896B (zh) 一种基于动态时序卷积神经网络的车牌识别方法
US10095903B2 (en) Block decoding method and system for two-dimensional code
CN108764229B (zh) 一种基于计算机视觉技术的水尺图像自动识别方法
CN109409374B (zh) 一种基于联合的同批次试卷答案区域切割方法
CN108920992B (zh) 一种基于深度学习的医药标签条码的定位与识别方法
CN105989317B (zh) 一种二维码的识别方法及装置
CN112651968B (zh) 一种基于深度信息的木板形变与凹坑检测方法
CN110647795A (zh) 一种表格识别方法
CN112233116B (zh) 基于邻域决策与灰度共生矩阵描述的凹凸痕视觉检测方法
CN108256375B (zh) 一种一维条形码扫描方法
CN109190434B (zh) 一种基于亚像素级角点检测的条码识别算法
CN111368573A (zh) 一种基于几何特征约束的定位方法
CN116188544A (zh) 一种结合边缘特征的点云配准方法
CN111311497A (zh) 一种条形码图像角度校正方法和装置
CN111815725B (zh) 一种qr码区域定位方法
CN116862910B (zh) 基于自动化裁切生产的视觉检测方法
CN111931537B (zh) 一种颗粒状qr二维码定位方法
CN110969612B (zh) 二维码印刷缺陷检测方法
CN112818983A (zh) 一种利用图片相识度判断字符倒置的方法
CN112597868A (zh) 基于无定位点的试卷识别和矫正方法
CN112084804A (zh) 针对信息缺失条形码智能获取补足像素的工作方法
CN110263597B (zh) 一种快速准确的qr码校正方法及系统
CN112434543B (zh) 一种针对畸变彩色直接部件标记的图像重构方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant