基于高度参数的条码和数字协同识别物品的方法

文档序号:5080373阅读:321来源:国知局
专利名称:基于高度参数的条码和数字协同识别物品的方法
技术领域
本发明涉及一种基于高度参数的条码和数字协同识别物品的方法。
背景技术
近年来,在经济全球化的浪潮下,国际间的交流和合作不断的增强,国内外经济贸易联系日趋紧密,伴随而来的是大量物资需要在国际国内间流动。交通运输业的发展为大量物资流动提供了可能,但是如何高效的将货物按目的地分类发送却迫切需要自动化分拣设备的支持,单靠手工劳作是无法在短时间内完成成千上万件货物的分拣工作的。在邮政行业,包裹、信函的分拣是物流分拣的典型代表,我国每年大约有103.8亿件的信函,2.13亿件的特快专递(EMS),1.234亿件的包裹需要寄往各地。而以上海市分拣中心为例,它从事分拣工作的工作人员只有几百人,单靠人工是不可能完成每天将近10万件邮件分拣工作的,因此迫切需要高效率的自动化分拣设备。
由于一般包裹上都贴设有条形码和与条形码对应的数字编码,如何从拍摄地包裹图像中有效地定位条形码及数字编码并将两者识别出来成为自动分拣技术关键,同时由于流水线上的包裹运动速度快,体积大小又不一致,致使拍摄的图像的明暗、分辨率及图像畸变都不一致,这更增加了识别难度,因此如何解决根据物品图像识别物品的技术中存在的诸多难点实已成为本领域技术人员亟待解决的技术课题。

发明内容
本发明的目的在于提供一种基于高度参数的条码和数字协同识别物品的方法,以有效识别具有条形码和数字编码的物品,提高识别率及准确率。
为了达到上述目的,本发明提供的基于高度参数的条码和数字协同识别物品的方法应用于表面设置有条形码和数字编码的物品,且设于物品上的条形码和数字编码相互对应,其包括步骤1)拍摄待识别物品的图像,并记录所述待识别物品的高度,其中,所拍摄的图像包含有设置在所述待识别物品上的条形码及数字编码;2)采用基于块的条码分割算法定位所述图像中包含全部条形码的条码区域;3)采用基于梯度的条码识别算法识别所述条码区域包含的条形码以获得待识别物品的相关信息;4)若无法通过条形码获得所述待识别物品的相关信息,则根据记录的所述待识别物品的高度采用基于背景特征的数字区域分割算法定位所述图像中包含全部数字编码的数字区域;5)通过数字识别引擎识别所述数字区域包含的数字编码以获得待识别物品的相关信息。
其中,所述待识别的物品为邮政包裹,所述步骤2)包括步骤(1)采用网格将所述图像分为多个子块;(2)按照预定的选择性原则对所述多个子块进行有选择性的扫描以获得各被扫描过的子块的灰度对比度及灰度梯度,并根据所述灰度对比度及灰度梯度判断各被扫描过的子块是否包含条形码;(3)将包含条形码且相邻的各子块连通以形成条码区域;(4)根据所述条码区域的两端的位置确定相应条形码的倾斜度,所述步骤(2)包括步骤I)采用隔行隔块方式扫描所述多个子块以获得各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码;II)对包含条形码的子块的邻近子块进行扫描以获得相应各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码,所述步骤I)及步骤II)进一步包括步骤(I)、在扫描过程中记录各被扫描的子块包含的像素点的灰度值;(II)、根据预设的亮度阈值及各像素点的灰度值将同一各被扫描的子块包含的像素点分为明暗两部分,并计算各被扫描的子块包含的明暗两部分的灰度均值;(III)、根据各明暗两部分的灰度均值计算出相应各被扫描的子块的对比度;(IV)、判断各被扫描的子块的对比度是否大于预设的对比度阈值;(V)、对各被扫描的子块的对比度大于预设的对比度阈值的被扫描的子块采用水平和垂直方向各两条线进行扫描,并记录各扫描线上的各像素点的灰度值;(VI)、根据各像点的灰度值计算相邻像点的灰度梯度;(VII)、根据各灰度梯度确定各被扫描的子块是否包含条形码,所述步骤(4)还包括根据预设的斜率补偿值对所述倾斜度进行补偿的步骤。
再有,所述步骤3)包括步骤(1)根据所述倾斜度采用对应方向的扫描线对所述条形码进行扫描,并记录经扫描的各像素点的灰度值;(2)计算相邻像素点的灰度值的二阶差分值以定位所述条形码的起始位置;(3)根据所述起始位置采用二阶差分算法识别所述条形码包含的信息,所述步骤4)包括步骤(1)将所述图像按预定比例缩小;(2)根据所记录的待识别物品的高度以及欲使用的线性扫描的频率将缩小后的图像分成相应的子区;(3)采用水平和垂直方向各两条线对各子区进行线性扫描,并记录各子区包含的像素点的灰度值;(4)根据各像素点的灰度值计算相应各子区的灰度阈值;(5)根据各子区的灰度阈值及相应各子区的像素点的灰度值将各子区二值化;(6)根据各子区二值化的结果将相应子区连通以获得各连通区;(7)根据各连通区包含的子区数目及相应的连通边界位置定位数字区域,所述步骤5)包括步骤(1)根据所述数字区域的两端的位置确定所述数字区域的斜率;(2)根据所述数字区域的斜率将所述数字区域校正至水平位置;(3)将校正后的数字区域进行二值化以分割出各单个字符;(4)通过数字识别引擎识别所述各单个字符。
综上所述,本发明的基于高度参数的条码和数字协同识别物品的方法通过将条形码的识别与数字编码的识别相结合,实现识别率和准确率的提高,同时还能弥补由于图像采样不全及图像畸变严重等造成的缺陷。


