当前,绝大多数第三方快递公司为缩减成本,取消提供送货上门服务,而是将快件暂存在社区便利店、菜鸟驿站、邮局报刊亭等第三方平台,之后由收件人自行到点取件。它以牺牲用户的一点小便利性为代价,来换取物流公司的更低配送成本,追求快递投递的效率和效益。这为驿站带来持续增长的业务流量,确保了这种商业模式的可持续发展。根据阿里巴巴公司2019年的财报披露,菜鸟驿站的日均服务包裹量已经占阿里巴巴中国零售平台的10%以上。同时,菜鸟驿站还服务了超过75%的全球速卖通订单和超过90%的天猫国际订单。足可见菜鸟驿站在我们这个物流大国的配送环节中正在扮演着越来越重要的角色[1]。
但是,随着业务量的不断增长,菜鸟驿站所面临的问题也日益明显:
(1) 用户排队时间长:工作日,由于用户取件时间集中在下班后,此时取件业务达到高峰,用户取件的等待时间过长,影响用户体验。更有快递包裹量大的驿站,经常出现一时找不到包裹,让客户在旁干等着的情况,影响了用户的满意度。
(2) 人力成本高企:驿站的单件利润较低,主要靠规模效益盈利。用户取件时间扎堆导致驿站“忙短闲长”,人力资源配置不均,成本居高不下。
(3) 快件容易被多领误领:目前由于菜鸟驿站的取件业务多是人工处理,导致误领多领、少领错领的情况时有发生。然而,更麻烦的是出错之后,难以查证,导致互相推诿指责。
为解决上述问题,本文设计了一种基于机器视觉的智能快件自提系统,用以提高驿站的自动化程度,节省人力,提高效率,减少失误。
本文所设计的智能快递自取系统主要由快递货物呈列架、机器视觉矩阵模块、位置投影提示模块、语音播报模块、扫码取件二维码及电脑软件管理系统组成。其中机器视觉矩阵模块主要由若干个可以覆盖不同位置的高清摄像头协同组网,使之可以扩大视野并提高清晰度,让摄像头之间相互取长补短。而位置投影提示模块主要由投影仪组成,其主要作用就是可以将指示光线投影到对应的快件身上,以帮助取件者快速定位到快件所在位置,使其可以快速取件,省掉寻找快件的耗时步骤。
系统的工作流程如图1 所示:
图1 系统流程框架示意图
(1) 登记入库:快递到达驿站后,先逐个扫码登记入库。
(2) 快件上架:纸盒型快件在呈列架上的放置位置可以随意,但要求带条形码的快递面单需朝外放置。非纸盒的快件(如快递袋等) 则要求先放入自带条形码的隔盒中,然后连同隔盒一起上架,同样要求条形码朝外放置。
(3) 快件识别:当快件上架之后,电脑将定期自动识别哪些地方新放置了快件,并能识别出该快件的条码、编号等系列信息。
(4) 用户扫码:当用户过来取件时,只需用手机扫码二维码,系统可以根据其电话号码等信息关联出该用户要取哪些快件,以及这些快件的存放位置坐标信息。
(5) 指示取件:电脑控制投影仪将待取快件所在的位置用鲜艳颜色的光线进行投影定位,并同步发出语音提示,通知用户去指定的位置取件。如果快件按照指示被正常取走,则系统将该快件的状态标记为配送完成,并从临时库中删除。但如果该快件超时未取或者错取,系统也将发出警报,提示用户进行纠错。
2.1.1 快递面单的条形码特点
目前,EMS、中通、圆通等诸多公司的快递面单上印刷的是Code128 条形码,它可以表达ASCII0 到ASCII127 的128个字符。每个Code128 条码由指定的相互间隔的3 个条形和3个空白(共六个单元) 代表一个字符,每个字符以一个条开始,到一个空结束。即包含:左空白区、起始符、数据符、校验符、终止符、右空白区。其结构如图2 所示。
图2 Code128 条形码组成实例
Code128 条形码的显著特征是其具备数量众多的黑、白相间且平行的条码,即有多条直线,且相互平行。围绕这两个特征,本文提出了改进的Hough 变换检测算法,配合机器视觉图像处理,可以实现对条形码进行快速解码的功能。
2.1.2 Hough 变换的直线检测算法
在本设计中,如何低成本的同时对多个一维条形码进行快速识别是其核心。虽然市面上早已有很成熟的条形码商业解码方案。但它们还大都是要依靠人工来定位条形码区域,然后再由机器识别。并不能自主定位,更不能同时对多个条形码目标进行识别。所以对这种缺少定位且一图多码的场景,目前这些成熟的识别算法和工具还是难以直接移植应用的。因而本文就提出了一种基于机器视觉的一维条形码快速识别算法。
在算法流程上,需分别将原始图像经过:灰度化、二值化、边缘检测、图像分块、平行直线簇检测、条形码定位、条形码解码等步骤,最终才可以得到解码后的各个条形码。
其中,上述流程中的灰度化、二值化和图像分块3 个步骤均为图像预处理部分,其技术算法都较为成熟,这里不做展开赘述。
当图像预处理和分块之后,就要检测块内是否存在平行直线簇,而在那之前,需先检查图片中是否包含直线,直线检测有很多不同的算法,Hough 变换就是检测直线较为经典的算法之一。它是一种从直角坐标系到极坐标系的变换,在表达式上,一般直线在极坐标下可以表示为:
图3 Hough 变换的对应关系
θ
表1 Sobel 滤波模板
同时考虑到对拥有复杂背景的图片用Hough 变换进行直线检测时,有可能出现直线信息被复杂背景信息“淹没”的情况。因而在本设计中改进了Hough 变换的算法,增加了背景抑制功能。即引入连通奖励因子来突出直线特性,区分背景噪声。即在进行Hough 变换时,根据其直线的连通性质叠加奖励因子。该奖励因子可以随着连通长度的增加而不断累加,即单个连通链条越长,奖励因子的增长就越快。而一旦遇到连通中断,则奖励因子归0,需等待下一个连通区域再从零增长。从图4 的仿真结果可以看出,增加奖励因子后的Hough 变换抑制背景噪声的能力明显改善,直线信息更加突出和明确。
图4 改进Hough 变换的效果仿真
2.1.3 基于双重Hough 变换的直线簇检测算法
若检测区域中含有Code128 条形码,那么经上述改进后的Hough 变换就能检测出多条直线,对应ρ,( )θ 变换域里面的多个峰值,且这些峰值在ρ 和θ 的坐标下应该呈现近似直线的排列方式。此时对ρ,( )θ 变换域再进行一次Hough 变换,则必定可以出现1 个极高的峰值。若该检测区域中有N 个条形码,则双重Hough 变换之后也将看到N 个峰值。峰值的数量与条形码的个数之间,是存在一一对应关系的。因而只需简单地经过两次Hough 变换,就可以直接检测出该图像是否有条形码,有几个条形码了。
2.1.4 条形码解码
经过上述步骤检测出条形码之后,再利用公式(1) 的对应关系很容易就能定位到条形码的位置,随后就可以利用现有的成熟识别算法,解码出条形码的信息了。
考虑到菜鸟驿站的规模可大可小,对于那些面积比较大的驿站,单摄像头的拍摄广度和深度都很难满足要求,从而必然影响到输入图片的角度和精度,不利于条形码的定位和识别。因而在本设计中的机器视觉输入部分,可以由一个可旋转可移动的超高清摄像头组成,也可以由多个次高清摄像头来联合组网,这两者在本质上是一样的,都能扩大系统视野的覆盖范围。但这也带来了视野重叠和视野缺失的问题。对于该问题,本文接下来就以多摄像头组网的方式为例,来给出对应的解决方案。
2.2.1 视野过覆盖
当各个摄像头的覆盖视野比较充分、互相重叠时,图像涉及拼接算法。本设计针对此问题做了简化处理,在过覆盖情况下,系统只需分别解码各个摄像头里面的条形码后进行汇总。由于存在视野重叠的情况,则有可能会有同一个条形码在不同的摄像头想都被解码的情况。此时系统汇总后就将发现有多个相同编码的快件等待被登记,但其实它们都是同一个条形码,只不过被一码多解了。所以这种情况下,多摄像头之间的协作重点是划分重复覆盖区的条形码的归属问题。当不止一个摄像头能解码出了同一个条形码,为了防止重复管理,应将该条形码划归到它们之中最适合的那个摄像头名下进行管理。而归属的划分依据,得看谁看得更清晰,就归谁名下。本文是根据该条形码在各个摄像头下所占用区域的像素数量大小来确定,具体的算法为:
假设各个摄像头编号1~M,摄像头水平的像素点对应坐标轴X 轴,垂直像素点对应坐标轴Y 轴。如图5 所定位到的条形码的四个区域端点分别标号为1~4,其在摄像头m 中的坐标位置表示为(x,y)~(x,y),则该条形码区域占用在摄像头m的像素区域大小S可以表示为:
其中:
对于每个被一码多解的条形码,只要分别算出S~S的值,然后划分到得数最大的那个摄像头名下即可,而其它摄像头的解码结果将被丢弃,防止重复管理。
图5 摄像头重叠覆盖区域处理方式
图6 摄像头矩阵的拓扑关系图
2.2.2 视野欠覆盖
在所有摄像头安装完毕后,应该在系统软件中给它们配置邻区关系表,以便系统知晓各个摄像头之间的拓扑关系,谁与谁互邻。如示意图6 所示,其中每个带数字的圆圈代表一个摄像头及编号,且实际也按图6 中所示拓扑进行布局。则应配置8 号摄像头的邻区为:2、3、4、7、9、12、13、14。
当系统在初始配置完成之后,应该按照邻区关系配置表,生成邻区对。并对每个邻区对累积内的重复条形码数目,经过足够长的时间后,若发现有某些邻区对的累积数值始终为0,则说明这两个摄像头邻区对从未解码出过相同的条形码,那么这两个摄像头之间很可能存在视野盲区或者解码盲区,需要重新调整摄像头位置以增加它们之间的重叠区域。
投影提示模块的作用是帮助取件者(用户) 快速定位到待取快件的位置,而不用一个个去翻找快件在哪。当用户到达驿站进行扫码取件并被系统关联到对应的电话号码后,其名下待取的快件编号及位置就全部都被调了出来。然后系统会自动生成一张带有可以指示快件所在位置的图片,由投影仪投射出来。这张图片是由大部分的背景色(黑色) 和小部分的鲜艳颜色(红色、蓝色、绿色等) 组成的。当系统正常工作时,鲜艳颜色的光线会刚好投射在待取包裹身上,用户简单地根据光线指示就可以很快地完成取件动作。
由于投影仪和摄像头是两个不同的模块,在初始化之时,需要将摄像头的空间位置与投影仪的空间位置进行映射,以确保摄像头读入的条形码位置和投影仪投射的光线位置没有偏差。如有偏差则需校正,某个条形码归入到哪个摄像头名下,则它的投影位置信息就由该摄像头负责校正。
最后,投影模块支持一次性定位多个快件(同一用户可能有多个待取包裹),也支持同时定位多个用户的快件(不同用户可以同时并行取件),只需将不同用户的快件位置用不同颜色的投影加以区分即可。当然,在投影的同时,系统也会通过语音播报提示用户,告知颜色信息,快件数量等情况。
本文测试环境为Matlab 2016a,测试样本来源于muenster Barcode DB 数据集,随机选取数量100 张3 072*2 048 像素图片的测试平均值。单个条形码的平均耗时的对比结果如表2 所示,条形码定位的仿真测试结果如图7 所示:根据菜鸟驿站门店的实测数据,该抽样站点熟练工的平均单个快递的寻找时间为10 秒以上。所以可以看出,本文所用解码方法的耗时相比于一般算法是有优势的,而相比于人工定位的方式,其定位耗时更是可以忽略不计,优势明显。
表2 解码耗时仿真结果
图7 条形码定位的仿真测试结果
(1) 目前菜鸟驿站等快件第三方暂存平台的自动化程度还比较低,存在成本高,效率低下,容易出错等问题。
(2) 本文所设计的系统通过成本较低的摄像头+电脑+投影仪的设备,配合一定的算法就可以提高效率降低成本,并且有助于减少错误,一举多得。