文档详情

实验七:基于神经网络的模式识别实验讲述.doc

发布:2017-03-22约8.13千字共19页下载文档
文本预览下载声明
实验七:基于神经网络的模式识别实验 实验目的 理解BP神经网络和离散Hopfield神经网络的结构和原理,掌握反向传播学习算法对神经元的训练过程,了解反向传播公式。通过构建BP网络和离散Hopfield网络模式识别实例,熟悉前馈网络和反馈网络的原理及结构。 综合掌握模式识别的原理,了解识别过程的程序设计方法。 实验内容 熟悉模式识别的理论方法,用选择一种合适的识别方法,对图像中的字符(英文字母)进行识别,能够区分出不同的形态的26个字母。 在Matlab中,采用BP神经网络,对读取的数据进行训练,进而识别。 1. 程序设计 (1)程序各流程图 实验中主程序流程图如图4-1所示: 图4-1 主程序流程图 其中图像预处理的流程如图4-2 所示: 图4-2 图像预处理的流程 神经网络训练的具体流程如图4-3 所示: 图4-3 神经网络训练流程 (2)程序清单 %形成用户界面 clear all; %添加图形窗口 H=figure(Color,[0.85 0.85 0.85],... position,[400 300 500 400],... Name,基于BP神经网络的英文字母识别,... NumberTitle,off,... MenuBar,none); %画坐标轴对象,显示原始图像 h0=axes(position,[0.1 0.6 0.3 0.3]); %添加图像打开按钮 h1=uicontrol(H,Style,push,... Position,[40 100 80 60],... String,选择图片,... FontSize,10,... Call,op); %画坐标轴对象,显示经过预处理之后的图像 h2=axes(position,[0.5 0.6 0.3 0.3]); %添加预处理按钮 h3=uicontrol(H,Style,push,... Position,[140 100 80 60],... String,二值化,... FontSize,10,... Call,preprocess); %添加识别按钮 h4=uicontrol(H,Style,push,... Position,[240 100 80 60],... String,字母识别,... FontSize,10,... Call,recognize); %添加显示识别结果的文本框 %添加训练神经网络按钮 h6=uicontrol(H,Style,push,... Position,[340 100 80 60],... 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个大写字母图像的数据 for kk=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);%截取 %调整比例,
显示全部
相似文档