基于MATLAB英文语句识别技术的应用实践
2019-03-07郑新哲
郑新哲
(北京理工大学,北京 100081)
1 引言
近年来,各种智能识别技术得到迅速发展,包括指纹识别、手写输入、车辆牌照识别、人脸识别等技术已经得到广泛应用。本文利用MATLAB提供的几个图像处理函数,研究了印刷体英文字母的识别方法和过程,对智能识别技术进行了初步尝试,对于在研究过程中遇到的标点符号及阿拉伯数字识别的误判问题,进行了原因分析与程序处理,最终得到满意的结果。本文对初次接触数字图像处理技术的人员具有引导和示范作用,可以作为学习数字图像处理课程的入门训练。
2 基本算法及原理
MATLAB是 Matrix Laboratory(矩阵实验室)的缩写,是Math Works公司开发的一种功能强、效率高、简单易学的数学软件。MATLAB的图像处理工具箱功能也十分强大,支持的图像文件格式丰富,如 *.BMP、*.JPG、*.JPEG、*.GIF、*.TIF、*.TIFF、*.PNG、*.PCX、*.XWD、*.HDF、*.ICO、*.CUR 等。MATLAB提供了20多类的图像处理函数,几乎涵盖了图像处理的所有技术方法,这些函数按其功能可分为:图像显示、图像文件I/O、图像算术运算、几何变换、图像登记、像素值与统计图像分析、图像增强、线性滤波、线性二元滤波设计、图像去模糊、图像变换、邻域与块处理、灰度与二值图像的形态学运算、基于边缘的处理、色彩映射表操作、色彩空间变换、图像类型与类型转换等。
基于MATLAB的图字符识别过程大体分成五个步骤:①建立字符样本库;②获取含字符的图像并对字符区域块进行定位和读取;③对各个字符进行切割提取;④所提取的图像字符与样本库中的样本进行比对,确定识别的字符;⑤输出识别的字符串。
上述识别过程所涉及的核心算法包括:①彩色图像灰度化rgb2gray()、二值化im2bw();②根据需要对图像进行大小调整imresize();③根据垂直直方图分割字符,并根据零的宽度识别单词间隔;④建立字符模板数据库;⑤用适当算法进行识别和字符输出[1]。
3 字符识别的实现
3.1 准备工作
①选择测试的特定字体,本文采用宋体对应的英文字母;②准备包含该字体的英文语句的图像文件,这里用“.jpg”格式的文件进行测试;③准备该字体大小写英文字母及标点符号模板,每个字符用一个文件,采用二值化的“.bmp”格式。
3.2 识别过程
①读入待识别图像文件。②先对图像进行灰度化处理,再对其进行二值化处理,必要时黑白反转。③根据像素值确定文字区域的位置,并截取该区域保存,待进行后续处理。④判断该区域的高度,若小于某值,则对此图像区域进行放大,以提高识别率。⑤根据图像中列像素的不连续性及其大小,分割字符并判断单词分割。⑥对分割出来的每个字符图像单独保存到变量中,并对其修整,去掉外围无效区域。⑦对已分割的字符图块,按高度分成高、低字符两类。⑧最关键的一步是字符识别,识别过程即为图像最佳匹配过程。有很多算法可以实现图像匹配评估,常用的有:直方图法、图像模板匹配法、SSIM(结构相似性度量)法、余弦相似度法、互信息度量法等。本文解决的内容相对简单,对于二值图像来讲可选用简单的算法即可。本文采用图像模板匹配法,将待识别字符图块和模板字符图块放大/缩小成同样大小的图像,用异或运算后的残余像素总数的多少判定匹配程度。⑨根据英文字母的特点,大写字符都属于高字符,而小写字符中的b,d,f,g,h,i,j,k,l,p,q,t,y为高字符,其余为低字符。待识别字符图块属于高字符类时,只与模板中的高字符相匹配;待识别字符图块属于低字符类时,只与模板中的低字符相匹配。⑩根据第5步中单词分割位置,将完整的英文语句输出到屏幕上。不能识别的字符用“?”替代。
处理程序流程图见附件1。
附件1:程序流程图
测试1:彩色背景的简单语句,识别正确(下面为图像,上面为识别后的文本)
I am a student of BIT
I am a student of BIT
测试2:稍长些的语句,识别正确
The last layer is the network output
The last layer is the network output
测试3:软件改进前,字符较小时多个字符识别失败
Ada?tion is don?with TRAINS which u?dat?s
Adaption is done with TRAINS which up dates
测试4:改进后,字符较小时在识别之前将图片整体放大后再识别,识别正确
Adaption is done with TRAINS which updates
Adaption is done with TRAINS which updates
测试5:包含标点符号的文字测试,识别正确
Each layer's weights are initialized.
Each layer’s weights are initialized.
测试6:包含标点符号和数字的文字测试,识别正确
Foreigners' trips to,out of China up 11 pct in 2018.
Foreigners’trips to,out of China up 11 pct in 2018.
本程序在软件调试过程中遇到了几个问题,通过软件的算法处理大部分问题都得到了圆满解决。具体情况如下:
①字符图像较小时识别的错误率较高,通过先判断字符的高度,在小于某一特定值时,对图像整体进行放大,然后再进行识别处理,该问题得到解决。
②大写“O”与小写“o”通过字符高度得到分离。
③大写“O”与阿拉伯数字“0”通过字符的高宽比得到分离。
④冒号“:”与等号“=”通过字符宽度得到分离。
⑤单引号“‘”与逗号“,”通过字符起始高度得到分离。
4 结语
采用MATLAB提供的图像处理函数,可以实现英文语句图像的字符识别,对标点符号及阿拉伯数字也可以得到满意结果。与此同时,本文中提供的方法也存在以下问题:
①只能处理相同字体、大小一致的英文文本,且只能处理一行;
②由于采用了灰度化、二值化方法,文字与背景反差小的图像无法正确识别。
本文仅用了简单的图像匹配算法,可以采用更好的特征提取法、相关系数法、神经网络算法等技术,以适应不同字体,提高识别的适应性和准确性。此外,通过在软件中建立学习功能,并对分辨不清的情况提供不同选项,可以使系统能识别不同字体,并提高识别的正确性和实用性。