CN107633192A - 一种基于机器视觉的复杂背景下条形码分割与识读方法 - Google Patents
一种基于机器视觉的复杂背景下条形码分割与识读方法 Download PDFInfo
- Publication number
- CN107633192A CN107633192A CN201710723748.8A CN201710723748A CN107633192A CN 107633192 A CN107633192 A CN 107633192A CN 201710723748 A CN201710723748 A CN 201710723748A CN 107633192 A CN107633192 A CN 107633192A
- Authority
- CN
- China
- Prior art keywords
- bar code
- patch
- mrow
- msub
- width
- 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.)
- Granted
Links
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种基于机器视觉的复杂背景下条形码分割与识读方法,通过利用条形码图像所具有的梯度方向的一致性特征,运用基于局部梯度信息融合的条形码分割方法将条形码从复杂背景下精确提取出来;而后对获得的条形码区域进行校正与采样,运用结束码定标的方法得到条形码最小单位宽度,再采用动态阈值法对条形码进行条空界定,最终进行条形码解码、容错和检验。
Description
技术领域
本发明属于图像处理技术领域,更为具体地讲,涉及一种基于机器视觉的复杂背景下条形码分割与识读方法。
背景技术
条形码技术的广泛使用为不同国家和地区的贸易往来提供了统一且简便的语言,利用条形码的标识信息,很容易便可将其转化为可识的电子数据,从而达到快速读入的目的,也避免了手动输入容易出错的问题。一维条形码虽然表现形式、储存数据的方式各有不同,但其基本的特征是一致的,都是靠不同宽度的黑白相间的条纹组合来表示信息。在当前电子制造业中,条形码的读取主要还是通过人工手持传统的激光式条形码扫描器进行读取,这个虽然操作不复杂,但是工人的操作熟练度也会对扫描条形码效率有所影响,因为手持式条形码扫描器需要将激光线对准要扫描的条形码,有时候会需要多次调整扫描的方位、距离等才能正确将条形码扫出。尤其现在国内用工成本日益增加,生产线产量迫切提高的情况下,开发出基于数字图像的条形码解码方法迫在眉睫。
通过数字式图像的方式对条形码进行扫码,必然包括两个步骤:条形码的定位和条形码解码。尤其对于复杂背景如电路板、曝光不足、光照不均匀、电路板反光等条件下,条形码定位的效果好坏直接决定了最后是否能成功扫码。
条形码的定位经常会用到其几何形状、方向梯度、边缘方向、直方图这几大特征较为直观的定位做法便是将采集到的图像转换为灰度图,然后进行去噪操作、二值化,对得到的图像进行直线检测,得到众多平行直线。该方法虽然从理论上来说是较完善的,但实际效果极不稳定,不具备工业的应用价值。
在条形码识读方面,目前大多是基于在很好分割了条空界限的基础上所做的相关解码操作,然而根据不同的环境,不同的分割条形码条空界限的方法带来的效果大不相同,相关的研究相对较少。尤其在光照条件等不均匀的情况下,采用普通的固定阈值来确定条形码的条空界限就会存在问题,界限分割不正确将直接导致各宽度比例发生变化,最终导致解码失败。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于机器视觉的复杂背景下条形码分割与识读方法,具有较强的鲁棒性。
为实现上述发明目的,本发明一种基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,包括以下步骤:
(1)条形码分割
(1.1)、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];
其中,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)、对解码结果进行校验:
其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值范围内选定新的动态阈值,重复上述(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];
其中,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矩阵的形式如式:
其中,H是2×3矩阵,M是2×2矩阵,表示坐标的旋转与缩放,B是2×1矩阵,表示坐标的平移,所以坐标点(x,y)仿射变换后所得点(x′,y′)的计算公式如式:
经校正后的条形码图像为保证采样精度,对条形码图像进行插值,确保每个条空宽度至少在3个像素以上;
S2.2、获取条形码最小单位宽度及结束码标定
采用结束码定标法对Cj进行处理,获取条形码最小单位宽度,并定位结束码的位置;
其中,获取条形码最小单位宽度及定位结束码位置的具体方法为:
1)、从采样曲线Cj的尾端开始,以最大类间方差法的参考阈值ref为基准,利用亚像素宽度计算法切分出7个基于阈值跳变的宽度(Code128码的结束码为4个黑条、3个白空),再标记出第一个宽度的像素起始位置及最后一个宽度的像素结束位置τ=1,2,…,7;
那么,条形码最小单位宽度σ的计算公式为:
其中,Nstop为Code128结束码的最小单元数,为固定值13;
2)、在起始位置Pstart及结束位置Pstop内,按照范围为[ref-γ,ref+γ],以步进1为单位,重新分割结束码条空宽度,并计算该条空宽度与条形码最小单位宽度σ的比值,取比值与标准比率Ri之差Δ最小时,对应的分割值即为最佳阈值;
其中,Δ计算的计算公式为:
其中,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、对解码结果进行校验:
其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值范围内选定新的动态阈值,重复上述S2.4.2、S2.4.3,直至得到一个能成功解码的条形码。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (3)
1.一种基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,包括以下步骤:
(1)、条形码分割
(1.1)、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<msub>
<mi>G</mi>
<mi>x</mi>
</msub>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
<mo>=</mo>
<mo>-</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mo>+</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mo>-</mo>
<mn>2</mn>
<mo>*</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>+</mo>
<mn>2</mn>
<mo>*</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
<mo>-</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
<mo>+</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>G</mi>
<mi>y</mi>
</msub>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>)</mo>
<mo>=</mo>
<mo>-</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mo>+</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>-</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
<mo>-</mo>
<mn>2</mn>
<mo>*</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<mo>+</mo>
<mn>2</mn>
<mo>*</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>y</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
<mo>-</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>-</mo>
<mn>1</mn>
<mo>)</mo>
<mo>+</mo>
<mi>C</mi>
<mo>(</mo>
<mi>x</mi>
<mo>+</mo>
<mn>1</mn>
<mo>,</mo>
<mi>y</mi>
<mo>+</mo>
<mn>1</mn>
<mo>)</mo>
</mtd>
</mtr>
</mtable>
</mfenced>
其中,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%的剔除,最后对剩下的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)、在采样曲线C中,根据各模块宽度与最小单位宽度的比值得到一系列条空比例信息,再搜索定位起始码;
(2.4.2)、对起始码和终止码之间的条形码字元模块进行解码,依次固定取3个条及3个空,检查其是否符合条形码字元最小单位个数,若符合,则利用对应的映射表解码,然后进入步骤(2.4.3);若不符合,对该条形码字元模块进行纠错,依情况增加或降低对应模块的条空比例,再重新执行步骤(2.4.2);
(2.4.3)、对解码结果进行校验:
<mrow>
<mi>P</mi>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>Id</mi>
<mi>s</mi>
</msub>
<mo>+</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>r</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mi>k</mi>
</munderover>
<msub>
<mi>Id</mi>
<mi>r</mi>
</msub>
<mo>*</mo>
<mi>r</mi>
<mo>)</mo>
</mrow>
<mi>%</mi>
<mn>103</mn>
</mrow>
其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;
校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值范围内选定新的动态阈值,重复上述(2.4.2)、(2.4.3),直至得到一个能成功解码的条形码。
2.根据权利要求1所述的基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,所述的滑动窗口的大小不小于条形码最粗条纹宽度的平方。
3.根据权利要求1所述的基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,所述的获取条形码最小单位宽度及定位结束码位置的具体方法为:
(3.1)、从采样曲线Cj的尾端开始,以最大类间方差法的参考阈值ref为基准,利用亚像素宽度计算法切分出7个基于阈值跳变的宽度,再标记出第一个宽度的像素起始位置及最后一个宽度的像素结束位置τ=1,2,…,7;
那么,条形码最小单位宽度σ的计算公式为:
<mrow>
<mi>&sigma;</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo>|</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>o</mi>
<mi>p</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mi>P</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>a</mi>
<mi>r</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>|</mo>
</mrow>
<msub>
<mi>N</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>o</mi>
<mi>p</mi>
</mrow>
</msub>
</mfrac>
</mrow>
其中,Nstop为Code128结束码的最小单元数;
(3.2)、在起始位置Pstart及结束位置Pstop内,按照范围为[ref-γ,ref+γ],以步进1为单位,重新分割结束码条空宽度,并计算该条空宽度与条形码最小单位宽度σ的比值,取比值与标准比率Ri之差Δ最小时,对应的分割值即为最佳阈值;
其中,Δ计算的计算公式为:
<mrow>
<mi>&Delta;</mi>
<mo>=</mo>
<munderover>
<mo>&Sigma;</mo>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mn>7</mn>
</munderover>
<mo>|</mo>
<mfrac>
<msub>
<mi>d</mi>
<mi>i</mi>
</msub>
<mi>&sigma;</mi>
</mfrac>
<mo>-</mo>
<msub>
<mi>R</mi>
<mi>i</mi>
</msub>
<mo>|</mo>
</mrow>
其中,di为Code128码结束码第i个条空的宽度,Ri为第i个条空的标准比率;
(3.3)、根据最佳阈值分割获得的比率信息,验证是否符合Code128结束码特征,如果符合,则得到条形码最小单位宽度和结束码位置,否则跳过一个宽度,再返回步骤(3.1)。
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 true CN107633192A (zh) | 2018-01-26 |
CN107633192B 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) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190434A (zh) * | 2018-06-25 | 2019-01-11 | 广东工业大学 | 一种基于亚像素级角点检测的条码识别算法 |
CN109405790A (zh) * | 2018-12-14 | 2019-03-01 | 北京无线电测量研究所 | 一种用于伺服传动系统的角度测量方法和系统 |
CN109583535A (zh) * | 2018-11-29 | 2019-04-05 | 湖南视比特机器人有限公司 | 一种基于视觉的物流条形码检测方法、计算机程序 |
CN110245537A (zh) * | 2019-05-28 | 2019-09-17 | 北京三快在线科技有限公司 | 图形码解码方法,装置,存储介质及电子设备 |
CN110490020A (zh) * | 2019-07-31 | 2019-11-22 | 珠海市杰理科技股份有限公司 | 条码识别方法、装置、计算机设备和存储介质 |
CN110780849A (zh) * | 2019-10-29 | 2020-02-11 | 深圳芯英科技有限公司 | 矩阵处理方法、装置、设备及计算机可读存储介质 |
CN110807342A (zh) * | 2019-10-18 | 2020-02-18 | 珠海市杰理科技股份有限公司 | 条形码定位方法、装置、计算机设备和存储介质 |
CN111581999A (zh) * | 2020-05-13 | 2020-08-25 | 上海浩创亘永科技有限公司 | 用于商品扫码的方法、设备、存储介质和指环式扫描器 |
CN111582000A (zh) * | 2019-02-19 | 2020-08-25 | 中科院微电子研究所昆山分所 | 一种条形码定位方法、装置及相关设备 |
CN111597853A (zh) * | 2020-05-26 | 2020-08-28 | 成都鹏业软件股份有限公司 | 一种混凝土标识提取方法 |
CN111652233A (zh) * | 2020-06-03 | 2020-09-11 | 哈尔滨工业大学(威海) | 一种针对复杂背景的文本验证码自动识别方法 |
CN111767750A (zh) * | 2019-05-27 | 2020-10-13 | 北京沃东天骏信息技术有限公司 | 图像处理方法和装置 |
CN114462440A (zh) * | 2022-02-14 | 2022-05-10 | 浙江华睿科技股份有限公司 | 对象位置的确定方法及装置 |
CN114882370A (zh) * | 2022-07-07 | 2022-08-09 | 西安超嗨网络科技有限公司 | 商品智能识别方法、装置、终端及存储介质 |
CN117574930A (zh) * | 2024-01-15 | 2024-02-20 | 北京航空航天大学杭州创新研究院 | 立体条形码信息生成方法、装置、电子设备和可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020084330A1 (en) * | 2000-08-22 | 2002-07-04 | Ming-Yee Chiu | Method and apparatus for reading a bar code |
CN102136058A (zh) * | 2011-04-26 | 2011-07-27 | 中国农业大学 | 条形码图像识别方法 |
US20110233279A1 (en) * | 2009-09-29 | 2011-09-29 | Hiroshi Nakamura | Method and apparatus for reading stacked bar code information |
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 | 中科微至智能制造科技江苏有限公司 | 一种复杂环境下的条码定位方法 |
-
2017
- 2017-08-22 CN CN201710723748.8A patent/CN107633192B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020084330A1 (en) * | 2000-08-22 | 2002-07-04 | Ming-Yee Chiu | Method and apparatus for reading a bar code |
US20110233279A1 (en) * | 2009-09-29 | 2011-09-29 | Hiroshi Nakamura | Method and apparatus for reading stacked bar code information |
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)
Title |
---|
陈俊名: "复杂背景下一维条形码定位算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190434A (zh) * | 2018-06-25 | 2019-01-11 | 广东工业大学 | 一种基于亚像素级角点检测的条码识别算法 |
CN109583535A (zh) * | 2018-11-29 | 2019-04-05 | 湖南视比特机器人有限公司 | 一种基于视觉的物流条形码检测方法、计算机程序 |
CN109583535B (zh) * | 2018-11-29 | 2023-04-18 | 中国人民解放军国防科技大学 | 一种基于视觉的物流条形码检测方法、可读存储介质 |
CN109405790A (zh) * | 2018-12-14 | 2019-03-01 | 北京无线电测量研究所 | 一种用于伺服传动系统的角度测量方法和系统 |
CN111582000A (zh) * | 2019-02-19 | 2020-08-25 | 中科院微电子研究所昆山分所 | 一种条形码定位方法、装置及相关设备 |
CN111582000B (zh) * | 2019-02-19 | 2023-09-12 | 中科微至科技股份有限公司 | 一种条形码定位方法、装置及相关设备 |
CN111767750A (zh) * | 2019-05-27 | 2020-10-13 | 北京沃东天骏信息技术有限公司 | 图像处理方法和装置 |
CN110245537A (zh) * | 2019-05-28 | 2019-09-17 | 北京三快在线科技有限公司 | 图形码解码方法,装置,存储介质及电子设备 |
CN110490020A (zh) * | 2019-07-31 | 2019-11-22 | 珠海市杰理科技股份有限公司 | 条码识别方法、装置、计算机设备和存储介质 |
CN110490020B (zh) * | 2019-07-31 | 2023-01-13 | 珠海市杰理科技股份有限公司 | 条码识别方法、装置、计算机设备和存储介质 |
CN110807342A (zh) * | 2019-10-18 | 2020-02-18 | 珠海市杰理科技股份有限公司 | 条形码定位方法、装置、计算机设备和存储介质 |
CN110807342B (zh) * | 2019-10-18 | 2023-08-11 | 珠海市杰理科技股份有限公司 | 条形码定位方法、装置、计算机设备和存储介质 |
CN110780849A (zh) * | 2019-10-29 | 2020-02-11 | 深圳芯英科技有限公司 | 矩阵处理方法、装置、设备及计算机可读存储介质 |
CN111581999A (zh) * | 2020-05-13 | 2020-08-25 | 上海浩创亘永科技有限公司 | 用于商品扫码的方法、设备、存储介质和指环式扫描器 |
CN111597853B (zh) * | 2020-05-26 | 2023-02-24 | 成都鹏业软件股份有限公司 | 一种混凝土标识提取方法 |
CN111597853A (zh) * | 2020-05-26 | 2020-08-28 | 成都鹏业软件股份有限公司 | 一种混凝土标识提取方法 |
CN111652233A (zh) * | 2020-06-03 | 2020-09-11 | 哈尔滨工业大学(威海) | 一种针对复杂背景的文本验证码自动识别方法 |
CN114462440A (zh) * | 2022-02-14 | 2022-05-10 | 浙江华睿科技股份有限公司 | 对象位置的确定方法及装置 |
CN114882370A (zh) * | 2022-07-07 | 2022-08-09 | 西安超嗨网络科技有限公司 | 商品智能识别方法、装置、终端及存储介质 |
CN117574930A (zh) * | 2024-01-15 | 2024-02-20 | 北京航空航天大学杭州创新研究院 | 立体条形码信息生成方法、装置、电子设备和可读介质 |
CN117574930B (zh) * | 2024-01-15 | 2024-04-12 | 北京航空航天大学杭州创新研究院 | 立体条形码信息生成方法、装置、电子设备和可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107633192B (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107633192A (zh) | 一种基于机器视觉的复杂背景下条形码分割与识读方法 | |
EP3309704B1 (en) | Two-dimensional code partitioning and decoding method and system | |
CN110866924B (zh) | 一种线结构光中心线提取方法及存储介质 | |
CN104915949B (zh) | 一种结合点特征和线特征的图像匹配方法 | |
CN102799850B (zh) | 一种条形码识别方法和装置 | |
CN105009170B (zh) | 物体识别设备、方法和存储介质 | |
CN112651289B (zh) | 一种增值税普通发票智能识别与校验系统及其方法 | |
CN107609451A (zh) | 一种基于二维码的高精度视觉定位方法及系统 | |
CN111476109A (zh) | 票据处理方法、票据处理装置和计算机可读存储介质 | |
CN110647795A (zh) | 一种表格识别方法 | |
CN109284718A (zh) | 面向巡检机器人的变视角多仪表同时识别方法 | |
CN109948135A (zh) | 一种基于表格特征归一化图像的方法及设备 | |
CN116343228A (zh) | 一种水表智能读数方法及系统 | |
CN111368573A (zh) | 一种基于几何特征约束的定位方法 | |
CN116704516B (zh) | 一种用于水溶肥料包装的视觉检测方法 | |
CN111523342A (zh) | 一种复杂场景下的二维码检测和校正方法 | |
CN115082776A (zh) | 一种基于图像识别的电能表自动检测系统及方法 | |
CN115270839A (zh) | 一种基于PPYOLOv2模型的工业场景QR Code检测与识别方法 | |
CN114417904A (zh) | 一种基于深度学习的条形码识别方法及图书检索系统 | |
CN113095316B (zh) | 基于多级融合和角点偏移的图像旋转目标检测方法 | |
CN112837252A (zh) | 一种侧扫声呐条带图像公共覆盖区图像融合方法及系统 | |
CN112200822A (zh) | 表格重建方法、装置、计算机设备及存储介质 | |
CN108491747A (zh) | 一种融合图像后美化qr码的方法 | |
CN111950556A (zh) | 一种基于深度学习的号牌印刷质量检测方法 | |
CN116612265A (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 |