android 手写字体识别,一种基于Android系统的手写数学公式识别及生成MathML的方法...

专利名称:一种基于Android系统的手写数学公式识别及生成MathML的方法

技术领域:

本发明属于模式识别技术领域,涉及数学公式中字符间的空间结构分析,具体涉及一种基于Android系统的手写数学公式识别及生成MathML的方法。

背景技术:

Android系统是基于Linux平台的开源移动操作系统,它由操作系统、中间件、用户界面和应用软件组成,并采用软件堆层的架构,主要分为三部分:底层以Linux内核工作为基础,中间层包括函数库Library和虚拟机,最上层是各种应用软件。随着Android智能机的普及,手写识别正在成为智能机输入的主要方式。近几年,基于手写数学公式的识别取得了很大的进展,如微软的公式识别,汉王的e粉笔等,但是这些软件主要运行于Windows操作系统。手写字符识别属于光学字符识别OCR的一个分支,是近年来研究的热点。手写字符识别的发展历史可以追溯到本世纪50年代,伴随着手写板硬件的出现,人们开始研究联机手写字符识别技术。随着半导体和计算机技术的发展以及模式识别领域理论和方法研究的不断深入和完善,到80年代后期,联机 手写字符识别技术的研究已经朝着实用的方向努力,特别是英文,已经开始研究完全无限制的整句识别技术。我国最早的手写体字符识别系统可以追溯到70年代初,中科院自动化所的科技工作者胡启恒院士等人于1974年开始研制手写体数字识别系统并成功的应用于邮局的信件自动分拣系统之中。80年代开始,清华大学自动化学院,北京大学等高校开始系统的对字符识别技术进行研究并取得成果。手写字符由于不同的人的笔划不同,造成即使是同一字符,不同的人书写也会因字体,习惯不同而大不一样。笔划的粗细、字体的大小、手写体的倾斜度、字符笔划的局部扭曲变形、字体灰度的差异等都直接影响到字符的最终识别效果,因此手写体字符识别是模式识别领域内最具挑战性的课题。手写字符识别最为根本的目标是在一定速度前提下获得尽可能高的识别率。也就是说一是速度,二是识别率。目前无论是传统方法还是一些新方法都不可避免地存在无法解决的识别“死角”,而采用单一的识别方法来提高识别率是十分困难的。因此,手写字符识别的研究趋势应该采用多种分类器组合的多级匹配识别方法,即在特征抽取时以多种方法有效结合来获取优化特征,互相补充,从而减少误识率,提高OCR系统的性能。另外,目前,数学公式的结构分析常采用最小生成树和LL (I)文法,LL(I)文法是一种利用栈结构的自顶向下算法,从文法的起始符号开始反复使用产生式进行推导直至推导出输入符号串,最小生成树法是依据运算符的优先级来建立二叉树的方法,其思想是先对数学公式的字符集进行优先级处理,根据优先级建立二叉树,使用这种方法节省了内存空间,但对优先级的要求很高

发明内容

为了克服上述现有技术中存在的缺陷,本发明的目的是提供一种基于Android系统的手写数学公式识别及生成MathML的方法,能够减少误识率,提高系统性能。为了实现本发明的上述目的,本发明提供了一种基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,包括如下步骤:S1:采集绘图板上手写字符的离散坐标序列,计算所述离散坐标序列在坐标轴X和坐标轴Y上的最小值和最大值,得到字符的边界信息;S2:在处理器内生成一个初始图像,将采集的离散坐标序列画在初始图像中,根据步骤Si得到的边界信息将初始图像剪切成只包含字符的字符图像;S3:对所述字符图像进行灰度处理和二值化处理,得到一个由O和I表示的二维数组;S4:使用细化处理和轮廓提取方法提取特征值;S5:对所述二维数组的行和列分别进行降维处理,生成固定的维数;S6:对所述步骤中S4提取的特征值进行粗分类,判断待识别的字符包含于哪种类型,再对这种类型的字符集使用BP神经网络进行字符识别,得到最优字符;S7:采用三叉树结构定位数学公式的空间关系,使用三叉树的先序算法进行排序,得到Ma^ML ;S8:利用浏览器对MathML进行显示。本发明的基于Android系统的手写数学公式识别及生成MathML的方法能够减少误识率,提闻系统性能。 本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1是本发明基于Android系统的手写数学公式识别及生成MathML的方法的流程图;图2是在本发明一种优选实施方式中手写的数学公式;图3是本发明一种优选实施方式中点P的3*3临域图;图4是本发明一种优选实施方式中三叉树的建立过程;图5是本发明一种优选实施方式中三叉树的层次结构图;图6是本发明一种优选实施方式中三叉树先序排序生成的MathML ;图7是浏览器对MathML的显示。

