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