彭洋洋 周苗 陳航
摘 ?要: 隨著互聯(lián)網(wǎng)經(jīng)濟的快速發(fā)展,網(wǎng)購以成為了必不可少的購物方式,它方便、快捷的服務(wù)吸引了越來越多的用戶,更是推動了快遞行業(yè)的進程,隨著人們?nèi)粘I钚枨蟮脑龆?,快遞取件的問題也隨之而來。因此,本文研究了二維碼識別技術(shù)中的圖像的預(yù)處理及解碼過程,并將其運用到快遞簽收中,通過掃描用戶手機收到的含有取件信息和用戶身份的二維碼,代替?zhèn)鹘y(tǒng)的手簽?zāi)J?,提高快遞簽收效率,實現(xiàn)智能化的快遞簽收系統(tǒng),進一步確保快遞簽收的安全性。
關(guān)鍵詞: 快遞簽收;二維碼識別;圖像預(yù)處理
中圖分類號: TP391.41 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.08.011
本文著錄格式:彭洋洋,周苗,陳航. 二維碼識別技術(shù)在快遞簽收中的應(yīng)用[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 ?引言
目前快遞行業(yè)發(fā)展迅速,各大公司紛紛設(shè)置了自己的快遞點,且快遞取件服務(wù)也不斷地更新和完善,但快遞簽收仍然形式單一,均需要用戶手簽。對于像“雙十一”這樣的物流高峰期,尤其是在高校這樣的快遞數(shù)量龐大、取件人數(shù)較多的地方,快遞簽收效率低下、等待時間過長等問題十分突出。而且部分簽收字跡難以辨認,在找人代取的情況下,更加不能確認真實的收貨人,因此應(yīng)設(shè)計創(chuàng)新型的快遞簽收方式來提高快遞簽收效率。
1 ?QR二維碼發(fā)展現(xiàn)狀
QR(Quick Response)碼是當下使用最廣泛的二維碼,用特定的幾何圖形按一定編排規(guī)律在平面上分布[1],采用黑白相間的方格記錄數(shù)據(jù)字符信息的一種圖形,在手機支付、防偽、物流跟蹤、餐飲行業(yè),以及交通出行等方面得到了普遍的應(yīng)用。QR二維碼在水平和垂直方向都可以存儲信息,包括了編碼圖形和定位圖形,通用編碼規(guī)則是ISO 18004,信息通過編碼運算,得到二進制數(shù)據(jù),通過特定的規(guī)則,以“0”對應(yīng)白色方塊、“1”對應(yīng)黑色方塊顯示出來的圖形。邊角的三個大方框是位置探測圖形,用于二維碼的定位。二維碼可表示漢字、數(shù)字等多種文字信息,有較強的糾錯能力,容錯率高,且成本低[2-3]。目前,二維碼的識別技術(shù)主要包括二維碼圖像預(yù)處理和二維碼信息的解碼。
2 ?二維碼識別
用戶將收到的二維碼,放在掃描框內(nèi),獲取圖像,然后對二維圖像進行預(yù)處理操作,包括灰度化、二值化、膨脹腐蝕的形態(tài)學(xué)運算、邊緣檢測等[4],最后使用解碼庫進行信息提取,返回數(shù)據(jù)到數(shù)據(jù)庫服務(wù)器端進行用戶快遞信息的匹配,實現(xiàn)快遞簽收的自主化和電子化。流程圖如圖所示。
2.1 ?圖像灰度化
圖像使用紅(R)、綠(G)、藍(B)三種顏色,通過不同比例的混合,在屏幕上呈現(xiàn)多種顏色,每個顏色分量都有256種變化。當圖像的R、G、B三個分量相同時,稱該圖像為灰度圖,圖中的每個像素點只有一個分量,該分量的值叫灰度值。對圖像進行灰度化處理不僅保證了圖像的梯度信息,減少了數(shù)據(jù)量,運算速度大幅提升,又消除了顏色干擾。在圖像灰度化處理的過程中,通過對顏色分量的不同處理,產(chǎn)生了分量法、最大值法、平均值法、加權(quán)平均法四種常用方法[5-6]。
QR二維碼是由“0”和“1”編碼而成的圖像,只有黑白兩種顏色,顏色對二維碼圖像的預(yù)處理過程幾乎沒有影響,因此對圖像的紅綠藍三分量進行加權(quán)平均得到更加合適的灰度值。
2.2 ?中值濾波
圖像往往存在著脈沖干擾及椒鹽噪聲,給圖像的識別處理帶來了嚴重的影響,因此圖像的濾波處理尤為重要。中值濾波利用統(tǒng)計排序原理將某點周圍像素點的灰度值從小到大排序,取中間值為該點像素的有效值。中值濾波采用非線性的方法,很好地抑制掉椒鹽噪聲[7-8]。
2.3 ?圖像的二值化
圖像的二值化就是將圖像變成只有黑和白兩種色值圖像的過程,對于輪廓處理的圖像非常有效。二值化處理能夠盡量將目標的主干輪廓全部顯示出來,減小圖像處理的數(shù)據(jù)量,提高識別精度和速度。二值化處理的主要任務(wù)是找到一個合適的閾值,進而調(diào)整圖像中像素點的灰度值,將灰度圖像中介于0-255的灰度值劃分為0或者255。
在本項目的研究過程中,二值化的過程采用OTSU法,即大津閾值分割法。程序中使用threshold()函數(shù),在其中傳遞標志OSTU,該函數(shù)的算法會自動找到最優(yōu)閾值[9]。處理過程為,確定一個閾值,通過該閾值將圖像分割為前景和背景,當這兩部分的類間方差最大時的灰度值就是圖像二值化的最優(yōu)閾值,此時兩部分差別最大,識別的出錯率越小。實驗程序如下:
Mat binary_img;
threshold(gray_img, binary_img, 10, 255, THRESH_OTSU);
binary_img = 255 - binary_img;
imshow("二值化后的圖片", binary_img);
2.4 ?數(shù)學(xué)形態(tài)學(xué)
在圖像處理過程中,常常將數(shù)學(xué)形態(tài)學(xué)作為獲取區(qū)域邊界、輪廓的工具,膨脹和腐蝕是最常用的形態(tài)處理的手段,兩者也可以組合成開運算和閉運算[10]。腐蝕和膨脹均是用結(jié)構(gòu)元素與覆蓋的二值化圖像中的每個像素點做“與”的操作,不同的是,腐蝕是像素點和“1”相與,擴大黑色區(qū)域;膨脹則將像素點與“0”相與,擴大白色區(qū)域。由此可知,圖像細化的過程,可以去除細線,從而分割出相互獨立的圖像元素,膨脹則相反,它會使圖像邊界變粗,使原本靠近但不相連的元素變?yōu)橐惑w。研究過程中,腐蝕和膨脹調(diào)用erode()和dilate()函數(shù),傳遞參數(shù)為輸入的二值化圖像、形態(tài)學(xué)后圖像、結(jié)構(gòu)元素、錨的位置和函數(shù)使用次數(shù)。實驗程序中使用情況如下:
erode(input, Erode, kernel, Point(-1, -1), 1);
dilate(input, dilated, kernel, Point(-1, -1), 1);
2.5 ?圖像定位與校正
在QR二維碼的識別過程中會因為拍攝角度的問題導(dǎo)致后面二維碼的識別過程出現(xiàn)問題,因此需要對獲取到的二維碼圖形進行相應(yīng)的校正。先進行Canny算子邊緣檢測,Canny算子的原理就是找到圖像像素點的最大值從而確定邊緣點,從而檢測圖像邊沿是否發(fā)生了階躍性變換,連接這些特征邊緣,然后采用Hough變換,將圖像中的曲線轉(zhuǎn)化為參數(shù)空間中點的峰值。以上操作完成后還需對定位后的二維碼圖像進行一定傾斜角度的旋轉(zhuǎn)。
2.6 ?信息獲取
信息獲取就是二維碼的解碼過程,即通過二維碼圖像得到二維碼內(nèi)部所包含的字符信息。解碼流程是通過獲取格式進行譯碼,獲取相關(guān)版本信息,消除掩膜,恢復(fù)出糾錯碼和數(shù)據(jù),按照編碼的字符類型譯出二維碼信息[11]。
二維碼預(yù)處理完成后,直接使用Zxing庫對二維碼進行譯碼,得到二維碼存儲的相關(guān)字符信息。開源解碼庫Zxing庫,可以實現(xiàn)條形碼、QR二維碼等多種結(jié)構(gòu)條形碼的圖像處理,同時能夠進行二維碼生成和識別過程的操作[12]。在使用Zxing庫時,先用BufferedImage()將二維碼圖片讀到內(nèi)存中,調(diào)用二維碼對應(yīng)的解碼類QRCodeReader中的decode(),返回二維碼信息到Result中。其中通過DecodeFormatManger得到處理碼的類型,Decode-Handler是二維碼數(shù)據(jù)處理的核心,DecodeThread類控制線程處理圖像的解碼,處理圖像中各像素值內(nèi)容信息,再利用parseResult對二維碼數(shù)據(jù)類型進行解析,最后讀出相關(guān)信息[13]。
3 ?測試結(jié)果
在對相關(guān)程序進行編寫及修改后,經(jīng)測試,QR二維碼經(jīng)過二值化、腐蝕膨脹,以及圖像預(yù)處理完成后圖像如下圖所示。實現(xiàn)結(jié)果表明,本文設(shè)計的二維碼識別流程能夠有效地對二維碼圖形進行識別,預(yù)處理后的二維碼圖形的辨別率更高,能夠精準地識別出二維碼中的黑白圖形并準確地框出。
4 ?結(jié)束語
本文針對快遞簽收過程中,手簽耗時、排隊時間過長等問題提出了快遞掃碼簽收的方式,對快遞簽收系統(tǒng)進行了創(chuàng)新優(yōu)化設(shè)計。在二維碼的基礎(chǔ)上,參考了圖像識別算法和QR二維碼編碼解碼原理,對QR二維碼圖像識別預(yù)處理過程和二維碼的解碼過程進行了研究,用VS 2013和Opencv2.4.13環(huán)境建立的C++程序,完成了對二維碼的識別,對運用到快遞掃碼簽收具有現(xiàn)實意義,提高了快遞簽收的效率和安全性,更加高效的快遞簽收環(huán)境能給人們帶來更好的網(wǎng)購體驗。
參考文獻
[1] 王亦然, 王瑞堯. 基于Android的二維碼掃描系統(tǒng)設(shè)計與實現(xiàn)[J]. 數(shù)字技術(shù)與應(yīng)用, 2013, (12): 151.
[2] 劉云龍, 呂韜, 曾晉, 劉法旺. 基于android手機的加密QR二維碼識別系統(tǒng)[J]. 軟件, 2012, 33(4): 34-36.
[3] 段茵. 基于QR二維碼識別技術(shù)的研究與實現(xiàn)[D]. 西安: 西安理工大學(xué), 2018.
[4] 劉蓮, 姜苗苗, 陶云杰, 蔡云飛, 余偉, 程玉柱. 基于Android手機的二維碼識別生成系統(tǒng)的設(shè)計與實現(xiàn)[J]. 福建電腦, 2018, (12): 40-41.
[5] 蔣鵬程, 熊禮治, 韓嘯. 一種基于內(nèi)容保護與優(yōu)化識別的二維碼方案[J]. 軟件導(dǎo)刊, 2019, (2): 119-122.
[6] 姚帥領(lǐng). 基于二維碼和Android平臺的快遞收發(fā)系統(tǒng)[D]. 西安: 西安科技大學(xué), 2018.
[7] 曹妍, 陳偉, 徐森. 圖像去噪方法研究與仿真[J]. 軟件, 2015, 36(4): 33-36.
[8] 盧鑌. QR碼識別方法研究及應(yīng)用[D]. 南京: 南京理工大學(xué), 2013
[9] 屈衛(wèi)鋒, 徐越, 牛磊磊, 等. 光照不均 QR 二維碼圖像的高效處理方法研究[J]. 軟件, 2015, 36(6): 47-52.
[10] 姜莉莉, 蔣瀟, 陳昕怡, 等. OpenCV在車牌識別中的應(yīng)用[J]. 軟件, 2014, 35(3): 45-47.
[11] 李晶晶, 殷新春. 基于二維碼技術(shù)的學(xué)習(xí)資源管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 軟件, 2019, 40(1): 16-21.
[12] 林存艷. 基于Android平臺的QR二維碼生成與解碼的研究與實現(xiàn)[D]. 山東: 山東師范大學(xué), 2015.
[13] 李璐. 基于Zxing的條碼技術(shù)研究[J]. 福建電腦, 2014, (5): 17-18.