李瑞娥++沈丹菁++陳鑫++邰昌建
摘要:在研究Android識(shí)別技術(shù)以及二維碼的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了在Android平臺(tái)下的智能手機(jī)的二維碼掃描識(shí)別功能系統(tǒng)。介紹了二維碼在智能手機(jī)終端掃描識(shí)別功能的詳細(xì)設(shè)計(jì),以及調(diào)用二維碼對(duì)應(yīng)的數(shù)據(jù)的功能。
關(guān)鍵詞:Android;二維碼;二維碼掃描;二維碼識(shí)別
中圖分類號(hào):TP311.52 文獻(xiàn)識(shí)別碼:A 文章編號(hào):1001-828X(2016)007-000-02
引言
隨著科技的不斷發(fā)展條碼技術(shù)得到了越來越廣泛的應(yīng)用。條碼技術(shù)是物流管理現(xiàn)代化的重要技術(shù)手段。如今Android智能手機(jī)的普遍使用以及手機(jī)應(yīng)用程序的大量涌現(xiàn),使得條碼技術(shù)持續(xù)發(fā)展。雖然一維的條形碼提高了信息錄入的速度,而且出錯(cuò)幾率小。但是一維的條形碼只能包含數(shù)字和字母,不能夠存儲(chǔ)記錄大量數(shù)據(jù)信息,受損后便不能夠識(shí)別。于是二維碼便隨之發(fā)展起來。作為一種新型的條碼技術(shù),二維碼是通過利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念來實(shí)現(xiàn)代碼的編制,同時(shí)使用與二進(jìn)制相對(duì)應(yīng)的黑白相間的幾何圖片記錄數(shù)據(jù)信息,通過掃描設(shè)備等自動(dòng)處理數(shù)據(jù)信息。二維碼編碼密度高,數(shù)據(jù)容量大;編碼范圍也不在局限于數(shù)字和字母;有糾錯(cuò)功能;譯碼出錯(cuò)幾率小;防偽性、保密性、持久性好;制作成本低,容易生成。二維條碼技術(shù)的推廣,將會(huì)促進(jìn)我國(guó)信息產(chǎn)業(yè)的發(fā)展和現(xiàn)代化經(jīng)濟(jì)建設(shè)的發(fā)展。
一、條碼識(shí)別系統(tǒng)的設(shè)計(jì)
1.系統(tǒng)框架設(shè)計(jì)
本文的設(shè)計(jì)是在Android平臺(tái)下的智能手機(jī)的二維碼掃描識(shí)別功能系統(tǒng)。本系統(tǒng)主要框架結(jié)構(gòu)為二維碼的識(shí)別。通過智能手機(jī)端的攝像頭對(duì)二維碼進(jìn)行掃描,實(shí)現(xiàn)對(duì)二維碼的識(shí)別。具體操作是把掃描的二維碼送到后臺(tái)進(jìn)行解析,如果解析成功,就停止掃描。如果解析不成功,對(duì)二維碼進(jìn)行再掃描采集圖像,再解析,如此循環(huán),直到能夠識(shí)別圖像為止。
2.二維碼的識(shí)別設(shè)計(jì)
二維碼的識(shí)別主要是通過調(diào)用攝像頭,啟動(dòng)多線程,快速回調(diào)攝像頭。當(dāng)一次回調(diào)的圖像沒有被后臺(tái)解析出來,則進(jìn)行下一次的回調(diào),如此循環(huán),直到解析識(shí)別出二維碼為止。同時(shí)使攝像頭進(jìn)行自動(dòng)對(duì)焦來解決由二維碼的大小不同,顯示的模糊程度不同等原因,而引起的攝像頭不能很好的采集圖像的問題。當(dāng)后臺(tái)解析識(shí)別完成后對(duì)用戶進(jìn)行提醒,并顯示識(shí)別出來的結(jié)果(即商品信息)。將二維碼識(shí)別系統(tǒng)分為如下四個(gè)部分:圖像采集、圖像處理、圖像定位、數(shù)據(jù)糾錯(cuò)解碼。
(1)圖像采集的設(shè)計(jì)
Android系統(tǒng)提供了相機(jī)的應(yīng)用接口,將手機(jī)攝像頭與之聯(lián)系起來。Android提供了相應(yīng)的相機(jī)的調(diào)用類。用該類可以設(shè)置初始化圖像捕捉,能夠拍攝圖像,開啟和關(guān)閉圖像預(yù)覽。在使用相機(jī)前需要在應(yīng)用中聲明相機(jī)權(quán)限,來獲得訪問相機(jī)的權(quán)限。另外需要聲明系統(tǒng)所需要用到的相機(jī)功能,如自動(dòng)對(duì)焦等。
(2)圖像預(yù)處理設(shè)計(jì)
由于二維碼解碼計(jì)算不能夠直接使用智能手機(jī)攝像頭采集到的圖像,而是需要經(jīng)過必要的圖像預(yù)處理,使得圖像信息達(dá)到適合解碼的程度,與此同時(shí)同時(shí)應(yīng)該解決圖像噪聲、光照不均等問題,從而減少對(duì)系統(tǒng)解碼的干擾。本系統(tǒng)主要采用了圖像灰度化、圖像二值化和圖像去噪的圖像預(yù)處理方法。
(3)圖像定位與校正的設(shè)計(jì)
智能手機(jī)攝像頭采集得到的圖像會(huì)因?yàn)橥饨绲母蓴_而導(dǎo)致采集到的二維碼圖像變形,使得圖像不能滿足處理要求。本系統(tǒng)采用圖像校正和圖像定位的方法進(jìn)行處理,對(duì)圖像進(jìn)行一些初步處理,使其恢復(fù)成可以處理的圖像。用圖像定位的方法來獲取二維碼圖像的四個(gè)頂點(diǎn)坐標(biāo),通過圖像校正將原圖像映射到規(guī)則的正方形圖形中。
(4)數(shù)據(jù)糾錯(cuò)解碼的設(shè)計(jì)
識(shí)別解碼系統(tǒng)首先要確定二維碼的解碼尺寸,通過從校正過的圖像中計(jì)算出二維碼的版本信息和格式。其次根據(jù)二維碼的版本和格式,建立采樣模塊,利用相應(yīng)的方法建立采樣模塊,幫助系統(tǒng)更便捷的獲取二維碼各部分的信息,方便解碼計(jì)算。將解碼完成的各字段,按照順序排列并輸出,從而完成解碼過程。
二、識(shí)別系統(tǒng)的實(shí)現(xiàn)
二維碼識(shí)別的實(shí)現(xiàn)
通過對(duì)二維碼圖形的采集、識(shí)別、預(yù)處理、矯正和糾錯(cuò)等一系列行為的解碼處理。將捕獲的圖形轉(zhuǎn)換成數(shù)據(jù)格式。通過調(diào)用第三方庫(kù),將二維碼圖片作為參數(shù),調(diào)用decode方法即能得到解析出來的字符串?dāng)?shù)據(jù),最后對(duì)字符串?dāng)?shù)據(jù)已經(jīng)設(shè)定的信息類型標(biāo)準(zhǔn)進(jìn)行比較判斷是哪種信息格式再給用戶對(duì)應(yīng)的操作。
1.圖像采集模塊的設(shè)計(jì)
圖像采集模塊由前端CMOS圖像傳感器和后端圖像信號(hào)處理器共同組成。前端CMOS圖像傳感器將采集到的模擬圖像信號(hào)進(jìn)行模數(shù)(AD)轉(zhuǎn)換后通過符合SMIA標(biāo)準(zhǔn)的接口傳輸?shù)胶蠖藞D像信號(hào)處理器。后端圖像信號(hào)處理器同樣通過SMIA接口對(duì)前端CMOS圖像傳感器進(jìn)行控制并對(duì)接收到的圖像信號(hào)進(jìn)行一定的處理,最后通過CAMIF將數(shù)字圖像信號(hào)傳遞給核心控制單元。
2.圖像預(yù)處理模塊設(shè)計(jì)
圖像預(yù)處理是使二維碼被準(zhǔn)確識(shí)別關(guān)鍵的一步。首先我們需要將圖片進(jìn)行圖像灰度化處理,然后進(jìn)行二值化,采集的圖像是編碼在RGB空間里形成一個(gè)三維矩陣的,當(dāng)R=G=B時(shí)就是此點(diǎn)像素的灰度值,常見的灰度化處理方法有:最大值法、平均值法和加權(quán)平均值法。根據(jù)人眼對(duì)顏色的敏感度,我們采用加權(quán)平均值法對(duì)圖像進(jìn)行灰度化處理。接著我們采用Bemsen算法進(jìn)行圖像二值化處理,Bemsen算法以圖像中任意一個(gè)像素為中心,在其鄰域內(nèi)找出最大的和最小的灰度值,以兩者的平均值作為該像素的閾值,然后對(duì)此像素進(jìn)行二值化。可以解決光照不均帶來的圖像空白丟失的問題。最后為解決由于QR碼存在孤立點(diǎn)噪音、邊沿毛刺等變形問題,我們對(duì)QR碼圖像進(jìn)行圖像濾波,對(duì)目標(biāo)圖像產(chǎn)生的噪聲進(jìn)行抑制。我們采用中值濾波的算法,在消除噪聲的同時(shí)可以較好的保留圖像邊緣信息,使圖像產(chǎn)生較少的模糊。以每個(gè)像素點(diǎn)為中心,取鄰域,對(duì)鄰域內(nèi)的所有像素點(diǎn)進(jìn)行排序,選擇中間的那個(gè)值作為該像素點(diǎn)的灰度值。
3.圖像定位與校正
圖像定位采用Hough變換基本原理:利用圖像二維空間和hough參數(shù)極坐標(biāo)空間的點(diǎn)-線對(duì)偶關(guān),能夠獲得四條外圍直線,從而實(shí)現(xiàn)對(duì)QR碼的定位。我們通過探測(cè)QR碼定位模塊來實(shí)現(xiàn)二維碼的定位問題,系統(tǒng)把圖像檢測(cè)問題從二維空間轉(zhuǎn)換到極坐標(biāo)參數(shù)空間,把在二維空間中對(duì)x軸和y軸兩個(gè)方面的圖像掃描轉(zhuǎn)換成在極坐標(biāo)空間下的圖像掃描。將得到的結(jié)果再進(jìn)行簡(jiǎn)單的累加統(tǒng)計(jì),通過在hough參數(shù)空間尋找累加器最大值的方法來檢測(cè)二維空間中圖像的直線。Hough變換的優(yōu)點(diǎn)是:受噪聲和曲線間斷的影響較小,對(duì)于形狀為正方形的QR碼,尤其具有一定的優(yōu)勢(shì)。本文對(duì)圖像進(jìn)行幾何校正采用了雙線性變換法,利用圖像定位中獲得的二維碼圖像的四個(gè)頂點(diǎn)坐標(biāo),以及通過圖像校正后映射到新坐標(biāo)的四個(gè)頂點(diǎn)坐標(biāo)組成兩個(gè)線性方程組,求得其變換參數(shù),從而實(shí)現(xiàn)對(duì)圖像校正。
4.數(shù)據(jù)糾錯(cuò)解碼模塊的設(shè)計(jì)
QR二維碼通過采用Reed-Solomon糾錯(cuò)碼的糾錯(cuò)方法來保證網(wǎng)絡(luò)傳輸或者解碼過程中數(shù)據(jù)的完整性。RS糾錯(cuò)碼是一種非二進(jìn)制的BCH碼,能夠糾正每個(gè)碼字最多達(dá)16個(gè)Red-Solomon編碼錯(cuò)誤。譯碼模塊流程為:對(duì)格式信息譯碼;對(duì)版本信息譯碼,各模式下的數(shù)據(jù)譯碼。QR解碼過程是編碼過程的逆過程,數(shù)字模式的解碼過程如下:(1)首先得到數(shù)字個(gè)數(shù)n(即得到5-15位的數(shù)據(jù));(2)取10位數(shù)據(jù)流,轉(zhuǎn)換成10進(jìn)制得到3個(gè)數(shù)字;(3)若n=2,取接下來的7為數(shù)據(jù)流,轉(zhuǎn)換成10進(jìn)制得到2個(gè)數(shù)字,若n=1,取接下來的4為數(shù)據(jù)流,轉(zhuǎn)換成10進(jìn)制得到1個(gè)數(shù)字。數(shù)字解碼后得到的有多種信息,如:鏈接地址、后臺(tái)應(yīng)用程序、產(chǎn)品信息顯示等。
三、結(jié)語(yǔ)
本文設(shè)計(jì)并實(shí)現(xiàn)了基于Android智能手機(jī)二維碼識(shí)別系統(tǒng)。考慮到智能手機(jī)存在的利弊和不足,同時(shí)結(jié)合了先進(jìn)的智能手機(jī)應(yīng)用和現(xiàn)代軟件工程理論,二維碼作為物聯(lián)網(wǎng)產(chǎn)業(yè)中的一個(gè)環(huán)節(jié),因?yàn)槠淇梢源鎯?chǔ)大量信息和數(shù)據(jù),同時(shí)保密性能好,與智能手機(jī)等移動(dòng)終端能夠很好地相結(jié)合,增強(qiáng)了與用戶之間的互動(dòng)性,用戶體驗(yàn)效果好。二維碼的成本較低,形成了自己獨(dú)有的優(yōu)勢(shì),具有更好地應(yīng)用前景。
參考文獻(xiàn):
[1]王文豪,張亞紅,全銀,等.QRCode二維條碼的圖形識(shí)別技術(shù)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,8(2):40-43.
[2]馬鳴,李海波.基于Android的二維碼的生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012,8(16):6353-6356.
[3]徐玲,蔣欣志,張杰.手機(jī)二維碼識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2012,32(5):1474-1476.