📄 e5_2.asv
字号:
% Example52PT
clc;
clear all;
'正在生成输入向量和目标向量,请稍等…'
for kk=0:89
p1=ones(16,16);% 初始化16×16的二值图像像素值(全白)
m =strcat(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,10,20,30,40,50,60,70,80,90} % 数字0
t(kk+1)=0;
case{1,11,21,31,41,51,61,71,81,91} % 数字1
t(kk+1)=1;
case{2,12,22,32,42,52,62,72,82,92} % 数字2
t(kk+1)=2;
case{3,13,23,33,43,53,63,73,83,93} % 数字3
t(kk+1)=3;
case{4,14,24,34,44,54,64,74,84,94} % 数字4
t(kk+1)=4;
case{5,15,25,35,45,55,65,75,85,95} % 数字5
t(kk+1)=5;
case{6,16,26,36,46,56,66,76,86,96} % 数字6
t(kk+1)=6;
case{7,17,27,37,47,57,67,77,87,97} % 数字7
t(kk+1)=7;
case{8,18,28,38,48,58,68,78,88,98} % 数字8
t(kk+1)=8;
case{9,19,29,39,49,59,69,79,89,99} % 数字9
t(kk+1)=9;
end
end
save E52PT p t; % 存储形成的训练样本集(输入向量和目标向量)
'输入向量和目标向量生成结束!'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -