3.1.2 算法分析及实现
图像二值化的算法实现,将大于阀值的像素点变为黑色,反之变为白色。
开 始 初 始 化 判断当前像素点是否为大于阀值 Y 将此像素点变为黑色 将此像素点变为白色 N 返 回 图3-1-3 图像二值化算法流程图
图3-1-4 二值化处理前 图3-1-5 二值化处理后 3.2 图像的锐化
图像二值化后,我们从效果图上看出,许多不希望出现的噪声点都浮现出来,为了更好地进行下一步的图像处理,往往需要进行锐化处理。
由于需要处理的图像大多是从印刷出版物上扫描得来,所以在多数情况下字体模糊,对识别造成了一定的困难,所以有时要对图像进行锐化处理使得模糊的图像变得更清晰,同时可以对噪声起到一定的去除作用。图像锐化的方法有很多,有一种是微分法 ,有一种是高通滤波法。我们在这里所采用的梯度锐化的方法就属于微分法的一种。在这里我们采用Roberts梯度算子对图像进行锐化。
Roberts梯度算子的定义:设原始图像上的点为f(x,y)。 定义f(x,y)在(x,y)处的梯度矢量为:
G[f(i,j)]?|f(i,i)?f(i?1,j)|?|f(i,j)?f(i,j?1)|
设一个判定阈值为?,变化后的图像g(x,y)定义为:
(G[f(x,y)]??)?G[f(x,y)] g(x,y)??(G[f(x,y)]??)?f(x,y)通过公式可以看出梯度锐化可以让模糊的边缘变得清楚同时选择合适的阈值还可以达
到减弱和消除一些细小的噪声的效果。
开 始 初 始 化 判断当前像素点是否为大于阀值 Y 将此像素点变为黑色 将此像素点变为白色 N 返 回
图3-2-1 图像梯度锐化算法的流程图
图3-2-2 梯度锐化后的图片
3.3 去除离散噪声
虽然进行图像锐化可以消除一些噪声,但是并不是可以彻底,此时就要进行真正的去噪步骤。因为图像有可能在扫描或者传输过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波,均值滤波。但是那样的算法不适合处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的像素。
系统采用的是消除孤立点:八点领域的方法。
八点领域的方法:判断每个像素点周围八个点的像素,如果一点像素为黑色,而且它的周围的八个像素点都为白色,则让这点的像素变为白色点。
图3-3-1 图像去噪声方法的示意图
图3-3-2 去除离散杂点噪声后的图片
3.4 字符分割
系统在读进来的图像中一般会含有多个字符,识别的时候只能根据每个字符的特征来进行判断和识别,所以还要进行字符分割的工作。
首先,先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后继续对图像进行扫描找到下一个没有黑色象素点。再从上向下对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。这样就确定了图像每一行的最大高度范围。(本系统在逐行扫描时,要求每行间有一定的字符间距)
然后,在每一行的高度范围之内在自左向右逐列进行扫描,遇到第一个黑色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有黑色象素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图像的最右端。这样就得到了每个字符的比较精确宽度范围。
最后,在已知的每个字符比较精确的宽度范围内,按照先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个黑色象素点,这样就找到图像比较精确的的高度范围,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。
开 始 初 始 化 标记最高、最低点,将其放在数组中 判断是否到图像最高点 Y 行变量自加 N 标记行中的左右点,将其放在数组中 判断是否到图像最右边 Y 判断是否到最后一行 Y 将分割出来的个矩形放入数组 N 将每个矩形画出来 返 回 图3-4-1 字符分割算法的流程图
图3-4-2 三步完成字符分割过程的图片
图3-4-3 字符分割后的图片
3.5 图像归一化处理
因为扫描进来的图像字符大小存在比较大的差异,而相对来说,统一的尺寸的字符识别的标准性更强,准确率更高,标准化图像就是要把原来各不相同的字符统一到同一尺寸,在本系统中是统一到同一高度,然后根据高度来调整字符的宽度。具体算法如下:先得到原来字符的高度,并在系统要求的高度做比较,得出变换的系数,然后根据得到的系数求得变换后应有的高度。在得到宽度高度后,把新图像里面的点按照插值的方法映射到原图像中。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数字图像处理课程设计-晶振表面字符识别(2)在线全文阅读。
相关推荐: