企业网站建设组织人员可行性分析,网页设计素材推荐,网站源码怎么看,现在学seo课程多少钱wx供重浩#xff1a;创享日记 对话框发送#xff1a;字母识别 获取完整源码源工程文件 一、 设计思想
字符识别在现代日常生活的应用越来越广泛#xff0c;比如车辆牌照自动识别系统#xff0c;手写识别系统#xff0c;办公自动化等等。本文采用BP网络对26个英文字母进行…wx供重浩创享日记 对话框发送字母识别 获取完整源码源工程文件 一、 设计思想
字符识别在现代日常生活的应用越来越广泛比如车辆牌照自动识别系统手写识别系统办公自动化等等。本文采用BP网络对26个英文字母进行识别。首先将待识别的26个字母中的每一个字母都通过长和宽分别为7×5的方格进行数字化处理并用一个向量表示。其相应有数据的位置置为1其他位置置为0。
二、 程序的调用
将M文件及相应的字母图标复制到桌面上。 一、打开shibie.m文件1运行会出现下列提示请直接按回车键正在生成输入向量和目标向量请稍等…。2直接按回车键会出现下列提示输入向量和目标向量生成结束请按回车键进行神经网络的训练。3再按回车键会进行训练训练完毕后会出现下图所示的结果图1 二、打开shibie2.m文件1运行会出现下列提示请输入测试的图像2输入图形编号如O的为143回车。会出现如下图所示的结果 同理字母M为123其输出结果为 三、 总结
通过仿真结果可看出基于BP算法的字母识别其容错性和识别率相对较高在有噪声的情况下训练其识别出错率也相应增加许进一步改进。
部分源码其余完整详见下载
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%识别26个大写字母%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
disp(回车键 ...)
chosinput(请直接按回车键正在生成输入向量和目标向量请稍等… );
if isempty(chos), chos0; end
if chos0,
for kk0:256 p1ones(16,16);% 初始化16×16的二值图像像素值(全白) m strcat(nums\,int2str(kk),.bmp);% 形成训练样本图像的文件名(089.bmp) ximread(m,bmp);% 读入训练样本图像文件 bwim2bw(x,0.5);% 将读入的训练样本图像转换为二值图像 [i,j] find(bw0);% 寻找二值图像中像素值为0(黑)的行号和列号 iminmin(i);% 寻找二值图像中像素值为0(黑)的最小行号 imaxmax(i);% 寻找二值图像中像素值为0(黑)的最大行号 jminmin(j);% 寻找二值图像中像素值为0(黑)的最小列号 jmaxmax(j);% 寻找二值图像中像素值为0(黑)的最大列号 bw1bw(imin:imax,jmin:jmax);% 截取图像像素值为0(黑)的最大矩形区域 rate16/max(size(bw1));% 计算截取图像转换为16×16的二值图像的缩放比例bw1imresize(bw1,rate);% 将截取图像转换为16×16的二值图像(由于缩放比例 % 大多数情况下不为16的倍数,所以可能存在转换误差) [i,j]size(bw1);% 转换图像的大小 i1round((16-i)/2);% 计算转换图像与标准16×16的图像的左边界差 j1round((16-j)/2);% 计算转换图像与标准16×16的图像的上边界差 p1(i11:i1i,j11:j1j)bw1;% 将截取图像转换为标准的16×16的图像 p1 -1.*p1ones(16,16);% 反色处理 % 以图像数据形成神经网络输入向量 for m0:15 p(m*161:(m 1)*16,kk1)p1(1:16,m1);
end % 形成神经网络目标向量
switch kk
case{0,1,2,3,4,5,6,7,8,9} % 字母A t(kk1)0;
case{10,11,12,13,14,15,16,17,18,19} % 字母B t(kk1)1;
case{20,21,22,23,24,25,26,27,28,29} % 字母C t(kk1)2;
case{30,31,32,33,34,35,36,37,38,39} % 字母D t(kk1)3;
case{40,41,42,43,44,45,46,47,48,49} %字母E t(kk1)4;
case{50,51,52,53,54,55,56,57,58,59} %字母F t(kk1)5;
case{60,61,62,63,64,65,66,67,68,69} % 字母G t(kk1)6;
case{70,71,72,73,74,75,76,77,78,79} % 字母H t(kk1)7;
case{80,81,82,83,84,85,86,87,88,89} % 字母I t(kk1)8;
case{90,91,92,93,94,95,96,97,98,99} % 字母J t(kk1)9;
case{100,101,102,103,104,105,106,107,108,109} % 字母K t(kk1)10;
case{110,111,112,113,114,115,116,117,118,119} % 字母L t(kk1)11;
case{120,121,122,123,124,125,126,127,128,129} % 字母M t(kk1)12;
case{130,131,132,133,134,135,136,137,138,139} % 字母N t(kk1)13;
case{140,141,142,143,144,145,146,147,148,149} % 字母O t(kk1)14;
case{150,151,152,153,154,155,156,157,158,159} % 字母P t(kk1)15;
case{160,161,162,163,164,165,166,167,168,169} % 字母Q t(kk1)16;
case{170,171,172,173,174,175,176,177,178,179} % 字母R t(kk1)17;
case{180,181,182,183,184,185,186,187,188,189} % 字母S t(kk1)18;
case{190,191,192,193,194,195,196,197,198,199} %字母T t(kk1)19;
case{200,201,202,203,204,205,206,207,208,209} % 字母U t(kk1)20;
case{210,211,212,213,214,215,216,217,218,219} % 字母V t(kk1)21;
case{220,221,222,223,224,225,226,227,228,229} % 字母W t(kk1)22;
case{230,231,232,233,234,235,236,237,238,239} % 字母X t(kk1)23;
case{240,241,242,243,244,245,246,247,248,249} % 字母Y t(kk1)24;
case{250,251,252,253,254,255,256,257,258,259} % 字母Z t(kk1)25;
end
end
end
save E52PT p t; % 存储形成的训练样本集(输入向量和目标向量)
disp(输入向量和目标向量生成结束)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%神经网络的训练%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
disp( );
chosinput(请按回车键进行神经网络的训练 );
if isempty(chos), chos0; end
if chos0,
load E52PT p t; % 加载训练样本集输入向量和目标向量
% 创建BP网
pr(1:256,1)0;
pr(1:256,2)1;
net newff(pr,[26 1],{logsig,purelin},traingdx,learngdm);
% 设置训练参数和训练BP网络
net.trainParam.epochs 5000;
net.trainParam.goal 0.002;
net.trainParam.show 100;%步长为100
net.trainParam.lr0.05;
net train(net,p,t);
end
% 存储训练后的BP网络
save E52net net;