APP下载

基于MATLAB英文语句识别技术的应用实践

2019-03-07郑新哲

中小企业管理与科技 2019年3期
关键词:字符识别标点符号字符

郑新哲

(北京理工大学,北京 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提供的图像处理函数,可以实现英文语句图像的字符识别,对标点符号及阿拉伯数字也可以得到满意结果。与此同时,本文中提供的方法也存在以下问题:

①只能处理相同字体、大小一致的英文文本,且只能处理一行;

②由于采用了灰度化、二值化方法,文字与背景反差小的图像无法正确识别。

本文仅用了简单的图像匹配算法,可以采用更好的特征提取法、相关系数法、神经网络算法等技术,以适应不同字体,提高识别的适应性和准确性。此外,通过在软件中建立学习功能,并对分辨不清的情况提供不同选项,可以使系统能识别不同字体,并提高识别的正确性和实用性。

猜你喜欢

字符识别标点符号字符
池塘里的标点符号
标点符号的争吵
论高级用字阶段汉字系统选择字符的几个原则
我们班的“标点符号”
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
标点符号们的争吵
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法