一种可同时识别一维条码和三段码字符的快递单识别方法与流程

文档序号:23756255发布日期:2021-01-29 17:05阅读:1190来源:国知局
一种可同时识别一维条码和三段码字符的快递单识别方法与流程

[0001]
本发明涉及分拣快递技术领域,特别涉及一种可同时识别一维条码和三段码字符的快递单识别方法。


背景技术:

[0002]
随着电子商务的发展,人们的消费习惯发生了巨大的变化,物流服务需求随之逐渐增加,这也推动着物流自动化水平不断提高。目前,国内物流行业货物的分拣只有在大的分拣中心才采用自动分拣方式,而小的分拣中心一般采用人工逐一对物流产品进行手动分拣的方式,效率低下,且可靠性不高,无法满足现在日益增长的物流量的需求。为了减少传统人工分拣快递所带来的分拣效率低、雇用成本大和损伤快递等缺点,对小型的自动快递件分拣系统的需求越来越迫切。
[0003]
通常,分拣快递的依据是自动或者人工识别快递单上的信息。这里,快递运单信息包括三段码字符(一般由印刷体数字和大写英文字母组成)和一维条形码,它们都标明了快递的发出所在地和接收所在地的代码,如图1所示。通常,国内大分拣中心的自动分拣都是依靠图像识别技术来识别一维条码,然而三段码字符也是需要识别的一个重要信息,但是目前几乎没有被使用。而且,小型分拣中心由于受到场地面积,成本的限制,目前大多数都是由人工识别快递单上的三段码字符。因此,研究如何同时识别一维条码和三段码字符,无论是对于大的分拣中心,还是小型的分拣站,都将是提高快递自动分拣效率的一个重要发展方向。


技术实现要素:

