二维码识别技术在快递签收中的应用

2019-10-08 11:55彭洋洋周苗陈航
软件 2019年8期

彭洋洋 周苗 陈航

摘  要: 隨着互联网经济的快速发展,网购以成为了必不可少的购物方式,它方便、快捷的服务吸引了越来越多的用户,更是推动了快递行业的进程,随着人们日常生活需求的增多,快递取件的问题也随之而来。因此,本文研究了二维码识别技术中的图像的预处理及解码过程,并将其运用到快递签收中,通过扫描用户手机收到的含有取件信息和用户身份的二维码,代替传统的手签模式,提高快递签收效率,实现智能化的快递签收系统,进一步确保快递签收的安全性。

关键词: 快递签收;二维码识别;图像预处理

中图分类号: TP391.41    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.08.011

本文著录格式:彭洋洋,周苗,陈航. 二维码识别技术在快递签收中的应用[J]. 软件,2019,40(8):4951

【Abstract】: With the rapid development of the Internet economy, online shopping has become an indispensable shopping method. Its convenient and fast service has attracted more and more users, and it has promoted the process of the express delivery industry. Increased, the problem of courier pickup has also followed. Therefore, this paper studies the image preprocessing and decoding process in the two-dimensional code recognition technology, and applies it to the express delivery sign, which replaces the traditional two-dimensional code received by the user's mobile phone and contains the pickup information and user identity. The hand signing mode improves the express delivery efficiency and realizes the intelligent express delivery system to further ensure the safety of express delivery.

【Key words】: Express delivery; QR code recognition; Image preprocessing

0  引言

目前快递行业发展迅速,各大公司纷纷设置了自己的快递点,且快递取件服务也不断地更新和完善,但快递签收仍然形式单一,均需要用户手签。对于像“双十一”这样的物流高峰期,尤其是在高校这样的快递数量庞大、取件人数较多的地方,快递签收效率低下、等待时间过长等问题十分突出。而且部分签收字迹难以辨认,在找人代取的情况下,更加不能确认真实的收货人,因此应设计创新型的快递签收方式来提高快递签收效率。

1  QR二维码发展现状

QR(Quick Response)码是当下使用最广泛的二维码,用特定的几何图形按一定编排规律在平面上分布[1],采用黑白相间的方格记录数据字符信息的一种图形,在手机支付、防伪、物流跟踪、餐饮行业,以及交通出行等方面得到了普遍的应用。QR二维码在水平和垂直方向都可以存储信息,包括了编码图形和定位图形,通用编码规则是ISO 18004,信息通过编码运算,得到二进制数据,通过特定的规则,以“0”对应白色方块、“1”对应黑色方块显示出来的图形。边角的三个大方框是位置探测图形,用于二维码的定位。二维码可表示汉字、数字等多种文字信息,有较强的纠错能力,容错率高,且成本低[2-3]。目前,二维码的识别技术主要包括二维码图像预处理和二维码信息的解码。

2  二维码识别

用户将收到的二维码,放在扫描框内,获取图像,然后对二维图像进行预处理操作,包括灰度化、二值化、膨胀腐蚀的形态学运算、边缘检测等[4],最后使用解码库进行信息提取,返回数据到数据库服务器端进行用户快递信息的匹配,实现快递签收的自主化和电子化。流程图如图所示。

2.1  图像灰度化

图像使用红(R)、绿(G)、蓝(B)三种颜色,通过不同比例的混合,在屏幕上呈现多种颜色,每个颜色分量都有256种变化。当图像的R、G、B三个分量相同时,称该图像为灰度图,图中的每个像素点只有一个分量,该分量的值叫灰度值。对图像进行灰度化处理不仅保证了图像的梯度信息,减少了数据量,运算速度大幅提升,又消除了颜色干扰。在图像灰度化处理的过程中,通过对颜色分量的不同处理,产生了分量法、最大值法、平均值法、加权平均法四种常用方法[5-6]。

QR二维码是由“0”和“1”编码而成的图像,只有黑白两种颜色,颜色对二维码图像的预处理过程几乎没有影响,因此对图像的红绿蓝三分量进行加权平均得到更加合适的灰度值。

2.2  中值滤波

图像往往存在着脉冲干扰及椒盐噪声,给图像的识别处理带来了严重的影响,因此图像的滤波处理尤为重要。中值滤波利用统计排序原理将某点周围像素点的灰度值从小到大排序,取中间值为该点像素的有效值。中值滤波采用非线性的方法,很好地抑制掉椒盐噪声[7-8]。

2.3  图像的二值化

图像的二值化就是将图像变成只有黑和白两种色值图像的过程,对于轮廓处理的图像非常有效。二值化处理能够尽量将目标的主干轮廓全部显示出来,减小图像处理的数据量,提高识别精度和速度。二值化处理的主要任务是找到一个合适的阈值,进而调整图像中像素点的灰度值,将灰度图像中介于0-255的灰度值划分为0或者255。

在本项目的研究过程中,二值化的过程采用OTSU法,即大津阈值分割法。程序中使用threshold()函数,在其中传递标志OSTU,该函数的算法会自动找到最优阈值[9]。处理过程为,确定一个阈值,通过该阈值将图像分割为前景和背景,当这两部分的类间方差最大时的灰度值就是图像二值化的最优阈值,此时两部分差别最大,识别的出错率越小。实验程序如下:

Mat binary_img;

threshold(gray_img, binary_img, 10, 255, THRESH_OTSU);

