[发明专利]一种基于机器视觉的复杂背景下条形码分割与识读方法有效
申请号: | 201710723748.8 | 申请日: | 2017-08-22 |
公开(公告)号: | CN107633192B | 公开(公告)日: | 2020-05-26 |
发明(设计)人: | 康波;王琳;庄孟雨;钱志敏;李云霞 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06K7/14 | 分类号: | G06K7/14;G06K9/34;G06K9/46 |
代理公司: | 成都行之专利代理事务所(普通合伙) 51220 | 代理人: | 温利平 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于机器视觉的复杂背景下条形码分割与识读方法,通过利用条形码图像所具有的梯度方向的一致性特征,运用基于局部梯度信息融合的条形码分割方法将条形码从复杂背景下精确提取出来;而后对获得的条形码区域进行校正与采样,运用结束码定标的方法得到条形码最小单位宽度,再采用动态阈值法对条形码进行条空界定,最终进行条形码解码、容错和检验。 | ||
搜索关键词: | 一种 基于 机器 视觉 复杂 背景 条形码 分割 方法 | ||
【主权项】:
一种基于机器视觉的复杂背景下条形码分割与识读方法,其特征在于,包括以下步骤:(1)、条形码分割(1.1)、计算灰度图I的梯度信息形成梯度幅值图T,并将其归一化到[0,255];Gx(x,y)=-C(x-1,y-1)+C(x+1,y-1)-2*C(x-1,y)+2*C(x+1,y)-C(x-1,y+1)+C(x+1,y+1)Gy(x,y)=-C(x-1,y-1)+C(x-1,y+1)-2*C(x,y-1)+2*C(x,y+1)-C(x+1,y-1)+C(x+1,y+1)]]>其中,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)、对解码结果进行校验:P=(Ids+Σr=1kIdr*r)%103]]>其中,Ids为起始码ID值,Idr为第r个字元的ID值,P为校验位的ID值;校验成功则解码成功,完成解码操作;若检验不成功,则需要在动态阈值范围内选定新的动态阈值,重复上述(2.4.2)、(2.4.3),直至得到一个能成功解码的条形码。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710723748.8/,转载请声明来源钻瓜专利网。
- 上一篇:条形码扫描检测方法
- 下一篇:一种手持式身份验证智能终端