高毅 ,李忠,王昕(云南師范大學文理學院,昆明 650222)
基于ZXing.Net的多目標QR碼識別研究
高毅 ,李忠,王昕
(云南師范大學文理學院,昆明650222)
隨著物聯網技術和移動通信技術的飛速發展,基于移動終端、物聯網和工業控制等應用領域的自動識別技術己成為當前研究的熱點。QR碼識別技術是一種全新的信息存儲、傳遞和識別技術,已經迅速地融入到了社會和人們日常生活當中。基于QR碼支付、QR碼電子憑證、QR碼加密發票的各種QR碼應用技術讓商業和生活體驗變得更有活力。自動識別技術是當下最重要的技術之一,在各行各業都起非常重要的作用,例如系統錄入數據、修改數據,但是手工錄入數據一來慢,二來容易出錯,而QR碼自動識別技術就很好地解決了這些缺陷。利用QR碼不但可以大大提高錄入數據的質量和速度,也可以消除人為干擾的缺點[1]。然而,現有的QR碼的識別技術大多都是基于單目標的,即一次只能識別一個QR碼。在物聯網和工業控制領域,迫切需要多目標的QR碼識別技術,一次識別一副圖片上的多個QR碼,并對實時性有一定的要求。為此,本文基于ZXing.Net、圖像處理等技術,提出一種多目標QR碼的識別方法,實驗效果良好,識別的準確率高,識別的時間開銷少,滿足了一定程度上的實時性要求。
1.1QR Code
QR碼的“QR”是Quick Response的縮寫。這種二維碼能夠快速讀取,與之前的條形碼相比,QR碼能存儲更豐富的信息,包括對文字、URL地址和其他類型的數據加密。QR碼1994年由日本Denso-Wave公司發明,QR碼的標準JIS X 0510在1999年1月發布,而其對應的ISO國際標準ISO/IEC18004,則在2000年6月獲得批準。QR碼是屬于開放式的標準[2]。
QR碼呈正方形,只有黑白兩色。在4個角落的其中3個,印有較小的,像“回”字的正方圖案。這3個圖案是幫助解碼軟件定位的圖案,使用者不需要對準,無論以任何角度掃描,仍可正確被讀取。
1.2ZXing,Net
ZXing.Net是一個開源的開發庫,該庫支持條形碼的編碼和解碼,是在ZXing開發庫的基礎上來實現的。該庫支持的條形碼編碼格式有UPC-A、EAN-8、EAN-13、Code 39、Code 128、ITF、Codabar、Plessey、MSI、QR Code、PDF-417、Aztec、Data Matrix;該庫支持的條形碼解碼格式有UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code 128、ITF、Codabar、MSI、RSS-14(all variants)、QR Code、Data Matrix、Aztec and PDF-417;該庫的運行平臺有.NET環境、Silverlight環境、Windows Phone環境、Windows CE環境等[3]。
2.1基本原理
ZXing.Net是基于微軟環境的條形碼開發庫。我們可以調用開發庫中的Result類獲取被識別的QR碼在圖片中的坐標,該坐標由四個點組成,分別為QR碼四個角的坐標。在對QR碼識別的測試中發現,ZXing.Net開發庫可以識別一副有多個QR碼的圖片,但只能解析其中一個QR碼,圖片上的其他QR碼解析不了。基于這樣的前提,若要識別多目標的QR碼,在識別過程中可以結合圖像處理技術對圖片進行處理。若一副圖片上有n個QR碼,識別完一個QR碼,獲取其在圖片中的坐標,構成一個矩形,用白色填充這個矩形區域,則圖片上的QR碼個數就會變成n-1個,然后重復此步驟,直到圖片上的QR碼的個數n為0。這樣,就可以把一副圖片上的所有QR碼識別出來,從而實現多目標QR碼的識別。
2.2算法的流程圖表示
多目標QR碼識別算法的流程圖表示如圖1所示。
3.1矩形區域計算
在調用ZXing.Net開發庫的過程中,我們可以獲取當前被識別的QR碼在圖片中的坐標 (原點在左上角),該坐標由四個點組成,這四個點剛好能夠成一個矩形。由于圖片上的QR碼是人工貼上去的,有可能是斜的,與水平方向的夾角介于00至1800之間。所以,得到的四個點的坐標并沒有固定的順序,這就給我們構造矩形帶來不便。在平面坐標空間中,只需要四個點就可以確定該矩形。假設,在得到的坐標中,四個點的坐標表示為:(Point1.X,Point1.Y)、(Point2.X,Point2.Y)、(Point3.X,Point3.Y)、(Point4.X,Point4.Y),矩形的左上角坐標表示為:(X,Y),矩形的寬用Wid表示,矩形的高用Hei表。計算過程的算法描述如下所示:

