基于MATLAB/GUI的文字图片识别系统设计

  作者:吴士好,刘艳华(盐城工学院信息工程学院,江苏盐城 224051) 时间:2023-04-24来源:电子产品世界

编者按:设计一个基于MATLAB/GUI的可视化文字图片识别系统。系统主要包含三部分,分别是图像预处理、文字分割和文字模板的匹配识别、GUI可视化界面设计。图像预处理包含图像旋转、图像裁剪、灰度变换、图像增强和二值化等;然后对二值化后的图像进行文字的分割,分割后的字符与数据库里面的文字模板进行匹配识别,最后输出识别的文字内容。处理算法调试成功后,设计一个可视化用户界面。系统完成后调试系统,输入样本图像检测识别结果。经多次测试,本系统可以较为准确地提取并识别图片上的文字信息。

字符识别在图像处理中是一种比较常见的技术。随着技术的发展,常见的一些文字通常用图片的格式来进行存储。当需要使用到这些文字的时候,图片上的文字不是很方便人们的使用,这个时候就要借助文字识别的手段,把需要的文字从图片中提取出来。

本设计运用MATLAB/GUI 设计实现文字图片识别系统,该系统包括GUI 界面设计,图像预处理,文字的分割和识别。建立图片文字模板,该文字识别系统可以实现图片的读取和保存、图片的各种预处理操作,然后对文字进行分割,最后对文字进行识别,并在记事本中显示识别结果。

1 文字图片识别系统方案

文字图片识别系统主要包括GUI 界面设计,图像预处理,文字的分割与识别3 部分。

文字图片识别系统的实现方案为:

1)首先根据系统的功能,确定GUI 界面需要的控件或菜单的种类和数量,后面通过编写每个控件或菜单的回调函数,实现控件或菜单相应的功能;

2)准备几种不同类型文字的图片,以备进行识别测试,首先进行图片预处理,包括对图像大小的裁剪旋转、图像增强、图像灰度化、图像二值化等操作,为了后面的文字分割和识别做准备,方便提取文字图像的特征点;

3)研究字符分割算法,实现对文字图片的分割和识别;

4)进行系统各个模块的运行调试,修改相关程序,完善设计系统。

2 文字图片预处理

预处理比较重要的操作包括以下几步:

首先对文字图像进行灰度化处理,将彩色图像转换成灰度图像。其次去除图像中的噪声,对图像进行降噪,提高识别的准确度,噪声会导致图像的质量下降,影响图像上的关键信息。接着对文字图像二值化,将文字图像转换成只有黑色和白色两种颜色的图像。

2.1 图像的输入与裁剪

在MATLAB中,使用函数imread() 函数来读取图像,利用函数imshow() 显示图像。

当系统读入一张图片,通常字符的周边存在许多与文字没有关系的其他信息,会对后续的处理带来干扰,并且增大了程序的运算量,延缓了程序的运行速度。所以有时需要对图像适当进行裁剪,去掉那些无用的干扰信息。

利用函数imcrop() 可以对图像进行剪切。还可以借助MATLAB 的算法,获取鼠标的一些操作来实现截图的功能。

2.2 图像灰度化处理

对文字图像进行灰度化处理,主要是为了提取图像中的关键信息,过滤掉原来图像中的色彩信息。彩色的图像经过灰度化处理后,就只剩下一个灰度值。把原本的三通道R、G、B色彩图像转变成为单通道的灰度图像。

灰度化处理算法有分量法、最大值法平均值法和加权平均法。在MATLAB 中使用rgb2gray() 函数,对彩色图像进行灰度化处理。

2.3 图像增强

图像增强是用来降低图像中的噪声,使图像显示的更加清晰,为后续的处理做准备。

依据图像所在空间的不同,图像增强的方式也就不同。一种是基于空间域的图像增强,它分为灰度变换增强、直方图增强和空间滤波等。另一种是频域的图像增强,常用的有低通滤波、高通滤波和中值滤波等。

经过对几种算法进行测试对比,最后选择使用中值滤波对图像进行降噪处理,然后再对滤波后的图像进行直方图增强处理。经过这样的处理后,得到的图像字符是比较清晰的。

在MATLAB 图像工具箱中,采用imhist() 函数计算和显示图像的直方图,用imadjust() 函数进行对比度调整。

2.4 图像二值化

