手写数字识别是字符识别的一个分支,广泛应用于需要处理大量手写数字信息的领域。手写数字的识别总的来说,可以分为两大类:统计识别方法和结构识别方法。统计识别方法是基于对字符整体的分析,有模板匹配和代数变换等;结构识别方法是将字符分解成一些构件,进行特征抽取,然后用句法或其它方法进行识别。这些方法各有特点,但也存在一定的局限性:模板匹配方法不易做到与书写者独立,总体变换方法在变换过程中容易使一些有助于识别的关键信息丢失。句法方法容易受噪声干扰,对字符的识别过程较呆板,抗形变能力较差等。
近年来,人工智能中专家系统方法、人工神经网络方法已应用于手写数字识别。本文将专家系统的知识表示、机器学习、模糊推理等方法应用于手写数字识别,使系统具备一定智能,提高了系统的识别能力。下面分别介绍系统知识的表示与组织,知识的机器学习,渐进学习与知识的不断完善,知识的模糊推理,BAYES识别决策等内容,最后给出识别结果与分析。
基于知识的手写数字识别系统中知识以规则形式表示,一个规则由前项和后项两部分组成,前项表示前提条件,后项表示前提为真时所得的结论。
系统以细化后字符的骨架作为特征抽取的对象,将抽取所得的某一特征或某些特征的组合,合取或析取,作为规则的前提条件。特征的类型有3种。
1) 点的特征
特征点串:骨架上端点E、三叉点F、四叉点X形成的字符串
点的相对位置:字符图形分成左上、右上、左下、右下四个区,用0,1,2,3分别表示在这些区内的点的位置。
两点间的距离:特征点间的直线距离
2) 直线特征
直线分水平、45°、垂直、-45°四个方向
3) 弧线特征
弧线分向左、向右、向上、向下四种朝向
除了上述特征外,在不同层次,根据需要可抽取不同的特征,作为规则的前提条件。
规则的结论以满足规则前提条件的样本数或概率分布表示。该概率分布通过示例学习获得。
手写数字识别系统采用一系列前提条件对某一模式类应该具备的特征进行描述。当未知样本与这些前提条件匹配时,就被识别为该模式类。由于手写数字形状的多变性,因此很难对某一模式类的所有样本统一给出一个最小的前提条件描述,系统中的每条规则只是对模式类的部分特征进行描述,这样就可能有不止一个模式类的样本满足该规则的前提条件,也就是满足某规则前提条件的样本,结论中包含的模式类可能不是唯一的。
知识库中规则以分层树形结构组织。顶层是以字符骨架的特征点串作为前提条件的规则,训练集中样本有 M 种特征点串,因此共有M条顶层规则,该M条规则将训练集样本分成M个子集。一般来说,每个子集会有不只一个模式类,因此,顶层规则只对训练样本进行粗分类。
为了对顶层规则匹配后得到的粗分类样本进一步进行识别,在每条顶层规则下面,归纳形成数目不等的二层规则。经二层规则匹配后,有的样本可能还不能识别。对于尚不能识别的样本,在二层规则下,再归纳形成三层规则,甚至四层、五层规则,直到所有训练样本均被识别为止。
采用这种分层树形结构的规则集组织方法,识别时所需匹配及推理的只是规则集的一个子集,有利于提高识别速度。
首先,读入手写数字图片进行图像归一化处理,统一大小,默认为24×24图像块,并通过ostu算法进行二值化:其次,对二值化图像进行图像细化等形态学操作,并按照算法的要求进行特征提取:最后,载入模板矩阵进行对比,选用欧式距离测度并得到识别结果。算法流程如下图所示:
首先,手动写下一个数字(红笔所写),如下图所示:
经过图像预处理、二值化、细化等处理,并计算各特征线以及端点特征后,结果如下图所示。
最后准确的识别出来手写字体,结果如下:
[1]陈巧琴,郑文波.基于知识的无约束手写数字识别系统[J].福州大学学报(自然科学版),1997(03):31-35.
Matlab代码的获取,可私信博主。
博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法、程序、科研方面的问题,均可私信交流讨论。