张光建
摘 要:在手写数字识别中,对采集的数字图像必须预先进行预处理,再进行识别研究。使用MATLAB的GUI创建图形化的操作与显示界面进行预处理,能减少研究人员反复修改代码的重复工作,并能直接显示预处理后数字图像,能对比各种算法处理的效果,以确定最佳算法及方式,达到高识别率目标。
关键词:模式识别;手写数字识别;图像处理;MATLAB GUI
中图分类号:TP181 文献标识码:A 文章编号:2095-2163(2015)01-
Abstract: In handwritten numeral recognition, the digital image acquisition must be pretreated, and then to carry out identify research. Create graphics using MATLAB GUI operation and display interface for pretreatment, repetitive work of the researchers can be reduced to repeatedly modify the code, and can directly display the digital image pretreatment, which can compares the treatment effect of various algorithms, therefore determine the best algorithm and the way. So the target of high recognition rate is achieved.
Key words: Pattern Recognition; Handwritten Numeral Recognition; Image Processing;MATLAB GUI
0 引 言
手写体数字识别(Handwritten Numeral Recognition)是光学字符识别技术(Optical Character Recognition,简称OCR)的一个分支。主要研究利用计算机自动辨认人手写在纸张上或电子设备的10个阿拉伯数字。写在纸张上的称为脱机手写(off-line),写在电子设备上的称为联机手写(on-line)[1]。手写数字识别的研究有很强的实际应用价值,如在大规模的数据统计(如:行业年检、人中普查等)、账务、税务、金融领域等。在邮件的自动分拣中,手写数字识别与光学条码识别和人工辅助识别等手段相结合,来协同完成邮政编码的阅读。
联机手写的数字识别已应用于实际,但脱机手写的研究成果还不是很好,虽然手写数字识别只有0-9十个数字,共10个符号,笔画的结构与书写较为简单,但困难在于同一个数字写法各个不同,不同的人对同一个数字写法不一样,同一个人在不同时候写相同的数字时数字样式也可能不同,而且书写的数字在一般应用范围内也没有上下文的关联。脱机手写一般写在纸质载体上,需要先期用图像进行采集,对数字符号的图像的预处理将直接影响到数字识别率高低。
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)[2]是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受,而且极大地方便了非专业用户的使用。因为不再需要死记硬背大量的命令,只是通过窗口、菜单、按键等方式即可方便地进行各类操作。并且,嵌入式GUI具有轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
脱机手写数字识别中需要对原始的数字图像进行先期预处理,但是使用不同的处理方法(或算法),却会对后期数字识别率产生直接影响。研究已知,数字识别是一种实验性科学,因此可以通过实践对实验进行一些有利尝试,只要这些设计尝试不会影响一般性前提并且是合理的,那么这种处理就是可行的。比如,对数字图像二值化就可以采用:整体阈值二值化、局部阈值二值化、动态阈值二值化、利用空间信息阈值二值化等,具体在预处理时,则可根据采样样本选择最佳的二值化处理。
使用MATLAB的M文件也能测试各种处理效果,但研究人员却要反复修改程序代码。使用MATLAB的GUI[3 -5],在数字图像预处理中,各步骤中可以应用现有的各种处理方法(或算法),同时借助操作简单的图像化数字图像工具,如此则可为手写数字识别研究的人员减少研究中的重复工作,并且直观比较各种算法处理完成的结果和效果,而研究人员只需重点专注于识别算法的研究方面。本文即就是GUI设计的完整过程给出详细论述。
1 GUI设计
1.1 启动MATLAB 的GUI
在MATLAB的命令窗口中,键入guide命令,启动“GUIDE Quick Start”窗口,如图1所示。选择GUIDE的模板,单击“OK”按钮确认,启动了GUI设计窗口 。
1.2 设计图像预处理GUI
一般情况下,预处理步骤分别包括了字图像的导入、灰度化、二值化、平滑去噪、分割、归一化、矫正、细化以及保存。根据每一步骤的实现,针对每一个步骤均需设计一个菜单项,并且如果有多种处理方式(或算法),则设计子菜单项,具体实现过程为:单击GUI设计窗口的工具栏中的控件“Menu Editor” ,在弹出的“Menu Editor”窗口中根据预处理步骤设计菜单,如图2所示。如果默认操作则使用按钮完成。
使用GUI设计窗口的工具栏中的控件“Toolbar Editor” 添加常用的工具栏按钮,完成界面如图3所示。
2功能实现
根据数字图像的处理步骤,在各个按钮上右击鼠标,其后出现的快捷菜单中则选择“View CallBack”,再单击级联菜单的“CallBack”,将弹出该按钮的返回代码过程,即可在其中输入事件操作代码[6-8]。
2.1数字图像的导入
采用Windows打开对话框,灵活选择图像文件,导入数字图像后即时显示原始图像。按钮的返回代码可设计展开如下。
2.2灰度化
2.4分割
分割是把多行或多个字符图像中的显式字符从整个图像中切割出来成为单个字符。对于单个字符的图像也可以分割数字,并将多余的空白区域切割掉,从而减少存储空间,也利于后期的快速处理。数字字符分割算法包括:投影法、气泡法、投影-气泡法等。这里默认使用的是单数字符号的边缘进行分割,如此则可减少数字符号的存储量,同时剪切掉多余的空白区域。
2.5 归一化
因为原始图像在位置、形状等方面都存在很大的差异,所以需要进行归一化处理。处理后,使所有样本均具有相同的大小和形状,便于后续特征提取和识别。归一化可以按位置或大小进行操作。
3软件生成
制作GUI可执行文件,生成EXE文件,使其在Windows平台下,没有安装MATLAB软件的情况下直接运行,即可脱离Matalab环境的执行程序。这里需要使用MATLAB自带的Lcc编译器来完成。制作步骤:在命令窗口输入>> mbuild –setup,选择编辑器,创建exe文件;将创建的M文件和fig两个扩展名的同名文件以及exe文件,ctf文件一起复制到同一个文件夹中,再将这个文件夹复制到目标机上,直接执行即可。
另一个方法:在MATLAB窗口输入>> comtool,点击file-open project可将预先已经创建的cbl工程文件打开,再点击component--package component就实现了打包,此时在文件夹里的exe就是生成打包后的压缩文件。复制这个文件到目标硬盘中,双击解压,在解压的文件夹中点击_install.bat就可以实现并完成安装。
本文的所有程序代码是在MATLAB 2013a 64位版本下调试通过。
4结束语
随着信息化的迅速发展,手写数字识别的应用会涉及到很多领域。手写数字识别应用系统性能的关键与瓶颈在于手写数字识别核心算法,核心算法需要准确的采样数据,准确的图像预处理方案能保证采样数据的准确性,如此才能研究出零误识率和零拒识率的高速识别算法。
参考文献:
[1]白天毅. 基于神经网络的手写体数字识别关键技术研究[D].西安:西安工业大学,2014.
[2]王天永. 基于MATLAB GUI的电子散斑干涉图像采集和处理系统[J]. 大众科学,2012(1):11-13.
[3]王霞英. 基于MATLAB GUI指纹图像特征提取与对比的研究[D].太原:中北大学,2013.
[4]钱超. 基于MATLAB GUI的指纹图像采集及预处理研究[D].太原:中北大学,2013.
[5]张猛,余仲秋,姚绍文. 手写体数字识别中图像预处理的研究[J].微计算机信息,2006(16):256-258.
[6]彭敏. 基于多级神经网络分类器的手写数字识别[D].沈阳:沈阳工业大学,2014.
[7]王一木,潘赟,龙彦辰,严晓浪,宦若虹. 基于自组织映射的手写数字识别的并行实现[J].浙江大学学报(工学版),2014(4):742-747.
[8]王璇,薛瑞. 基于BP神经网络的手写数字识别的算法[J].自动化技术与应用,2014(5):5-10.