當前,絕大多數第三方快遞公司為縮減成本,取消提供送貨上門服務,而是將快件暫存在社區便利店、菜鳥驛站、郵局報刊亭等第三方平臺,之后由收件人自行到點取件。它以犧牲用戶的一點小便利性為代價,來換取物流公司的更低配送成本,追求快遞投遞的效率和效益。這為驛站帶來持續增長的業務流量,確保了這種商業模式的可持續發展。根據阿里巴巴公司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) 本文所設計的系統通過成本較低的攝像頭+電腦+投影儀的設備,配合一定的算法就可以提高效率降低成本,并且有助于減少錯誤,一舉多得。