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