1、 浙江大学宁波理工学院信息工程分院电子信息工程专业大作业 字符识别 摘 要本文主要讲述了如何用 BP 神经网络去识别图片上的字符。该系统主要处理晶振表面字符的识别。在识别之前要对图像进行一系列的处理,即图像的预处理。预处理主要包含,二值化、锐化、噪声去除、字符分割、字符归一化、字符骨架提取。经过预处理以便适合以后的处理。预处理后对图片上的字符进行特征提取,特征提取的方法很多,这里使用评价较好的十三特征提取法来进行特征提取。最后采用 BP 神经网络来对字符进行识别。关键词:字符识别 预处理 特征提取 BP 神经网络 一、 系统设计方案字符识别系统的实现过程中,分解成两个模块,即图像预处理模块和数
2、字识别模块。其中图像像预处理块在对图像进行了一系列变换后把最后提取到的数字字符提交给数字识别模块,然后进行识别并给出结果。1.1.1 系统总流程图像预处理 BP 神经网络字符识别1.1.2 图像预处理2.1.3 BP 神经网络训练流程BP 神经网络样本字符特征读入训练得到权值矩阵1.1.4 BP 神经网络识别流程BP 神经网络字符特征读入 识别并给出结果二、 图像预处理算法分析及实现2.1 图像的二值化处理图像的二值化就是把图像中的象素根据一定的标准分化成两种颜色。在系统中是根据象素的灰度值处理成黑白两种颜色。图像的二值化有很多成熟的算法。它可以采用自适应阀值法,也可以采用给定阀值法。系统中采
3、用的是给定阀值的方法。2.1.1 阈值选取算法分析图像的二值化有很多成熟的算法。它可以采用自适应阀值法,也可以采用给定阀值法。系统中采用的是给自适应阀值的方法。其算法的实现是通过大律法。经过大律法得到适合的阀值。初 始 化统计灰度为 n的像素的个数计算图像总平均灰度级 计算 C0 类产生的概率 ()k计算 C0 组的均值 ()计算类间方差 2k求类间方差 的)(2最大值对应得 k 值最大时的 k)(2即为所求阈值开 始返 回图 2.1.1 阈值选取的流程图2.1.2 算法分析及实现图像二值化的算法实现,将大于阀值的像素点变为黑色,反之变为白色。Y初 始 化开 始判断当前像素点是否为大于阀值 将
4、此像素点变为黑色N将此像素点变为白色返 回图 2.1.2 图像二值化算法的流程图执行结果如图 2-1-1、2-1-2 所示图 3-1-1 二值化前的图片图 2-1-2 二值化后的图片2.2 图像的锐化由于需要处理的图像大多数的情况下字体模糊,对识别造成了一定的困难,所以有时我们要对图像进行锐化处理使模糊的图像变得清晰起来,同时可以对噪声起到一定的去除作用。2.2.1 锐化方案图像锐化的方法有很多,有一种是微分法 ,有一种是高通滤波法。我们在这里所采用的梯度锐化的方法就属于微分法的一种。在这里我们采用 Roberts 梯度算子对图像进行锐化。Roberts 梯度算子的定义:设原始图像上的点为 。
5、),(yxf定义 在 处的梯度矢量为:),(yxf, |)1,(),|),1(| jifjifjififjiG设一个判定阈值为 ,变化后的图像 定义为:,yxg),(),(yxfg ),(fG通过公式可以看出梯度锐化可以让模糊的边缘变得清楚同时选择合适的阈值还可以减弱和消除一些细小的噪声。2.2.2 算法分析及实现NYY初 始 化开 始判断当前像素点是否为大于阀值 将此像素点变为中间变量的值N将此像素点变为白色返 回判断当前像素点是否小于中间变量计算梯度值图 2.2.1 图像梯度锐化算法的流程图经过梯度锐化处理后的图片如图 2-2-1 所示。图 2-2-1 梯度锐化后的图像2.3 图像噪声去除
6、图像可能在扫描或者传输过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。2.3.1 去噪方案分析系统采用的是消除孤立点:八点领域的方法。八点领域的方法:判断每个像素点周围八个点的像素,如果一点像素为黑色,而且它的周围的八个像素点都为白色,则让这点的像素变为白色点。2.3.2 算法分析及实现YNY初 始 化开 始判断当前像素点邻近的八点像素的值是否 255*8将此像素点变为白色N返 回判断当前像素点是否为白色点图 2.3.1 图像去噪声算法的流程图执行后的结果如图 2-3-1 所示。图 2-3-1 去除离散杂点噪声后的图像2.4 字符分割我们所要识别
7、的图像中一般会含有很多个字符,识别的时候要根据每个字符的特征来进行判断,所以还要进行字符分割的工作。这一步工作就是把图像中的字符独立的分割出来。2.4.1 分割方案分析第一步,先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后继续对图像进行扫描找到下一个没有黑色点象素,重复上述过程,这样就找到图像每一行的最大高度范围。(本系统在逐行扫描时,要求每行间有一定的字符间距)第二步,在每一行的高度范围之内在自左向右逐列进行扫描,遇到第一个黑色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有黑色象素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图
8、像的最右端。这样就得到了每个字符的比较精确宽度范围。第三步,在已知的每个字符比较精确的宽度范围内,按照先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个黑色象素,这样就找到图像大致的高度范围的方法,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。2.4.1 分割算法分析及实现NYYY初 始 化开 始标记最高、最低点,将其放在数组中判断是否到图像最高点N行变量自加标记行中的左右点,将其放在数组中判断是否到图像最右边判断是否到最后一行返 回将分割出来的个矩形放入数组将每个矩形画出来图 2.4.1 字符分割算法的流程图进
9、行字符分割后并画上边框的图像如图 3-4-1 所示。图 2-4-1 经过字符分割后并画上边框的图像2.5 图像归一化处理因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高,标准化图像就是要把原来各不相同的字符统一到同一尺寸,在系统实现中是统一到同一高度、宽度。2.5.1 图像缩放方法先得到原来字符的高度,跟系统要求的高度做比较,得出要变换的系数,然后根据得到的系数求得变换后应有得宽度。再得到宽度高度之后,把新图像里面得点按照插值得方法映射到原图像中。由于一次归一化没能做到真正的全部归一,所以在此提议最好归一化两次。2.5.2 图像归一化算法分析及实现