图1为本发明的基于高度参数的条码和数字协同识别物品的方法的操作流程示意图。
图2为本发明的基于高度参数的条码和数字协同识别物品的方法拍摄的包裹图像示意图。
图3为本发明的基于高度参数的条码和数字协同识别物品的方法将图像分为子块的示意图。
图4为本发明的基于高度参数的条码和数字协同识别物品的方法形成的连通域示意图。
图5a至5c为本发明的基于高度参数的条码和数字协同识别物品的方法的不同子区的灰度直方图。
图6为本发明的基于高度参数的条码和数字协同识别物品的方法的搜索条形码区域的结果示意图。
图7为本发明的基于高度参数的条码和数字协同识别物品的方法的计算出的倾斜度与图像条形码比较示意图。
图8为本发明的基于高度参数的条码和数字协同识别物品的方法的条形码扫描方向示意图。
图9a和9b为本发明的基于高度参数的条码和数字协同识别物品的方法的不同角度条形码的邻域图。
图10为本发明的基于高度参数的条码和数字协同识别物品的方法的采用的一条形码示意图。
图11为本发明的基于高度参数的条码和数字协同识别物品的方法的条形码起始位置搜索流程示意图。
图12为本发明的基于高度参数的条码和数字协同识别物品的方法的将图像分为子区的示意图。
图13a和图13b分别为本发明的基于高度参数的条码和数字协同识别物品的方法的物品的原始图像及失真图像。
具体实施例方式
请参见图1,本发明的基于高度参数的条码和数字协同识别物品的方法应用于识别表面设置有条形码和数字编码的物品,且设于物品上的条形码和数字编码相互对应,例如,其用于对高度不一的邮政包裹图像上的分拣信息的识别处理,其主要包括以下步骤步骤S10即拍摄待识别物品的图像,并记录所述待识别物品的高度,其中,所拍摄的图像包含有设置在所述待识别物品上的条形码及数字编码,对于邮政包裹,特别是EMS包裹,其包裹单上都具有39码,每个包裹都有一个唯一的39码,该39码信息表明了相应包裹的收信地址、包裹发信地址等信息,通常EMS单子上有三处地方反应了39码信息一是EMS单子右上角的39码条码图像,对其译码可以得到39码信息;二是39码每个码字边上的数字,它即是39码的译码结果;三是EMS单子左下角的白色底框中的一串数字,它也是39码的译码结果,因此在本实施方式中,拍摄了流水线上的一EMS包裹的图像,且记录了该EMS包裹的高度为8cm,显然,该图像中会包含有条形码和数字编码,请参见图2,其为拍摄的倒置的包裹示意图,该图中的包裹包括左下角的条形码和右上角的数字编码EC1427222996CN,灰色区域为背景。
步骤S11采用基于块的条码分割算法定位所述图像中包含全部条形码的条码区域,该步骤的核心思想是把灰度图像按网格分成若干个小块,再根据每个小块的梯度等特征筛选出可能包含条码的块,然后对小块进行合并和补偿,检测出条码所在的位置,同时根据条码块的分布信息,计算出条码的倾斜角度,以确定条码识别时的扫描方向,因此本步骤进一步包括以下步骤1、采用网格将所述图像分为多个子块,通常对于拍摄到的一副4096像素(pixels)*4096pixels的图像,EMS39码的条码区域的大小约为60pixels*500pixels,因此可采用24*24网格将该图像分为大约28900个子块。
2、按照预定的选择性原则对所述多个子块进行有选择性的扫描以获得各被扫描过的子块的灰度对比度及灰度梯度,并根据所述灰度对比度及灰度梯度判断各被扫描过的子块是否包含条形码,根据前述可知,条码区域只是整个图像区域中很小的一部分,约为千分之二,如果对每个子块都进行扫描处理,不仅计算量大而且将浪费绝大多数时间在非条形码区域,为实现实时性的目的,采用隔行隔块扫描所述多个子块的原则,相应被扫描的子块即为处于奇数行的奇数块,请参见图3,对图中灰色子块进行扫描以获得各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码,在本实施方式中,经过扫描等处理(处理的步骤请容后陈述)得到子块1及子块2都包含条形码,接着再对包含条形码的子块的邻近子块进行扫描以获得相应各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码,即依次对子块1的邻近子块10至17共8个子块进行扫描判断,可判断出子块10至14也包含条形码,同时再对子块2的邻近子块14、20至26进行扫描判断,可判断出相应子块14、20至23也包含条形码,对各子块的扫描判断步骤容后陈述,该种扫描方式的好处在于使条性码检测的算法的复杂度从O(n)降低到了O(n/4),同时又能确保必定能够扫描到条码区域,因为条形码区域的宽度为60 pixels,虽然仅仅对24*24的子块进行扫描,但每一被扫描过的子块与邻近的三个子块组成的大块的大小为48*48,其宽度仍小于条码区域的宽度,因此若48*48的大块为条形码区域的一部分,显然仅仅扫描其中部分也能将其确定为包含条形码的子块,同时为了准确定位条形码区域,当扫描后确定其中某一子块为包含条形码的子块,又进一步对其邻近的8个子块逐块进行条码检测处理,如果8子块中的某个子块包含条码,同样其会被标记为条码块。这样确保了搜索到了图像中每个含有条码的块,而且处理时间比扫描每个子块的处理时间减少了将近3倍。
以下将对各被选择的子块进行扫描等处理的具体处理步骤进行详细说明,其具体包括以下步骤(I)、在扫描过程中记录各被扫描的子块包含的像素点的灰度值。
(II)、根据预设的亮度阈值及各像素点的灰度值将同一被扫描的子块包含的像素点分为明暗两部分,并计算各被扫描的子块包含的明暗两部分的灰度均值,在本实施方式中,设ni为图像中灰度值为i的像素的个数,N为图像中像素总数,则可计算出比例Pi=niN(i=0,1,...255),]]>若亮度阈值为T,则相应可得出图像中较暗像素的灰度均值为g-dark=Σi=0T-1iLiΣi=0T-1Li]]>其中,Li为灰度值为i的像素点数,较亮像素的灰度均值为g-bright=Σi=T255iLiΣi=T255Li.]]>(III)、根据所述明暗两部分的灰度均值计算出各被扫描的子块的对比度,即子块Aij的对比度为明暗两部分灰度均值的差Contrast(Aij)=g-bright-g-dark.]]>(IV)、判断各被扫描的子块的对比度是否大于预设的对比度阈值,因为条形码是由黑的条和白的空组成,因此如果某一子块是条形码的一部分,那么这个子块具有明显的黑白反差。利用这一特性可以区分图像中灰度分布均匀的背景部分,即如果Contrast(Aij)小于某一阈值C,则该被扫描的子块必定为不含条形码区域,而对被扫描的子块的对比度大于预设的对比度阈值的子块,请参见图5a至图5c,其为几种子块灰度直方图的示意图,其中,图5a为子块包含的像素的灰度较为单一的情形,图5b为子块包含条形码的情形,图5c为子块包含文字的情形,由此可见,采用对比度的特征可以很好的把较为单一的背景色的子块筛选出来,但是并不能区分含有汉字和条码的子块因此只能作为条码块初步筛选的特征。
(V)、对各被扫描的子块的对比度大于预设的对比度阈值的子块,由于其可能为包含条形码的区域,也可能为包含数字的区域,因此进一步采用水平和垂直方向各两条线进行扫描,并记录各扫描线上的各像素点的灰度值,由于条形码由黑白交替的条和空组成,如果一条直线按条形码黑白交替的方向扫描,就会得到梯度上升和梯度下降的灰度值,但若条形码是倾斜的,如果仍采用单一方向的扫描线进行扫描,将难以确保扫描线恰好穿过条码黑白交替的方向,因此本发明采用采用水平和垂直方向各两条线进行扫描,且平行的两条扫描线之间的间隔大约为10pixel,它可以确保无论条形码图像以何种角度倾斜,至少有一条扫描线能穿过条码黑白交替的方向,使它的扫描方向上存在着明显的灰度梯度变化。
(VI)、根据各像点的灰度值计算相邻像点的灰度梯度,记同一扫描线上相邻像素点的灰度梯度记为 DiffDiff(ji)=mj(i+3)+mj(i+2)-mj(i+1)-mji,其中,mji是第j条扫描线第i个像素点的灰度值。
(VII)、根据各灰度梯度确定各被扫描的子块是否包含条形码,在本实施方式中,设定了Dif为梯度阈值,同时设定判决结果为Tri(ji)如果Diff(ji)>Dif,则令Tri(ji)=1否则若Diff(ji)<-Dif,则令Tri(ji)=-1若Dif≥Diff(ji)≥-DifTri(ji)=0由此,第j条扫描线上的梯度可由Tri(j)数组来表示,Tri(j)数组中点的值的物理意义是,连续的0表示图像灰度值变化不大,连续的1表示图像灰度值在不断变大,连续-1表示图像灰度值不断变小。对Tri(j)数组中值相同的连续点数进行统计,比如计算得到的Tri(j)数组为{0,0,0,0,0,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,1,0,0,0,0},如果用run表示连续点数,level表示相同点的值,统计的格式表示为{run,level},则对Tri(j)数组进行扫描可得到统计结果为{5,0}{5,1}{7,-1}{3,1}{4,0},设扫描结果中run的最大值为RUNmax,并设定阈值为Run,因为对于穿过条码黑白交替区域的扫描线,其灰度值必定不断在作变大和变小的交替变换,因此RUNmax的值不可能较大,由此即可根据梯度判断出确定各被扫描的子块是否包含条形码,判断方式为如果RUNmax<Run,则令R(j)=true;如果R(j)为true,那否则令R(j)=false么可判断出该子块是含有条形码的子块。由于采用了四条扫描线的扫描,因此可分别得到结果R(1),R(2),R(3),R(4),只要其中有一个值为true,那么就判定该子块区域是含有条形码的区域。
3、将包含条形码且相邻的各子块连通以形成条码区域,即将子块1、子块10至14相连通,将子块2子块14、及子块20至23相连通,可得到两个小的连通域,由于两个小的连通域具有公共的子块14,因此还可将两个小的连通域连通形成一各较大的连通域,请参见图6,由此可见,当对整幅图像扫描判断完成后,每个小的连通区域的参数将被记录在一个连通域的结构体数组中,一般来讲,条形码区域的连通域是图像当中最大的连通域,其他一些小的连通域都只有1~2个条码块组成,因此,可将具有最大条码子块数的连通域视为条形码区域。具体而言,若设某一个连通区域表示为L(k),k表示为图像上的第k个连通区域,则将L(k)中的每个子块标记k,同时把L(k)的左右、上下边界记为Ll(k),Lr(k),Lt(k),Lb(k),L(k)包含的块数记为Lnum(k),具有最大条码块数的连通域为条码区域为Lnum(m)=max(Lnum(1),Lnum(2)...Lnum(n)),同时根据Ll(m),Lr(m),Lt(m),Lb(m)即可知道条形码区域的大概位置。
4、根据所述条码区域的两端的位置确定相应条形码的倾斜度,对于初步确定的条形码区域L(m),需要进一步定位条形码的方向,以便于进行条码识别的扫描。通常条形码的方向大致的分为三种偏水平方向,即倾斜角度为0~45度,135~180度之间;偏垂直方向,即倾斜角度在45~90度,90~135度之间;垂直方向,即倾斜角度为90度。所以先对L(m)的条形码区域的倾斜角度进行一个预判,即如果Lr(m)-Ll(m)>Lb(m)-Lt(m),则条码偏水平方向,反之则偏垂直方向。对于偏水平方向的条码区域,在L(m)的区域内搜索x方向坐标为Ll(m),Ll(m)+1,Ll(m)+2的标志为k的子块,并记录搜索到的子块的坐标,计算其y方向坐标以像素为单位的平均值记为yl,而x方向的以像素为单位的坐标记为xl=(Ll(m)+1)*24,则条码左端点的坐标为(xl,yl),同理可计算出条码右端点的坐标(xr,yr),由此我们便可比较精确的得到条码的斜率ll=(yr-yl)/(xr-xl),xr≠xl∞,xr=xl,]]>若l=∞,则认为条形码是垂直的。由于39码的长度比较长,采用一个斜率并不能保证顺利扫描到整个条形码,因此,需在l的基础上向正、反两个方向进行旋转校正,得到两个校正斜率l+、l-l+=(yr-yl)/(xr-xl+ratio_offset),xr-xl+ratio_offset≠0∞,xr-xl+ratio_offset=0,]]>
l-=(yr-yl)/(xr-xl-ratio_offset),xr-xl-ratio_offset≠0∞,xr-xl-ratio_offset=0]]>其中ratio_offfset为预设的斜率补偿值,通过调整ratio_offset的值,可以变换斜率校正的范围。由此,可得到了一个条码的三个扫描斜率,请参见图7,其为实验所得的示意图,如图所示,图中条形码上的斜线条的斜率和条形码的斜率基本一致,通常三个扫描斜率中有至少一个斜率能扫描到整个条码图像的概率在98%以上,因此以上方法能够基本准确地获取条码的图像,同时它的算法复杂度为0(1),能够满足图像实时处理的要求。但是这种简单算法的缺陷在于它在很大程度上依赖于条形码块定位的好坏,需要说明的是,图7中的大块灰色区域为包裹图像的背景区域。
步骤S12采用基于梯度的条码识别算法识别所述条码区域包含的条形码以获得待识别物品的相关信息,请参见图8,若所述条码区域包含的条形码如图左下角所示,计算出的倾斜度如图中线条的斜率,为识别所述条形码具体可采用以下步骤1、根据所述倾斜度采用对应方向的扫描线对所述条形码进行扫描,并记录经扫描的各像素点的灰度值,由于条形码按倾斜的角度可分为三类偏水平方向,偏垂直方向和垂直方向。对于偏水平方向的条形码,沿x轴对条码进行扫描,若设扫描的起始点坐标为(x0,y0),斜率为l,扫描长度为n,则扫描点的坐标为(x,y)y=lx-lx0+y0,x0≤ x<x0+n;而对于偏垂直方向和垂直方向的条码,则沿y轴方向进行扫描,若设扫描的起始点坐标为(x0,y0),斜率的倒数为l-,扫描长度为n,则扫描点的坐标为(x,y)x=l-y-l-y0+x0,y0≤y<y0+n,扫描到像素点的灰度值依次放入数组buf[n]中,该数组便是我们扫描到的整条条码的像素灰度值,它数值大小的交替变化表示了条码的条、空的变化。由于扫描清晰度的影响,取单个像素点灰度值会存在的很大的不确定性,所以在本实施方式中,根据所述倾斜度取像素点及其邻域的两点的灰度值之和作为条形码扫描线上的值,请参见图9a,其为条形码呈水平时的示意图,所述条形码包括像素点31至39,显然像素点(32、35、38)和(33、36、39)即为条空的边界,若水平扫描线第i点扫描到了像素点5,则buf[i]应同时取像素点32和38的值来增强边缘,其为
buf[i]=(value(2)+value(5)+value(8))/3(1)其中,value(2)、value(5)、value(8)分别为像素点32、35、38的灰度值,而若条形码呈45度倾斜,如图9b所示,该条形码包括像素点41至49,则像素点(43、45、47)和(46、48)为条、空的边界,同样若扫描到像素点45,取像素点43和47来增强边缘,buf[i]的取值应为buf[i]=(value(3)+value(5)+value(7))/3(2)在本实施方式中,以倾斜度0.414(tg(22.5))为界分为两个区域,对于倾斜度小于0.414的按式(1)进行边缘增强,而倾斜度大于0.414的按式(2)进行边缘增强。由同样的方法可以对偏垂直方向的条码进行校正。根据上面的校正方法,取得扫描数据buf[n]能够准确的反应出条码的条、空变化及条、空的宽度,为条码识读提供了很好的基础,请参见图10,a1、a3、a5分别为窄条、窄条、宽条,a2、a4分别为宽空、窄空,通过前述算法计算出该条码的buf[n]的一组数据为238,a1(153 121 140),a2(209 249 252 252 227),a3(141 94 100),a4(154 171 160),a5(92 65 56 59 74),90……。
2、计算相邻像素点的灰度值的二阶差分值以定位所述条形码的起始位置,以ems39码为例,ems39码的起始码和终止码都是符号”*”,它的条码表示为窄条、宽空、窄条、窄空、宽条、窄空、宽条、窄空、窄条、宽空。该条码的一个特点是黑白变化的频率快,利用这个特点,如果相邻的像素点的差分大于某一阈值A(即一阶差分数值dbuf[i]=buf[i-1]-buf[i]有符合条、空宽度的连续两个由空到条的变化),并且这两个变化的位置的间隔大于某一个阈值,在本实施方式中,位置域值取15,那么当位置间隔小于15时,可认为这可能是条码的开始,然后从该点开始计算一个字符长度的二阶差分值tbuf[n](tbuf[i]=dbuf[i-1]-dbuf[i]),如果包含十个条空,并且译码结果为”*”,就认为找到了条码的开始字符,否则继续向后搜索下一个相邻像素点差分值大于A的两个像素点位置,直到找到”*”字符为止,如果不能找到”*”字符则搜索失败,具体搜索流程请参见图11,首先将一阶差分数组dbuf[i]-阀值a赋予dbuf[i],然后找到dbuf[i]数组中第一连续大于0的区间中最大值的像点坐标m和下一个连续大于0的区间中最大值的像点坐标n,接着判断n<m+15是否为真,若是,则以坐标m开始计算长度为k的二阶差分数组tbuf[k],其中,k=50,接着自tbuf[m]开始取tbuf[k]的10个拐点,并对10个拐点的数据进行译码,判断译码结果是否为“*”,若是则像点m即为条形码起始处,若译码结果不为“*”,则将n的值赋予m,然后继续搜索,此外,若计算出n<m+15为假,也返回重新进行开始搜索。
3、根据所述起始位置采用二阶差分算法识别所述条形码包含的信息,由于图像的颜色变化总是一个渐变的过程,对于记录的buf[n],其中buf
为238是条码起始点的前一点数值,对于每一个空a2、a4,它的数值都有一个小→大、大→小的变化,而对于每个条a1、a3、a5的数值都有一个大→小、小→大的变化;而条和空之间有一个小→大的变化,空和条之间有一个大→小的变化。同时可发现,分处于相邻条、空的两个像素点的灰度变化幅度较在同一个条或空中的相邻像素点的灰度变化幅度大。由此可知该组数的一阶差分的拐点处正是条码的条、空边界。为了提高搜索速度,可通过求出该数组的二阶差分值,因为二阶差分值的正负交界处便是一阶差分的拐点处。下面是计算举例,设dbuf[n]、tbuf[n]分别为buf[n]的一阶差分数组和二阶差分数组,计算公式如下dbuf[i]=buf[i-1]-buf[i]tbuf[i]=dbuf[i-1]-dbuf[i]采用前述数值计算可得dbuf[n]的值分别为85 32 -29 -69 -40 -3 0 25 8637 -6 -54 -17 11 68 27 9 -3 - 15 -16,tbuf[n]的数值分别为x 63 6140 -29 -37 -3 -25 -41 49 41 48 -37 -28 -57 41 18 12 12 1,其中,x表示起始点,坐标为0,则条码的边界坐标很清晰的得到为0,3 8 11 1419,那么条码的宽度分别为3,5,3,3,5,若以3作为宽度的阈值,扫描到的条码应该是窄、宽、窄、窄、宽。
步骤S13若无法通过条形码获得所述待识别物品的相关信息,则根据记录的所述待识别物品的高度通过基于背景特征的数字区域分割算法定位所述图像中包含全部数字编码的数字区域,由于拍摄的图像污染太严重,或拍摄的物品图像不全,将会出现无法定位条码区域或不能识别所述条码区域包含的条形码,因此为提高识别率则进一步采用对图像中包含的数字编码进行定位识别,同时在本实施方式中,邮政包裹的数字编码区域的一个重要的特征是所有的字符是在一个白色底色,黑色边框围成的一个区域之内,且其是一个规则的长方形区域,根据这一个背景特征即可定位图像中的数字区域,具体步骤如下1、将所述图像按预定比例缩小,在本实施方式中,按1∶16的比例将原始图像缩小,一则可以减少运算量,再则还可以减少一些图像中的细线条对图像的干扰。
2、根据所记录的待识别物品的高度以及欲使用的线性扫描的频率采用相应尺寸的网格将缩小后的图像分成相应的子区。
3、采用水平和垂直方向各两条线对各子区进行线性扫描,并记录各子区包含的像素点的灰度值。
4、根据各像素点的灰度值计算相应各子区的灰度阈值,对于每条扫描线,可以根据其扫描后得到的像素点的灰度值求出各子区的灰度最大值和最小值Gmax和Gmin,四条扫描线扫描后得到的各子区的灰度最大值和最小值分别表示为G1max,G1min,G2max,G2min,G3max,G3min,G4max,G4min。在一般情况下总是能保证这四条扫描线中至少有一条扫描线能够扫描到字和白色底色,或EMS包裹图像中数字编码区域的黑色边框和白色底色,根据Gmax-Gmin小于某一个阈值可将只扫到同色的扫描线去除,在剩余的扫描线中,假设若仍为G1max,G1min,G2max,G2min,G3max,G3min,G4max,G4min,则相应子区的灰度阈值取值为G=βmax(G1min,G2min,G3min,G4min),其中,β为一小于1的系数。
5、根据各子区的灰度阈值及相应各子区的像素点的灰度值将各子区二值化,请参见图12,图中数字区域包含数字编码EC1427222996CN,图12中的大块灰色区域为包裹图像的背景区域,图像被分区后可见,子区A框外全黑,根据子区A的灰度阈值及像素点的灰度值将其二值化为1;子区B框边缘包含黑、白两种颜色,根据子区B的灰度阈值及像素点的灰度值将黑白两部分分别二值化为1和0;子区C框边缘包含黑色边界,根据子区C的灰度阈值及像素点的灰度值将黑色边界二值化为1,其他部分二值化为0;子区D包含数字和底色,属于数字区域的部分,根据子区C的灰度阈值及像素点的灰度值将数字及底色分别二值化为1和0。
6、根据各子区二值化的结果将相应子区连通以获得各连通区,即将二值化结果相同且邻近的部分相连通,最终可获得多个连通区。
7、根据各连通区包含的子区数目及相应的连通边界位置定位数字区域,由确定的各连通区可得到两个参数a、各连通区的包含的像素点数目;b、各连通区的上、下、左、右边界,在本实施方式中,由于需要定位的数字区域通常呈长方形状,所以通过对各连通区两个参数的处理确定所述数字区域的长度及宽度即可从各连通区中定位数字区域,但是需注意的是,由于包裹的高度不同,因此在拍摄的图像中所述数字区域的长度不仅与高度相关,还与包裹图像的倾斜角度有关,举例来说,在图像的采集过程中,对于一个水平方向固定长度的区域,即该区域的长与相机的线性CCD平行,那么该区域表现在像素点上的长度与物体的高度有关,从实际采集的图像结果可知道,该区域的长度约为600~1000pixels,物体与相机越近、长度越长。而对于同样的一个竖直区域,即该区域的长与相机的线性CCD垂直,由于扫描的行频一定,长度并不随物体的高度变化而变化,约为500个pixels。因此采集的图像相对原始图像而言即发生了失真。请参见图13a,其为原始图像中的数字区域的示意图,数字区域在水平方向长为oa,垂直方向长为ob,45度时为oc,未发生失真时有oa=ob=oc,且ocsin45=b/2=c/2,而当图像在采集以后则发生了失真,变成如图13b所示,数字区域水平时的长度为oa′,垂直时长度为ob′,而45度时长度为oc′,一般情况下oa′≠ob′≠oc′。由常理可以知道水平和垂直方向的失真是按照比例的缩放。因此oc′投影到y轴的长度为b′/2;投影到x轴的长度为a′/2;那么oc′的长度应为oc′=(a′)2/2+(b′)2/2,]]>在前述的处理中已经取得了各连通区的边界位置,分别为left、right、top、bottom。根据这几个参数的比较,可以粗略的得到连通区的倾斜方向,再通过上述的公式,计算可得各连通区的长度,根据长度及宽度信息即可定位所述数字区域。
步骤S14通过数字识别引擎识别所述数字区域包含的数字编码以获得待识别物品的相关信息,要识别出数字区域的数字编码,需要通过以下步骤进行识别处理1、根据所述数字区域的两端的位置确定所述数字区域的斜率,即连接首尾两个数字连通区的重心,就可以准确的判断出数字区域的斜率,在此不再多述。
2、根据所述数字区域的斜率将所述数字区域校正至水平位置,此为本领域技术人员所知悉的技术,在此不再详述。
3、将校正后的数字区域进行二值化以分割出各单个字符,二值化的处理方法及原理已经在前面进行过详细说明,故在此不再重述。
4、通过数字识别引擎识别所述各单个字符,数字识别技术也已是本领域的成熟技术,在此不再说明。需注意的是,数字区域同时还包括有字母,故数字识别引擎同时还能识别字母。
将本发明经过在某一EMS分拣中心实地测试,其中,测试样本采用实际包裹,测试平台的基本参数为包裹运动速度为2m/s,采集速度为3件包裹/s。
经过测试,获得的结果数据如下共测试包裹5440件,条码识别准确为4776件,条码拒识为664件,其中,符合质量并且包含条码的图像应有4807件,因此条码识读率约为99.4%,其中拒识图像中约有3%即163件是因为图像污损、残缺或不清晰,不能进行识别处理,剩余拒识的470件图像质量良好(至少包括数字区域),对其进行数字区域分割并识别,分割成功403件,识别成功368件。可见数字区域分割算法的成功率为85.7%,数字识读率为91.3%。
由上述数据可得,本发明的识读成功件数为5144,识读成功率为94.6%。
由于具有一定高度的包裹对图像采集和处理的要求更高,主要是焦距调节的范围相对较大,由于焦距较近,调焦精度也要求更精确;越高的物体他的水平分辨率和垂直分辨率的差异也越大,造成图像的失真也越严重;物体高度增加造成相机扫描范围减少。因此再对物体高度在10cm以上的物体进行了一次单独的测试,测试结果为总共测试样本931件,条码识别723件,数字区域分割成功116件,数字识别成功70件,因此识别率为85.2%。
综上所述,本发明的基于高度参数的条码和数字协同识别物品的方法采用对条形码和数字编码协同识别的方式可提高识别率和准确率,同时还能弥补由于图像采样不全及图像畸变严重等造成的缺陷,实现对物品识别的实时性,将其应用域邮政或物流的包裹分拣系统,基本能满足包裹分拣的需要,进而能提高分拣的效率。
权利要求
1.一种基于高度参数的条码和数字协同识别物品的方法,其应用于表面设置有条形码和数字编码的物品,且设于物品上的条形码和数字编码相互对应,所述基于高度参数的条码和数字协同识别物品的方法其特征在于包括步骤1)拍摄待识别物品的图像,并记录所述待识别物品的高度,其中,所拍摄的图像包含有设置在所述待识别物品上的条形码及数字编码;2)采用基于块的条码分割算法定位所述图像中包含全部条形码的条码区域;3)采用基于梯度的条码识别算法识别所述条码区域包含的条形码以获得待识别物品的相关信息;4)若无法通过条形码获得所述待识别物品的相关信息,则根据记录的所述待识别物品的高度采用基于背景特征的数字区域分割算法定位所述图像中包含全部数字编码的数字区域;5)通过数字识别引擎识别所述数字区域包含的数字编码以获得待识别物品的相关信息。
2.如权利要求1所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述待识别的物品为邮政包裹。
3.如权利要求1所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤2)包括步骤(1)采用网格将所述图像分为多个子块;(2)按照预定的选择性原则对所述多个子块进行有选择性的扫描以获得个被扫描过的子块的灰度对比度及灰度梯度,并根据所述灰度对比度及灰度梯度判断各被扫描过的子块是否包含条形码;(3)将包含条形码且相邻的各子块相互连通以形成条码区域;(4)根据所述条码区域的两端的位置确定相应条形码的倾斜度。
4.如权利要求3所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤(2)进一步包括步骤I)采用隔行隔块方式扫描所述多个子块以获得各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码;II)对包含条形码的子块的邻近子块进行扫描以获得相应各被扫描过的子块的灰度对比度及灰度梯度,并根据所得到的灰度对比度及灰度梯度判断相应各被扫描过的子块是否包含条形码。
5.如权利要求4所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤I)及II)分别进一步包括以下步骤(I)、在扫描过程中记录各被扫描的子块包含的像素点的灰度值;(II)、根据预设的亮度阈值及各像素点的灰度值将同一各被扫描的子块包含的像素点分为明暗两部分,并计算各被扫描的子块包含的明暗两部分的灰度均值;(III)、根据各明暗两部分的灰度均值计算出相应各被扫描的子块的对比度;(IV)、判断各被扫描的子块的对比度是否大于预设的对比度阈值;(V)、对各被扫描的子块的对比度大于预设的对比度阈值的被扫描的子块采用水平和垂直方向各两条线进行扫描,并记录各扫描线上的各像素点的灰度值;(VI)、根据各像点的灰度值计算相邻像点的灰度梯度;(VII)、根据各灰度梯度确定各被扫描的子块是否包含条形码。
6.如权利要求3所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤(4)还包括根据预设的斜率补偿值对所述倾斜度进行补偿的步骤。
7.如权利要求3至6任一所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤3)包括步骤(1)根据所述倾斜度采用对应方向的扫描线对所述条形码进行扫描,并记录经扫描的各像素点的灰度值;(2)计算相邻像素点的灰度值的二阶差分值以定位所述条形码的起始位置;(3)根据所述起始位置采用二阶差分算法识别所述条形码包含的信息。
8.如权利要求1所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤4)包括步骤(1)将所述图像按预定比例缩小;(2)根据所记录的待识别物品的高度以及欲使用的线性扫描的频率采用网格将缩小后的图像分成相应的子区;(3)采用水平和垂直方向各两条线对各子区进行线性扫描,并记录各子区包含的像素点的灰度值;(4)根据各像素点的灰度值计算相应各子区的灰度阈值;(5)根据各子区的灰度阈值及相应各子区的像素点的灰度值将各子区二值化;(6)根据各子区二值化的结果将相应子区连通以获得各连通区;(7)根据各连通区包含的子区数目及相应的连通边界位置定位数字区域。
9.如权利要求8所述的基于高度参数的条码和数字协同识别物品的方法,其特征在于所述步骤5)包括步骤(1)根据所述数字区域的两端的位置确定所述数字区域的斜率;(2)根据所述数字区域的斜率将所述数字区域校正至水平位置;(3)将校正后的数字区域进行二值化以分割出各单个字符;(4)通过数字识别引擎识别所述各单个字符。
全文摘要
一种基于高度参数的条码和数字协同识别物品的方法,其在拍摄物品图像时记录物品的高度,在识别处理时,首先通过基于块的条码分割算法和基于背景特征的数字区域分割算法定位图像的条码和数字区域,再通过基于梯度的条形码识别算法识别条形码,对于无法识别的条形码再通过数字识别引擎进行数字识别,最后通过条形码识别结果和数字识别结果的互补取得最终识别结果,本发明通过采用高度参数,有效解决了较大背景灰度差异和分辨率差异图像的识别问题,采用不同识别算法。可很好解决复杂背景中条形码和数字编码区域定位及斜率校正问题,同时通过数字和条形码的协同识别提高了识别率及准确率,弥补了由于图像采样不全及畸变严重等造成的缺陷。
文档编号B07C3/10GK101093547SQ20071004091
公开日2007年12月26日 申请日期2007年5月18日 优先权日2007年5月18日
发明者范生淼 申请人:上海邮政科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1