实验七基于神经网络的模式识别实验精品模板.docx

上传人:b****1 文档编号:13668384 上传时间:2023-06-16 格式:DOCX 页数:16 大小:60.82KB
下载 相关 举报
实验七基于神经网络的模式识别实验精品模板.docx_第1页
第1页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第2页
第2页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第3页
第3页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第4页
第4页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第5页
第5页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第6页
第6页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第7页
第7页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第8页
第8页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第9页
第9页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第10页
第10页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第11页
第11页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第12页
第12页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第13页
第13页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第14页
第14页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第15页
第15页 / 共16页
实验七基于神经网络的模式识别实验精品模板.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验七基于神经网络的模式识别实验精品模板.docx

《实验七基于神经网络的模式识别实验精品模板.docx》由会员分享,可在线阅读,更多相关《实验七基于神经网络的模式识别实验精品模板.docx(16页珍藏版)》请在冰点文库上搜索。

实验七基于神经网络的模式识别实验精品模板.docx

实验七基于神经网络的模式识别实验精品模板

实验七:

基于神经网络的模式识别实验

一、实验目的

理解BP神经网络和离散Hopfield神经网络的结构和原理,掌握反向传播学习算法对神经元的训练过程,了解反向传播公式。

通过构建BP网络和离散Hopfield网络模式识别实例,熟悉前馈网络和反馈网络的原理及结构.

综合掌握模式识别的原理,了解识别过程的程序设计方法。

二、实验内容

熟悉模式识别的理论方法,用选择一种合适的识别方法,对图像中的字符(英文字母)进行识别,能够区分出不同的形态的26个字母.

在Matlab中,采用BP神经网络,对读取的数据进行训练,进而识别。

1.程序设计

(1)程序各流程图

实验中主程序流程图如图4-1所示:

 

图4-1主程序流程图

其中图像预处理的流程如图4-2所示:

 

图4-2图像预处理的流程

神经网络训练的具体流程如图4—3所示:

 

图4—3神经网络训练流程

(2)程序清单

%形成用户界面

clearall;

%添加图形窗口

H=figure('Color’,[0.850.850。

85],..。

'position’,[400300500400],.。

.

'Name',’基于BP神经网络的英文字母识别',。

..

’NumberTitle',’off’,.。

.

'MenuBar',’none');

%画坐标轴对象,显示原始图像

h0=axes('position',[0.10.60.30.3]);

%添加图像打开按钮

h1=uicontrol(H,’Style',’push',...

’Position',[401008060],..。

'String','选择图片’,.。

'FontSize’,10,。

.。

'Call’,'op');

%画坐标轴对象,显示经过预处理之后的图像

h2=axes(’position',[0.50.60。

30.3]);

%添加预处理按钮

