基于bp神经网络的数字识别方法-Read.doc

基于bp神经网络的数字识别方法-Read.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于bp神经网络的数字识别方法-Read

基于bp神经网络的数字识别方法 问题描述 数字识别能够在汽车牌照、支票等有关数字的编号的识别方面有广泛的应用。车牌等有字符和数字组成,采用固定的印刷字体。在车牌识别中,因自然因素或采样因素导致采集到的数字样本存在一定的模糊与混杂等不同程度的污染,给字符识别带来很大的困难。此处因字符和汉字识别的复杂性,并且对于车牌字符支票字符等图片数字要进行单个数字分割等设计很多图像处理内容,此处设计只对单个数字进行识别处理,本设计采用通过三种不同的字体及不同字号的数字为训练样本,并且选取不同大小数字和被污染得字体做为测试样本,通过图形处理等操作对被污染单个数字进行处理后识别,对其他不予考虑。 求解思路 首先对图像进行预处理,以便于进行像素值的提取,对设计好的神经网络进行训练,对比训练的结果与期望的结构,并根据对比的结果对神经网络的一些权值进行修改,最终得到训练好的神经网络。并选择测试样本,进行仿真测试。 设计方案 图像预处理 由于自然和人为因素影响,可能造成数字图像笔划缺损、噪声严重及几何形变等现象。故识别前必须对图像进行必要的预处理。 图像处理流程: 图像输入 二值化 灰度转化 去除噪声 图像锐化 归一化 图1:图像处理流程 特征提取 对图像字符分割处理后得到单个数字,进行归一化处理,消除各个数字在位置和大小上的差异,提高识别的准确率。过程为:截取数字图像像素值为0的最大矩形区域,将此区域的图像经过变换,将数字字符归一化为16*16的像素点阵图。所有的训练样本和测试样本都要经过这样的处理。 bp神经网络设计与训练 (1)bp神经网络的设计方法 按照BP神经网络设计方法选用两层BP网络。采用newff函数来建立BP网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline,隐层节点数为,取25。 (2)神经网络仿真程序设计 构造训练样本集,并构成训练所需的输入向量p和目标向量t.通过画图工具获得数字。本例构造了新宋体12号、8号字体各10个,黑体12号、8号各10个,及宋体加粗18号字体。 神经网络测试。 由于图像处理的复杂性,对于不同噪声的污染选择不同的方法,选择没有噪声的数字进行测试。选择训练样本中的任意数据进行测试,结构非常正确。选择生成的新宋体8号大小的数字进行测试。结果正确,选择其他类型的字体进行测试,则结果不是完全正确。 实现代码 简单起见,只对含有单独数字的图片样本进行识别,不涉及分割字符等前期处理,参考《神经网络模型及其MATLAB仿真程序设计》一书,我在保持基本算法思想不变的前提下,对原书程序及其叙述做了一定的修改。 % 数字识别 % 生成输入向量和目标向量 clear all; LOADING......正在生成输入向量和目标向量,请稍等... for kk = 0:49 p1=ones(16,16);%初始化为16*16的二值图像像素值(全白) m=strcat(bpnums\,int2str(kk),.bmp);%形成训练样本图像的文件名 x=imread(m,bmp);%读入训练样本图像文件 bw=im2bw(x,0.5);%将读入的训练样本图像转化为二值图像 [i,j]=find(bw==0);%寻找二值图像中像素值为0(黑)的行号和列号 imin=min(i);%寻找二值图像中像素值为0的最小行号 imax=max(i);%。。。。。。。。。。。。最大行号 jmin=min(j);%。。。。。。。。。。。。最小列号 jmax=max(j);%。。。。。。。。。。。。最大列号 bw1=bw(imin:imax,jmin:jmax);%街取图像像素值为0的最大矩形区域 rate=16/max(size(bw1));%计算截取图像转换成16*16的二值图像的缩放比例 bw1=imresize(bw1,rate);%将截取图像转换成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图像 %以图像数据形成神经网络输入向量 for m=0:15 p(m*16+1:(m+1)*16,kk+1)=p1(1:16,m+1); end %形成神经网络目标

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档