具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。本发明提供了一种基于Android系统的手写数学公式识别及生成MathML的方法,如图1所示,包括如下步骤:第一步:如图2所示,在绘图板上手写数学公式,处理器采集绘图板上手写字符的离散坐标序列,然后计算该离散坐标序列在坐标轴X和坐标轴Y上的最小值和最大值,得到字符的边界信息。第二步:在处理器内生成一个初始图像,将采集的离散坐标序列画在初始图像中,根据第一步得到的边界信息将图像剪切成只包含字符的字符图像,该字符图像小于初始图像。第三步:对所述字符图像进行灰度处理和二值化处理,得到一个由O和I表示的二维数组,在本实施方式中,得到二维数组后对该二维数组进行除噪处理,即对二维数组中的某些瑕疵点进行处理,去除二维数组中的瑕疵点,在本实施方式中,瑕疵点的判断方法为:如果与一个点相邻的四个点,即上,下,左,右四个点的值均与该点的值不同,则该点为瑕疵点,去除瑕疵点的方法是将瑕疵点的值进行变换,即将O变为1,或将I变为O。第四步:使用细化处理和轮廓提取方法提取特征值。在本实施方式中,具体步骤为:S31:使用细化算法对二维数组进行细化处理。在本实施方式中,使用细化算法对二维数组进行细化处理,具体可以采用Hilditch细化算法对二维数组进行细化处理,具体方法为:将二维数组从左向右从上向下迭代每个点的值作为一个迭代周期,在每个迭代周期中,对于每一个点P,如果它同时满足阈值条件,则标记它,在当前迭代周期结束时,把所有标记的点的值设为0,如果某次迭代周期中不存在标记点,则算法结束,结合图3所示,点P的3*3邻域的8个点以点P右侧的点为起始点,按照逆时针顺序依次编号为xl,x2, x3,x4, x5, x6, x7, x8,所述阈值条件包括以下6点:I)点P的值为I;2)点ρ的上、下、左、右四个点的值不全部为1,在本实施方式中,即点xl,x3, x5,x7的值不全部为I ;3)点ρ的3*3邻域中至少有2个点的值为1,在本实施方式中,即xl,x2, x3, x4,x5,x6,x7,x8中至少有2个点的值为I ;4)点ρ的8连通联结数为I,所述联结数指在点P的3*3邻域中,与点P连接的图形分量的个数,在图3中,灰色点值为1,白色点值为0,图3中左图的4连通联结数是2,8连通联结数是I,而右图的4联通联结数和8联通联结数都是2。在本实施方式中,4连通联结数计算公式是:

权利要求

1.一种基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,包括如下步骤: S1:采集绘图板上手写字符的离散坐标序列,计算所述离散坐标序列在坐标轴X和坐标轴Y上的最小值和最大值,得到字符的边界信息; S2:在处理器内生成一个初始图像,将采集的所述离散坐标序列画在初始图像中,根据步骤SI得到的边界信息将所述初始图像剪切成只包含字符的字符图像; 53:对所述字符图像进行灰度处理和二值化处理,得到一个由O和I表示的二维数组; 54:使用细化处理和轮廓提取方法提取特征值; 55:对所述二维数组的行和列分别进行降维处理,生成固定的维数; 56:对所述步骤中S4提取的特征值进行粗分类,判断待识别的字符包含于哪种类型,再对这种类型的字符集使用BP神经网络进行字符识别,得到最优字符; 57:采用三叉树结构定位数学公式的空间关系,使用三叉树的先序算法进行排序,得到MathML ; 58:浏览器对MathML进行显示。

2.如权利要求1所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,所述步骤S3中得到一个由O和I表示的二维数组后还具有以下步骤:对所述二维数组进行除噪处理,去除所述二维数组中的瑕疵点。

3.如权利要求 1所述的基于Android系统的手写数学公式识别及生成MathML的方法,所述步骤S4其特征在于,所述使用细化处理和轮廓提取方法提取特征值的步骤为: 531:使用细化算法对所述二维数组进行细化处理; 532:对所述二维数组提取轮廓,所述轮廓根据下列公式进行判断:\\p-p, l\p~p, NP1-Pi I[I A-Λ 1\Ρ~Ρ31<1 P1-P) I 令图像细化处理后的二维数组为G[h] [w],p, Pl, p2, p3的位置关系为:P=G[i] [j],pl=G[i] [j+1],p2=G[i+l] [j],p3=G[i+l] [j+1],其中,0 ( i〈h,0 ( j0p(/) = ^ ' ':/ = 1--6II5M/^ >0.1, ^ >0 ' IO

4.如权利要求3所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,使用细化算法对所述二维数组进行细化处理的方法为:将二维数组从左向右从上向下迭代每个点的值作为一个迭代周期,在每个迭代周期中,对于每一个点P,如果它同时满足阈值条件,则标记它,在当前迭代周期结束时,把所有标记的点的值设为O,如果某次迭代周期中不存在标记点,则算法结束;所述阈值条件为: O点P的值为I; 2)点P的上、下、左、右四个点的值不全部为I; 3)点P的3*3邻域中至少有2个点的值为1,所述点P的3*3邻域的8个点以点p右侧的点为起始点,按照逆时针顺序依次编号为xl,χ2, χ3, χ4, χ5, χ6, χ7, χ8 ; 4)点ρ的8连通联结数为1,所述联结数指在点P的3*3邻域中,与P连接的图形分量的个数,所述8连通联结数计算公式为:

5.如权利要求1所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,对所述二维数组的行和列分别进行降维处理,生成固定的维数包括以下步骤: 551:对二维数组进行降维处理,以固定的维数表示; 552:生成新的二维数组并对新的二维数组中的每一块进行赋值; 553:将二维数组中的值连起来生成固定长度的模板。

6.如权利要求1所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,在所述步骤S7中,采用三叉树结构定位数学公式的空间关系时,确定三叉树指针的指向方法为: 1)当所述数学公式的空间关系中存在包含结构时,所述包含结构中的包含体的边界包含其他字符,如果包含体的左右两侧均有被包含字符,则将存储信息为包含体的三叉树结点的左指针指向存储信息为所述包含体左侧字符的左子结点,将存储信息为包含体的三叉树结点的中指针指向存储信息为所述包含体右侧字符的中子结点; 2)当所述数学公式的空间关系中存在由分隔符分成的上下结构时,将存储信息为分隔符的三叉树结点的左指针指向存储信息为所述分隔符上方最左侧的字符的左子结点,将存储信息为分隔符的三叉树结点的中指针指向存储信息为所述分隔符下方最左侧的字符的中子结点; 3)当所述数学公式的空间关系中存在上下标结构时,将存储信息为被标注字符的三叉树结点的左指针指向存储信息为上标的左子结点,将存储信息为被标注字符的三叉树结点的中指针指向存储信息为下标的三叉树中子结点; 4)当所述数学公式的空间关系中存在左右结构时,将存储信息为左侧字符的三叉树结点的右指针指向存储信息为右侧字符的右子结点。

7.如权利要求6所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,所述三叉树根节点的确定方法为: 当数学表达式的最左侧字符的空间关系中没有上下结构或包含结构时,则所述最左侧字符即为根节点; 当数学表达式的最左侧字符的空间关系中有上下结构或包含结构时,则先标记所述最左侧字符为根结点,然后检查包含所述最左侧字符的上下结构或包含结构中是否有特定字符,所述特定字符的种类包括分式,根号或求和符号,若有,则根结点改为特定字符,否则根结点不变。

8.如权利要求6或7所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,三叉树建立的方法为: 581:初始化一个空队列Q,将查找的根结点放进队列Q的队尾中; 582:从队列Q的队头取出一个三叉结点,记为N,对结点N的存储信息中的字符进行空间关系判断,判断是否存在所述包含结构,上下结构或上下标结构,若有,则执行步骤S83,若没有,则判断是否存在所述左右结构,若有,则执行转入步骤S84,若无,则执行步骤S85 ; 583:按照权利要求6所示的方法将所述三叉结点N的左指针和中指针指向其子结点,同时将其子结点依次从队尾进入队列Q,对三叉结点N的存储信息中的字符进行空间关系判断,判断是否存在所述左右结构,若有,执行步骤S84,若无,则执行步骤S85 ; 584:根据所述权利要求6所示的存在上下标结构时三叉树指针的指向方法,将三叉结点N的右指针指向其子三叉结点,同时将其子结点从队尾进入队列Q中,返回步骤S82 ; S85:判断队列Q是否为空,若队列Q不为空,则返回步骤S82,若队列为空,则摧毁队列,算法结束。·

9.如权利要求6或7所述的基于Android系统的手写数学公式识别及生成MathML的方法,其特征在于,在所述步骤S7中,使用三叉树的先序算法进行排序得到MathML的方法为: 如果某一个三叉树结点有左孩子或中孩子,则先查看所述三叉树结点存储的字符的类型,根据不同的类型生成不同的MathML标记语言,将所述三叉树结点的左孩子和中孩子放进所述MathML标记语言中,将所述三叉树结点的右孩子放在所述三叉树结点的MathML标记语言外。

全文摘要

本发明提出了一种基于Android系统的手写数学公式识别及生成MathML的方法,包括如下步骤采集绘图板上手写字符的离散坐标序列,得到字符的边界信息;在处理器内生成一个初始图像,将采集的离散坐标序列画在初始图像中,将图像剪切成只包含字符的字符图像;对字符图像进行灰度处理和二值化处理;提取特征值;对二维数组的行和列分别进行降维处理;根据特征值进行粗分类,将所要识别的字符先固定到某一类中,再使用BP神经网络进行字符匹配,得到最优字符;采用三叉树结构定位数学公式的空间关系,使用三叉树的先序算法进行排序,得到MathML;浏览器对MathML进行显示。本发明的基于Android系统的手写数学公式识别及生成MathML的方法能够减少误识率,提高系统性能。

文档编号G06K9/20GK103235945SQ20131010018

公开日2013年8月7日 申请日期2013年3月27日 优先权日2013年3月27日

发明者王少青, 胡龙灿, 孙怀义, 樊爱军, 钟琼茹, 夏国庆, 陆科成 申请人:重庆市科学技术研究院

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值