[0004]
为了解决背景技术提出的技术问题,本发明提供一种可同时识别一维条码和三段码字符的快递单识别方法,对具有复杂背景的快递面单图片进行倾斜角度矫正;对快递面单上的一维条形码进行定位;对快递面单上的三段码字符(以下简称三段码)进行定位与识别;所有算法整体识别速度小于150ms。
[0005]
为了达到上述目的,本发明采用以下技术方案实现:
[0006]
一种可同时识别一维条码和三段码字符的快递单识别方法,包括如下步骤:
[0007]
步骤一、快递面单的图像采集;每个快递件的面单朝上,摆在小车的正中,每台小车上仅放一个快递件;工业摄像头固定在距离小车平面上1.3~1.5米的高度上;当载着快递件的小车运动到指定位置时,抓拍一幅图像,并由以太网传输到工控机上;
[0008]
步骤二、快递面单的粗定位;
[0009]
首先,在采集到的图像上对快递单进行初步定位;通过对图像的二值化、形态学运算和轮廓计算,找到能够套紧轮廓的最大矩形;对该最大矩形所包含的图像做sobel边缘检测,并二值化后,计算边缘点的个数,如果边缘点的个数大于3000,则认为该最大矩形足够复杂,这一区域就是快递单的粗略位置;
[0010]
然后,利用防射变换对该最大矩形进行倾斜角度矫正,得到候选的待识别图像;这
个待识别区域仅仅是粗定位的结果,还需要进一步的倾斜角度矫正和运单信息定位;
[0011]
步骤三、快递面单的条形码矩形定位和倾斜角度矫正;
[0012]
处理过程包括sobel边缘检测、形态学运算、二值化、区域生长算法;
[0013]
1)首先用sobel算子对图像做水平和垂直方向上的边缘检测,再将两个结果相加,更好地突出图像中的边缘信息;结合条形码自身成条成块且分布密集的特点,先使用结构元素较大的(例如5个像素)形态学闭合运算让图像上的条码部分变成一个连通的区域,使得条码的特点更突出,再使用结构元素较小的(例如3个像素)形态学闭合运算去除图像上的一些简单的单线条的干扰;
[0014]
2)图像经过开闭运算后会出现很多细小的孔洞,会对后续运算产生干扰,因此进行了孔洞填充;
[0015]
3)根据填补孔洞后的图中的每个白色区域计算出它们的最小外包矩形,并得到每一个外包矩形的信息,信息包括矩形的四顶点坐标、倾斜角度和矩形区域内白色像素点个数;根据计算出的矩形倾斜角度统计出它们在0
°
~90
°
的分布,使用分布较为集中的角度,来进行初步的倾斜角度的矫正;
[0016]
4)在初步倾斜角度矫正后的图像里,条形码大约位于0度方向上或者90度方向上,且误差在正负10度范围内;分别在0度和90度方向上进行条形码候选矩形的筛选,确定条形码的最终位置和最终角度,再进行最后一次旋转,就得到了正向(0度)或者反向(180度)的精确分割后的条码定位图像,将分割好的条形码图片送给zbar识别函数进行识别;
[0017]
步骤四、多尺度下三段码字符定位
[0018]
1)首先,通过分析快递运单上的信息分布可以知道,三段码字符可能在条形码的上方或下方两个位置,因此以条形码的位置为基准,向上和向下两个方向分别来搜索三段码字符的位置,分别截取上下两部分图像做自适应二值化处理;
[0019]
2)然后针对这两幅图像中的所有白色部分,计算它们的最小外包矩形也就是轮廓,求出每一个轮廓的面积,然后对这些轮廓进行筛选,去掉矩形面积小于10个像素或者大于1200像素的轮廓;
[0020]
3)得到步骤2)里的矩形轮廓后,先在水平方向上进行计算即对所有矩形的高度进行概率分布统计,这里矩形的高度对应三段码数字的高度;因为快递单图像上的三段码数字高度,地址等其它文字高度都比较集中,把这些集中高度作为寻找的尺度;例如,在某一幅图像上,三段码数字高度是20像素,地址信息文字高度是15像素,则对所有矩形高度进行概率统计后,就会找到20和15这两个数值,也就是两个不同的尺度;然后分别在每个尺度上寻找字符矩形;三段码的每个数字矩形都是长方形,且集中分布在一行或者两行,根据这一特征,就可以准确定位到三段码了;
[0021]
有些快递面单上的条形码和三段码的相对角度是90度的关系,为了适应这一情况,上述算法在垂直方向上再进行一次,即对所有矩形的宽度进行概率分布统计,这里矩形的宽度对应三段码数字的高度;
[0022]
4)根据最后确定的三段码最终位置,将字符分割出来,送至cnn神经网进行识别;步骤五、三段码字符识别
[0023]
本次三段码字符识别采用tiny-cnn深度学习框架,包括输入层、卷积层、池化层和输出层;训练集为大于2万幅实际采集到的从快递面单上分割出来的字符灰度图像;
[0024]
输入层节点数量等于输入图像的宽度(18)*高度(18),共计324;卷积层1节点数为6*16*16;池化层1节点数为6*8*8;卷积层2节点数为12*6*6;池化层2节点数为12*3*3;全连接层节点数为120,输出层节点数量为10个阿拉伯数字、26个大写英文字母和一个连接符
“-”
的总和,共计37个。
[0025]
进一步地,所述的步骤五中,各个节点采用的激活函数为tanh函数,训练时epoch取值为100,其它参数均使用缺省参数。
[0026]
进一步地,所述的步骤五中,在送入神经网学习时,在分割字符时,由于尺度不同导致每个字符图像大小存在一定的差异,因此需要将输入的图片统一到同一尺寸,尺寸为18*18;识别时取置信度最大的字符值作为结果。
[0027]
进一步地,所述的步骤五中,在送入神经网学习时,在分割的字符中可能存在汉字和其它非字符图像,因此在识别时,不将其作为识别结果输出。
[0028]
进一步地,所述的步骤五中,在送入神经网学习时,由于数字“1”“0”和大写字母“i”“o”的特征非常接近,所以需要将“1”和“i”看成一类,“0”和“o”看成一类。
[0029]
与现有技术相比,本发明的有益效果是:
[0030]
1)本发明的一种可同时识别一维条码和三段码字符的快递单识别方法,对具有复杂背景的快递面单图片进行倾斜角度矫正;对快递面单上的一维条形码进行定位;对快递面单上的三段码字符(以下简称三段码)进行定位与识别;所有算法整体识别速度小于150ms。
[0031]
2)本发明为了适应快递面单图像的各种复杂背景,首次提出了统计矩形角度分布的方法计算快递面单倾斜角度,而其它相关技术多采用hough变换方法。所提出的方法从算法基本原理上比hough变换方法计算速度快。
[0032]
3)本发明首次提出了基于多尺度的三段码定位算法,可以对任意背景图像,任意倾斜角度,任意大小的三段码数字进行准确定位和识别。而其它技术或者采用人工标定三段码位置的方法,或者要求待识别图像本身是正面正向摆放。
附图说明
[0033]
图1是条形码和三段码示意图;
[0034]
图2-a是图像一的原始图和粗定位结果;
[0035]
图2-b是图像一的粗定位轮廓二值图;
[0036]
图2-c是图像二的原始图和粗定位结果;
[0037]
图2-d是图像二的粗定位轮廓二值图;
[0038]
图3-a是在图像一上截取的待识别区域;
[0039]
图3-b是在图像二上截取的待识别区域;
[0040]
图4-a是粗定位后待识别的灰度图;
[0041]
图4-b是带有细小孔洞图;
[0042]
图4-c是填补孔洞后的腐蚀去燥图;
[0043]
图5是倾斜角度校正后的运单图像;
[0044]
图6是条形码定位结果图;
[0045]
图7是条形码上方的二值化图;
[0046]
图8是条形码下方的二值化图;
[0047]
图9是条形码上方的矩形筛选图;
[0048]
图10是条形码下方的矩形筛选图;
[0049]
图11-a是水平方向第一组统计图;
[0050]
图11-b是水平方向第二组统计图;
[0051]
图11-c是垂直方向第一组统计图;
[0052]
图11-d是垂直方向第二组统计图;
[0053]
图12是三段码字符最终定位图;
[0054]
图13是cnn神经网络模型图;
[0055]
图14是cnn神经网络训练集图像;
[0056]
图15是结果展示图。
具体实施方式
[0057]
以下结合附图对本发明提供的具体实施方式进行详细说明。
[0058]
一种可同时识别一维条码和三段码字符的快递单识别方法,具体按如下步骤实现:
[0059]
步骤一、快递面单的图像采集
[0060]
每个快递件的面单朝上,摆在小车的正中,每台小车上仅放一个快递件。工业摄像头固定在距离小车平面1.3-1.5m的高度上。当载着快递件的小车运动到指定位置时,抓拍一幅图像,并由以太网传输到工控机上。
[0061]
步骤二、快递面单的粗定位
[0062]
1)首先,在采集到的图像上对快递单进行初步定位。通过对图像的二值化和形态学运算,找到能够套紧轮廓的最大矩形。对该最大矩形所包含的图像做sobel边缘检测,并二值化后,计算边缘点的个数,如果边缘点的个数大于3000,则认为该最大矩形足够复杂,这一区域就是快递单的粗略位置。如图2所示。其中,图2(a)和图2(b)时图像一的粗定位效果。图2(a)是原始的灰度图,经过预处理算法的筛选后,得到后得到图2(b)的白色区域,然后计算包裹着这一白色区域的最小矩形,得到在图2(a)上的白色矩形框。图2(c)和图2(d)是图像二的粗定位效果,与图像一结果不同的是,由于环境明暗程度或者快递包裹的自身材料问题,提取的图像可能是带有运单信息的包裹图像,但也认为找到了快递运单的粗略位置。
[0063]
2)然后,利用仿射变换得到候选的待识别图像,如图3所示。图3(a)和图3(b)分别是针对图像一和图像二的仿射变换结果。这里要注意的是,图3所示的待识别区域仅仅是粗定位的结果,还需要进一步的倾斜角度矫正和运单信息定位。
[0064]
步骤三、快递面单的条形码矩形定位和倾斜角度矫正
[0065]
在复杂背景下的快递运单图像中,我们用人眼可以快速地判断条形码所在的位置,很大部分原因是因为条形码本身黑白相间的特殊性,因此我们可以利用这一特点对图像进行初步地处理。处理过程包括sobel边缘检测、形态学运算、二值化、区域生长等算法。其中用sobel算子对图像做水平和垂直方向上的边缘检测,再将两个结果相加可以更好的突出图像中的边缘信息。结合条形码自身成条成块且分布密集的特点,先使用结构元素较
大的(例如5个像素)形态学闭合运算让图像上条码部分变成一个连通区域,使得条码的特点更突出,再使用结构元素较小的(例如3个像素)形态学闭合运算去除图像上的一些简单的单线条的干扰;此时的图像经过开闭运算后会出现很多细小的空洞,对后续计算产生将一定的干扰,因此需要填补孔洞。例如对其中的某一幅原始图像经过步骤二快递面单粗定位后得到的图像如图4(a)所示。对其做让条码矩形更突出的处理后得到图4(b),看到图4(b)里面由细小的孔洞,然后进行孔洞填充,得到图4(c)。
[0066]
然后根据图4(c)中的每个白色区域计算出它们的最小外包矩形,并得到每一个外包矩形的信息,信息包括矩形的四顶点坐标、倾斜角度和矩形区域内白色像素点个数。根据计算出的矩形倾斜角度统计出它们在0
°
~90
°
的分布,使用分布较为集中的角度,来校正倾斜的运单信息图像,倾斜角度校正后的运单信息图片如图5所示。
[0067]
在初步倾斜角度矫正后的图像里,条形码大约位于0度方向上或者90度方向上,且误差在正负10度范围内;分别在0度和90度方向上进行条形码候选矩形的筛选,确定条形码的最终位置和最终角度,再进行最后一次旋转,就得到了正向(0度)或者反向(180度)的精确分割后的条码定位图像,将分割好的条形码图片送给zbar识别函数进行识别,条形码的最终位置如图6所示。
[0068]
步骤四、多尺度下三段码字符定位
[0069]
快递运单上的三段码字符由0-9十个数字和26个英文字母组成。但在拍到的快递运单图片上可以看出,图像中在不同尺寸下的字符有很多种,我们带来大量的干扰,给识别带来了很大难度。因此我们采用了多尺度的方法来对三段码字符进行定位。
[0070]
首先,通过分析快运单上信息的分布我们可以知道,三段码字符可能在条形码的上方或下方两个位置,因此我们要以条形码的位置为基准,向上和向下两个方向分别来搜索三段码字符的位置,分别截取上下两部分图像做自适应二值化处理,效果图如图7与8所示。
[0071]
然后针对这两幅图像中的所有白色部分,计算它们的最小外包矩形也就是轮廓,求出每一个轮廓的面积,然后对这些轮廓进行筛选,去掉矩形面积小于10个像素或者大于1200像素的轮廓,轮廓筛选结果如图9与10所示。
[0072]
其次对这些得到的最小套紧矩形,先在水平方向上进行计算,也就是说对所有矩形的高度进行概率分布统计,这里矩形的高度对应三段码数字的高度;因为快递单图像上的三段码数字高度和地址等其它文字高度不同,但高度数值都比较集中,把这些集中的高度作为寻找的尺度。例如,在某一幅图像上,三段码数字高度是20像素,地址信息文字高度是15像素,则对所有矩形高度进行概率统计后,就会找到20和15这两个数值,也就是两个不同的尺度。然后分别在每个尺度上寻找字符矩形。三段码的每个数字矩形都是长方形,且集中分布在一行或者两行,根据这一特征,就可以准确定位到三段码了。此外,有些快递面单上的条形码和三段码的相对角度是90度的关系,为了适应这一情况,上述算法在垂直方向再进行一次,也就是对每个矩形的宽度进行概率统计,得到多尺度数据后再分别进行三段码数字定位,这里矩形的宽度对应三段码数字的高度。例如,在其中的一幅图像上,水平方向找到了两个尺度,结果如图11(a)和11(b)所示,垂直方向也找到了两个尺度,结果如图11(c)和11(d)所示,很显然,这幅图上的三段码是水平方向的。
[0073]
最后根据水平或者垂直方向的计算结果确定三段码的最终位置,并将字符分割出
来,送至cnn神经网进行识别。三段码定位结果图如图12所示。
[0074]
步骤五、三段码字符识别
[0075]
本次三段码字符识别采用tiny-cnn深度学习框架,包括输入层、卷积层、池化层和输出层;训练集为2万多幅实际采集到的从快递面单上分割出来的字符灰度图像。其网络模型如图13所示,训练集图像如图14所示。输入层节点数量等于输入图像的宽度(18)*高度(18),共计324;卷积层1节点数为6*16*16;池化层1节点数为6*8*8;卷积层2节点数为12*6*6;池化层2节点数为12*3*3;全连接层节点数为120,输出层节点数量为10个阿拉伯数字、26个大写英文字母和一个连接符
“-”
的总和,共计37个。各个节点采用的激活函数为tanh函数,训练时epoch取值为100,其它参数均使用缺省的参数。
[0076]
在送入神经网学习时,有三点值得注意。第一,在分割字符时,由于尺度不同导致每个字符图像大小存在一定的差异,因此需要将输入的图片统一到同一尺寸,尺寸为18*18,识别时取置信度最大的字符值作为结果;第二,在分割的字符中可能存在汉字和其它非字符图像,因此在识别时,不将其作为识别结果输出;第三,由于数字“1”“0”和大写字母“i”“o”的特征非常接近,所以需要将“1”和“i”看成一类,“0”和“o”看成一类。
[0077]
图15是结果展示图。
[0078]
以上实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于上述的实施例。上述实施例中所用方法如无特别说明均为常规方法。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1