h3=uicontrol(H,’Style','push’,.。

.

’Position',[1401008060],.。

'String’,'二值化’,.。

'FontSize’,10,..。

'Call','preprocess’);

%添加识别按钮

h4=uicontrol(H,'Style',’push',.。

’Position',[2401008060],。

'String’,’字母识别',.。

.

'FontSize’,10,...

'Call’,'recognize');

%添加显示识别结果的文本框

%添加训练神经网络按钮

h6=uicontrol(H,'Style’,’push',。

’Position',[3401008060],。

.。

'String’,'网络训练’,.。

.

’FontSize’,10,。

..

'Call','Example1Tr’);

%预处理

%preprocess

p1=ones(16,16);

bw=im2bw(X,0.5);%转换成二值图像

%用矩形框截取图像

[i,j]=find(bw==0);

imin=min(i);

imax=max(i);

jmin=min(j);

jmax=max(j);

bw1=bw(imin:

imax,jmin:

jmax);

%调整比例,变换成16*16图像

rate=16/max(size(bw1));

bw1=imresize(bw1,rate);

[i,j]=size(bw1);

i1=round((16—i)/2);

j1=round((16-j)/2);

p1(i1+1:

i1+i,j1+1:

j1+j)=bw1;

p1=-1。

*p1+ones(16,16);

%显示预处理的结果

axes(h2);

imshow(p1);

 

%Example1Tr,训练网络

M=1;%人数

N=26*M;%样本数

%获取26个大写字母图像的数据

forkk=0:

N—1

p1=ones(16,16);%初始化16*16的二值图像(全白)

m=strcat(int2str(kk),’.bmp');%形成文件名

x=imread(m,'bmp’);%读取图像

bw=im2bw(x,0。

5);%转换成二值图像数据

%用矩形框截取

[i,j]=find(bw==0);%查找像素为黑的坐标

%取边界坐标

imin=min(i);

imax=max(i);

jmin=min(j);

jmax=max(j);

bw1=bw(imin:

imax,jmin:

jmax);%截取

%调整比例,缩放成16*16的图像

rate=16/max(size(bw1));

bw1=imresize(bw1,rate);%会存在转换误差

%将bw1转换成标准的16*16图像p1

[i,j]=size(bw1);

i1=round((16—i)/2);

j1=round((16—j)/2);

p1(i1+1:

i1+i,j1+1:

j1+j)=bw1;

p1=—1.*p1+ones(16,16);

%将p1转换成输入向量

form=0:

15

p(m*16+1:

(m+1)*16,kk+1)=p1(1:

16,m+1);

end

end

%形成目标向量

forkk=0:

M-1

forii=0:

25

t(kk+ii+1)=ii;

end

end

%设置输入向量范围

pr(1:

256,1)=0;

pr(1:

256,2)=1;

%创建两层BP神经网络,隐层有25个节点

net=newff(pr,[251],{’logsig''purelin'},’traingdx’,’learngdm');

net。

trainParam。

epochs=2500;

net.trainParam。

goal=0。

001;

net。

trainParam.show=10;

net。

trainParam.lr=0.05;

%训练神经网络

net=train(net,p,t);

%存储训练好的神经网络

%recognize,字符识别

%生成向量形式

M=figure('Color’,[0。

750.750.75],。

..

’position',[200200400200],。

..

'Name','基于BP神经网络的英文字母识别结果’,。

..

’NumberTitle','off',.。

.

'MenuBar','none’);

M0=uicontrol(M,'Style’,'push',。

.

’Position',[1508013040],。

.。

'String',’请先训练网络',.。

'FontSize’,12,。

.

’call',’delete(M

(1))’);

form=0:

15

q(m*16+1:

(m+1)*16,1)=p1(1:

16,m+1);

end

%识别

[a,Pf,Af]=sim(net,q);

a=round(a);

switcha

case0,M0=uicontrol(M,'Style','push',...

’Position’,[1508013040],。

.。

'String',’这个字母是A’,...

’FontSize’,12,..。

’call',..。

’delete(M

(1))');

case1,M0=uicontrol(M,'Style’,’push',。

..

’Position’,[1508013040],。

..

'String’,'这个字母是B',.。

'FontSize',12,。

.

'call’,...

'delete(M

(1))');

case2,M0=uicontrol(M,’Style','push',...

'Position',[1508013040],.。

'String',’这个字母是C’,.。

’FontSize',12,.。

’call',...

’delete(M

(1))');

case3,M0=uicontrol(M,’Style’,'push',.。

.

’Position',[1508013040],.。

.

’String’,'这个字母是D’,。

.

’FontSize’,12,.。

.

'call’,.。

'delete(M

(1))’);

case4,M0=uicontrol(M,’Style','push',.。

'Position',[1508013040],.。

’String’,’这个字母是E',...

’FontSize',12,..。

’call',。

'delete(M

(1))’);

case5,M0=uicontrol(M,’Style’,'push',。

..

'Position',[1508013040],。

..

'String’,’这个字母是F’,.。

'FontSize',12,..。

'call’,。

.。

’delete(M

(1))');

case6,M0=uicontrol(M,’Style',’push',。

..

'Position',[1508013040],。

'String’,’这个字母是G',...

’FontSize',12,...

’call',...

'delete(M

(1))’);

case7,M0=uicontrol(M,’Style','push',。

.。

’Position',[1508013040],.。

.

'String',’这个字母是H',。

.。

'FontSize’,12,。

..

'call’,。

.。

'delete(M

(1))’);

case8,M0=uicontrol(M,’Style’,'push',.。

.

’Position',[1508013040],。

.。

'String','这个字母是I’,...

'FontSize',12,..。

'call’,...

'delete(M

(1))’);

case9,M0=uicontrol(M,'Style',’push’,。

..

’Position’,[1508013040],。

.。

'String','这个字母是J',..。

’FontSize’,12,。

..

'call’,。

..

'delete(M

(1))’);

case10,M0=uicontrol(M,'Style',’push',.。

.

’Position',[1508013040],。

.

'String’,'这个字母是K',.。

’FontSize’,12,。

..

’call',.。

’delete(M

(1))');

case11,M0=uicontrol(M,'Style','push',。

.

'Position',[1508013040],。

..

’String’,'这个字母是L’,。

..

’FontSize’,12,..。

’call’,.。

.

’delete(M

(1))');

case12,M0=uicontrol(M,'Style',’push’,。

'Position',[1508013040],..。

'String',’这个字母是M’,。

..

’FontSize’,12,.。

.

'call',.。

’delete(M

(1))’);

case13,M0=uicontrol(M,’Style',’push',。

.。

’Position',[1508013040],。

.。

’String',’这个字母是N’,.。

’FontSize’,12,.。

’call',。

.。

’delete(M

(1))');

case14,M0=uicontrol(M,’Style',’push',...

'Position',[1508013040],。

'String’,’这个字母是O’,。

..

'FontSize’,12,。

..

’call’,...

'delete(M

(1))’);

case15,M0=uicontrol(M,'Style','push',...

’Position’,[1508013040],.。

.

’String',’这个字母是P',.。

'FontSize’,12,.。

’call',。

’delete(M

(1))’);

case16,M0=uicontrol(M,'Style’,’push’,。

.。

’Position’,[1508013040],..。

'String’,'这个字母是Q’,。

.。

'FontSize',12,。

.

’call',..。

’delete(M

(1))’);

case17,M0=uicontrol(M,’Style','push',...

'Position’,[1508013040],.。

’String’,'这个字母是R’,...

'FontSize',12,。

.。

’call’,。

.

'delete(M

(1))’);

case18,M0=uicontrol(M,'Style’,'push’,.。

.

’Position',[1508013040],。

.

'String',’这个字母是S’,。

..

'FontSize’,12,.。

.

’call’,。

’delete(M

(1))’);

case19,M0=uicontrol(M,’Style','push',。

..

’Position',[1508013040],。

.。

’String’,'这个字母是T',。

'FontSize',12,...

’call',..。

’delete(M

(1))');

case20,M0=uicontrol(M,'Style’,'push’,。

.。

'Position',[1508013040],...

’String’,’这个字母是U',.。

.

’FontSize',12,.。

'call',...

’delete(M

(1))’);

case21,M0=uicontrol(M,'Style',’push’,。

.

’Position’,[1508013040],。

.。

'String','这个字母是V’,..。

'FontSize’,12,.。

.

’call',.。

'delete(M

(1))');

case22,M0=uicontrol(M,'Style',’push’,..。

’Position’,[1508013040],。

'String',’这个字母是W’,.。

.

’FontSize',12,.。

’call',。

.

'delete(M

(1))’);

case23,M0=uicontrol(M,’Style','push',...

'Position’,[1508013040],...

'String’,'这个字母是X',。

..

'FontSize’,12,.。

.

'call’,。

'delete(M

(1))’);

case24,M0=uicontrol(M,'Style','push',。

'Position',[1508013040],。

.

’String',’这个字母是Y’,。

'FontSize’,12,...

'call’,.。

.

’delete(M

(1))’);

case25,M0=uicontrol(M,’Style’,’push',.。

.

’Position’,[1508013040],。

.

'String’,’这个字母是Z',...

’FontSize’,12,.。

'call’,。

.。

’delete(M

(1))’);

End

%op

%读取图像文件

[filename,pathname]=uigetfile({’*.bmp';’*.jpg’;..。

’*。

gif';'*。

*'},。

’PickanImageFile');

X=imread([pathname,filename]);

%显示图像

axes(h0);%将h0设置为当前坐标轴句柄

imshow(X);%在h0上显示原始图像

2.实验结果

图5—1为实验的主窗口,用于选择图片,进行二值化,网络训练和字符识别。

运行程序后,将弹出次窗口,选择图片后,先进行二值化处理,然后在进行网络训练,最后字符识别。

 

图5-1主窗口

 

图5-2网络训练

 

图5—3字符识别结果

三、实验体会

理解了BP神经网络和离散Hopfield神经网络的结构和原理,掌握了反向传播学习算法对神经元的训练过程,了解了反向传播公式。

通过构建了BP网络和离散Hopfield网络模式识别的实例,熟悉了前馈网络和反馈网络的原理及结构。

掌握了模式识别的原理,了解了识别过程的程序设计方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2