刘宇旸 钟诗航 邢昊然 王睿
(北方工业大学电子信息工程学院,北京 100043)
基于DSP的字符识别系统的设计与实现
刘宇旸 钟诗航 邢昊然 王睿
(北方工业大学电子信息工程学院,北京 100043)
本系统(DSP)TMS320VC5509A应用图像处理和字符识别技术,拟实现对一张图片中单个字母与数字的识别、一行数字与字母的识别、多行数字与字母的识别、在同一行中字体大小不一的字母与数字的识别,以及部分汉字的识别等文字信息的处理和识别,并以可编辑的形式输出。
DSP CCS 数字图像处理 字符识别
随着计算机网络飞速发展,信息电子化已经成为一个时代的必然趋势。文字作为信息中最重要、最集中的载体,其电子化进程显得越来越重要。很多的电子图书、期刊文献和会议论文中都包含着大量有用的信息,但这些文件大都是以PDF格式进行保存的,只能以图片的形式查看,无法直接对其中的文字信息进行复制和编辑,因此如何快捷地获取这些文字信息,一直是困扰着人们的一个难题。本系统实现对字母以及部分汉字的识别和处理并以可编辑形式输出。
(1)灰度化彩色图像。实现将一张彩色RGB图像转换成灰度图[1]。日常生活中人们所见到的图像一般为彩色图像,其每个像素点的颜色值由三个字节组成,分别为R(红)、G(绿)、B(蓝)三个分量,每个分量占一个字节,因此每个像素点的颜色变化范围为0~255*255*255,如果对彩色图像直接进行处理识别的话会非常麻烦,因此本系统将所采集的彩色图像先进行了灰度化处理,使一个字节代表一个像素点,每个像素点的颜色值变化范围为0~255,从而很大程度上减少了运算量[2]。
(2)二值化处理。灰度图像的二值化处理,就是将图像上像素点的灰度值设置为0或255,也就是使整个图像呈现出明显的只有黑和白的视觉效果,以便于后期对图像的进一步处理。二值化是图像处理中很重要的一步,二值化后的图像效果很大程度上影响到图像识别的准确率[3]。
(3)分隔字符。通过算法处理,实现将每一个字符单独分割出来,以便于处理和识别。由于行与行之间、字符与字符之间都是存在空白间隙,利用这一原理可扫描并识别出每一行字符的上下边界,以及每一行中每一个字符的左右边界,从而将每个字符的上下左右边界确定[4],实现字符与字符之间的分割。
(4)制作字符库。即制作出一套标准的参照数据库,每个字符都有自己独特的特征,可根据这些特征的不同来区分不同的字符。将分割后每个字符的数据信息与字符库进行特征对比和匹配,从而识别出该字符,最终输出并显示。
图一 系统设计框图
图二 测试原图
图三 识别结果
3.1 灰度化彩色图像
读入彩色图像每一点的索引值,并将此索引值作为该点的灰度值,存入存放该图像的一位数组。
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 特征提取
表1
表2
表3
英文字符和简单汉字的结构都不太复杂,我们选择用就一个九维向量来描述它的特征。
我们求取上述步骤提取的字符子图像总的非零像素点数。然后将每个子图像等分为9区,求取每区非零像素点数占总点数的比值,作为特征向量的一个值[7]。
3.5 制作字符库
该步骤需要获取标准字符的信息,我们利用Matlab的便捷来进行处理。对标准字符进行上述步骤处理后,会得到各个标准字符的特征向量,整理后作为模板,以待后续识别使用。
3.6 匹配模板并输出
字符的识别部分采用了余弦算法,利用余弦定理来判断其与标准字符的相似性。
4.1 测试结果展示图二、图三(部分字符库字符识别)
4.2 可识别字符库
4.2.1 可识别的英文字母以及识别率(单位 %)(见表1)
4.2.2 可识别的数字以及识别率(单位:%)(见表2)
4.2.3 可识别的汉字以及识别率(单位:%)(见表3)
本文提出了基于DSP的字符识别系统的设计,原理与基本算法。通过最后的实验结果,可以表明,系统工作稳定,识别效率高,识别精度高,并有较大的提升空间。伴随着大量的文章,图片分别以PDF以及BMP格式进入互联网,对字符以及图像中的字符识别成为了一大难题,同时也说明了有较大的研究空间和发展价值[8]。
[1]Rafael C.Gonzalez,Richard E.Woods.数字图像处理第三版.Digital Image Processing,Third Edition.[M].北京:电子工业出版社,2011.6.
[2]Rafael C.Gonzalez,Richard E.Woods,Steven L.Eddins.数字图像处理的MATLAB实现(第2版)[M].北京:清华大学出版社,2013.4.
[3]汪春梅,孙洪波.TMS320C55xx DSP原理及应用[M].北京:电子工业出版社,
[4]赵小强,李大湘,白本督.DSP原理及图像处理应用[M].
[5]孙明.数字图像处理与分析基础——MATLAB和C++实现[M].北京:电子工业出版社,
[6]刘珂含,何培宇,关胜平,田芳芳,吴嵘.基于TMS320VC5509A的图像采集与识别系统[J].四川大学学报(自然科学版),2008,45(1).
[7]陈炳权.基于DSP+FPGA的实时图像识别系统硬件与算法设计[J].衡阳师范学院学报 2008,29(3).
[8]肖明明,黎耀荣.基于DSP的字符识别系统的实现[J].微计算机信息(嵌入式与SOC), 2009,25(1-2).