1、基于人工神经网络的英文字母识别基于人工神经网络的英文字母识别作者:王磊指导老师:吴清系统总体结构系统总体结构系统图像预处理BP神经网络图像灰度化图像二值化梯度锐化去除离散噪声整体斜度调整字符分割字符归一化紧缩排列BP网络的训练BP网络字母的识别BMP格式图片的四部分结构格式图片的四部分结构l位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息l位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息;l调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板l位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24
2、位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排256色图像预处理图转灰色图色图像预处理图转灰色图未处理前处理后BGRY114. 0587. 0299. 0图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排灰度图灰度图2值化值化tyxfLOWtyxfHIHGyxg),( ),( ),(该算法的关键就是在阈值的选取上,阈值的选取有很多种算法,该系统采用最简单的预先设置
3、一个阈值220,即灰度值大于220时认为为白色,当小于220时就认为是黑色。 灰度为220处理结果处理结果二值化前二值化后二值化处理图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排梯度锐化处理梯度锐化处理l梯度锐化的目的及原理l梯度锐化的方法锐化处理的目的及原理锐化处理的目的及原理l使边缘和轮廓线模糊的图像变得清晰,并使其细节清晰。图像的模糊实质是因为图像受到平均或者积分运算,为此对其进行逆运算如微分运算,梯度运算就可以使图像清晰。梯度锐化处理梯度锐化处理l梯度锐化的目的及原理l梯度锐化的方法梯度锐化的方法梯度
4、锐化的方法l锐化滤波一般有两种方法:一直是空间域微分法,另一种是频域中的高频滤波法。在该系统中采用的是空间域微分法中的梯度算子。梯度算子梯度算子),(),(yxffyxG),(), 1(yxfyxffx其中:),() 1,(yxfyxffy强度:yxff梯度算法中的问题梯度算法中的问题由于图像在变化缓慢的地方梯度值会很小,这样容易把图像变灰。因此我设置了一个阈值,当梯度小于阈值的时候将该点设置为白色。该系统中阈值设置为2。图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排去除离散噪声去除离散噪声处理后图像预处理图
5、像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排图像整体斜度调整图像整体斜度调整l字母的有时候会因为各种原因发生一些倾斜,这种变化在某种意义上将对于识别系统是一种噪声,会对识别的结果有一定的影响。在进行识别之前可以进行斜度调整,这样对识别效果有一定的帮助。图像整体斜度调整图像整体斜度调整l在对图像进行整体斜度调整时,最主要的是求斜度,在本系统中,我采用如下算法:l1.求黑色像素的平均高度l2.通过公式: 计算斜度)2/()(widthrightleftSavgavg图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯
6、度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排字符分割字符分割分割前分割后进行分割图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排尺寸标准归一化尺寸标准归一化归一化图像预处理图像预处理l256色图转灰色图l灰度图2值化l梯度锐化l去除离散噪声l图像整体斜度调整l字符分割l尺寸标准归一化l紧缩重排紧缩重排紧缩重排紧缩排列小结小结l至此,我已将图像的预处理工作全部完成。l接下来就到了该系统的核心部分 人工神经网络BP神经网络神经网络lBP网络的训练lBP网络的字母识别BP网络的训练网络的
7、训练x1o1VW输出层输出层隐藏层隐藏层输入层输入层x2o2omxn初始化权值,计数器输出样本,计算各层输出:计算输出误差计算各层误差信号调整各层权值pPYEEminNN结束BP网络的训练网络的训练l(1)初始化:对权值矩阵W,V赋随机数,将样本模式计数器p的训练次数置1,误差E置0,令学习率 为0-1内的小数,网络训练后,精度达到Emin为正小数l(2)输入训练样本对,计算各层输出。当前样本xp,dp对向量组x,d进行赋值,利用式子: ok=f(netk) 其中o为输出层 yi=f(neti) 其中y为隐层aBP网络的训练网络的训练l(3)计算网络输出误差:设共有p对训练样本,网络对不同的样
8、本具有不同的 可将全部样本输出误差的平方 进行累加再开放,作为总输出误差。 即 lkpkpkod12p)(E2)(pEpppEpE12max)(1BP网络的训练网络的训练l(4)计算各层误差信号计算 : )1 ()(kkkkokoood)1 ()y( )()()(jl1kok1jjklkjkkkkkjywnetfwnetfodBP网络的训练网络的训练l(5)调整各层权值计算:kkkjokjkoodayaw)(ijjlkjkoiyjijxyywaxavk)1 ()(1BP网络的训练网络的训练l(6)检查是否对所有样本完成该轮训练,若pP,计数器p,q自增1,返回步骤(2),否则输出步骤(7)l(
9、7)检查网络总误差是否达到精度,当网络的总误差EEmin,训练结束,否则E置0,p置1,返回步骤(2)。l至此,神经网络已经训练完成,最后将训练后的神经网络的相关参数进行保存.BP网络的英文字母识别网络的英文字母识别结结 论论1l多层前向BP网络的优点:网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题; 网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;结结 论论2l多层前向BP网络的问题: BP算法的学习速度很慢网络训练失败的可能性较大难以解决应用问题的实例规模和网络规模间的矛盾。这涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题;结束语结束语lBP网络是基于多层感知器结构、采用最小误差准则、并反向传递误差以调整网络权值和偏置的这样的一种经典的人工神经网络。l本文利用经典的BP网络模型,配合强大的VC开发环境,实现了基于人工神经网络的英文字母识别。