王強(qiáng),張小溪,韓一紅
(西北工業(yè)大學(xué) 陜西 西安 710129)
圖像識別作為圖像技術(shù)的一個分支一直是圖像處理和模式識別領(lǐng)域的研究熱點。傳統(tǒng)的模式識別方法應(yīng)用于圖像識別主要是利用圖像的顏色特征、形狀特征、紋理特征等對圖像進(jìn)行比較[1-2],根據(jù)這些統(tǒng)計特征對圖像之間的相似度做出評價。
人工神經(jīng)網(wǎng)絡(luò)[3](Artificial Neural Network,ANN)的研究雖然自上世紀(jì)40年代才開始,但由于具有強(qiáng)大的自適應(yīng)能力、信息的分布式存儲、并行處理以及能很好的模擬非線性系統(tǒng),已經(jīng)在信息處理、模式識別等領(lǐng)域得到越來越廣泛的應(yīng)用。在圖像識別中常用的神經(jīng)網(wǎng)絡(luò)模型[4-5]有Hopfield神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)、小波網(wǎng)絡(luò)、細(xì)胞神經(jīng)網(wǎng)絡(luò)和模糊神經(jīng)網(wǎng)絡(luò)。對于數(shù)字圖像來說,采用神經(jīng)網(wǎng)絡(luò)是一種有效的手段,而MATLAB中包括的神經(jīng)網(wǎng)絡(luò)工具箱為相關(guān)的算法開發(fā)與數(shù)據(jù)分析提供了非常友好的環(huán)境,避開了比較繁雜的子程序編寫任務(wù)。
文中應(yīng)用MATLAB 7.1神經(jīng)網(wǎng)絡(luò)工具箱設(shè)計BP神經(jīng)網(wǎng)絡(luò),利用提取的圖像特征對BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,從而達(dá)到系統(tǒng)自動識別字符圖像的目的。
字符圖像預(yù)處理的目的是使字符圖像更清晰,邊緣更明顯,并將每一個字符分割出來便于進(jìn)行特征提取工作。針對本文選取的字符圖像,給出圖像預(yù)處理的一般流程圖如圖1所示。
圖1 字符圖像預(yù)處理流程圖Fig.1 Flow chart of character image pre-processing
原始字符圖像及經(jīng)過預(yù)處理之后的圖像如圖2、3所示。
圖2 原始字符圖像Fig.2 Initial character image
圖3 圖像預(yù)處理之后的字符Fig.3 Character image after pre-processing
經(jīng)過圖像預(yù)處理后得到的歸一化的結(jié)果為每個字符的像素數(shù)16×8(16為高度,像素行數(shù);8為寬度,像素列數(shù))大小。
特征提取可以看作是一種特殊的圖像數(shù)據(jù)的簡化,其目的是從高維的數(shù)據(jù)中抽取出有效的包含主要信息的低維數(shù)據(jù),便于圖像分割和識別。一般來說,良好的特征應(yīng)該具有可區(qū)別性、可靠性、獨立性好、數(shù)量少這4個特點。傳統(tǒng)的特征提取方法基于圖像的空頻域特征,包括傅里葉變換、小波變換等算法。
針對本文所要識別的圖像,對預(yù)處理之后得到的圖像提取的特征為歐拉數(shù)、字符圖像矩陣每行的與每列的黑色像素點之和這兩個特征。
特征1:歐拉數(shù)。歐拉數(shù)定義為一個區(qū)域中的孔數(shù)H和連接部分?jǐn)?shù)C的差:E=C-H。圖像的歐拉數(shù)是圖像的一種拓?fù)湫再|(zhì)度量,它表明了圖的連通性。
對數(shù)字圖像而言,如果圖像的背景用“0”標(biāo)記,目標(biāo)物體用“1”標(biāo)記,則歐拉數(shù)計算公式如下:
應(yīng)用MATLAB軟件可以用bweuler函數(shù)來求圖像的歐拉數(shù),調(diào)用格式為:
式(2)中,I為輸入的二值圖像,n設(shè)置鄰域的大小,即4-鄰域或8-鄰域,默認(rèn)值為8。不過必須注意,二值圖像的背景為“0”,目標(biāo)為“1”,檢測出的歐拉數(shù)才是目標(biāo)圖像的歐拉數(shù)。
特征2:字符圖像矩陣每行的與每列的黑色像素點之和。這種特征提取方法的算法就是自左向右對經(jīng)過預(yù)處理之后字符圖像進(jìn)行逐列的掃描,統(tǒng)計每列黑色像素的個數(shù),然后自上向下逐行掃描,統(tǒng)計每行的黑色像素的個數(shù),將統(tǒng)計的結(jié)果作為字符的特征矩陣。
BP(Error Back Propagation Network)神經(jīng)網(wǎng)絡(luò)[4,6]是在 1986年由Rumelhant和McClelland提出來的,是目前應(yīng)用最為廣泛和成功的神經(jīng)網(wǎng)絡(luò)之一。它是一種多層前饋神經(jīng)網(wǎng)絡(luò),最為普遍的為三層BP網(wǎng)絡(luò),所謂三層包括了輸入層、輸出層和中間層(或稱為隱層)。
圖4 一個典型的BP網(wǎng)絡(luò)Fig.4 A typical BP network
BP網(wǎng)絡(luò)結(jié)構(gòu)算法可描述如下:
1)設(shè)置變量和參數(shù),其中包括訓(xùn)練樣本,權(quán)值矩陣,學(xué)習(xí)速率。
2)初始化,給各個權(quán)值矩陣一個較小的隨機(jī)非零向量。
3)隨機(jī)輸入樣本。
4)對輸入樣本,前向計算BP網(wǎng)絡(luò)每層神經(jīng)元的輸入信號和輸出信號。
5)由期望輸出和上一步求得的實際輸出計算誤差E(n),判斷其是否滿足要求,若滿足則轉(zhuǎn)至第8步,不滿足則轉(zhuǎn)至第6步。
6)判斷是否大于最大迭代次數(shù),若大于則轉(zhuǎn)至第8步,若不大于,對輸入樣本方向計算每層神經(jīng)元的局部梯度δ。
7)根據(jù)局部梯度修正各個矩陣的權(quán)值。
8)判斷是否學(xué)完所有的訓(xùn)練樣本,是則結(jié)束,否則轉(zhuǎn)至第3步。
神經(jīng)網(wǎng)絡(luò)應(yīng)用于圖像識別的一般模型如圖5所示。
圖5 神經(jīng)網(wǎng)絡(luò)圖像識別框圖Fig.5 Model of image recognition based on ANN
在設(shè)計BP網(wǎng)絡(luò)時有大量的工作需要進(jìn)行,而在Matlab 7.1的神經(jīng)網(wǎng)絡(luò)工具箱中有對應(yīng)的函數(shù)可完成BP網(wǎng)絡(luò)設(shè)計時所涉及到的全部計算任務(wù)。通過應(yīng)用神經(jīng)網(wǎng)絡(luò)工具箱可以較為便捷地完成BP網(wǎng)絡(luò)的設(shè)計。
MATLAB神經(jīng)網(wǎng)絡(luò)工具箱中提供的相關(guān)函數(shù)主要有:BP網(wǎng)絡(luò)生成函數(shù)newff,神經(jīng)元變換函數(shù),初始化函數(shù)init,學(xué)習(xí)函數(shù),性能函數(shù),訓(xùn)練函數(shù)train,BP訓(xùn)練算法函數(shù),仿真函數(shù)sim,繪圖函數(shù) poltperf。
應(yīng)用Matlab神經(jīng)網(wǎng)絡(luò)工具箱[7]實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的基本步驟如下:
1)網(wǎng)絡(luò)創(chuàng)建 通過函數(shù)newff生成一個BP網(wǎng)絡(luò),它會根據(jù)樣本數(shù)據(jù)自動確定輸入層、輸出層的神經(jīng)元的數(shù)目,而隱層的層數(shù)、隱層神經(jīng)元數(shù)目、隱層和輸出層的變換函數(shù)、訓(xùn)練算法函數(shù)由用戶自己確定;
2)網(wǎng)絡(luò)初始化 當(dāng)newff創(chuàng)建網(wǎng)絡(luò)對象的同時,自動調(diào)動函數(shù)init根據(jù)缺省的參數(shù)對網(wǎng)絡(luò)進(jìn)行連接權(quán)值和閾值的初始化;
3)通過函數(shù)train對網(wǎng)絡(luò)進(jìn)行訓(xùn)練 對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練有2種方式,一種是增加方式,即每輸入一個學(xué)習(xí)樣本就根據(jù)網(wǎng)絡(luò)誤差進(jìn)行連接權(quán)值和閾值的更新;另一種是批處理方式,即只有全部學(xué)習(xí)樣本都學(xué)習(xí)完成后,才進(jìn)行網(wǎng)絡(luò)連接權(quán)值和閾值的更新。函數(shù)train采用的是批處理方式,要對其參數(shù)進(jìn)行設(shè)置,如學(xué)習(xí)步長、誤差目標(biāo)等;
4)網(wǎng)絡(luò)仿真 函數(shù)sim根據(jù)已訓(xùn)練好的網(wǎng)絡(luò)對測試數(shù)據(jù)進(jìn)行仿真計算。利用此函數(shù),可以在網(wǎng)絡(luò)訓(xùn)練前后分別進(jìn)行輸入輸出的仿真,以作比較,從而對網(wǎng)絡(luò)進(jìn)行修改評價。
文中采用3層BP網(wǎng)絡(luò),具體設(shè)計如下:
1)輸入層 本文將訓(xùn)練樣本圖片中提取的字符圖像特征:歐拉數(shù)與圖像矩陣每行的與每列的黑色像素點之和作為BP神經(jīng)網(wǎng)絡(luò)的輸入p矩陣。輸入層節(jié)點數(shù)為25。
2)輸出層 規(guī)定:如果網(wǎng)絡(luò)輸入為字符“0”則目標(biāo)輸出t對應(yīng)列的行元素全為“0.1”,輸入為“1”則t對應(yīng)列的第一行元素為“0.9”,其余行元素全為“0.1”,輸入為“2”則對應(yīng)列的第二行元素為“0.9”,其余行元素為“0.1”,依次類推。輸出層節(jié)點數(shù)為9。
3)隱層 隱層節(jié)點數(shù)的確定按照下面的經(jīng)驗公式[8]:
其中,n為輸入節(jié)點數(shù),m為輸出節(jié)點數(shù),n1為隱層節(jié)點數(shù)。計算確定隱層的節(jié)點數(shù)為35。
確定完BP的三層網(wǎng)絡(luò)后就可以對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后用訓(xùn)練好的網(wǎng)絡(luò)來進(jìn)行模式分類實現(xiàn)字符圖像的識別。圖6為網(wǎng)絡(luò)的訓(xùn)練過程。
仿真結(jié)果表明,單個字符的識別率不近相同,最高的為字符8,識別率達(dá)95%,最低的為字符2,識別率為75.5%,所有字符平均識別率為89%。
由實驗仿真可知,采用神經(jīng)網(wǎng)絡(luò)識別圖像是切實可行的,由于時間關(guān)系,目前只是對普通的BP網(wǎng)絡(luò)進(jìn)行了研究應(yīng)用。下一步的工作是研究BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)算法,并應(yīng)用改進(jìn)的BP網(wǎng)絡(luò)提高圖像的識別率以及對復(fù)雜圖像的識別。
圖6 BP網(wǎng)絡(luò)訓(xùn)練圖Fig.6 BP network training chart
[1]齊敏,李大建,郝重陽.模式識別導(dǎo)論[M].北京:清華大學(xué)出版社,2009.
[2]何明一,衛(wèi)保國.數(shù)字圖像處理[M].北京:科學(xué)出版社,2008.
[3]韓力群.人工神經(jīng)網(wǎng)絡(luò)理論、設(shè)計及應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2007.
[4]周日貴,姜楠,丁秋林.量子Hopfield神經(jīng)網(wǎng)絡(luò)及圖像識別[J].中國圖象圖形學(xué)報,2008,13(1):119-123.
ZHOU Ri-gui,JIANG Nan,DING Qiu-lin.Quantum Hopfield neural network and image recognition[J].Journal of Image and Graphics,2008,13(1):119-123.
[5]蘭雪梅,朱建,黃承明,等.BP網(wǎng)絡(luò)的MATLAB實現(xiàn)[J].微型電腦應(yīng)用,2003,19(1):6-8.
LAN Xue-mei,ZHU Jian,HUANG Cheng-ming,et al.BP network realization in MATLAB[J].Microcomputer Application,2003,19(1):6-8.
[6]張海波,董槐林,龍飛,等.基于BP神經(jīng)網(wǎng)絡(luò)的圖像識別研究[J].計算機(jī)與現(xiàn)代化,2008(5):17-19.
ZHANG Hai-bo,DONG Huai-lin,LONG Fei,et al.Research on image recognition based on BP neural network[J].Computer and Modernization,2008(5):17-19.
[7]張浩然,韓正之,李昌剛.基于MATLAB的神經(jīng)網(wǎng)絡(luò)辨識與控制工具箱[J].計算機(jī)仿真,20(3):72-74.
ZHANG Hao-ran, HAN Zheng-zhi, LI Chang-gang.Neural network based system identification and control toolboxes in MATLAB environment[J].Computer Simulation,20(3):72-74.
[8]戚德虎,康繼昌.BP神經(jīng)網(wǎng)絡(luò)的設(shè)計[J].計算機(jī)工程與設(shè)計,1998,19(2):48-50.
QI De-hu,KANG Ji-chuang.Design of the BP neural network[J].Computer Engineering and Design,1998,19(2):48-50.