获取项目源文件,联系Q:1415736481,可指导毕设,课设
摘要:本文论述并设计实现了一个自由手写体数字识别系统。文中首先对待识别数字的预处理进行了介绍,包括二值化、噪声处理、图像分割、归一化、细化等图像处理方法;其次,探讨了数字字符特征向量的提取;最后采用了bp神经网络算法,并以MATLAB作为编程工具实现了具有友好的图形用户界面的自由手写体数字识别系统。实验结果表明,本方法具有较高的识别率,并具有较好的抗噪性能。
关键词:手写体数字 预处理 bp神经网络 特征提取
Abstract:This article discusses and implements a handwritten numeral recognition system. In the first part of the pre-treatment of identification numbers were introduced, including binarization, noise processing, image segmentation, normalization, thinning and other image processing methods; Secondly, the digital character of the feature vector; last nerve using bp network algorithm, and MATLAB as the programming tool to achieve a friendly graphical user interface handwritten numeral recognition system. Experimental results show that this method has higher recognition rate, and has better noise immunity.
Keywords: Handwritten numeral recognition pre-treatment bp network feature extraction.
OCR(Optical Character Recognition)即光学字符识别技术,是通过扫描仪把印刷体或手写体文稿扫描成图像,然后识别成相应的计算机可直接处理的字符。OCR是模式识别的一个分支,按字体分类主要分为印刷体识别和手写体识别两大类。对于印刷体识别又可以分成单一字体单一字号和多种字体多种字号几类。而手写体识别又可分为受限手写体和不受限手写体两类;按识别方式可分为在线识别和脱机识别两类。
字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。
在整个OCR领域中,最为困难的就是脱机自由手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距离实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。
人类社会己开始进入信息时代,信息产业的发展将对国家的发达和民族的兴旺产生重大的影响。因此,世界各国对信息产业的发展都给予了极大的关注和重视。人类社会的不断进步带来了信息空间的增长和积累,而计算机的出现为现代化信息处理提供了有效的手段。但是,在信息技术高速发展的同时,一个难题也摆在我们面前,那就是计算机数据处理和网络传输的高速度与数据输入的低速度之间的矛盾。目前,人类的许多信息是记录在纸上的文字图像,将这些信息输入计算机是非常繁琐而低效率的工作,这在一定的程度上减缓了社会信息化的进程。因而,作为信息化基础的数据输入成了计算机应用中的瓶颈问题。人们接受信息最频繁的是视觉通道.在日常学习和生活中,所处理的信息有75%—85%是视觉信息,其中文字信息愈来愈占重要地位.比如对各种期刊文献的阅读、查找、翻译:对各种统计报表的汇总、计算、分析;对各种函件票证的分拣、传送、验核等。要实现对这些文字信息处理过程的机械化、自动化,其先决条件就是利用计算机对这些文字信息进行识别。
字符识别是利用计算机自动辨识印刷在纸上或人写在纸上的汉字,是模式识别的一个重要分支,也是文字识别领域较为困难的问题之一。本技术涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机、中文信息处理等学科,是一门综合性技术,在中文信息处理、办公室自动化、机器翻译、人工智能等高技术领域,都有着重要的实用价值和理论意义。
因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。
手写数字识别有着极为广泛的应用前景,这也正是它受到世界各国的研究工作者重视的一个主要原因。下面将介绍一些以手写数字识别技术为基础的典型应用。
(一)手写数字识别在大规模数据统计中的应用
在大规模的数据统计[12](如:行业年鉴、人口普查等)中,需要输入大量的数据,以前需要手工输入,需要耗费大量的人力和物力。近年来在这类工作中采用OCR技术已成为一种趋势。因为在这种应用中,数据的录入是集中组织的,所以往往可以通过专门设计表格和对书写施加限制以便于机器的自动识别。
目前国内的大多数实用系统都要求用户按指定规范在方格内填写。另外,这些系统往往采用合适的用户界面对识别结果做全面的检查,最终保证结果正确无误[4]。可以看出,这是一类相对容易的应用,对识别核心算法的要求比较低,是目前国内很多单位应用开发的热点。
(二)手写数字识别在财务、税务、金融领域中的应用
财务、税务、金融是手写数字识别大有可为的又一领域。随着我国经济的迅速发展,每天等待处理的财务、税务报表、支票、付款单等越来越多。如果能把它们用计算机自动处理,无疑可以节约大量的时间、金钱和劳力。与上面提到的大规模数据统计处理相比,在这个领域的应用难度更大,原因有:
1、对识别的精度要求更高;
2、处理的表格通常不止一种,所以一个系统应具有智能地同时处理若干种表格的能力;
3、由于处理贯穿于整个日常工作之中,书写应尽量按一般习惯(如:不对书写者的写法做限定,书写时允许写连续的字串,而不是在固定的方格内书写),这样对识别及预处理的核心算法要求也提高了。
手写体数字识别在学科上属于模式识别和人工智能的范畴。在过去的数十年中,研究者提出了许多识别方法,目前手写体数字识别方法可以分为两类:基于结构特征的方法和基于统计特征的方法。通过几十年来各国研究学者得对数字识别的研究,国内外在手写识别上也取得了一定的成就。在我国邮电部第三研究所,以信函分拣为目的,识别书写在信封上的邮政编码。其它用传统方法进行识别研究的有中国科学院自动化研究所,该所对手写体数字识别的研究历史几乎有20年了,在他们新近的报告中,利用以有限状态自动机为主的识别途径识别1100个手写体数字,识别率达95.2%,拒识4%,误识0.2%,上海交通大学基于压缩字结构特征的手写体数字识别算法选取了12600个样本组成训练集,6000个样本组成测试集,用BP网络进行分类,识别正确率为97.58%,误识率为1.04%,拒识率为1.38%。 德国E9的Friedhelm Schwenker采用SV-RBF40对手写体数字进行识别,测试样本10000个,识别正确率为98.56%。清华大学采用SVM对金融票据中的手写体数字进行识别,测试样本20000个,识别率约为92%。然而以上提到的系统,要么对书写的正规程度有要求,要么其测试样本和训练样本出于同一批人之手。总之,一般的系统对书写人员限制较多,或者对书写的正规程度有要求,或者对书写位置有要求,或者对所用笔、纸有要求,例如对税务报表的识别就要求用规定的字型书写数字,并且对书写的位置有要求,而真正的无限制手写体数字的识别的研究还有待进一步提高。
本文的手写体数字识别系统总体流程可分为两大步骤。(见图1.1)。
图像预处理 |
神经网络进行数字识别 |
图1.1系统总流程图
其中图像预处理的流程如图1.2 所示。
读取图片 |
灰度化 |
二值化 |
归一化调整 |
数字分割 |
去噪声 |
图像细化 |
图1.2 图像预处理流程图
神经网络数字识别的具体流程如图1.3 所示。
样本训练 |
识别 |
字符特征提取 |
图1.3 神经网络数字识别流程图
1) 图像预处理阶段
在获取原始数字图像过程中,由于光照、背景纹理、镜头分辨率、拍摄角度等原因,难免会造成图像失真并带有噪声。由于这些噪声的影响,如果对获取得到的数字图像进行直接处理的话通常不能得到满意的结果,因此在获取原始数字图像后,需要对图像进行预处理。对于字符识别的预处理过程一般包括:二值化、去噪声、数字分割、归一化处理、图像细化。经过预处理后的图片不仅能够有效滤除噪声,并且能够将不同的大小字符进行归一化到一个固定大小,对大量数据进行压缩处理。预处理阶段在该系统中是一个很重要的阶段。预处理效果的好坏会直接影响到整个系统的性能。具体方法可以详见第二章。
2) 特征提取阶段
由于原始数字图像数据量大,冗余信息较多,一般不进行直接识别,而是进行提取有效特征数据、压缩数据,然后再进行识别。换句话说特征提取是为了去除图像信息中对分类没有帮助的部分,将图像信息集中到几个有代表性的特征上来的过程。
3) 数字识别阶段
我们将提取到的特征值输入到已经训练好的神经网络中进行分类识别。
本文内容上总体安排为六章。
第一章主要是对OCR和手写体数字识别作简单的介绍。介绍内容有:OCR及手写体数字识别的历史及现状;手写体数字识别的典型应用;国内外的研究现状;数字识别系统的整体描述以及本文的研究内容。
第二章:主要是研究手写体数字识别中的预处理技术。本文采用预处理有灰度化,二值化,去噪声,归一化,细化等技术,该章节对其进行详细分析。同时本章针对几种阈值分割进行比较,分析其各自的优缺点。
第三章:主要研究的是手写体数字识别中的特征值提取技术。在特征值提取模块中,需要根据特征表达方式或者特征提取技术的不同,选用不同的预处理技术。
第四章:主要简单介绍神经网络分类识别器实现原理。初步介绍本文采用的BP神经网络,并给出本文采用的学习算法和训练算法。
第五章:介绍了本文实现的系统的开发和运行环境,以及系统的处理过程图,系统界面。给出实验结果分析。
第六章:对整个论文的研究和工作进行了总结并指出了进一步的研究方向。
预处理对于一个良好的识别系统不仅是一个必不可少的环节,而且是至关重要的。如果预处理处理得不够理想,会从很大程度上降低整个系统的识别率。一般手写体数字识别而言,预处理包括很多部分,如去噪声、灰度化、二值化、归一化、细化等等。
所谓灰度图像就是图像的每一个象素的R、G、B分量的值是相等的。彩色图像的每个象素的R、G、B值是不相同的,所以显示出红绿蓝等各种颜色。灰度图像没有这些颜色差异,有的只是亮度上的不同。灰度值大的象素点比较亮(象素值最大为255,为白色),反之比较暗(象素值最小为0,为黑色)。对读取到的图片进行灰度处理,为下一步二值化做好准备工作。图像灰度化有各种不同的算法,比较直接的一种就是给象素的rgb 值各自一个加权系数,然后求和。
图2.1测试图像原图
图2.2灰度化效果图
在进行了灰度化处理之后,图像中的每个象素只有一个值,那就是象素的灰度值。它的大小决定了象素的亮暗程度。为了更加便利的开展下面的图像处理操作,还需要对已经得到的灰度图像做一个二值化处理。图像的二值化就是把图像中的象素根据一定的标准分化成两种颜色。
在数字图像处理中,二值化占有非常重要的地位。这是因为,一方面类似于字符、指纹、工程图等图像本身就是二值的。另一方面,在某些情况下即使图像本身是有灰度的,也将其转换成二值图像再处理。这样在图像处理系统中,可以减少图像信息并提高处理速度。
图像的二值化有几种类型,其中主要的有基于灰度分布的二值化,也有基于梯度信息的二值化。基于灰度分布的二值化处理一般是通过设定阈值,把它变为仅用二值表示前景和背景颜色的图像。图像的二值化可以根据下面的阈值来处理:假设一幅原始图像的象素值p(i,j)的取值范围为[0,m],那么设有其阈值为T=t,0<t<m,则映射成新的二值图像的象素值p’(i,j)为:
(式2.1)
对于基于灰度分布的二值化就是一个带阈值T的二值映射过程,其分割效果的关键在于阈值T的选取。有的应用可以由计算机自动选取,有的则需要人工干预,所以阈值T的选取视应用范围而有所不同。对于字符识别来说,只需要保留文字特征的二值信息即可。目前,众多学者对此已经进行了比较详细的研究,并提出了许多阈值选取的算法,这些算法大体上可以划分为三类:整体阈值法,局部阈值法和动态阈值法。
1) 整体阈值法(又称全局阈值法)
仅由象素点(i,j)的灰度值p(i,j)确定阈值的方法称为整体阈值选择法。典型的阈值选取算法有直方图法,熵阈值法等等,一般地,如果图像灰度直方图呈现双峰,或者图像中背景灰度与目标灰度呈明显分离状,整体阈值法分割图像效果良好且速度快。
2) 局部阈值法
由象素(i,j)的灰度值p(i,j)和象素周围点的局部灰度特性确定阈值的方法称为局部阈值法。不同的阈值法源于N(i,j)的不同选择。对于书写质量差,干扰较严重的字符,采用整体阈值法二值化,效果不太理想,局部阈值法有可能得到较为满意的二值化结果。
3) 动态阈值法
当阈值选择不仅取决于该象素阈值及其周围各象素的灰度值,而且还和象素坐标位置相关时,称之为动态阈值法。这种方法可以处理低质量甚至单峰直方图图像。对文字图像而言,由于笔画和背景的区分比较明显,并且动态阈值法的实现较为复杂、计算时间相对长,因此在文字识别中很少采用。
对于以上三种二值化算法中,由于动态阈值法实现较为复杂而且用时较长,很难满足文字识别中的实时性要求,因此该算法在字符识别系统中很少被采用。采用整体阈值法和局部阈值法能很好的将背景和目标进行分割。本系统采用整体阈值法。
鉴于在实际中,考虑到所要进行处理的图像大多是从印刷出版物上扫描得来的底色大多为白色所以我们将这个阈值固定为230。二值化后效果如图2.3。
图2.3二值化效果图
图像的反色工作只是为了后期处理识别图像方便,并不是必须的过程。反色只是对二值化后的图像象素值取反。即黑色(象素值为0)转变为白色(象素值为1),白色(象素值为1转变为黑色(象素值为0)。
图2.4反色效果图
噪声对于图像的预处理非常重要,它会影响图像处理的输入、采集、处理各个环节和识别结果的全过程。特别是图像的输入、采集的噪声是十分关键的问题。如果输入不良伴有较大的噪声,滤波去噪后不能达到理想效果,将必然的严重影响处理的全过程以至最后的识别结果。噪声去除已经成为图像处理极其重要的步骤,然而现在还没有一个通用的滤波去噪方法对所有的图片适用,一般的图像预处理必须根据实际情况选择不同滤波去噪方法进行比较,最后得出最佳的滤波去噪方法。
通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的象素。系统采用的是去除杂点的方法来进行去噪声处理的。
具体算法描述如下:
1)扫描整个图像的每个象素并取得此象素9领域的象素值(如图2.5)。
2)分别计算0和1的总数S0 ,S1 。
3)if S0 5
x=0;
if S1 5
x=1;
4)重复步骤1)直至不再改变。
0 | 1 | 1 |
0 | x | 0 |
0 | 1 | 0 |
图2.5 领域示意图
经过上述算法去离散噪声后,很好的排除了离散噪声点的干扰。效果如图2.6所示。
图2.6 去离散噪声效果图
系统在读进来的图像中一般会含有多个数字,识别的时候只能根据每个字符的特征来进行判断,所以还要进行字符分割的工作。这一步工作就是把图像中的字符独立的分割出来。
具体的算法如下:
第一步,先自下向上对图像进行逐行扫描直至遇到第一个白色的象素点。记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个白色象素,这样就找到图像大致的高度范围。
第二步,在这个高度范围之内在自左向右逐列进行扫描,遇到第一个白色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有白色象素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图像的最右端。这样就得到了每个字符的比较精确宽度范围。
第三步,在已知的每个字符比较精确的宽度范围内,按照第一步的方法,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。
图2.7数字分割效果图
对于字符识别来说,归一化是一个很重要的预处理因素。由于人们在书写、设备使用焦距不同等原因可以导致获取后的数字图像字符的大小不一。对于大小不一的字符图像,处理起来很不方便,因此在通常情况下,在对字符进行预处理的时候,我们必须将单个字符进行归一化处理。归一化处理一般的是将单字符图像进行归一化到固定的大小的数字图像,例如本文采用的归一化后的数字图像大小为16×16。进过归一化处理后,一般的能够将大的字符图像信息进行缩小到固定大小的数字图像,这样在提高识别率的同时也能提高处理的效率。
归一化包括位置归一化,大小归一化及笔画粗细归一化。这里主要进行位置和大小的归一化,而笔画粗细的归一化可以看做是数字的细化。
(1)位置归一化
为了消除数字点阵位置上的偏差,需要把整个数字点阵图形移动到规定的位置上,这个过程称作位置归一化。
有两种简单的位置归一化方法。一种是基于质心的位置归一化方法;另一种是基于文字外边框的位置归一化。基于质心的位置归一化方法首先计算数字的质心,然后在把质心移动到指定的位置上来。基于数字外边框的位置归一化需要首先计算文字的外边框,并找出中心,然后把数字中心一道指定的位置上来。相对而言,质心的计算是全局性的,基于质心的归一化方法抗干扰能力更强。
(2)大小归一化
对不同的数字做变换,使之成为尺寸大小的数字,这个过程被称做大小归一化。
因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高,标准化图像就是要把原来各不相同的字符统一到同一尺寸,在系统实现中是统一到同一高度,然后根据高度来调整字符的宽度。主要是通过将字符的外边框按比例线性放大或者压缩为规定尺寸的字符来实现。
本文主要是对图像进行大小的归一化,将字符图像归一化为标准尺度,便于处理与识别。
具体算法如下:先得到原来字符的高度,跟系统要求的高度做比较,得出要变换的系数,然后根据得到的系数求得变换后应有得宽度。再得到宽度高度之后,把新图像里面的点按照插值的方法映射到原图像中。
比例缩放所产生的图像中的像素可能在原图像中找不到相应的像素点,这样必须进行插值处理。插值处理常用的方法有两种,一种是最邻近插值法,即直接赋值为和它最相近的像素值,这种方法计算简单,但有时会出现马赛克现象。另一种是通过一些插值算法来计算相应的像素值,常采用线性插值法,原理是,当求出的分数地址与像素点不一致时,求出周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。该算法处理效果要好些,但是运算量比较大。在本次设计中,主要是对数字图像进行压缩,直接采用了最邻近插值法,处理后的效果比较好。归一化算法流程如图2.8。
二值去噪后的图像 |
计算字符图像 的高度和宽度 |
根据规定的标准高宽计算缩放因子 |
计算新图像的像素点 映射到原图像的坐标 |
利用临近插值法计算新图像像素点的值 |
图2.8 归一化算法流程图
图2.9 归一化效果图
字符细化是通过一定的处理算法将字符重要的像素点保留下来,去除无关紧要的点,得到字符笔划骨架的技术。对字符识别而言,字符图像上的各个像素点对识别率的贡献并不一样,细化处理能极大的消除字符图像中的冗余点,使计算机在分析处理、识别时不受笔划粗细的影响,快速的接触到本质内容,减少运算量,从而缩短识别的时间。字符图像细化结果的好坏将直接影响到字符特征提取的准确与否(尤其是一些结构特征的提取),最终影响到整个字符识别系统的识别率,因而字符细化已成为字符识别系统中极为重要的环节之一。
在图像分析中,形状信息是十分重要的。为了便于描述形状信息和提取特征,对那些细长的区域常用它的“类似骨架”的细线来表示(如字符笔划),这些细线处于图形的中轴附近,而且从视觉上来说仍然保持原来的形状。这种处理就是所谓的细化。经过细化的文字图像既保留了原文字绝大部分特征,又利于特征提取,而且图像字符点阵比原图像的要少,降低了处理工作量。但是由于细化骨架有可能会造成新的畸变,增加对识别的干扰和困难,所以文字细化的基本要求如下:
1) 要保持原有笔划的连续性,不能由于细化造成笔划断开。
2) 要细化为单线,即笔划宽度只有一个像素。
3) 细化后的骨架应尽量是原来笔划的中心线。
4) 要保持原有的拓扑、几何特征,特别是一些明显的拐角不应被平滑掉。
按照上面的要求,一副图像的细化骨架就可以表示原始图像中物体的结构,所以在物体识别和物体定位中,常常使用物体的细化骨架信息。
由于细化骨架具有良好的结构描述特性,所以近几十年来,许多学者已经提出了很多相关的细化算法,并将其用在不同的字符识别中。细化算法的大体分类如下:
1) 按细化后图形的连续性分,有四邻域连接算法,八邻域连接算法。四邻域连接算法是在水平垂直四个方向的连接,八邻域连接则是在四邻域的基础上加上正反45o对角线方向,总共八个方向。
2) 按细化处理过程分,有串行、并行和串并行处理法。用M×N(一般采用3×3或者5×5)的窗口对某一像素进行检测时,如该点是可删除点,立即删除,则为串行细化处理,它的删除要影响到后续点的检测;如对边缘点全部检测完毕后,再同时更新所有可删除点的值,则为并行细化处理;串行、并行处理混合处理则属于串并行处理。
3) 按细化的运算方式分为两种,即边缘点删除和内点保留。传统的基于边缘点删除的细化算法,在细化过程中只对边缘点的可删除进行判断并做相应的处理,由于受跟踪顺序及所考察领域的影响,容易产生骨架的非对称性;基于内点保留的细化算法,容易使所得的骨架大于一个像素。
本文采用了像素领域分析法的细化算法,在速度和保留结构信息的准确性上较佳。其算法如下:
1) 对图像以每3×3大小划分子网格,对每个子网格进行两次操作,其中每个3×3子网格满足如下矩阵形式:
2) 在第一次操作时,当且仅当条件G1,G2和G3被全部满足时,则删除中心像素p(即让p = 0)。
3) 在第二次操作时,当且仅当条件G1,G2和G4被全部满足时,则删除中心像素p(即让p=0)。
条件G1为:,其中,
其中,为围绕p点的8领域的映射值。
条件G2为:,其中,
条件G3为:
条件G4为
对图像每个像素都进一次上述运算,视为完成一次细化运算,然后重复迭代这个细化运算,直到图像不再变化为止,这时得到的图像中字符笔画均为单像素点,并良好保留了字符的结构信息。效果如图2.10所示。
图2.10细化效果图
为了更好的显示细化效果,见放大效果图2.11。
图2.11 细化效果放大图
如图所示,数字‘8’经细化后很好的得到了‘8’的骨架。
模式识别使用特征来区分不同的种类,因此,特征提取是一个模式识别系统的关键部分。特征提取的目标是找到某种变换,将n维或n×n维的模式类别空间转换到维数更小的特征空间,并同时保留识别所需要的大部分信息。通过特征提取,模式分类可以在维数低得多的空间上进行,从而降低了计算的复杂度。而且,对给定的训练样本进行特征提取可以获得更精确的分类函数的描述,以构造更可靠的分类规则。
模式特征对于分类是十分重要的,数字识别的关键在于能否找出有效的特征,选取的特征是否具有可辨性、可靠性、独立性和特征数量少。具体来说,特征的可辨性是指属于不同类别的样本,特征应该有相对差别较大的值,这样不同类别的样本才能区分的开;特征的可靠性是指对与属于同一类别的样本,而其应具有稳定性,这样同一类别的样本才可以判别为同一类别而不至于误判;特征的独立性是指选择出来的不同特征之间应该互不相关,这样才能减少信息的冗余性;特征的数量要少是指特征量越少越容易满足前面的三个原则,处理速度也会相应提高。模式识别系统的复杂度会随着特征量的增加而迅速增大。更重要的是,训练分类器和判别一个分类器的好坏所需要的数量也会随着所用的特征量的数目呈指数增长。
在一个完善的模式识别系统中,特征提取与选择技术通常介于对象特征数据采集和分类识别两个环节中间,所抽取与选择特征的优劣,严重的影响着分类器的设计和性能。在样本数目不是很多的情况下,用很多特征进行分类器设计,无论从计算复杂程度还是分类器性能来看都是不合适的,因此研究如何把高维特征空间压缩到低维特征空间,以便有效的设计分类器就成为一个重要的问题,这也是模式识别中的一个关键问题。
特征提取方法的选择是影响识别率的一个至关重要的因素,必须指出的是,对于不同的识别问题和不同样本数据,使用不同的特征提取方法的适应性差别是很大的,也就是说,一种特征提取方法对一个问题和数据很奏效对另一个问题或数据可能失效。一个解决的办法是寻找不同的数据的共同特征,或称不变量。另一方面,对于一个有限的训练数据集,如果使用的是统计分类器,特征集必须保持在一个合理小的数量内。就数字识别来说,在实际过程中,如何选择若干种特征提取的方法取决于识别的用途。我们必须考虑到待识别的数字是否有固定的方向和大小,是印刷体还是手写体,是否存在不同的书写风格,是否有缺损,程度如何。这些有利于缩小特征提取选择的难度和提高识别率。此外,虽然特征提取是一个好的字符识别系统的重要组成部分,但是对于一个识别系统,为了达到较佳的结果,其它的步骤,如二值化,归一化等也需要优化处理,并且这些处理不是前后互相独立的。特征提取的选择取决于这些预处理的结果。
虽然,在一定意义上特征提取和特征选择都是要达到降维的目的,只是所实现的途径不同,特征提取是通过某种变换的方法组合原始高维特征,获得一组低维的新特征,而特征选择是根据专家的经验知识或根据某种评价准则来挑选出那些对分类最优影响力的特征,并生成新的特征。有时这两者并不是截然分开的。例如可以先将原始特征空间映射到维数较低的空间,在这个空间中再进行选择以进一步降低维数。当然也可以先经过选择,去掉那些明显没有分类信息的特征,再进行映射,以降低维数。
同样对于手写体字符的识别,特征提取可以降低字符信息量。去除无用的冗余信息、提高识别系统性能。手写体字符的识别,常用的特征有结构特征和统计特征。结构特征和统计特征各有优点:结构特征对细节变化比较敏感,对噪声干扰较大的图像,识别率不高。统计特征对噪声不敏感,具有较好的稳定性,但对图像细节上的细微差异不敏感,在待识别字符形状较相似时易发生错误。所以,统计特征和结构特征相互之间具有一定的互补性。
特征提取是整个字符识别系统的关键,识别算法是根据选取特征的种类来进行选择的。所选取的特征是否是稳定,是否代表一类字符的特点,是系统识别率的高低关键。
由上节可知手写体字符特征提取的方法可分为结构特征和统计特征两种,下面就分别简单介绍这两种特征提取方法的特点与一般方法。
1) 结构特征提取方法
采用结构特征提取字符进行结构分析从而达到识别的目的,是一种非常直观的方法,其思想与人认字的原理有点相像,但又有所不同。其基本思想是:字符可以逐级分解成部件、笔划乃至笔段,识别时可以自底向上,由像素得到笔段,由笔段结合成笔划,由笔划构成部件,由部件组成字符,逐级分析字符图像的结构,根据各元素的属性、数量及其互相关系,便可以判定待识字符。目前研究比较成熟,效果较好的是基于笔划和基于笔段分析的手写体字符识别。
对不同的字符手写样本,尽管人书写风格千变万化,然而笔划与笔划之间的位置关系,以笔划为基元的字符的整体拓扑结构是不变的。人认字就是抓住了这些本质不变的特征,因此能适应不同的书写风格的文字。所以,基于笔划来自动识别字符一直是手写体字符识别研究的一类主要研究方法。
虽然字符的笔划特征受字体、字形大小等影响较小,是识别字符的良好特征,但可惜笔划特征对实际的书写文本来说比较难稳定的提取。通常,用基于笔划段作为特征能较好的解决这一困难。采用结构特征提取方法的难点在于笔划或笔段等基元的准确提取。虽然提取笔划或笔段的方法已有多种,但他们都是基于图像处理的方法,截然不同于人根据知识和经验而做出的视觉处理。单纯建立在图像处理方法上的笔段分析只能十分机械的按图像就事论事,结果提取到的笔段难免与人的判别不完全一致。这种情况在存在连笔、断笔、模糊等场合尤为不可避免。所以,书写畸变对结构特征分析法有着不可忽视的影响。因此,寻求稳定可靠的笔段提取方法仍然是当前有待进一步研究的课题。
2) 统计特征提取方法
从统计模式识别的观点来看,字符识别实际上是一个模式分类问题,人对自然物体的识别,是建立在对该物体进行学习、特征分析的基础上的,计算机模式识别的过程与人的识别过程有着相似的地方。实际上就是一种通过学习或者其它方法,形成一个记忆知识库,进行模式识别时,清晰地表达出一种从物体到记忆知识库的映像,从而得到识别的结果。人在进行物体识别时,是利用大脑中通过学形成的记忆库,对识别的物体进行一种黑箱式的映像,从记忆库中找出相匹配的类别。计算机要把人类识别物体时的这种黑箱式的映像表达出来,一般式有两个步骤完成的:第一步,以适当的特征来描述物体,第二步,计算机执行某种运算完成的映像。此过程实际上就是传统的统计模式识别进行物体识别时所采用的一般方法,具体来说就是特征提取和分类函数的设计的问题,而特征提取是问题难点和关键所在。因此如果特征已知,就可以利用现有的数学理论来指导设计映像函数。然而,对于特征的选择和提取,却没有可遵循的理论来指导,我们很难比较一个物体中哪些特征是实质性,哪些特征是代表性的,哪些特征可能是不重要或与识别无关紧要的,这些都需要大量的实验和理论指导。经过人们在这方面的大量研究工作,提出了一些统计特征提取方法。
由此可见,对手写体数字图像进行特征值的提取,特征值的选择不仅能浓缩信息、降低维数、提高处理效率的同时,其对系统的识别性能也有很重要的影响。在3.3和3.4小节中,我们将详细描述本文所采用的2种特征值(共8+16=24种特征值)的提取方法。
采用结构特征对字符进行结构分析以达到识别目的是一种非常直观的方法。字符由各个子部件构成,逐级分析字符图像的结构,根据元素的属性、数量及其相互关系,便可判定待识字符。
与统计方法相比,结构分析不注重特征的绝对位置,只考虑特征的相对关系,因而对书写风格的变化不敏感,其缺点在于特征提取的算法都相对复杂。下面将介绍本文采用的穿越密度结构特征向量的提取方法。
穿越密度(次数)特征已被广泛的应用于字符识别的研究中。穿线法是取得笔划密度的一个通用算法,其基本思想是用一组或几组与水平成0度、30度、45度或者60度等的平行线,贯穿字符,提取字符与平行线的交点信息作为识别的依据。该算法由于涉及字符拓扑结构方面的信息,所以对字符旋转缩放和变形有较强的容忍度。文献[20]提出的一种径向贯穿字符的穿线法,该方法以字符重心为坐标原点,分别从坐标原点以0、45、90、135、180、-135、-90、-45度方向引出8条线穿越字符,以各个方向穿越字符的次数组成向量作为该字符的径向笔划密度特征。但是,当书写风格引起统一字符的之心位置不同时,该方法提取的特征准确性差。
本文采用的是整体贯穿法,该方法就是间隔一定距离从垂直和水平方向上进行整体穿越,由于本文通过归一化处理后的图像的大小是16×16的,因此本文采用方法是间隔4个像素进行从水平和垂直方向进行穿越,从而得到3行、3列上(共6个)的穿越次数统计。与水平成45、135度角的两条穿越线,将这八个数据作为特征向量。如图3.1的第17—24这八个特征所示。
图3.1特征向量的提取
统计特征中最主要的特征为粗网格特征。粗网格特征是一组注重字符图像的整体的分布特征,此种特征对噪声具有极强的抑制能力。一般来说,虽然手写体数字的书写风格千变万化,但是数字笔划的分布是有一定的规律的。由于10个字符的笔划具有比较固定的总体分布状况,从特征选择的质量来讲,不同数字的特征向量在特征空间中的分布是比较分散的,即特征空间中不同类的类间距离是比较大的。
如图3.1中1—16这16个特征所示,本文采用的粗网格特征提取的方法是:把数字点阵分成几个局部小区域,并把每个小区域上的点阵密度作为描述特征,即统计每个小区域中图像的像素的个数作为特征数据。本文对原始图像进行归一化处理后的图像是16×16的点阵,将之划分为大小4×4的小区域,共计16个。
人工神经网络( Artificial Neural Networks, 简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connectionist Model) ,是对人脑或自然神经网络(Natural Neural Network)若干基本特性的抽象和模拟。人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。国际著名的神经网络研究专家,第一家神经计算机公司的创立者与领导人Hecht Nielsen给人工神经网络下的定义就是:“人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作状态相应而进行信息处理。” 这一定义是恰当的。 人工神经网络的研究,可以追溯到 1957年Rosenblatt提出的感知器模型(Perceptron) 。它几乎与人工智能——AI(Artificial Intelligence)同时起步,但30余年来却并未取得人工智能那样巨大的成功,中间经历了一段长时间的萧条。直到80年代,获得了关于人工神经网络切实可行的算法,以及以Von Neumann体系为依托的传统算法在知识处理方面日益显露出其力不从心后,人们才重新对人工神经网络发生了兴趣,导致神经网络的复兴。 目前在神经网络研究方法上已形成多个流派,最富有成果的研究工作包括:多层网络BP算法,Hopfield网络模型,自适应共振理论,自组织特征映射理论等。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。
神经网络的研究可以分为理论研究和应用研究两大方面。
理论研究可分为以下两类:
1).利用神经生理与认知科学研究人类思维以及智能机理。
2).利用神经基础理论的研究成果,用数理方法探索功能更加完善、性能更加优越的神经网络模型,深入研究网络算法和性能, 如:稳定性、收敛性、容错性、鲁棒性等;开发新的网络数理理论,如:神经网络动力学、非线性神经场等。
应用研究可分为以下两类:
1).神经网络的软件模拟和硬件实现的研究。
2).神经网络在各个领域中应用的研究。这些领域主要包括:模式识别、信号处理、知识工程、专家系统、优化组合、机器人控制等。
随着神经网络理论本身以及相关理论、相关技术的不断发展,神经网络的应用定将更加深入。
在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
图4.1 三层前馈神经网络示意图
1) 神经网络的结构模型
针对当前的脱机手写识别,选择bp神经网络。
2) 神经网络的层数、以及各层的节点数
一般的选择隐含层的层数要从网络精度和训练时间上考虑,对于比较简单的映射关系,在网络精度达到要求的情况下,应该尽量选择较少的隐含层层数,对于较复杂的映射关系,可以通过增加隐含层层数,保证映射关系的正确实现。其实两个隐含层就能解决任何形式的分类的问题,事实上任何一个连续的函数,都可以用三层BP神经网络映射来逼近。因此本文选择三层BP神经网络(输入层、1个隐含层、输出层)。
对于输入层的节点数,一般与输入的特征向量的个数相同,由于本文提取的字符的特征向量有24个,因此采用的神经网络的输入层的节点数也为24。对于输出层的节点数,由于数字识别只有10类,2的4次方就可以表示10类,因此本文采用的神经网络的输出层的节点数为4。对于隐含层的节点的个数没有一个理论基于指导,但是根据前人经验,一般参照下列公式进行设计:
(式4.1)
其中为隐含层的节点数,为输入节点的个数,为输出节点的个数,一般取1~10之间的常数。
因此由式5.1(选择α=9),则可计算得本文采用的隐含层的节点个数为14个。
3) 输出层的值确定
在2)中已经指出,本文采用的输出层的节点数为4。由于目标向量如果采取大于1以上的值,可能会导致算法不收敛,因此本文使用目标向量0.01来代表0,0.99表示1。所以,数字0~9的目标向量见表4.1。
表4.1数字0~9的目标向量
数字0 | 0.01 | 0.01 | 0.01 | 0.01 |
数字1 | 0.01 | 0.01 | 0.01 | 0.99 |
数字2 | 0.01 | 0.01 | 0.99 | 0.01 |
数字3 | 0.01 | 0.01 | 0.99 | 0.99 |
数字4 | 0.01 | 0.99 | 0.01 | 0.01 |
数字5 | 0.01 | 0.99 | 0.01 | 0.99 |
数字6 | 0.01 | 0.99 | 0.99 | 0.01 |
数字7 | 0.01 | 0.99 | 0.99 | 0.99 |
数字8 | 0.99 | 0.01 | 0.01 | 0.01 |
数字9 | 0.99 | 0.01 | 0.01 | 0.99 |
4) 传递函数确定
传递函数的选择直接影响到神经网络结构的性能,因此各层之间选择一个合适的传递函数也是很重要的。本文通过对多种传递函数进行测试,最终确定各层的传递函数为:
第二层:采用logsin传递函数,即对数S型传递函数。
第三层:采用purelin传递函数,即线性传递函数。
5) 训练函数和学习函数选择
训练函数和学习函数的选择对训练的时间起着至关重要的作用,一个好的训练函数和学习函数能够较好避免神经网络陷入局部最优解,同时也能够提升训练的效率。本文采用的训练函数采用traingdx函数,学习函数采用learngdm函数。
6) 网络训练参数确定
在网络训练过程中应根据实际情况预先确定误差界值。误差界值的选择完全根据网络模型的收敛的速度大小和具体样本的学习精度来确定。当Emin值选择较小时,学习效果好,但收敛速度慢,训练次数增加。如果Emin值选择较大时训练不充分。通常选定神经网络的误差界值Emin在0.0001~0.01之间,即在迭代计算误差值e < Emin时,则认为学习完成,停止计算,输出结果。有些时候,训练次数往往很大,甚至不能收敛。此时应该设置一个训练次数的限制NTmin,在达到该训练次数NTmin还没有收敛到Emin时,可以作放弃或停止处理,本文训练BP网络分类器时设定Emin=0.001,最大训练次数为NTmin=5000。
上面的就是本文神经网络的结构设计,图4.2所示的是本文的神经网络对样本数据进行训练的训练曲线。
图4.2本文神经网络训练曲线
Windows98/2000/XP是当前最流行的操作系统,现在大部分应用系统都是建立在这些平台上,同时考虑到软件系统的应用领域和可推广性,我们的系统也是基于Windows XP平台的。编程软件采用Matlab。
读取图片 |
灰度化 |
二值化 |
归一化调整 |
数字分割 |
去噪声 |
图像细化 |
特征提取 |
识别 |
图5.1系统处理流程图
在整个课题中,主要完成以下工作:1) 通过画图软件获得训练和测试样本(也可以直接选择经过数码相机怕照获得的图像)。2) 使用前文所述方法对图像进行预处理。3) 建立一套完整的手写体数字识别测试系统。
图5.2系统主要界面
在实验过程中我们分别对10个数字10个样本进行测试。
数字 类别 | 正识样本数 | 误识样本数 | 识别率 |
0 | 10 | 0 | 100% |
1 | 10 | 0 | 100% |
2 | 9 | 1 | 90% |
3 | 9 | 1 | 90% |
4 | 9 | 1 | 90% |
5 | 8 | 2 | 80% |
6 | 9 | 1 | 90% |
7 | 10 | 0 | 100% |
8 | 9 | 0 | 90% |
9 | 9 | 1 | 90% |
合计 | 93 | 7 | 93% |
图5.3 试验结果分析
从检测结果来看,虽然用于训练的数据集并不是很多,但误差率并不是很高,这也体现了BP算法的优越性,相信如果用更多的数据进行训练会使得正确的检测率提高而错误的检测率降低,从而使网络趋于收敛。
本文对自由手写体数字识别的基本原理及方法作了介绍,并用MATLAB工具实现了自由手写体数字识别系统。在实际生活中,手写体数字识别尤其脱机手写体数字识别的应用比较广泛,例如银行票据认证、成绩自动录入等等。
本文从建立一个完整的脱机手写体数字识别系统的目的出发,对识别系统的重要几个环节:预处理,二值化,分割,分类器进行了研究。本文的选取了合适的特征值,进行整体识别。
通过实验测试,本文设计的系统取得了较好的识别效果并具有良好的抗噪能力。但是还需要从预处理和特征选择方面做更深入研究,有待进一步提高系统的识别率。
在课题研究过程中,由于时间、精力和条件等因素的限制,对一些问题的研究深度不够,在以下几个方面还需要做进一步研究工作:
(l)为了获得更好的识别效率,从特征向量入手,应想办法提取更精确的特征向量,比如投影特征、环凸凹特征等。
(2)如何简化图像预处理,以及针对某些步骤寻找更简单有效的方法,完善某些不甚成熟的地方,从而更好的提高识别率。
联系客服