摘 要: 在復(fù)雜背景下的二維碼區(qū)域定位一直是QR Code二維條碼解碼過(guò)程中的難題之一,。二維碼區(qū)域掃描定位是通過(guò)二維碼的圖形特點(diǎn)來(lái)實(shí)現(xiàn),,其存在掃描定位效率較低的缺點(diǎn)。為此提出在掃描定位之前通過(guò)圖像處理結(jié)合BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)QR Code二維碼條碼區(qū)域提取方法,?;疖嚻蓖ㄟ^(guò)圖像預(yù)處理得到可能是二維碼的區(qū)域塊,,提取經(jīng)圖像處理后的二維碼區(qū)域塊圖像特征并結(jié)合BP神經(jīng)網(wǎng)絡(luò)過(guò)濾出正確的二維碼區(qū)域。此方法實(shí)現(xiàn)了尋找一幅圖像中二維碼區(qū)域的圖像,,結(jié)合二維碼圖形掃描定位方法,提高了二維碼掃描定位的效率,,得到了較好的效果,。
關(guān)鍵詞: BP神經(jīng)網(wǎng)絡(luò),;QR Code二維碼,;區(qū)域提取,;圖像預(yù)處理
0 引言
隨著信息技術(shù)的發(fā)展,,二維條碼技術(shù)在我國(guó)的應(yīng)用越來(lái)越廣泛。QR Code二維碼是由按特定規(guī)則排列的正方形模塊陣列組成,,其符號(hào)形狀為正方形,。在符號(hào)的三個(gè)角上各有一個(gè)獨(dú)特的位置探測(cè)圖形,協(xié)助確定符號(hào)的位置,、尺寸及符號(hào)與識(shí)讀參考坐標(biāo)的傾斜角度[1],。QR Code二維碼具有信息量大、可靠性高,、超高速全方位識(shí)讀,、高效漢字表示等優(yōu)點(diǎn)。目前的二維條碼的識(shí)讀器主要分為兩類,一類是激光讀取,,一類是圖像讀取,。激光讀取方式因?yàn)槭芟抻跅l碼的制式,其發(fā)展空間越變?cè)叫?。而圖像讀取方式則因其二維信息的獲取優(yōu)勢(shì),并可以脫離專用識(shí)讀器,,因此其發(fā)展的空間很大[2]。但是二維碼在圖像掃描定位之前,,由于受到掃描區(qū)域大小的影響,,掃描區(qū)域面積大,系統(tǒng)識(shí)讀之前需要花大量的時(shí)間掃描整幅圖像的各個(gè)區(qū)域,,造成了系統(tǒng)掃描時(shí)間長(zhǎng)、效率低的問(wèn)題。針對(duì)這個(gè)問(wèn)題,,本文提出了二維碼圖像定位識(shí)別預(yù)處理,可以快速找到二維碼區(qū)域,,以便系統(tǒng)更快,、更高效地識(shí)讀二維碼。
1 系統(tǒng)控制原理
本系統(tǒng)主要通過(guò)BP神經(jīng)網(wǎng)絡(luò)將圖像處理后含有干擾信號(hào)的區(qū)域?yàn)V掉,,過(guò)濾出比較正確的二維碼圖像區(qū)域信息,,系統(tǒng)實(shí)驗(yàn)流程圖如圖1所示。
2 圖像預(yù)處理
火車票圖像處理主要目的有兩個(gè):一個(gè)是濾掉干擾信號(hào),,另一個(gè)是得到二維碼區(qū)域塊,。需要解決的問(wèn)題是對(duì)其進(jìn)行正確的二值化處理和矩形框的開(kāi)閉運(yùn)算。
2.1 圖像增強(qiáng)
圖像增強(qiáng)是按特定的需要將圖像中感興趣的特征有選擇地突出出來(lái),,衰減不需要的特征,提高圖像的可懂度,。圖像增強(qiáng)不考慮圖像降質(zhì)的原因,而且改善后的圖像也不一定逼近原圖像,,這是它與圖像復(fù)原的本質(zhì)區(qū)別,。因此圖像增強(qiáng)的主要目的有兩個(gè):一是改善圖像的視覺(jué)效果,,提高圖像的清晰度,;二是將圖像轉(zhuǎn)換成一種更適合人類或機(jī)器進(jìn)行分析處理的形式,,從圖像中獲取更多有用的信息。
圖像增強(qiáng)方法大致分為兩類:一類是空間域處理法,,另一類是頻域處理法,??臻g域是直接對(duì)圖像的像素進(jìn)行處理,基本上是以灰度映射變換為基礎(chǔ),,所用的映射變換取決于圖像的特點(diǎn)和增強(qiáng)的目的,,主要包括灰度修正、圖像平滑和銳化等,。頻域處理法是在圖像的某種變換域內(nèi),,對(duì)變換后的系數(shù)進(jìn)行運(yùn)算,然后再求其反變換到原來(lái)的空間域得到增強(qiáng)的圖像,,主要包括:低通濾波,、高通濾波、帶阻濾波,、同態(tài)濾波等,。因此,根據(jù)設(shè)計(jì)的要求,,本系統(tǒng)采用空間域處理法,,通過(guò)像素的處理有選擇地突出二維碼區(qū)域。本系統(tǒng)首先通過(guò)imadjust函數(shù)增強(qiáng)圖像,,再通過(guò)strel和imopen兩個(gè)函數(shù)得到背景圖像,,最后將增強(qiáng)圖像和背景圖像相減得到增強(qiáng)后突出的圖像,。如圖2和圖3所示。
2.2 圖像矩形框開(kāi)閉運(yùn)算
本系統(tǒng)采用了形態(tài)學(xué)運(yùn)算中開(kāi)運(yùn)算和閉運(yùn)算方法過(guò)濾,,得到可能為二維碼的區(qū)域,,在系統(tǒng)進(jìn)行開(kāi)運(yùn)算和閉運(yùn)算之前,濾除火車票背景的干擾圖像并用Canny算子識(shí)別強(qiáng)度圖像中的邊界,。Canny算子是比較經(jīng)典的且應(yīng)用廣泛的邊緣檢測(cè)算法,。濾除火車票外部背景且將感興趣的二維碼區(qū)域圖像增強(qiáng)了,但是火車票上面的干擾字也會(huì)隨著增強(qiáng),。濾除背景圖像效果如圖4所示,,Canny邊緣檢測(cè)效果如圖5所示。
對(duì)圖像進(jìn)行形態(tài)學(xué)運(yùn)算中的開(kāi)運(yùn)算和閉運(yùn)算之前,,首先得了解形態(tài)學(xué)運(yùn)算中的腐蝕和膨脹[3],。
(1)腐蝕是一種消除邊界點(diǎn),、使邊界向內(nèi)部收縮的過(guò)程,,可以用來(lái)消除小且無(wú)意義的物體。腐蝕的算法:用3×3的結(jié)構(gòu)元素,,掃描圖像的每一個(gè)像素,,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作,如果都為1,,則結(jié)果圖像的該像素為1,,否則為0,使二值圖像減小一圈,。
?。?)膨脹是將與物體接觸的所有背景點(diǎn)合并到該物體中,使邊界向外部擴(kuò)張的過(guò)程,,可以用來(lái)填補(bǔ)物體中的空洞,。膨脹的算法:用3×3的結(jié)構(gòu)元素,掃描圖像的每一個(gè)像素,,用結(jié)構(gòu)元素與其覆蓋的二值圖像做“與”操作,,如果都為0,則結(jié)果圖像的該像素為0,,否則為1,,使二值圖像擴(kuò)大一圈。
然而,,二值圖像開(kāi)運(yùn)算和閉運(yùn)算是通過(guò)腐蝕和膨脹定義的,。因此,二值圖像先腐蝕后膨脹的過(guò)程稱為開(kāi)運(yùn)算,,用來(lái)消除小物體,、在纖細(xì)點(diǎn)處分離物體,、平滑較大物體的邊界的同時(shí)并不明顯改變其面積;二值圖像先膨脹后腐蝕的過(guò)程稱為閉運(yùn)算,,用來(lái)填充物體內(nèi)細(xì)小空洞,、連接鄰近物體、平滑其邊界的同時(shí)并不明顯改變其面積,?;疖嚻眻D像經(jīng)過(guò)一次閉運(yùn)算和兩次開(kāi)運(yùn)算之后就能得到長(zhǎng)方形狀的區(qū)域如圖6所示,每個(gè)區(qū)域塊可能是二維碼,,也可能是干擾區(qū)域,。因此,通過(guò)BP神經(jīng)網(wǎng)絡(luò)將干擾區(qū)域?yàn)V除掉,,即可得到想要的二維碼區(qū)域。
3 BP神經(jīng)網(wǎng)絡(luò)
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò),,即誤差反傳誤差反向傳播算法的學(xué)習(xí)過(guò)程,,由信息的正向傳播和誤差的反向傳播兩個(gè)過(guò)程組成。輸入層各神經(jīng)元負(fù)責(zé)接收來(lái)自外界的輸入信息,,并傳遞給中間層各神經(jīng)元,;中間層是內(nèi)部信息處理層,負(fù)責(zé)信息變換,,根據(jù)信息變化能力的需求,,中間層可以設(shè)計(jì)為單隱層或者多隱層結(jié)構(gòu);最后一個(gè)隱層傳遞到輸出層各神經(jīng)元的信息,,經(jīng)進(jìn)一步處理后,,完成一次學(xué)習(xí)的正向傳播處理過(guò)程,由輸出層向外界輸出信息處理結(jié)果,。當(dāng)實(shí)際輸出與期望輸出不符時(shí),,進(jìn)入誤差的反向傳播階段。誤差通過(guò)輸出層,,按誤差梯度下降的方式修正各層權(quán)值,,向隱層、輸入層逐層反傳,。周而復(fù)始地進(jìn)行信息正向傳播和誤差反向傳播過(guò)程,,是各層權(quán)值不斷調(diào)整的過(guò)程,也是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)訓(xùn)練的過(guò)程,。此過(guò)程一直進(jìn)行到網(wǎng)絡(luò)輸出的誤差減小到可以接受的程度,,或者達(dá)到預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止。BP神經(jīng)網(wǎng)絡(luò)模型包括其輸入輸出模型,、作用函數(shù)模型,、誤差計(jì)算模型和自學(xué)習(xí)模型[4],。
(1)節(jié)點(diǎn)輸出模型
隱節(jié)點(diǎn)輸出模型:
輸出節(jié)點(diǎn)輸出模型:
f為非線性作用函數(shù),;θ為神經(jīng)單元閾值,。
(2)作用函數(shù)模型
作用函數(shù)是反映下層輸入對(duì)上層節(jié)點(diǎn)刺激脈沖強(qiáng)度的函數(shù),,又稱刺激函數(shù),,一般為在(0,1)內(nèi)連續(xù)取值的Sigmoid函數(shù):
f(x)=1/(1+e-x)(3)
?。?)誤差計(jì)算模型
誤差計(jì)算模型是反映神經(jīng)網(wǎng)絡(luò)期望輸出與計(jì)算輸出之間誤差大小的函數(shù):
Tpi為i節(jié)點(diǎn)的期望輸出值,;Opi為i節(jié)點(diǎn)計(jì)算輸出值。
?。?)自學(xué)習(xí)模型
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程,,即連接下層節(jié)點(diǎn)和上層節(jié)點(diǎn)之間的權(quán)重矩陣Wij的設(shè)定和誤差修正過(guò)程。BP網(wǎng)絡(luò)中,,有師學(xué)習(xí)方式需要設(shè)定期望值,,無(wú)師學(xué)習(xí)方式則只需輸入模式。自學(xué)習(xí)模型為:
h為學(xué)習(xí)因子,;Фi為輸出節(jié)點(diǎn)i的計(jì)算誤差,;Oj為輸出節(jié)點(diǎn)j的計(jì)算輸出;a為動(dòng)量因子,。
神經(jīng)網(wǎng)絡(luò)需要有一定量的歷史數(shù)據(jù),,通過(guò)歷史數(shù)據(jù)的訓(xùn)練,網(wǎng)絡(luò)可以學(xué)習(xí)到數(shù)據(jù)中隱含的知識(shí),。在需要解決的問(wèn)題中,,首先要找到某些問(wèn)題的一些特征,以及對(duì)應(yīng)的評(píng)價(jià)數(shù)據(jù),,用這些數(shù)據(jù)來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò),。
3.1 二維碼圖像的特征提取
在神經(jīng)網(wǎng)絡(luò)中,特征提取是至關(guān)重要的一部分,。如果特征向量太多,,則需要對(duì)特征向量進(jìn)行降維處理。本系統(tǒng)的特征向量提取方法是直接采集圖像特征值,,通過(guò)圖像處理得到正確的二維碼區(qū)域塊,,并將二維碼區(qū)域塊的面積、周長(zhǎng),、長(zhǎng)寬之比,、像素點(diǎn)、偏心率等作為圖像特征的向量。系統(tǒng)中的特征提取樣本圖片來(lái)源于百度網(wǎng)頁(yè)圖片,,圖像的光照強(qiáng)度都不同,,對(duì)于研究比較苛刻,因此增大了圖像處理和特征提取的難度,,并會(huì)對(duì)神經(jīng)網(wǎng)絡(luò)的識(shí)別率造成影響,。系統(tǒng)中的特征向量被存放在EXCEL文檔中,主要包含了圖像面積與周長(zhǎng)之比,、長(zhǎng)寬之比,、偏心率三個(gè)特征向量。
3.2 BP神經(jīng)網(wǎng)絡(luò)的建立[4]
MATLAB神經(jīng)網(wǎng)絡(luò)工具箱提供函數(shù)newff來(lái)創(chuàng)建一個(gè)前向型BP神經(jīng)網(wǎng)絡(luò),。其常用的調(diào)用格式為:
net=newff(P,,T,[S1S2…S(N-1),,{TF1 TF2...TF(N)})
其中,,P,T分別為輸入樣本和期望響應(yīng),;Si為網(wǎng)絡(luò)各層的神經(jīng)元數(shù)目,;TFi為網(wǎng)絡(luò)各層的傳遞函數(shù)類型。
本系統(tǒng)采用上述newff創(chuàng)建一個(gè)前向型BP神經(jīng)網(wǎng)絡(luò),,網(wǎng)絡(luò)中間隱層采用logsig函數(shù),輸出層采用purelin函數(shù),,對(duì)應(yīng)的訓(xùn)練函數(shù)采用trainlm,。建立前向型BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):
net=newff(minmax(P),[2,,1],,{‘logsig’,‘purelin’},,‘trainlm’)
BP神經(jīng)網(wǎng)絡(luò)采用兩層神經(jīng)元構(gòu)成,,其模型如圖7所示,BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程及訓(xùn)練狀態(tài)分別如圖8,、圖9所示,。
3.3 BP神經(jīng)網(wǎng)絡(luò)樣本測(cè)試
將測(cè)試樣本通過(guò)sim函數(shù)輸入到神經(jīng)網(wǎng)絡(luò)進(jìn)行測(cè)試,并將輸出結(jié)果和期望值,、輸出預(yù)測(cè)誤差顯示出來(lái),,并提供結(jié)果分析,其結(jié)果如圖10,、圖11和圖12所示,。
樣本測(cè)試結(jié)果表明,系統(tǒng)輸出和期望輸出出現(xiàn)的誤差變化較小,,出錯(cuò)率低,,可以實(shí)現(xiàn)經(jīng)圖像處理輸出的二維碼區(qū)域塊的濾波,,得到本系統(tǒng)所需的二維碼區(qū)域。實(shí)驗(yàn)樣本數(shù)據(jù)較少,,都是通過(guò)人工實(shí)驗(yàn)提取出來(lái)的樣本數(shù)據(jù),,這樣不能完全反映出整體現(xiàn)象,但是足以證明實(shí)驗(yàn)結(jié)果是可行的,。
4 結(jié)論與展望
本系統(tǒng)的構(gòu)思來(lái)源于圖像處理中圖像分割最大連通域,。起初由于出發(fā)點(diǎn)出現(xiàn)錯(cuò)誤,走了很多的彎路,,二維碼區(qū)域是分散的,,不是封閉連通的,因此導(dǎo)致了無(wú)法計(jì)算出最大連通域,。最后通過(guò)圖像的開(kāi)運(yùn)算和閉運(yùn)算得到了很好的效果,。此方法既實(shí)用又方便,可以得到物體的輪廓和骨架等信息,。當(dāng)然系統(tǒng)存在很多的不足,,比如圖像的像素不同提取出來(lái)的二維碼質(zhì)量也不盡相同,這是當(dāng)前無(wú)法解決的問(wèn)題,,需要不斷的改進(jìn),。此系統(tǒng)結(jié)合BP神經(jīng)網(wǎng)絡(luò)過(guò)濾出二維碼區(qū)域相對(duì)于基于Gabor濾波器和BP神經(jīng)網(wǎng)絡(luò)二維碼區(qū)域提取算法較為簡(jiǎn)單,提高了運(yùn)算速度并節(jié)省了運(yùn)算時(shí)間,,Gabor濾波器需要對(duì)圖像的每個(gè)像素點(diǎn)進(jìn)行40維濾波處理,,因此消耗了大量的時(shí)間進(jìn)行計(jì)算,導(dǎo)致計(jì)算周期長(zhǎng)的缺點(diǎn)[5],。最后希望能夠選擇更好的圖像處理算法,,選擇更加合適的神經(jīng)網(wǎng)絡(luò)算法解決上述問(wèn)題。
參考文獻(xiàn)
[1] 肖翔,,劉曉明,,王云柯.QR碼圖像的矯正與定位方法研究[J].計(jì)算機(jī)科學(xué),2007,,34(11):217-219.
[2] 張然,,朱虹,張瞳,,等.一種低質(zhì)量QR Code二維碼圖像的預(yù)處理方法[J].計(jì)算機(jī)科學(xué),,2008,35(4):146-148.
[3] 耿帥.基于數(shù)學(xué)形態(tài)學(xué)的圖像去噪[D].濟(jì)南:山東師范大學(xué),,2012:17-31.
[4] 朱凱,,王正林.精通MATLAB神經(jīng)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2009:193-224.
[5] 楊兆遠(yuǎn),吳佳鵬,,白卓夫,,等.基于Gabor濾波器和BP神經(jīng)網(wǎng)絡(luò)的二維條碼區(qū)域提取[J].天津大學(xué)學(xué)報(bào),2010,,43(3):210-214.