%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);%截取
%调整比例,缩放成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转换成输入向量
for m=0:15
p(m*16+1:(m+1)*16,kk+1)=p1(1:16,m+1);
end
end
%形成目标向量
for kk=0:M-1
for ii=0:25
t(kk+ii+1)=ii;
end
end
%设置输入向量范围
pr(1:256,1)=0;
pr(1:256,2)=1;
%创建两层BP神经网络,隐层有25个节点
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);
%存储训练好的神经网络
评论4
最新资源