韓 華
(1.中北大學(xué),山西 太原 030051;2.長(zhǎng)治學(xué)院,山西 長(zhǎng)治 046011)
數(shù)字識(shí)別系統(tǒng)是模式識(shí)別領(lǐng)域的重要研究方向,它在許多場(chǎng)合,如智能交通管理系統(tǒng)、手寫(xiě)數(shù)字報(bào)表中都有廣泛的應(yīng)用。數(shù)字識(shí)別系統(tǒng)主要由三個(gè)基本模塊構(gòu)成:預(yù)處理模塊、提取數(shù)字特征模塊和根據(jù)特征進(jìn)行分類模塊。預(yù)處理模塊主要是對(duì)圖像去除噪聲,增強(qiáng)有用的信息,并對(duì)那些因?yàn)槌上裨O(shè)備、周圍環(huán)境或其他因素造成的退化現(xiàn)象進(jìn)行復(fù)原,從而抽取識(shí)別數(shù)字所需要的特征。
特征提取模塊主要是獲取一組“少而精”的分類特征,即獲取特征數(shù)目少且分類錯(cuò)誤概率小的特征向量。目前特征提取的一般方法主要有直接對(duì)圖像點(diǎn)陣進(jìn)行降維、基于統(tǒng)計(jì)的特征選取和基于字符結(jié)構(gòu)特征的選取方法。每種選取方法各有其優(yōu)劣,但是無(wú)論采用哪種算法,用于識(shí)別的特征應(yīng)該便于提取,并且需要具有較高的穩(wěn)定性和抗干擾性。
文章采用基于BP神經(jīng)網(wǎng)絡(luò)的分類器設(shè)計(jì)。BP神經(jīng)網(wǎng)絡(luò)是多層網(wǎng)絡(luò)學(xué)習(xí)算法,其典型結(jié)構(gòu)包括一個(gè)輸入層、一個(gè)或多個(gè)隱層和一個(gè)輸出層,。本文采用了3層BP網(wǎng)絡(luò),即只有一個(gè)隱層。該網(wǎng)絡(luò)中的傳輸函數(shù)通常采用S型函數(shù),可以將整個(gè)網(wǎng)絡(luò)的輸出限制在一個(gè)較小的范圍內(nèi)。網(wǎng)絡(luò)相鄰層次的神經(jīng)元相互連接,形成全互連神經(jīng)網(wǎng)絡(luò),而相同層次內(nèi)的神經(jīng)元之間沒(méi)有相互連接。
由于輸入的圖像一般是RGB格式,預(yù)處理模塊首先需要將該圖像通過(guò)rgb2gray函數(shù)轉(zhuǎn)化為256級(jí)的灰度圖像,然后對(duì)灰度圖像進(jìn)行歸一化處理,通過(guò)im2bw函數(shù)將其轉(zhuǎn)化為二值化的圖像。即將每一個(gè)像素點(diǎn)的灰度值除以255,使像素的灰度值歸一化為只包含“0”、“1”的矩陣形式。筆者在圖像處理中使用了灰度化、圖像二值化、平滑去噪、邊緣提取與字符分割等操作,具體步驟如下。
讀取待識(shí)別的圖像,如圖1所示。首先進(jìn)行灰度化與二值化處理。經(jīng)試驗(yàn),門(mén)限值采用0.4附近時(shí)噪聲小且沒(méi)有斷開(kāi),便于后期統(tǒng)計(jì),最終效果如圖2所示。
圖1 待識(shí)別圖像
圖2 灰度化與二值化圖像
圖像邊緣是指灰度有階躍變化的那些像素的集合,是圖像的基本特征。經(jīng)典的邊緣提取方法是考察圖像的每個(gè)像素在某個(gè)領(lǐng)域內(nèi)灰度的變化,利用邊緣鄰近一階或二階方向倒數(shù)變化規(guī)律,用簡(jiǎn)單的方法提取圖像邊緣。本論文采用sobel算子對(duì)二值化圖像提取邊緣特征[1],然后通過(guò)膨脹與填充,使每個(gè)數(shù)字成為連通區(qū)域,并查找連通區(qū)域邊界,同時(shí)保留此邊界圖形,以便后續(xù)進(jìn)行數(shù)字識(shí)別。
基于連通區(qū)域的聚類分析分割方法是將屬于同一個(gè)字符的像素構(gòu)成一個(gè)連通區(qū)域,再根據(jù)字符的高度和寬度搜索符合特征的連通區(qū)域[2]。由連通區(qū)域的起始位置和終止位置構(gòu)成一個(gè)矩形區(qū)域,這樣的矩形區(qū)定義為一個(gè)類。文章采用8鄰域?qū)D像進(jìn)行標(biāo)記,這樣的算法對(duì)傾斜圖像也能較好的分割出字符。
特征提取是為了求出一組對(duì)分類最有效的特征,這就需要一個(gè)定量的準(zhǔn)則來(lái)衡量特征對(duì)分類的有效性。將一個(gè)高維空間變換到低維空間時(shí),特征提取的主要目的就是降低維數(shù),降維的映射有很多種,哪種映射對(duì)分類最有利,需要一個(gè)評(píng)判的標(biāo)準(zhǔn)。
理想的特征之間應(yīng)該相互獨(dú)立,特征向量的維數(shù)應(yīng)該盡可能的小。特征一般可分為結(jié)構(gòu)特征和統(tǒng)計(jì)特征。結(jié)構(gòu)特征廣泛應(yīng)用于模式識(shí)別的眾多領(lǐng)域。字符的結(jié)構(gòu)雖然比較復(fù)雜,但還是有相當(dāng)嚴(yán)格的規(guī)律可循。在字符圖像中包含了豐富的結(jié)構(gòu)信息,我們可以抽取這些結(jié)構(gòu)特征作為字符識(shí)別的依據(jù),比如端點(diǎn)、交叉點(diǎn)等。然而在字符圖像中抽取筆劃操作比較困難,所以通常先將原始圖像進(jìn)行細(xì)化處理,提高識(shí)別度。但針對(duì)數(shù)字筆劃簡(jiǎn)單的特點(diǎn),采取統(tǒng)計(jì)特征比較適合。
統(tǒng)計(jì)特征是利用統(tǒng)計(jì)方法計(jì)算得到的,反映了圖像點(diǎn)陣的整體分布情況(手寫(xiě)數(shù)字識(shí)別的研究)。統(tǒng)計(jì)特征又可以分為全局特征和局部特征兩大類。全局特征是對(duì)整個(gè)字符圖像進(jìn)行變換,包括KL變換、小波變換、矩特征等等。局部統(tǒng)計(jì)特征是將字符圖像分割成若干個(gè)子塊,在各個(gè)子塊內(nèi)分別抽取統(tǒng)計(jì)特征。主要包括:局部灰度特征、四角特征等。本論文通過(guò)粗網(wǎng)格方法提取特征,粗網(wǎng)格是局部特征,首先把樣本歸一化為70×50的圖像,然后按行7等分,按列5等分,并依次統(tǒng)計(jì)每個(gè)網(wǎng)格內(nèi)的像素值,得到一個(gè)7×5維的特征矩陣,最后對(duì)特征矩陣進(jìn)行歸一化處理。
BP神經(jīng)網(wǎng)絡(luò)算法是把一組樣本輸入輸出問(wèn)題轉(zhuǎn)化為一個(gè)非線性優(yōu)化問(wèn)題,并通過(guò)梯度算法利用迭代運(yùn)算求解權(quán)值的一種學(xué)習(xí)方法。人工神經(jīng)網(wǎng)絡(luò)是參照生物神經(jīng)網(wǎng)絡(luò)發(fā)展起來(lái)的,其組織能夠模擬生物神經(jīng)系統(tǒng)對(duì)真實(shí)世界所作出的交互反應(yīng)。BP網(wǎng)絡(luò)的設(shè)計(jì)主要包括輸入層、隱含層、輸出層以及各層之間的傳輸函數(shù),其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖3所示。
圖3 神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
BP神經(jīng)元與其他神經(jīng)元類似,但BP神經(jīng)元的傳輸函數(shù)為非線性函數(shù),最常用的是logsig和tansig函數(shù)。本實(shí)驗(yàn)輸出值限制在(0,1)范圍,因此選用logsig函數(shù),其輸出為 a=log sig(Wp+b)。
按照BP神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)方法采用三層BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),其輸入節(jié)點(diǎn)數(shù)為16×16=256。因?yàn)橹恍璺诸?~9這樣0個(gè)數(shù)字,所以中間層傳輸函數(shù)選用Sigmoid函數(shù)。假設(shè)用一個(gè)輸出節(jié)點(diǎn)表示10個(gè)數(shù)字,則輸出層傳輸函數(shù)為pureline,中間層節(jié)點(diǎn)數(shù)為+α,再結(jié)合實(shí)驗(yàn),隱含層神經(jīng)元個(gè)數(shù)取為25。
(1)構(gòu)造訓(xùn)練樣本集,并構(gòu)成訓(xùn)練所需的輸入矢量和目標(biāo)矢量:準(zhǔn)備10組,每組10個(gè)數(shù)字圖片作為訓(xùn)練樣本,如圖4所示。首先調(diào)用預(yù)處理函數(shù),取出其最大有效區(qū)域,歸一為16×16的二值圖像,作為輸入矢量。
圖4 訓(xùn)練樣本集
(2)設(shè)定訓(xùn)練目標(biāo),構(gòu)造BP神經(jīng)網(wǎng)絡(luò),并根據(jù)訓(xùn)練樣本集形成的輸入矢量和目標(biāo)矢量,將提取的數(shù)字特征送入BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,如下程序所示。
(3)對(duì)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練器進(jìn)行仿真。用不同的方法生成測(cè)試樣本圖像,識(shí)別效果如圖5所示。
圖5 識(shí)別效果圖
通過(guò)Matlab編程能夠識(shí)別圖片上的數(shù)字,經(jīng)實(shí)驗(yàn)驗(yàn)證該系統(tǒng)可以達(dá)到一定的識(shí)別精度。但是也存在缺點(diǎn)和不足,比如對(duì)訓(xùn)練樣本集有一定的要求,對(duì)圖片中待識(shí)別的數(shù)字也有一定的限制,因此數(shù)字識(shí)別系統(tǒng)還有待進(jìn)一步的完善,可以通過(guò)增加訓(xùn)練樣本,或增加字體的特征向量等方法來(lái)解決。
[1]杜梅,趙懷慈.手寫(xiě)數(shù)字識(shí)別的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(15):3464-3467.
[2]毛群,王少飛.基于Matlab的神經(jīng)網(wǎng)絡(luò)數(shù)字識(shí)別系統(tǒng)實(shí)現(xiàn)[J].中國(guó)西部科技,2010,9(19):22-24.