字符识别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学宁波理工学院信息工程分院电子信息工程专业大作业
字符识别
摘要
本文主要讲述了如何用BP神经网络去识别图片上的字符。该系统主要处理晶振表面字符的识别。在识别之前要对图像进行一系列的处理,即图像的预处理。预处理主要包含,二值化、锐化、噪声去除、字符分割、字符归一化、字符骨架提取。经过预处理以便适合以后的处理。预处理后对图片上的字符进行特征提取,特征提取的方法很多,这里使用评价较好的十三特征提取法来进行特征提取。最后采用BP 神经网络来对字符进行识别。
关键词:字符识别预处理特征提取 BP神经网络
一、系统设计方案
字符识别系统的实现过程中,分解成两个模块,即图像预处理模块和数字识别模块。其中图像像预处理块在对图像进行了一系列变换后把最后提取到的数字字符提交给数字识别模块,然后进行识别并给出结果。
1.1.1系统总流程
图像预处理BP神经网络字符识别
1.1.2 图像预处理
2.1.3 BP 神经网络训练流程
1.1.4 BP 神经网络识别流程
二、 图像预处理算法分析及实现
2.1 图像的二值化处理
图像的二值化就是把图像中的象素根据一定的标准分化成两种颜色。在系统中是根据象素的灰度值处理成黑白两种颜色。图像的二值化有很多成熟的算法。它可以采用自适应阀值法,也可以采用给定阀值法。系统中采用的是给定阀值的方法。
2.1.1 阈值选取算法分析
图像的二值化有很多成熟的算法。它可以采用自适应阀值法,也可以采用给定阀值法。
系统中采用的是给自适应阀值的方法。其算法的实现是通过大律法。经过大律法得到适合的阀值。
BP 神经网络
字符特征读入 识别并给出结果
BP 神经网络
样本字符特征训练得到权值矩阵
图 2.1.1 阈值选取的流程图
2.1.2 算法分析及实现
图像二值化的算法实现,将大于阀值的像素点变为黑色,反之变为白色。
初 始 化
统计灰度为n 的像素的个数
计算图像总平 均灰度级μ
计算C 0 类产 生的概率()k ω 计算C 0 组的 均值()k μ
计算类间方差)(2k σ
求类间方差)(2k σ的最大值对应得k 值
)(2k σ最大时的k 即为所求阈值
开 始 返 回
图 2.1.2 图像二值化算法的流程图
执行结果如图2-1-1、2-1-2
所示
图3-1-1
二值化前的图片
图2-1-2 二值化后的图片
Y
初 始 化 开 始
判断当前像素点是否为大于阀值
将此像素点变为黑色
N
将此像素点变为白色 返 回
2.2 图像的锐化
由于需要处理的图像大多数的情况下字体模糊,对识别造成了一定的困难,所以有时我们要对图像进行锐化处理使模糊的图像变得清晰起来,同时可以对噪声起到一定的去除作用。
2.2.1 锐化方案
图像锐化的方法有很多,有一种是微分法 ,有一种是高通滤波法。我们在这里所采用的梯度锐化的方法就属于微分法的一种。在这里我们采用Roberts 梯度算子对图像进行锐化。
Roberts 梯度算子的定义: 设原始图像上的点为),(y x f 。 定义),(y x f 在),(y x 处的梯度矢量为:
|)1,(),(||),1(),(|)],([+-++-=j i f j i f j i f i i f j i f G
设一个判定阈值为∆,变化后的图像),(y x g 定义为:
⎩⎨
⎧=)
,()],([),(y x f y x f G y x g ))],([())],([(∆≤∆≥y x f G y x f G 通过公式可以看出梯度锐化可以让模糊的边缘变得清楚同时选择合适的阈值还可以减
弱和消除一些细小的噪声。
2.2.2 算法分析及实现
图 2.2.1 图像梯度锐化算法的流程图
经过梯度锐化处理后的图片如图2-2-1
所示。
图2-2-1 梯度锐化后的图像
2.3 图像噪声去除
图像可能在扫描或者传输过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。
N
Y
Y
初 始 化 开 始
判断当前像素点是否为大于阀值
将此像素点变为中间变量
的值
N
将此像素点变为白色
返 回
判断当前像素点是否小于中间变
计算梯度值
2.3.1 去噪方案分析
系统采用的是消除孤立点:八点领域的方法。
八点领域的方法:判断每个像素点周围八个点的像素,如果一点像素为黑色,而且它的周围的八个像素点都为白色,则让这点的像素变为白色点。
2.3.2 算法分析及实现
图 2.3.1 图像去噪声算法的流程图
执行后的结果如图2-3-1所示。
图 2-3-1 去除离散杂点噪声后的图像
Y
N
Y
初 始 化
开 始
判断当前像素点邻近的八点像素的值是否255*8
将此像素点变为白色
N
返 回
判断当前像素点是否为白色点
2.4 字符分割
我们所要识别的图像中一般会含有很多个字符,识别的时候要根据每个字符的特征来进行判断,所以还要进行字符分割的工作。这一步工作就是把图像中的字符独立的分割出来。
2.4.1 分割方案分析
第一步,先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后继续对图像进行扫描找到下一个没有黑色点象素,重复上述过程,这样就找到图像每一行的最大高度范围。(本系统在逐行扫描时,要求每行间有一定的字符间距)第二步,在每一行的高度范围之内在自左向右逐列进行扫描,遇到第一个黑色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有黑色象素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图像的最右端。这样就得到了每个字符的比较精确宽度范围。
第三步,在已知的每个字符比较精确的宽度范围内,按照先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个黑色象素,这样就找到图像大致的高度范围的方法,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。
2.4.1 分割算法分析及实现