图像二值化的实现是选取一个合适的阈值thresh,把它作为分界点。当像素点的像素值大于thresh 时,将其设置为白色,当像素点的像素值小于阈值thresh 时,将其定为黑色。在MATLAB 工具箱中,函数graythresh()的功能就是获取一定的阈值,然后依据获得的阈值把图像进行二值化。函数graythresh() 获取匹配的阈值的原理是最大类方差法。

将获取到的阈值用到函数im2bw(t,thresh) 中,就可以把图像二值化,得到一个黑白色的图像。

3 文字分割和识别

把二值化后的文字图像进行字符分割,分割好后的字符会被写入资料库,生成待识别的字符模块。字符识别时,读取处理后的待识别字符和标准的文字字符模板,把这两部分进行匹配识别,输出文字的识别结果。

3.1 字符分割

字符分割采用基于连通域分析的方法,对二值图像上的文字进行分割。连通区域的标记算法种类是比较多的。在标记过程中,某些算法只经过一次的遍历就可以标记成功,也有的算法需要不止一次的图像扫描才可以完成标记。

本设计采用基于行程扫描的算法进行连通域的标记,处理对象是经过处理后的二值图像,作用是将图像中感兴趣的前景目标和背景分离。图像遍历完毕之后,得到很多个团的起始坐标、结束坐标以及它们所在的行和标号。同时,还得到一个等价对列表。

二值图像中的文字部分是白色的,在矩阵里面用1表示,背景是黑色的,在矩阵里用0 表示。在遍历图像的进程中,标号从一开始计数,找到等价的序列并且赋值一个标号给它们。找到等价对后,记录它们的标号,最后把每个团的标号填入图像当中。

每一个字符信息都有自己的连通区域,字符是白色的,在矩阵中用1 表示。所以只需要找到像素值是1 的连通区域,然后标注并提取出来。这样就可以实现字符的分割处理。

3.2 文字识别

模板的匹配识别是利用小尺寸的字符图像和模板中的图像进行比较,确定原图像中是否存在和这个模板相同或者相似的区域。文字识别的效果与选取的模板是息息相关的。

数据库里面的模板都是经过一系列处理的,字符库由26 个大小写英文字母和0~9 十个数字组成。数据库中的模板图片的格式是高度42,宽度24。

在匹配识别的时候,首先将待识别图片进行尺寸变换,转换成和模板图片一样的大小,利用imresize() 函数实现;然后利用函数corr2() 来计算两张图片的相似度。当得到的结果在1 的附近,表示两者的匹配度是很高的,也就是相似的;当获取的结果接近0,表示二者的匹配度是很低的。

经过对比,获得1 个与分割字符相似度最高的字库图片,建立1 个文档,把找到的模板图片中的文字信息输出在文档中,即可实现文字的识别。

4 文字图片识别系统的调试与分析

GUI 界面设计完成后,编写对应菜单控件的回调函数。然后运行这个系统,对要识别的图片进行文字识别测试。通过菜单可以实现图片的读取和保存,显示图片处理的各个中间过程,GUI 可视化界面及部分测试结果如图1 和图2。

1682331579768715.png

图1 文字识别测试一

1682331611829464.png

图2 文字识别测试二

从识别的结果来看,有时会发生识别错误,不过错误率是比较低的。

手写的字符只要写的很规范,系统能够准确地识别图像中的文字。如果数据库中每个字符有许多的模板字体,可以大大地提高文字的识别成功率。另外就是字母大小写可能发生识别错误,发生大小写混淆。

总体来说,文字图片识别系统能够识别大部分文字,个别的一些识别缺陷,将在以后的研究中继续改进。

参考文献:

[1] 张红霞,王灿,刘鑫,等.复杂背景图像的字符识别算法研究[J].计算机测量与控制,2019,27(8):29-37.

[2] 刘思慧,江维.基于MATLAB手写体数字识别程序设计[J].电子世界,2019(3):18-21.

[3] 李梦瑶.基于matlab的图像增强处理技术[J].信息记录材料,2020,21(3):19-26.

[4] 甘晓英,白阳,何晓栋,等.一种并行二值图像连通域标记算法[J].计算机与数字工程,2021,49(5):43-49.

(本文来源于必威娱乐平台 杂志2023年4月期)

关键词: 202304 MATLAB/GUI 文字分割 匹配识别 可视化

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版