
【关键词】DSP CCS 数字图像处理 字符识别
1 系统设计方案(图一)
2 各部分原理
(1)灰度化彩像。实现将一张彩色RGB图像转换成灰度图[1]。tms320vc5509a日常生活中人们所见到的图像一般为彩像,其每个像素点的颜色值由三个字节组成,分别为R(红)、G(绿)、B(蓝)三个分量,每个分量占一个字节,因此每个像素点的颜色变化范围为0~255*255*255,如果对彩像直接进行处理识别的话会非常麻烦,因此本系统将所采集的彩像先进行了灰度化处理,使一个字节代表一个像素点,每个像素点的颜色值变化范围为0~255,从而很大程度上减少了运算量[2]。
(2)二值化处理。灰度图像的二值化处理,就是将图像上像素点的灰度值设置为0或255,也就是使整个图像呈现出明显的只有黑和白的视觉效果,以便于后期对图像的进一步处理。二值化是图像处理中很重要的一步,二值化后的图像效果很大程度上影响到图像识别的准确率[3]。
(3)分隔字符。通过算法处理,实现将每一个字符单独分割出来,以便于处理和识别。由于行与行之间、字符与字符之间都是存在空白间隙,利用这一原理可扫描并识别出每一行字符的上下边界,以及每一行中每一个字符的左右边界,从而将每个字符的上下左右边界确定[4],实现字符与字符之间的分割。
(4)制作字符库。即制作出一套标准的参照,每个字符都有自己独特的特征,可根据这些特征的不同来区分不同的字符。将分割后每个字符的数据信息与字符库进行特征对比和匹配,从而识别出该字符,最终输出并显示。
3 各部分算法实现
3.1 灰度化彩像
读入彩像每一点的索引值,并将此索引值作为该点的灰度值,存入存放该图像的一位数组。tms320vc5509a
3.2 二值化处理
首先求出图像的最佳阈值,我们采用了迭代法来计算,步骤如下:
(1)求出图像灰度的最大和最小值Hmax、Hmin,取初始阈值为其均值,即(Hmax+Hmin)/2,记作T(0);
(2)根据阈值T(k)将图像分为前后景,分别求前后景平均灰度值,在对其求平均,作为T(k+1);
(3)重复第2步,知道T(k+1) -T(k) 小于我们设定的精度极限,得到最佳阈值。得到最佳阈值后,再对像素点遍历,大于该值的改为255,小于的记为0[5]。
3.3 分隔字符
得到二值化的图像后,需要将一个个的字符单独提取出来。我们利用了图像投影来分割字符。
当我们把一行字符沿行方向投影后,我们可以看到一系列分离的堆,每一个堆代表一个字符,这样我们便可以记录堆间空白的位置信息来分割字符[6]。
同理,沿列方向投影,我们可以分割出各个行。
所以我们首先对图像进行行分割,再对各个行进行字符分割。需要注意,此时分割出的字符在列方向并不是完全去除了白边(由于行分割是对一行的投影,一行的字符高度并不一定相等),所以需要有一个调整的步骤,把分离出来的图像再沿行方向投影,从顶部和底部开始,分别找到第一个非零值后,即以此点位置开始裁剪。
通过以上步骤即可得到一个个完全且仅包含一个字符的子图像。
3.4 特征提取
英文字符和简单汉字的结构都不太复杂,我们选择用就一个九维向量来描述它的特征。
我们求取上述步骤提取的字符子图像总的非零像素点数。然后将每个子图像等分为9区,求取每区非零像素点数占总点数的比值,作为特征向量的一个值[7]。
3.5 制作字符库
该步骤需要获取标准字符的信息,我们利用Matlab的便捷来进行处理。对标准字符进行上述步骤处理后,会得到各个标准字符的特征向量,整理后作为模板,以待后续识别使用。
3.6 匹配模板并输出
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-34691-1.html
也许美国会派兵抓你回美国