clear all;
disp('回车键 ...')
chos=input('请直接按回车键正在生成输入向量和目标向量,请稍等… ');
if isempty(chos), chos=0; end
if chos==0,
for kk=0:256
p1=ones(16,16);% 初始化16×16的二值图像像素值(全白)
m =strcat('nums\',int2str(kk),'.bmp');% 形成训练样本图像的文件名(0~89.bmp)
x=imread(m,'bmp');% 读入训练样本图像文件
bw=im2bw(x,0.5);% 将读入的训练样本图像转换为二值图像
[i,j]= find(bw==0);% 寻找二值图像中像素值为0(黑)的行号和列号
imin=min(i);% 寻找二值图像中像素值为0(黑)的最小行号
imax=max(i);% 寻找二值图像中像素值为0(黑)的最大行号
jmin=min(j);% 寻找二值图像中像素值为0(黑)的最小列号
jmax=max(j);% 寻找二值图像中像素值为0(黑)的最大列号
bw1=bw(imin:imax,jmin:jmax);% 截取图像像素值为0(黑)的最大矩形区域
rate=16/max(size(bw1));% 计算截取图像转换为16×16的二值图像的缩放比例
bw1=imresize(bw1,rate);% 将截取图像转换为16×16的二值图像(由于缩放比例
% 大多数情况下不为16的倍数,所以可能存在转换误差)
[i,j]=size(bw1);% 转换图像的大小
i1=round((16-i)/2);% 计算转换图像与标准16×16的图像的左边界差
j1=round((16-j)/2);% 计算转换图像与标准16×16的图像的上边界差
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 % 形成神经网络目标向量
switch kk
case{0,1,2,3,4,5,6,7,8,9} % 字母A
t(kk+1)=0;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载