MATLAB实现数字识别系统,基于人工神经网络的MATLAB手写数字识别系统
《基于人工神經網絡的MATLAB手寫數字識別系統》由會員分享,可在線閱讀,更多相關《基于人工神經網絡的MATLAB手寫數字識別系統(8頁珍藏版)》請在人人文庫網上搜索。
1、基于人工神經網絡的MATLAB手寫數字識別系統1、 函數MouseDraw實現手寫識別系統GUI界面的建立和鼠標手寫的實現。(使用時保存為MouseDraw.m)function MouseDraw(action)% MouseDraw 本例展示如何以Handle Graphics來設定滑鼠事件% (MouseDraw Events)的反應指令(Callbacks)% 本程序在鼠標移動非常快時,不會造成畫“斷線”% global不能傳矩陣 global InitialX InitialY FigHandle hb2 hb3 hb4 count hb5 hb6 hb7count=E:im.jpg。
2、;imSize = 50; if nargin = 0, action = start; endswitch(action) %開啟圖形視窗 case start, FigHandle = figure(WindowButtonDownFcn,MouseDraw down,DeleteFcn,save bpnet);axis(1 imSize 1 imSize); % 設定圖軸范圍% set(gca,Position,.25 .20 .7 .7);axis off; grid off; box on; % 將圖軸加上圖框 title(手寫體輸入窗);try evalin(base,load b。
3、pnet)catchevalin(base,bpgdtrain);end% % fprintf(start); %設定滑鼠按鈕被按下時的反應指令為MouseDraw down % set(gcf, WindowButtonDownFcn, MouseDraw down); hb1 = uicontrol(Parent, FigHandle, Units, Normalized, .Position, .3 .01 .13 .07, String, 保存, .Callback,exa=rgb2gray(frame2im(getframe(gca);,imwrite(exa,E:im.jpg);h。
4、b2=uicontrol(Parent,FigHandle,Style,popupmenu,Position,50 50 50 30,.String, 26,24, 22, 20, 18, 16,14,12,10);hb3=uicontrol(Parent, FigHandle,Style,text,.Position,10 90 90 30,String, CurrentX() ,CurrentY();hb4=uicontrol(Parent,FigHandle,Style,popupmenu,Position,50 20 50 30,.String,Red,Blue,Black,Yello。
5、w,Green);uicontrol(Parent,FigHandle,Position,270 6 70 30,String,訓練,Callback,.exa=rgb2gray(frame2im(getframe(gca);,sample=reshape(recgnition(exa),25,1);,clc;,.t=inputdlg(數字類別,樣品訓練);,t=str2num(t1,1)/10;,.bpnet.trainParam.lr=str2num(get(hb6,String);,bpnet.trainParam.goal=str2num(get(hb7,String);,.bpnet。
6、=train(bpnet,sample,t);,save bpnet);uicontrol(Parent,FigHandle,Position,360 6 70 30,String,識別,Callback,.exa=rgb2gray(frame2im(getframe(gca);,sample=reshape(recgnition(exa),25,1);,.record=round(sim(bpnet,sample)*10);,clc;,set(hb5,String,num2str(record),fontSize,48););uicontrol(Parent,FigHandle,Style,。
7、text,Position,10 60 30 20,String,字號);uicontrol(Parent,FigHandle,Style,text,Position,10 30 30 20,String,顏色);hb5=uicontrol(Parent,FigHandle,Style,text,Position,10 150 90 90);uicontrol(Parent,FigHandle,Style,text,Position,5 260 50 20,String,學習速率);hb6=uicontrol(Parent,FigHandle,Style,Edit,Position,60 26。
8、0 30 20,String,0.01);uicontrol(Parent,FigHandle,Style,text,Position,5 290 50 20,String,訓練精度);hb7=uicontrol(Parent,FigHandle,Style,Edit,Position,60 290 30 20,String,0.005);uicontrol(Parent,FigHandle,Style,pushbutton,Position,450 6 70 30,String,清除,Callback,cla);%將函數變量導入到工作空間;assignin(base,hb5,hb5);ass。
9、ignin(base,hb6,hb6);assignin(base,hb7,hb7);%dlmwrite(IXT.txt, -10, delimiter, t, precision, 6); dlmwrite(IYT.txt, -10, delimiter, t, precision, 6); %滑鼠按鈕被按下時的反應指令 case down, if strcmp(get(FigHandle, SelectionType), normal) %如果是左鍵 set(FigHandle,pointer,hand); CurPiont = get(gca, CurrentPoint); Initia。
10、lX = CurPiont(1,1); InitialY = CurPiont(1,2); dlmwrite(IXT.txt, InitialX, -append, delimiter, t, precision, 6); dlmwrite(IYT.txt, InitialY, -append, delimiter, t, precision, 6); % 列印MouseDraw down!訊息% % fprintf(MouseDraw down!n); % 設定滑鼠移動時的反應指令為MouseDraw move set(gcf, WindowButtonMotionFcn, MouseDra。
11、w move); set(gcf, WindowButtonUpFcn, MouseDraw up); elseif strcmp(get(FigHandle, SelectionType), alt) % 如果是右鍵 set(FigHandle, Pointer, arrow); set( FigHandle, WindowButtonMotionFcn, ) set(FigHandle, WindowButtonUpFcn, ) fprintf(MouseDraw right button down!n); ImageX = importdata(IXT.txt); ImageY = im。
12、portdata(IYT.txt); InputImage = ones(imSize); roundX = round(ImageX); roundY = round(ImageY); for k = 1:size(ImageX,1) if 0 InitialX step_x = x_gap; elsestep_x = -x_gap;endif Y InitialY step_y = y_gap; elsestep_y = -y_gap;end% 定義x,y的變化范圍和步長 if abs(X-InitialX) 0.01 % 線平行于y軸,即斜率不存在時 iy = InitialY:step。
13、_y:Y; ix = X.*ones(1,size(iy,2); elseix = InitialX:step_x:X ; % 定義x的變化范圍和步長 % 當斜率存在,即k = (Y-InitialY)/(X-InitialX) = 0 iy = (Y-InitialY)/(X-InitialX).*(ix-InitialX)+InitialY; endImageX = ix, X; ImageY = cat(2, iy, Y);popup_index1=26-(get(hb2,Value)-1)*2;popup_index2=get(hb4,Value);switch(popup_index。
14、2)case 1line(ImageX,ImageY, marker, ., markerSize,popup_index1, . LineStyle, -, LineWidth, 4, Color, Red); case 2line(ImageX,ImageY, marker, ., markerSize,popup_index1, . LineStyle, -, LineWidth, 4, Color, Blue);case 3line(ImageX,ImageY, marker, ., markerSize,popup_index1, . LineStyle, -, LineWidth,。
15、 4, Color, Black);case 4line(ImageX,ImageY, marker, ., markerSize,popup_index1, . LineStyle, -, LineWidth, 4, Color, Yellow);case 5line(ImageX,ImageY, marker, ., markerSize,popup_index1, . LineStyle, -, LineWidth, 4, Color, Green);enddlmwrite(IXT.txt, ImageX, -append, delimiter, t, precision, 6); dl。
16、mwrite(IYT.txt, ImageY, -append, delimiter, t, precision, 6); InitialX = X; %記住當前點坐標 InitialY = Y; %記住當前點坐標 % 列印MouseDraw is moving!及滑鼠現在位置 % fprintf(MouseDraw is moving! Current location = (%g, %g)n, . % CurPiont(1,1), CurPiont(1,2);% % fprintf(MouseDraw move!n); % 設定滑鼠按鈕被釋放時的反應指令為MouseDraw up set(。
17、gcf, WindowButtonUpFcn, MouseDraw up); %滑鼠按鈕被釋放時的反應指令 case up, % 清除滑鼠移動時的反應指令 set(gcf, WindowButtonMotionFcn, ); % 清除滑鼠按鈕被釋放時的反應指令 set(gcf, WindowButtonUpFcn, ); % 列印MouseDraw up!% % fprintf(MouseDraw up!n); endend2、 實現手寫數字圖像特征的提取:(存為recgnition.m)function sample=recgnition(exa)i,j=find(exa=204);imin。
18、=min(i);imax=max(i);jmin=min(j);jmax=max(j);a=exa(imin:imax,jmin:jmax);M=imax-imin+1;N=jmax-jmin+1;for m=1:5for n=1:5exa_cm,n=a(1+(m-1)*M/5:m*M/5,1+(n-1)*N/5:n*N/5);sample(1,(m-1)*5+n)=size(find(exa_cm,n=204),1)/(M*N/25);%subplot(5,5,(m-1)*5+n),subimage(exa_cm,n);endend 3、 建立bp神經網絡。(可修改所建立bp神經網絡參數,也。
19、可建立其他類型神經網絡)。x=ones(25,2);x(:,1)=0;bpnet=newff(x,50,1,logsig,logsig,traingd);bpnet.trainParam.show=5;%顯示訓練迭代過程(每隔5次訓練,顯示一次訓練進程)bpnet.trainParam.lr=0.01;%學習速率bpnet.trainParam.epochs=2000;%最大訓練次數bpnet.trainParam.goal=0.005;%訓練要求精度(0.005)此段命令應存為bpgdtrain.m文件。以上函數以及m文件須保存以后才可調用。神經網絡要經過一定數量的訓練才能達到較高的識別精度。使用時先運行MouseDraw函數,出現下圖界面,界面介紹:保存:可將手寫數字圖像保存為im.jpg文件。訓練:用于有導師訓練神經網絡,用戶使用鼠標寫好數字,點擊訓練,彈出輸入框框,輸入相應正確數字。識別:對界面上的手寫數字進行識別,結果顯示在左邊白色方框。清除:可清除界面上數字,重新書寫。字號、顏色選擇下拉框可選擇手寫數字字號與顏色。:控制訓練精度和學習速率。具體參照bp神經網絡。
總結
以上是生活随笔為你收集整理的MATLAB实现数字识别系统,基于人工神经网络的MATLAB手写数字识别系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php表单数量,php – 解析具有未知
- 下一篇: php数组保存txt,php将数组存储为