highspeedlogic一、选题意义和可行性分析计算机的诞生可说是人类历史上一次伟大的发明,可是对计算机进一步发掘研究的脚步一直都没有停止过,人们不满足于只让电脑进行计算等一些简单的简单却繁杂的操作,让电脑越来越趋向于会思考的人脑才是科学家们所追求的。人类从小便开始读书识字,对于电脑来说也要经过先识字的最基础步骤。最早的磁带输入到键盘鼠标输入,都不能直观的显示,所以科学家们像人类一样能识别手写体,这样能让计算机更好的,更快的为人类的生产生活做贡献。仅仅是简单的数字识别在许多领域都有很重要的应用,例如,邮政编码的识别、报表或银行支票上数字的识别以及汽车牌照数字自动识别等。同样的数字还可分为打印体、手写体等等,识别打印体会比手写体识别容易,但手写体识别更为实用。而后者又分为在线手写体识别和离线手写体识别。在线手写体识别系统通过记录文字图像抬笔、落笔、笔记上各像素的空间位置,以及各笔段之间的时间关系等信息,对这些信息进行处理。而离线手写体的识别相对于在线手写体识别而言,没有笔划信息,因此难度更大、应用更广泛。由此,慢慢诞生人工智能这一学科,从开始的杂乱无章、不统一到1987年电气和电子工程师学会召开并成立国际神经网络学会,神经网络的理论研究和实际应用进入了一个蓬勃的发展时期[1]。人工神经元网络是生理学上的真实人脑神经网络的机构和功能,以及若干基本特性的某种理论抽象、简化和模拟而构成的一种信息处理系统。从构造上大致可分为最简单的感知器网络、多层前馈型神经网络、反馈型神经网络和自组织神经元网络等。由于神经网络具有可并行计算、分布式信息存储自适应和学习能力强等优点,在很多领域获得了极其广泛的应用。尤其是BP网络,即反向传播网络,其应用最为广泛。BP网络是利用非线性可微分函数进行权值训练的多层网络,在函数逼近、模式识别、信息分类及数据压缩等领域得到了广泛的应用。但是神经网络学习过程的算法在数学计算上都比较复杂,过程也比较繁琐,容易出错。因此,采用计算机辅助进行神经网络设计与分析成了必然的选择。目前,在比较成熟的神经网络软件包中,MATLAB的神经网络工具箱应用最为广泛。MATLAB是矩阵实验室(MatrixLaboratory)的简称,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。highspeedlogic二、国内外研究现状手写体数字识别时,首先将印在纸上的数字经过光电扫描产生模拟信号,再通过模数转换变成表示灰度值的数字信号输入计算机。纸张薄厚、洁白度、书写力度和笔划质量都要造成字形的变化,产生污点、飞白、断笔、交连等干扰。因此,一般由扫描得到的数值化的字符还需要多种进一步的处理。经过国内外科学家的研究得出结果,一般在输入手写体之后,首先需对图像进行预处理,为特征提取做好准备。特征提取一般是基于统计的特征选择方法和基于结构的特征方法进行分析。近年来,国内的一些专家学者研究出很多新型的特征提取方法,更有利于精确地识别手写体数字。根据基于字符整体特征的快速分类方法对手写体能较灵活的进行识别。其原理是根据字符结构提取其凹凸特征。首先,找出字符存在的圈,对于书写时产生的无效圈设定一定的阀值进行判别,把无效圈直接置为字符前景(像素点设为黑色)。然后,找出字符的凹陷区,如果图像上连接任意两点的直线都属于该图像.那么该图像为凸图像;如果连接图像上两点的直线有部分不属于该图像,那么该图像为凹图像。其中不属于图像部分所在的区域即为图像的凹陷区。最后,再将字符的凹陷区进一步区分为左、右凹陷区。通过上述的字符处理过程,就得到了以字符有效圈、左右凹陷为判断依据的凹凸特征。另一种新型的特征提取方法为13点特征提取法。13点特征提取方法的总体思路是:首先把字符平均分成8份,统计每一份黑色像素点的个数作为8个特征。分别统计这8个区域中的黑像素的数目,可以得到8个特征。然后统计水平方向中间两行和垂直方向中间两列的黑色像素点的个数作为4个特征,最后统计所有黑色像素点的个数作为第13个特征。也就是说,画4道线,统计线穿过的黑像素的数目。特征示意图如图1、图2、图3所示。图18个区域图2垂直方向highspeedlogic图3水平方向在特征提取之后,选择一种神经网络对手写体数字进行识别。T.F.Pawlicki将多层BP等多种神经网络用于识别手写体数字的实验,在比较实验结果之后,证实了多层网络的分类能力要比其它几种网络好,它在一定的字符集上取得了很好的识别效果。而孙光民等人则利用非线性PCA神经网络对手写体字符进行识别的研究[7]。三、研究的基本内容与拟解决的主要问题首先撰写100个0-9阿拉伯数字,由于每个人的书写习惯或不同时间所写字体不同,每个数字都会有所差别,这给识别增加一定的难度。获取了手写体数字的图像后,进行识别的第一个阶段,即预处理。先要对读入的图像进行灰度处理,为了更便利的对图像进行处理,要根据图像的灰度值处理成黑白两种颜色,对数字字符图像进行二值化。图像在扫描过程中有可能会产生噪声,这会给识别带来不便,所以要尽量去除图像中夹带的噪声。本课题只需对单个的手写体数字进行识别,所以不需对图像进行分割提取单个字符。预处理中很重要的一个环节是归一化,由于原始图像在大小方面存在很大的差异,所以必须进行归一化使得它们具有相同的大小。另外,人们书写的字体往往有不同的倾斜角度和线条粗细,所以要对字体进行书写的倾斜矫正和图像的细化。设计一个基于MATLAB神经工具箱的BP神经网络对不同手写数字进行训练,经过大量的训练后,网络就会“认识”那些没有经过训练的样本。由于手写体数字识别的广泛应用,各人手写体风格的不同以及图像中存在的噪声,本系统的研究难度就是如何提高手写体数字读取的精确程度,而提高正确识别率、识别精度的根本是对图像的预处理和特征提取。本研究课题主要研究了图像进行预处理的各个过程,特征highspeedlogic提取方法以及神经网络的选择。对一个手写数字识别系统,可以用三方面的指标表征系统的性能[5]:正确识别率A=(正确识别样本数/全部样本数)×100%替代率(误识率)S=(误识样本数/全部样本数)×100%拒识率R=(拒识样本数/全部样本数)×100%三者的关系是:A+S+R=100%数字识别的应用中,人们往往很关心的一个指标是“识别精度”,即:在所有识别的字符中,除去拒识字符,正确识别的比例有多大,定义:识别精度P=A/(A+S)X100%一个理想的系统应是R,S尽量小,而P,A尽可能大。四、总体研究思路(方法与技术路线)研究一种系统,首先要把握手写体数字识别的整体流程,然后分析其中的各个过程。手写体数字识别系统的结构图如图4所示。图4结构流程4.1基于MATLAB的字符图像预处理4.1.1MATLAB神经网络工具MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,预处理是字符识别重要的一环,它把原始的图像转换成识别器所能接受的二进制形式。预处理的主要目的是去除字符图像中的噪声、压缩冗余信息,得到规范化的点阵,为识别做好准备。MATLAB包括拥有数百个内部函数的主包和三十几种工具包。如:MatlabMainToolbox(Matlab主工具箱)、ImageProcessingToolbox(图象处理工具箱)、NeuralNetworkToolbox(神经网络工具箱)。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。另外,MATLAB字符图像预处理特征提取神经网络识别结果highspeedlogic的函数隐藏了傅立叶变换等复杂的计算,并且在图像的灰度化、二值化和滤波等方面都有很大优势。4.1.2图像预处理识别字体的过程首先是要在输入图像后进行预处理[8~9],预处理一般包括灰度化、二值化、平滑、去噪声、归一化和细化等。不同的识别方法对预处理的要求不同。手写体数字图像主要是通过扫描仪或摄象机等工具对纸张上的数字进行数据采集在计算机中成为一幅图像。在图像预处理中,我们关心的是笔画,而不是图像的色彩。所以我们要对读入的图像进行灰度化处理。我们对各像素的RGB值各自一个加权系数,然后求和,同时对调色板表项进行相应的处理。在MATLAB语言中给出了(rgb2gray)函数可以把彩色图像转化为灰度图像。所谓的二值化就是指把字符灰度图像处理成二值(0,1)图像的过程。对灰度图像二值化能显著地减小数据存储的容量,降低后续处理的复杂度。对数字字符图像二值化后要能忠实地再现原数字,其基本要求为:笔画中不出现空白点,二值化的笔画基本保持原来文字的结构特征。图像二值化的关键在于阈值的选择。图像的二值化有很多成熟的算法,如整体阀值二值化,局部阀值二值化等。本文所选用的MATLAB工具箱提供了(im2bw)函数将灰度图像转化为二值图像。在二值化后利用均值滤波的方法消除孤立点、线的噪声,这样图中就只剩下手写体数字。要尽量去除图像中夹带的噪声。平滑的目的在于除孤立的噪声点、填充前景区域中的孤立白点、填充符边缘线上的凹陷或删除其中小的凸起,以利于后算法的进行。平滑去噪后,对图像进行归一化处理。标准的字符图像就是把原来各不相同的字符统一到同一高度和宽度。找出图像中数字的边界,然后提取出数字把它举重放置在正方形方框中,再对此正方形图像进行线性插值缩放,使它变为统一规格大小的图像。最后,由于各个人的书写风格不同,字体会往往会产生倾斜,以及落笔之后的粗细不同,所以要对字体进行倾斜度的矫正和字体细化。4.1.3图像的特征提取在对字体进行预处理后要进行的是特征的提取,选取图像的灰度特征时要考虑到特征量的维数与识别的准确率的要求。例如,我们将一个字符归—化为17像素×8像素点阵图。按每个像素位为0或1,形成网络的136个输入特征值。得到的特征图像是二值图像,对应一个元素为0和l的17像素×8像素的特征矩阵,然后是对特征图像编码。编码规则是,按照从左至右、从上到下的顺序,依次扫描整个特征矩阵,将每一行的0和1转换成一个136像highspeedlogic素×1像素的特征列。将每一个字符都进行编码后,顺序送送入已经训练好的神经网络识别,识别结果最后以文本格式输出。4.2神经网络的选取一个神经网络最强大的用处之一是在函数逼近上。它可以用在诸如被控对象的模型辨识中,即将过程看成一个黑箱子,通过测量其输入输出特性,然后利用所得实际过程的输入输出数据训练一个神经网络,使其输出对输入的响应特性具有与被辨识、过程相同的外部特性。BP网络是神经网络的一个分支,又称为多层感知或误差信号反馈网络。它是目前较流行的,应用最广的神经网络模型。BP网络是一种有教师的学习网络,其主要特点是能够实现从n到m维的非线性映射,它还可以采用梯度下降法实现快速收敛。如图8所示为BP网络示意图[12]。图8BP网络示意图设有一个3层神经网络,其中第k层的第j个神经元的输入总和为Ikj,输出总和为Okj,k-1层的第i个神经元与k层的第j个神经元的连接权值为Wkkji1,,则有以下公式:ikikkjikjOWI11,(1))(IOkjkjf(2)对于给定的任一输入模式,若网络的第k层的第j个神经元的输入误差(来自于第k+1层)为Ekj,则使权值沿误差函数的负梯度方向变化,即有如下公式:WEWkkjikjkkji1,1,(是整因子)(3)根据输出与教师的比较,可以对权值进行相应的调整。使得同样的输入经过网络计算后