【正文】
)。)) set(hObject,39。 isequal(get(hObject,39。) returns contents of editNN as text% str2double(get(hObject,39。string39。,selected_net)。string39。 = charvec。% Executes on button press in pbExtract.function pbExtract_Callback(hObject, eventdata, handles)% hObject handle to pbExtract (see GCBO)% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)bw2 = 。axes()。bw = im2bw(img_crop,graythresh(imgGray))。 = img_crop。axes()。imshow(S)。Pick an Image File39。*.gif39。*.bmp39。% UIWAIT makes charGUI wait for user response (see UIRESUME)% uiwait()。net39。end% End initialization code DO NOT EDIT% Executes just before charGUI is made visible.function charGUI_OpeningF(hObject, eventdata, handles, varargin)% This function has no output args, see OutputF.% hObject handle to figure% eventdata reserved to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin mand line arguments to charGUI (see VARARGIN)load data。amp。, [] , ... 39。, charGUI_OpeningF, ... 39。, mfilename, ... 39。,...) creates a new CHARGUI or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before charGUI_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to charGUI_OpeningF via varargin.% *See GUI Options on GUIDE39。,hObject,eventData,handles,...) calls the local% function named CALLBACK in with the given input arguments.% CHARGUI(39。 [a,b]=max(sim(net,Ptest))。endP = out(:,1:40)。img = edu_imgpreprocess(I)。)。,Ibox(:,t),39。imshow(I)pause。disp(num)。holes39。Iedge2 = imdilate(Iedge, se)。imshow(Iedge)pause。imshow(Igray)pause。39。)。imshow(img)imgGray = rgb2gray(img)。另外,還要感謝四年來(lái)培養(yǎng)我的各位老師,感謝和我朝夕相處了四年的同學(xué),我的每一次成功都離不開(kāi)你們的關(guān)心和幫助。在論文寫(xiě)作過(guò)程中,得到了李利明老師的親切關(guān)懷和悉心指導(dǎo)。本文的手寫(xiě)體數(shù)字識(shí)別正確率為71%。為了提高識(shí)別率和可靠性,除了要增強(qiáng)對(duì)噪聲的濾除能力外,還要增大知識(shí)庫(kù),以解決細(xì)化中出現(xiàn)的結(jié)構(gòu)畸變問(wèn)題,這些都有待我們進(jìn)一步的研究。所有測(cè)試樣本的平均識(shí)別正確率為71%。選取圖片中的任意數(shù)字:比如5。 系統(tǒng)流程圖 MATLAB程序設(shè)計(jì)本次設(shè)計(jì)使用MATLAB語(yǔ)言實(shí)現(xiàn)該系統(tǒng),其用戶(hù)界面分別介紹如下。附加的工具箱(單獨(dú)提供的專(zhuān)用 MATLAB 函數(shù)集)擴(kuò)展了 MATLAB 環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類(lèi)型的問(wèn)題。MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱(chēng),和Mathematical、Maple并稱(chēng)為三大數(shù)學(xué)軟件。例如同倫方法、梯度法、共軛梯度法以及牛頓法。實(shí)驗(yàn)中發(fā)現(xiàn),η越大,學(xué)習(xí)速度會(huì)越快,但過(guò)大時(shí)會(huì)引起振蕩效應(yīng);而α取的過(guò)大可能導(dǎo)致發(fā)散,過(guò)小則收斂速度太慢;~,~。事實(shí)證明采用較好的優(yōu)化方法可以提高網(wǎng)絡(luò)的收斂速度、避免陷入局部極小。動(dòng)態(tài)調(diào)整η和α值,收到良好效果。最普通的改進(jìn)方法為附加動(dòng)量法,將公式()改為: ()式中稱(chēng)為動(dòng)量因子。它通過(guò)學(xué)習(xí)所形成的“自我認(rèn)識(shí)”對(duì)人來(lái)說(shuō)是透明的。一旦網(wǎng)絡(luò)的權(quán)重陷入一個(gè)極小點(diǎn),無(wú)論是全局極小點(diǎn)還是局部極小點(diǎn),學(xué)習(xí)均告終止。只有將各種不同類(lèi)型的充足的樣本訓(xùn)練后,才能對(duì)各種樣本的測(cè)試達(dá)到較好的推廣能力。這里,歸納是指當(dāng)用一組同類(lèi)型的樣本集訓(xùn)練時(shí),BP網(wǎng)絡(luò)能將一些不相關(guān)的信息忽略掉,而學(xué)習(xí)樣本集中共同的特征,通過(guò)這樣的學(xué)習(xí),BP網(wǎng)絡(luò)很容易記住了這一類(lèi)型的樣本。訓(xùn)練方法及其參數(shù)選擇[18]= ; %顯示訓(xùn)練結(jié)果的間隔步數(shù)= ; %最大訓(xùn)練步數(shù)= ; %訓(xùn)練目標(biāo)誤差 = ; %學(xué)習(xí)系數(shù)的初始值,Marquardt調(diào)整參數(shù)= ; %學(xué)習(xí)系數(shù)的下降因子= ; %學(xué)習(xí)系數(shù)的上升因子= ; %學(xué)習(xí)系數(shù)的最大值=;%訓(xùn)練中最小允許梯度值。 為輸出節(jié)點(diǎn)數(shù)。常采用的是歸一化處理,即將輸入、輸出數(shù)據(jù)映射到[1,1]范圍內(nèi),訓(xùn)練結(jié)束后再反映射到原數(shù)據(jù)范圍。網(wǎng)絡(luò)層數(shù)大多數(shù)通用的神經(jīng)網(wǎng)絡(luò)都預(yù)先預(yù)定了網(wǎng)絡(luò)的層數(shù),而B(niǎo)P網(wǎng)絡(luò)可以包含不同的隱層。通過(guò)使誤差函數(shù)最小化的過(guò)程不斷的改變權(quán)重,完成從輸入到輸出的非線性映射。一般采用sigmoid函數(shù): ()式中稱(chēng)為闕值,λ稱(chēng)為溫度系數(shù)。 BP網(wǎng)絡(luò)的一般學(xué)習(xí)算法BP網(wǎng)絡(luò)是一種有監(jiān)督的前饋運(yùn)行的神經(jīng)網(wǎng)絡(luò),它由輸入層i、隱含層h、輸出層k以及各層之間的節(jié)點(diǎn)的連接權(quán)所組成。其主要思想是:輸入學(xué)習(xí)樣本,使用反向傳播算法對(duì)網(wǎng)絡(luò)的權(quán)值和偏差進(jìn)行反復(fù)的調(diào)整訓(xùn)練,通過(guò)誤差的反向傳播,使輸出的向量與期望向量盡可能地接近,當(dāng)網(wǎng)絡(luò)輸出層的誤差平方和小于指定的誤差時(shí)訓(xùn)練完成,保存網(wǎng)絡(luò)的權(quán)值和偏差。BP學(xué)習(xí)算法,即反向傳播(back propagation)學(xué)習(xí)算法是一種有導(dǎo)師的示例學(xué)習(xí)算法。 BP神經(jīng)網(wǎng)絡(luò) BP算法自1985年Rumelhart提出BP算法[16]以來(lái),神經(jīng)網(wǎng)絡(luò)的研究和應(yīng)用已經(jīng)迅速發(fā)展并滲透到各個(gè)學(xué)科,神經(jīng)網(wǎng)絡(luò)算法已不再是只供研究,而在實(shí)際的生產(chǎn)中開(kāi)始了廣泛的應(yīng)用。經(jīng)過(guò)訓(xùn)練好的網(wǎng)絡(luò)能夠識(shí)別訓(xùn)練數(shù)據(jù)集以外的新的輸入類(lèi)別,并相應(yīng)獲得不同的輸出。有教師學(xué)習(xí)方法雖然簡(jiǎn)單,但是要求教師對(duì)環(huán)境和網(wǎng)絡(luò)的結(jié)構(gòu)應(yīng)該比較熟悉,當(dāng)系統(tǒng)復(fù)雜,環(huán)境變化時(shí),就變得困難。通過(guò)向環(huán)境學(xué)習(xí)獲取知識(shí)并改進(jìn)自身性能是NN的一個(gè)重要特點(diǎn)。人腦中一個(gè)典型神經(jīng)元通過(guò)許多樹(shù)突的精細(xì)結(jié)構(gòu),收集來(lái)自其它神經(jīng)元的信息,神經(jīng)元又通過(guò)軸突的一條長(zhǎng)而細(xì)的軸突發(fā)出電活性脈沖。如此操作調(diào)整,當(dāng)給網(wǎng)絡(luò)輪番輸入若干個(gè)手寫(xiě)字母“A”、“B”后,經(jīng)過(guò)網(wǎng)絡(luò)按以上學(xué)習(xí)方法進(jìn)行若干次學(xué)習(xí)后,網(wǎng)絡(luò)判斷的正確率將大大提高。首先,給網(wǎng)絡(luò)的各連接權(quán)值賦予(0,1)區(qū)間內(nèi)的隨機(jī)值,將“A”所對(duì)應(yīng)的圖像模式輸入給網(wǎng)絡(luò),網(wǎng)絡(luò)將輸入模式加權(quán)求和、與門(mén)限比較、再進(jìn)行非線性運(yùn)算,得到網(wǎng)絡(luò)的輸出。雖然神經(jīng)元的類(lèi)型有很多種,但其基本結(jié)構(gòu)相似。從系統(tǒng)觀點(diǎn)看,人工神經(jīng)元網(wǎng)絡(luò)是由大量神經(jīng)元通過(guò)極其豐富和完善的聯(lián)接而構(gòu)成的自適應(yīng)非線性動(dòng)態(tài)系統(tǒng)?;谏窠?jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 第四章 神經(jīng)網(wǎng)絡(luò)在數(shù)字識(shí)別中的應(yīng)用第四章 神經(jīng)網(wǎng)絡(luò)在數(shù)字識(shí)別的應(yīng)用 神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介及其工作原理人的智能來(lái)自于大腦,大腦是由大量的神經(jīng)細(xì)胞或神經(jīng)元組成的。 規(guī)范手寫(xiě)體數(shù)字形態(tài) 以下為規(guī)范手寫(xiě)體數(shù)字形態(tài)的特征向量:DATA01=[2,2,2,2,2,2,2,2,0];DATA11=[1,0,0,1,1,1,1,1,2];DATA21=[3,3,3,1,1,1,1,1,3];DATA31=[3,2,3,1,1,1,2,2,3];DATA41=[1,1,1,2,2,1,3,2,4];DATA51=[3,3,3,1,1,1,2,2,4];DATA61=[3,3,2,1,1,2,3,2,1];DATA71=[2,2,2,1,1,1,1,1,2];DATA81=[4,4,4,2,2,2,2,2,0];DATA91=[3,3,3,1,2,1,3,1,1]。 筆劃特征的提取經(jīng)細(xì)化后的數(shù)字圖像其特征較為穩(wěn)定,且筆劃簡(jiǎn)單,因此對(duì)其抽取的基本結(jié)構(gòu)組件能反映數(shù)字的本質(zhì)特征,從而可快速有效地識(shí)別數(shù)字,并達(dá)到較好的分類(lèi)效果。 結(jié)構(gòu)特征提取首先對(duì)經(jīng)預(yù)處理后的圖像進(jìn)行分割。提取主要特征 結(jié)構(gòu)特征采用結(jié)構(gòu)特征[12]對(duì)字符進(jìn)行結(jié)構(gòu)分析從而達(dá)到識(shí)別目的,是一種非常直觀的方法。對(duì)人臉圖像進(jìn)行3階小波分解,并提取小波系數(shù)wave2gray(c,s,8)。)。傳統(tǒng)的全局特征主要包括:全局變換特征(對(duì)字符圖像進(jìn)行各種變換,利用變換系數(shù)作為特征向量,常用的變換有Fourier變換、KL變換、小波變換等)、不變矩特征、全局筆劃方向特征等;常用的局部統(tǒng)計(jì)特征有:局部筆劃方向特征、Gabor特征等。由于小波變換的結(jié)果體現(xiàn)為大量的小波分解系數(shù),這些系數(shù)包含了系統(tǒng)或信號(hào)本身大量和多樣的特征信息。手寫(xiě)體數(shù)字的識(shí)別中,常用的特征有結(jié)構(gòu)特征和統(tǒng)計(jì)特征。而且,對(duì)給定的訓(xùn)練樣本進(jìn)行特征提取可以獲得更精確的分類(lèi)函數(shù)的描述,以構(gòu)造更可靠的分類(lèi)規(guī)則?;谏窠?jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 第三章 特征提取第三章 特征提取 特征提取的概述模式識(shí)別使用特征來(lái)區(qū)分不同的種類(lèi)。第二、要細(xì)化為單線,即筆畫(huà)寬度為一個(gè)像素。直觀來(lái)說(shuō),細(xì)化就是將二值化字符點(diǎn)陣逐層剝?nèi)ポ喞系狞c(diǎn),變成筆畫(huà)寬度只有一個(gè)像素寬度的字符骨架圖形。M(n,m)=(ans(i,j)+ans(i,j+1)+ans(i,j1)+ans(i1,j))/4。 % r 是原圖像的高度,c 是寬度f(wàn)or i=2:(r1)for j=2:(c1)n=i/(r/14)。歸一化算法程序代碼如下:ans=imread(39。這一算法的缺點(diǎn)是只能將原始圖像的高度和寬度同時(shí)變化相同的比例,如果我們希望將原始圖像變成10 1 4像素的圖像,該算法就無(wú)法解決了。我們希望書(shū)寫(xiě)時(shí)盡量不限制圖像的大小,然后通過(guò)計(jì)算統(tǒng)一尺寸,使之具有同一高度,同一寬度,稱(chēng)之為歸一化[10]?;谧址R(shí)別掃描得到的圖像目標(biāo)與背景的灰度級(jí)有明顯的差別,字符圖像的二值化可采用整體閾值法中的雙峰法,該方法簡(jiǎn)單易行,針對(duì)目標(biāo)與背景的灰度級(jí)有明顯差別的圖像,其灰度直方圖的分布呈雙峰狀,兩個(gè)波峰分別與圖像中的目標(biāo)和背景相對(duì)應(yīng),波谷與圖像邊緣相對(duì),應(yīng)當(dāng)在分割閾值位于谷底時(shí),圖像分割可取得最好的效果。圖像二值化的關(guān)鍵在于閾值的選擇。 X3(i,j)=Xtemp。以下為采用中值濾波對(duì)圖像進(jìn)行平滑處理的部分代碼[9]:for i=2:175。本章中將分別對(duì)平滑去噪、二值化、歸一化和細(xì)化分小節(jié)討論。手寫(xiě)體數(shù)字圖像預(yù)處理的過(guò)程,就一般情況而言。 各種各樣的手寫(xiě)體數(shù)字 圖像預(yù)處理概述預(yù)處理[6]是字符識(shí)別重要的一環(huán), 它把原始的圖像轉(zhuǎn)換成識(shí)別器所能接受的二進(jìn)制形式。一般人寫(xiě)字時(shí)都不會(huì)一筆一劃的書(shū)寫(xiě),為了節(jié)省時(shí)間,連筆字是自然而然的事情,對(duì)于結(jié)構(gòu)識(shí)別而言,連筆一方面使筆劃種類(lèi)大大增加,甚至達(dá)到難以歸納的程度;另一方面,連筆又使得筆段抽取難度大增,因?yàn)檫B筆會(huì)增加一些冗余筆段,連筆造成的畸變又會(huì)使筆段方向嚴(yán)重離散。具體地說(shuō)有兩個(gè):一是0~ 9 十個(gè)數(shù)字中,其中的一些數(shù)字字形相差不大,使得準(zhǔn)確區(qū)分某些數(shù)字相當(dāng)困難。數(shù)字的類(lèi)別雖然只有十種,筆劃又簡(jiǎn)單,其識(shí)別問(wèn)題表面上是一個(gè)較簡(jiǎn)單的分類(lèi)問(wèn)題。實(shí)驗(yàn)表明,該方法可以獲得較好的識(shí)別率。已涌現(xiàn)出許多不同類(lèi)型的ANN及相應(yīng)的學(xué)習(xí)算法,其中BP(或EBPError Back Propagation)網(wǎng)絡(luò)及學(xué)習(xí)算法得到了廣泛關(guān)注和研究,并在數(shù)字識(shí)別方面取得了許多有意義的應(yīng)用成果。字符識(shí)別長(zhǎng)期以來(lái)都是采用傳統(tǒng)的識(shí)別方法,對(duì)印刷體字符的識(shí)別率一般只是穩(wěn)定在96%左右,不能進(jìn)一步提