binary_img = 255 - binary_img;

imshow("二值化后的图片", binary_img);

2.4  数学形态学

在图像处理过程中,常常将数学形态学作为获取区域边界、轮廓的工具,膨胀和腐蚀是最常用的形态处理的手段,两者也可以组合成开运算和闭运算[10]。腐蚀和膨胀均是用结构元素与覆盖的二值化图像中的每个像素点做“与”的操作,不同的是,腐蚀是像素点和“1”相与,扩大黑色区域;膨胀则将像素点与“0”相与,扩大白色区域。由此可知,图像细化的过程,可以去除细线,从而分割出相互独立的图像元素,膨胀则相反,它会使图像边界变粗,使原本靠近但不相连的元素变为一体。研究过程中,腐蚀和膨胀调用erode()和dilate()函数,传递参数为输入的二值化图像、形态学后图像、结构元素、锚的位置和函数使用次数。实验程序中使用情况如下:

erode(input, Erode, kernel, Point(-1, -1), 1);

dilate(input, dilated, kernel, Point(-1, -1), 1);

2.5  图像定位与校正

在QR二维码的识别过程中会因为拍摄角度的问题导致后面二维码的识别过程出现问题,因此需要对获取到的二维码图形进行相应的校正。先进行Canny算子边缘检测,Canny算子的原理就是找到图像像素点的最大值从而确定边缘点,从而检测图像边沿是否发生了阶跃性变换,连接这些特征边缘,然后采用Hough变换,将图像中的曲线转化为参数空间中点的峰值。以上操作完成后还需对定位后的二维码图像进行一定倾斜角度的旋转。

2.6  信息获取

信息获取就是二维码的解码过程,即通过二维码图像得到二维码内部所包含的字符信息。解码流程是通过获取格式进行译码,获取相关版本信息,消除掩膜,恢复出纠错码和数据,按照编码的字符类型译出二维码信息[11]。

二维码预处理完成后,直接使用Zxing库对二维码进行译码,得到二维码存储的相关字符信息。开源解码库Zxing库,可以实现条形码、QR二维码等多种结构条形码的图像处理,同时能够进行二维码生成和识别过程的操作[12]。在使用Zxing库时,先用BufferedImage()将二维码图片读到内存中,调用二维码对应的解码类QRCodeReader中的decode(),返回二维码信息到Result中。其中通过DecodeFormatManger得到处理码的类型,Decode-Handler是二维码数据处理的核心,DecodeThread类控制线程处理图像的解码,处理图像中各像素值内容信息,再利用parseResult对二维码数据类型进行解析,最后读出相关信息[13]。

3  测试结果

在对相关程序进行编写及修改后,经测试,QR二维码经过二值化、腐蚀膨胀,以及图像预处理完成后图像如下图所示。实现结果表明,本文设计的二维码识别流程能够有效地对二维码图形进行识别,预处理后的二维码图形的辨别率更高,能够精准地识别出二维码中的黑白图形并准确地框出。

4  结束语

本文针对快递签收过程中,手签耗时、排队时间过长等问题提出了快递扫码签收的方式,对快递签收系统进行了创新优化设计。在二維码的基础上,参考了图像识别算法和QR二维码编码解码原理,对QR二维码图像识别预处理过程和二维码的解码过程进行了研究,用VS 2013和Opencv2.4.13环境建立的C++程序,完成了对二维码的识别,对运用到快递扫码签收具有现实意义,提高了快递签收的效率和安全性,更加高效的快递签收环境能给人们带来更好的网购体验。

参考文献

[1] 王亦然, 王瑞尧. 基于Android的二维码扫描系统设计与实现[J]. 数字技术与应用, 2013, (12): 151.

[2] 刘云龙, 吕韬, 曾晋, 刘法旺. 基于android手机的加密QR二维码识别系统[J]. 软件, 2012, 33(4): 34-36.

[3] 段茵. 基于QR二维码识别技术的研究与实现[D]. 西安: 西安理工大学, 2018.

[4] 刘莲, 姜苗苗, 陶云杰, 蔡云飞, 余伟, 程玉柱. 基于Android手机的二维码识别生成系统的设计与实现[J]. 福建电脑, 2018, (12): 40-41.

[5] 蒋鹏程, 熊礼治, 韩啸. 一种基于内容保护与优化识别的二维码方案[J]. 软件导刊, 2019, (2): 119-122.

[6] 姚帅领. 基于二维码和Android平台的快递收发系统[D]. 西安: 西安科技大学, 2018.

[7] 曹妍, 陈伟, 徐森. 图像去噪方法研究与仿真[J]. 软件, 2015, 36(4): 33-36.

[8] 卢镔. QR码识别方法研究及应用[D]. 南京: 南京理工大学, 2013

[9] 屈卫锋, 徐越, 牛磊磊, 等. 光照不均 QR 二维码图像的高效处理方法研究[J]. 软件, 2015, 36(6): 47-52.

[10] 姜莉莉, 蒋潇, 陈昕怡, 等. OpenCV在车牌识别中的应用[J]. 软件, 2014, 35(3): 45-47.

[11] 李晶晶, 殷新春. 基于二维码技术的学习资源管理系统的设计与实现[J]. 软件, 2019, 40(1): 16-21.

[12] 林存艳. 基于Android平台的QR二维码生成与解码的研究与实现[D]. 山东: 山东师范大学, 2015.

[13] 李璐. 基于Zxing的条码技术研究[J]. 福建电脑, 2014, (5): 17-18.