当前位置:首页 > 手写体数字识别的软件设计(毕业设计论文)
中北大学2009届毕业设计说明书
Xh(p)??bi
i?14?1, if x2i?1?0&&(x2i?1||x2i?1?1), bi???0, otherwise其中,Xh(p)为围绕p点的8领域的映射值。 条件G2为:2?min{n1(p),n2(p)}?3,其中,
n1(p)??x2k?1?x2k
k?144n2(p)??x2k?x2k?1
k?1条件G3为:x2?x3?x8?x1?0 条件G4为
x6?x7?x4?x3?0
对图像每个像素都进一次上述运算,视为完成一次细化运算,然后重复迭代这个细化运算,直到图像不再变化为止,这时得到的图像中字符笔画均为单像素点,并良好保留了字符的结构信息。
图2.14显示了对数字8和3进行细化运算后的结果图,其中左边为原始二值图像,右边为最终细化图像。
图2.14 数字8和3的细化效果
a) 原始图像
b) 细化后图像
第 24 页 共 54 页
中北大学2009届毕业设计说明书
3 手写体数字识别中串切分技术
3.1 切分方法概述
对于连续的手写数字串识别有两种途径:一是不切分直接识别,二是先切分后识别。前者回避了数字串切分的这个复杂的问题,将两个步骤简化为一个步骤,有它的优越性,但是不切分直接识别的这种技术到目前为止还仅限于理论研究角度。而对于手写体数字串的切分的算法已经有各种算法,这些算法各有各自的特点,所以根据切分性质分,大致可以归纳为两类:直线切分和曲线切分。
直线切分顾名思义就是利用直线进行字符的切分。由于直线只需要在一维空间中寻找,所以直线切分的算法简单、直观。然而它只适用于数字之间存在较大的空隙的情况,而对于存在数字字符交叉或粘连的情况就显得无能为力了。直线切分可以大致归纳为两种方法:根据水平和垂直投影的直线切分和根据上下边缘特征的直线切分。
曲线切分是利用曲线进行字符间的切分,这类切分因为切分线是曲线,可以补充直线切分的不足,很适合书写较为复杂的字符间的切分。但是由于该类是在二维空间里搜索,所以算法相对较为复杂,计算量也特别大。目前属于曲线的切分的算法有:滴水算法、多磨具切分算法、基于动态规划切分算法等。
基于以上的方法确定的切分线,有时因为断笔等原因会产生“过分割”现象。于是后来有学者提出了基于识别的切分方法。基于识别的切分方法是,在切分的时候引入识别处理,并使用识别结果作为评价当前切分结果的正确与否,如此反复切分识别最后提出最合理的切分线。该类方法克服了切分的盲目性,但是由于引入了识别处理,计算量增大,很难满足实时性的要求。 3.2 手写数字串常用方法简介 3.2.1 投影法的直线切分
投影法是一种很自然的方法,有点像灰度直方图,常常和二值化一起使用。投影是字符切分方法中最简单、最直观、高效的方法。其大致思想是:先对图像做垂直(水平)方向的投影,获取其垂直投影向量所对应的投影曲线,再选取曲线中大波谷作为切分区域。一般而言,垂直投影曲线中的大波谷都出现在没有笔画或未连笔的地方,而对于手写体数字串而言,没有笔画或未连笔的地方一般都是两个数字
第 25 页 共 54 页
中北大学2009届毕业设计说明书
之间的正确切分区域。然而当数字串中出现粘连、或者连笔的情况时,这种方法就无法正确切分了。所以,该方法一般适合于进行一些简单的粗切分工作,也可以解决印刷体数字、车牌照或书写比较工整、字符间间距明显的切分问题,而精确的、复杂问题的切分就需要结合其它方法来解决了。 3.2.2 滴水算法
滴水算法就是模仿一滴水珠依靠重力的作用,沿笔划的轮廓自然下降,最终形成切分轨迹,该算法思想ShiiteCongedo于1995年首先提出,其涉及到三个关键问题:1) 起始点的确定,2) 下一步寻址策略,3) 穿越盲区的方法。其中按照起始点位置和下一步寻址策略可将滴水方法分为四种:从顶部左侧向下、从顶部右侧向左下、从低部左侧向右上、从底部右侧向左上。滴水算法能够较好的分割一些连写和粘连的数字串,但是如果数字串存在开口的情况下,就可能导致切割不准确。 3.2.3 动态规划算法
手写字串的切分过程中,其实就是在一个图中找出一条路径,最合理的将图中的字符分离的过程。这条分离字符的路径实际上就是我们要寻找的切分线。也就是说数字串切分过程就是寻找最佳路径问题。在最佳路径的方法中,动态规划算法是一个很有效的方法。它是一个多步决策过程,通过把第一个N步过程转化为N个单步过程的方法使其复杂度按对数级降低。有学者提出了采用基于识别的动态规划算法进行切分处理,该方法可以较好的切分字符串。 3.2.4 滑动窗口法
滑动窗口的切分方法是Martin,G.于1993年提出的基于识别技术切分的典型方法之一。在该方法中他大胆的尝试了使用一个可以移动的窗口,从数字串的左侧向右侧不断滑动,每完成一次滑动之后就紧接着使用神经网络方法对位于窗口中的字符进行相应的识别。在其理想状态下,数字串的每一个字符都可能落在窗口之中,这就避免了切分过程,直接完成数字串的识别。但事实上,该方法不仅运算量特别大,而且当书写的字符大小不一时,将产生较差的效果。 3.2.5 多模具切分法
多模具切分方法属于较新的研究成果,是由北京邮电大学的张洪刚等人于2003年提出的。该算法通过总结手写体数字串中字符之间的连接特点,归纳出一套切分的曲线类型,并根据这些曲线类型设计出多种切分模具,这个方法具有思路简捷、
第 26 页 共 54 页
中北大学2009届毕业设计说明书
与具体应用密切结合、搜索策略简单、盲目性小、最优解的获得的受噪声影响等优点。其中他们共总结了五类模具切分曲线(如图3.1所示):
1) 模具类型1:针对1、7的斜线类型。 2) 模具类型2:针对0的弧线类型。 3) 模具类型3:针对9的上弧线下斜线型。
4) 模具类型4:针对4、5、6的上斜线下弧线类型。 5) 模具类型5:针对2、3、8的上下双弧线型。
图3.1 多模具切分方法的切分模具
3.3 本文手写数字串切分方法介绍
首先由于本文将不对连写或粘连的手写体数字串进行识别,其次又因为在人们的数字过程中,一般的是都是按照行进行书写(垂直方向不一定对齐)。因此本文采用的手写数字串切分方法主要还是上节所提到的基于投影的直线切分法。
本文的手写数字串的切分的主要分为两个步骤:
Step1:将字符串切分成各行。首先对字符串进行水平投影,然后分别根据波谷将字符串进行切分。
Step2:将切分好的各行字符串切分成单字符。首先对切成行的字符串进行垂直投影,然后根据波谷特性将字符串进行切分。
通过上述方法,可以简单并且准确高效处理对于按照行书写、没有连写或者粘
第 27 页 共 54 页
共分享92篇相关文档