% 数字识别
% 生成输入向量和目标向量
clear all;
'LOADING......'
for kk = 0:99
p1=ones(16,16); %建立全为1的样本矩阵
m=strcat('nums\',int2str(kk),'.bmp');
x=imread(m,'bmp'); %循环读入0-99个样本数字文件
bw=im2bw(x,0.5); %对输入图像进行二值化处理 采用全局阈值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); %截取是入图像中的数字部分
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; %建立起16*16的矩阵
p1=-1.*p1+ones(16,16); %反色处理
for m=0:15
p(m*16+1:(m+1)*16,kk+1)=p1(1:16,m+1);
end %将处理的源样本输入供神经网络训练的样本 pcolum是样本数循环变量
switch kk
case{0,10,20,30,40,50,60,70,80,90}
t(kk+1)=0; %数字0
case{1,11,21,31,41,51,61,71,81,91}
t(kk+1)=1; %数字1
case{2,12,22,32,42,52,62,72,82,92}
t(kk+1)=2; %数字2
case{3,13,23,33,43,53,63,73,83,93}
t(kk+1)=3; %数字3
case{4,14,24,34,44,54,64,74,84,94}
t(kk+1)=4; %数字4
case{5,15,25,35,45,55,65,75,85,95}
t(kk+1)=5; %数字5
case{6,16,26,36,46,56,66,76,86,96}
t(kk+1)=6; %数字6
case{7,17,27,37,47,57,67,77,87,97}
t(kk+1)=7; %数字7
case{8,18,28,38,48,58,68,78,88,98}
t(kk+1)=8; %数字8
case{9,19,29,39,49,59,69,79,89,99}
t(kk+1)=9; %数字9
end
end %建立与训练样本对应的输出值t
'LOAD OK.'
save E52PT p t;
% 创建和训练BP网络
clear all;
load E52PT p t; %加载样本
pr(1:256,1)=0;
pr(1:256,2)=1;
%创建BP网络
net=newff(pr,[25 1],{'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); %训练BP网络
'TRAIN OK.'
save E52net net;
% 识别
for times=0:999
clear all;
p(1:256,1)=1;
p1=ones(16,16);
load E52net net;
test=input('FileName:', 's');
x=imread(test,'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);
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);
for m=0:15
p(m*16+1:(m+1)*16,1)=p1(1:16,m+1);
end
[a,Pf,Af]=sim(net,p); %测试网络
imshow(p1);
a=round(a) %输出网络识别结果
end


Matlab领域
- 粉丝: 3w+
- 资源: 4008
最新资源
- C#与OpenCVSharp的通用视觉框架:基本功能全覆盖.pdf
- C#与PLC原生Socket异步通讯实例:高效建立PLC连接,适用于多线程及多设备,支持西门子S7-200SMART以太网通讯.pdf
- C#与Sql server 2008 R2图书信息管理系统源码(带注释,VS2015版本,.net4.5框架).pdf
- C#与VB.NET与SQL及Access数据库操作及Excel报表导出与打印功能(VS2015 & Office 2013版).pdf
- C#与雷塞Dmc1380运动控制卡源码:三轴点动运动及手动自动位置设定功能实现.pdf
- C#与Visionpro9.0三相机定位视觉通用框架源码:项目参考与学习极佳范例.pdf
- C#与汇川PLC MODBUS TCP通讯案例:实时曲线与自定义控件的应用.pdf
- C#与欧姆龙PLC NX102-9000 FINS通信测试:TCP连接、数据交换与实时监测.pdf
- C#与三菱、西门子、台达、基恩士等品牌PLC通讯源码.pdf
- C#与三菱FX5U以太网通讯程序:可读X_Y_M_S_D数据,可写Y_M_S_D数据,带源码及部分备注,PLC通讯参数直接设置.pdf
- IDC研究报告:解析中国人工智能及生成式AI的战略、技术、应用场景与解决方案
- 惯导解算/姿态、速度、位置/惯性导航组合导航
- 2000-2020年中国旅游人均费用-excel文件
- excel手册转曲.pdf
- Swift语言初学者的入门基础教程
- C#工程源码:西门子1200P PLC、研华数据采集卡及CAN通讯模块集成源程序交付.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