圖1 多目標QR碼識別算法流程


執行以上步驟就可以得到矩形的左上角的X坐標、左上角的Y坐標、矩形的寬、矩形的高。就可以用白色填充該矩形。
3.2坐標空間變換
為了提高程序的執行效率,矩形區域的填充應該在內存中完成,而不是修改過后,保存圖片,再重新加載。矩形的填充是在圖片的局部來做的,而圖片的像素值是存儲在一維數組中,這就涉及到矩形區域內的點坐標空間到像素值的一維空間的轉換。像素值的一維數組表示為Values[Width*Height],數組下標從0開始,其中Width是圖片的寬,Height是圖片的高。矩形的左上角的x坐標用X表示,矩形的左上角的y坐標用Y表示,矩形的寬用Wid表示,矩形的高用Hei表示。
矩形區域內的點坐標表示為(x0,y0),其中X<=x0<= X+Wid,Y<=y0<=Y+Hei。Values[pos]表示矩形內的點坐標對應存儲像素值的數組元素,其中,0<=pos<= Width*Height-1。轉換的計算公式如公式(1)所示。

我們的程序是.NET Framework 4.0的環境下編制的,編程語言是C#。實驗效果如圖2所示,實驗中,測試圖片的分辨率為5000×3340,圖片上面有10個QR碼,完成識別的時間為8秒左右。經過大量測試,識別準確率高,完成識別的時間滿足一定的實時性要求。

圖2 實驗效果圖
本文基于現有的技術,提出一種多目標QR碼的識別方法,實驗效果良好,對QR碼的應用具有非常重要的意義。程序雖然能在一定程度上滿足用戶的需求,但對于實時性要求高的,還是會存在一些的問題。今后,我們將會對縮短識別時間做進一步研究。
[1]陳春林.基于Android移動終端的二維碼識別技術實現與應用研究[D].廣東工業大學,2015
[2]QR碼_百度百科.http://baike.baidu.com/link?url=qBXGeJKmUY_Vq10BBl_Xsl-9b7ka8T2rwNfSNh_ox3fQHpqtRiKNv_DTIY7huSbu
[3]ZXing.Net-Home.http://zxingnet.codeplex.com.
[4]崔建江.C#編程和.NET框架[M].北京:機械工業出版社,2015.12.
[5]趙春江.C#數字圖像處理算法典型實例[M].北京:人民郵電出版社,2009.3
ZXing.Net;QR Code;Multi-Objective
Research on the Multi-Objective QR Code Identification Based on ZXing.Net
GAO Yi,LI Zhong,WANG Xin
(College of Arts and Sciences,Yunnan Normal University,Kunming650222)
云南省教育廳科學研究基金項目(No.2015Y523)
1007-1423(2016)18-0062-04
10.3969/j.issn.1007-1423.2016.18.015
高毅(1980-),男,云南宣威人,碩士研究生,講師,研究方向為程序設計方法、編譯技術
李忠(1984-),男,云南昆明人,本科,助教,研究方向為信息系統設計開發、數據挖掘、網絡管理
王昕(1975-),男,云南昆明人,碩士研究生,講師,研究方向為通信與信息系統、網絡管理
2016-04-06
2016-06-10
QR碼是一種很好的編碼方法,在很多領域都得到應用。當前的QR碼的識別技術大多都是一次只能識別一個QR碼。然而,在物聯網和工業控制應用領域,人們迫切需要多目標的QR碼識別技術,即一次識別多個QR碼。基于現有技術,提出一種多目標QR碼的識別方法,識別的準確率高,識別的時間開銷少。這對QR碼的應用具有非常重要的意義。
ZXing.Net;QR Code;多目標
The QR code is a kind of very good coding method,has been applied in many fields.Currently most of QR code recognition technology are only identifies a QR code at a time.However,in the Internet of things and industrial control applications fields,people very need multi-objective QR code identification technology,namely identify multiple QR code each time.Based on the existing technology,puts forward a multi-objective identification method of QR code,identification accuracy rate is high,identify cost little time.It's very important significance to application of QR code.