一种自由手写拉丁字母识别方法转让专利

申请号 : CN200810162777.2

文献号 : CN101452531B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何加铭闻建芬贾德祥陈静陈平马成臣范周镒丁洪珍史智慧史爱军樊玲慧张青波

申请人 : 宁波新然电子信息科技发展有限公司

摘要 :

本发明公开了一种自由手写拉丁字母识别方法,优点在考虑拉丁字母的多种写法,提取不同写法下拉丁字母多种稳定特征,利用一种特征对拉丁字母集合进行一次分类,这样可以将整个标准拉丁字母集合分类成多个互有交集的小拉丁字母集合,作为识别时粗分类候选字母集合,当识别输入的手写拉丁字母时,提取该输入的手写拉丁字母分类特征进行层层特征匹配,直到得到该字母匹配的粗分类候选字母集合,多种稳定特征的提取保证了识别率,字母集合层层分类和识别时的层层特征匹配到最后的粗分类候选字母集合,使得在输入的手写拉丁字母识别时,找到层层有规律搜索路径,大大提高了识别速度。

权利要求 :

1.一种自由手写拉丁字母识别方法,其特征在于包括以下步骤:

①对输入终端设备的手写拉丁字母的笔迹坐标进行采集,并将采集到的笔迹坐标实时存储到预先定义的结构体数组中;

②对存储在结构体数组中的笔迹坐标及由笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行预处理,得到新笔迹坐标点阵;

③根据每个标准拉丁字母在手写时存在的局部特征,对所有标准拉丁字母进行多层分类,得到多个输入的手写拉丁字母匹配结果的粗分类候选字母集合,具体过程为:③-1、第一层分类:根据标准拉丁字母手写时是否为上下结构,直接将所有标准拉丁字母分成上下结构粗分类候选字母集合和非上下结构粗分类候选字母集合,上下结构粗分类候选字母集合中包括手写时本身具有上下结构的标准拉丁字母和在书写时引起的具有上下结构的标准拉丁字母,非上下结构粗分类候选字母集合中包括除手写时本身具有上下结构的标准拉丁字母以外的所有标准拉丁字母;③-2、第二层分类:对于上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的最后笔划是否为横笔划将其分成横笔划粗分类候选字母集合和非横笔划粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合,横笔划粗分类候选字母集合中包括手写时本身最后笔划为横笔划的标准拉丁字母和在书写时引起的最后笔划为横笔划的标准拉丁字母,非横笔划粗分类候选字母集合中包括手写时除本身最后笔划为横笔划的标准拉丁字母以外的所有标准拉丁字母;对于非上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的横向穿越数H将其分成H=1、H=2、H=3和H=4粗分类候选字母集合;③-3、第三层分类:对于H=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S将其分成S=1、S=2、S=3和S=4粗分类候选字母集合,并将这四个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=2粗分类候选字母集合,再根据标准拉丁字母手写时上1/3部分的横向穿越数up将其分成up=1、up=2和up=3粗分类候选字母集合,并将up=2粗分类候选字母集合和up=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=3粗分类候选字母集合,再根据标准拉丁字母手写时的最优竖向穿越数Maxs将其分成Maxs=1、Maxs=2和Maxs=3粗分类候选字母集合,并将Maxs=2粗分类候选字母集合和Maxs=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=4粗分类候选字母集合,再根据标准拉丁字母手写时下1/3部分的横向穿越数down将其分成down=1、down=2和down=3粗分类候选字母集合,并将down=2粗分类候选字母集合和down=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;③-4、第四层分类:对于up=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S1将其分成S1=1、S1=2和S1=3粗分类候选字母集合;对于Maxs=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第一左上位置、第一左下位置、第一右上位置和第一右下位置粗分类候选字母集合;对于down=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S2将其分成S2=1、S2=2和S2=3粗分类候选字母集合;③-5、第五层分类:对于S1=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第二左上位置、第二左下位置、第二右上位置和第二右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=2粗分类候选字母集合分成第三左上位置、第三左下位置、第三右上位置和第三右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=3粗分类候选字母集合分成第四左上位置、第四左下位置、第四右上位置和第四右下位置粗分类候选字母集合;对于第一左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第一左向开口圆弧粗分类候选字母集合和第一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第一左上位置粗分类候选字母集合相同的分法,将第一左下、第一右上、第一右下位置粗分类候选字母集合分别分成第二左向开口圆弧和第二非左向开口圆弧粗分类候选字母集合、第三左向开口圆弧和第三非左向开口圆弧粗分类候选字母集合、第四左向开口圆弧和第四非左向开口圆弧粗分类候选字母集合;对于S2=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第五左上位置、第五左下位置、第五右上位置和第五右下位置粗分类候选字母集合;采用S2=1粗分类候选字母集合相同的分法,将S2=2粗分类候选字母集合分成第六左上位置、第六左下位置、第六右上位置和第六右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S2=3粗分类候选字母集合分成第七左上位置、第七左下位置、第七右上位置和第四右下位置粗分类候选字母集合;③-6、第六层分类:对于第二左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第五左向开口圆弧粗分类候选字母集合和第五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第二左上位置粗分类候选字母集合相同的分法,将第二左下、第二右上、第二右下位置粗分类候选字母集合分别分成第六左向开口圆弧和第六非左向开口圆弧粗分类候选字母集合、第七左向开口圆弧和第七非左向开口圆弧粗分类候选字母集合、第八左向开口圆弧和第八非左向开口圆弧粗分类候选字母集合;对于第三左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第九左向开口圆弧粗分类候选字母集合和第九非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第三左上位置粗分类候选字母集合相同的分法,将第三左下、第三右上、第三右下位置粗分类候选字母集合分别分成第十左向开口圆弧和第十非左向开口圆弧粗分类候选字母集合、第十一左向开口圆弧和第十一非左向开口圆弧粗分类候选字母集合、第十二左向开口圆弧和第十二非左向开口圆弧粗分类候选字母集合;对于第四左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十三左向开口圆弧粗分类候选字母集合和第十三非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第四左上位置粗分类候选字母集合相同的分法,将第四左下、第四右上、第四右下位置粗分类候选字母集合分别分成第十四左向开口圆弧和第十四非左向开口圆弧粗分类候选字母集合、第十五左向开口圆弧和第十五非左向开口圆弧粗分类候选字母集合、第十六左向开口圆弧和第十六非左向开口圆弧粗分类候选字母集合;对于第五左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十七左向开口圆弧粗分类候选字母集合和第十七非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第五左上位置粗分类候选字母集合相同的分法,将第五左下、第五右上、第五右下位置粗分类候选字母集合分别分成第十八左向开口圆弧和第十八非左向开口圆弧粗分类候选字母集合、第十九左向开口圆弧和第十九非左向开口圆弧粗分类候选字母集合、第二十左向开口圆弧和第二十非左向开口圆弧粗分类候选字母集合;对于第六左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十一左向开口圆弧粗分类候选字母集合和第二十一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第六左上位置粗分类候选字母集合相同的分法,将第六左下、第六右上、第六右下位置粗分类候选字母集合分别分成第二十二左向开口圆弧和第二十二非左向开口圆弧粗分类候选字母集合、第二十三左向开口圆弧和第二十三非左向开口圆弧粗分类候选字母集合、第二十四左向开口圆弧和第二十四非左向开口圆弧粗分类候选字母集合;对于第七左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十五左向开口圆弧粗分类候选字母集合和第二十五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第七左上位置粗分类候选字母集合相同的分法,将第七左下、第七右上、第七右下位置粗分类候选字母集合分别分成第二十六左向开口圆弧和第二十六非左向开口圆弧粗分类候选字母集合、第二十七左向开口圆弧和第二十七非左向开口圆弧粗分类候选字母集合、第二十八左向开口圆弧和第二十八非左向开口圆弧粗分类候选字母集合;

④根据输入的手写拉丁字母的局部特征,将输入的手写拉丁字母与步骤③得到的粗分类候选字母集合进行逐层匹配,得到与该输入的手写拉丁字母匹配的粗分类候选字母集合;

⑤提取输入的手写拉丁字母的freeman链码,计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率,再从各个匹配概率中获取最大匹配概率,将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。

2.根据权利要求1所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤②包括以下具体步骤:②-1、对存储在结构体数组中的笔迹坐标进行平滑滤波、去除硬件噪声及手写时产生的毛刺和断笔;②-2、利用联机单点宽度手写体的线性规一化和非线性规一化算法对由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行线性规一化和非线性规一化处理,得到新笔迹坐标点阵;②-3、对经过步骤②-2处理后得到的新笔迹坐标点阵中丢失的有效特征点进行补点操作。

3.根据权利要求2所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤②-2中的联机单点宽度手写体的线性规一化和非线性规一化算法为:a1.采用公知的坐标框图比例缩放和直接投影的方法,将由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵线性规一化到标准坐标点阵;a2.将标准坐标点阵中的标准坐标点表示为(x,y),并将标准坐标点(x,y)划分成非笔迹坐标点和笔迹坐标点;a3.计算标准坐标点(x,y)的密度函数d(x,y),其中,Lx为当前所取标准坐标点的位置上的横向密度,Ly为当前所取标准坐标点的位置上的竖向密度,A表示标准坐标点阵的长度,其值为64;a4.根据标准坐标点(x,y)的密度函数d(x,y)计算标准坐标点(x,y)的水平密度投影函数H(x)和垂直密度投影函数V(y),其中,d(x,y)为标准坐标点(x,y)的密度函数,I×J表示标准坐标点阵的大小,其值为64×64,aH和av为矫正系数,其值均为0.1;a5.利用水平密度投影函数H(x)和垂直密度投影函数V(y)进行非线性规一化,求取新笔迹坐标点阵,其中,I×J表示标准坐标点阵的大小,其值为64×64;M×N表示非线性规一化处理后得到的新笔迹坐标点阵的大小,其值预先设定为64×64;(m,n)为新笔迹坐标点阵中的坐标点;i=1,2,…,I,j=1,2,…,J。

4.根据权利要求1所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤④包括以下具体步骤:④-1、判断输入的手写拉丁字母是否为上下结构,如果输入的手写拉丁字母是上下结构,则再判断输入的手写拉丁字母的最后笔划是否为横笔划,如果是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为横笔划粗分类候选字母集合,如果不是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为非横笔划粗分类候选字母集合;如果输入的手写拉丁字母不是上下结构,则继续执行;④-2、计算输入的手写拉丁字母的横向穿越数,当横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,根据不同的竖向穿越数直接确定该输入的手写拉丁字母匹配的粗分类字母集合为S=1、S=2、S=3或S=4粗分类候选字母集合;当横向穿越数为2时,计算输入的手写拉丁字母上1/3部分的横向穿越数,当字母上1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为up=2粗分类候选字母集合或up=3粗分类候选字母集合,当字母上1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=3时,计算输入的手写拉丁字母的最优竖向穿越数,当最优竖向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为Maxs=2粗分类候选字母集合或Maxs=3粗分类候选字母集合,当最优竖向穿越数为1时,根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=4时,计算输入的手写拉丁字母下1/3部分的横向穿越数,当字母下1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为down=2粗分类候选字母集合或down=3粗分类候选字母集合,当字母下1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合。

5.根据权利要求4所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤④-1中判断输入的手写拉丁字母是否为上下结构的方法为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界;第二步,从字符上界开始扫描至字符下界,记录扫描过程中不存在新笔迹坐标点的空白行行数,当连续空白行行数大于等于3且连续空白行的最后一空白行的下一行为非空白行时,确定该输入的手写拉丁字母为上下结构。

6.根据权利要求4所述的一种自由手写拉丁字母识别方法,其特征在于所述步骤④-2中输入的手写拉丁字母的横向穿越数的计算过程为:第一步,横向扫描新笔迹坐标点阵中的每一行,记录每一行扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一行各自转变的次数确定为各自的初始横向穿越数;第二步,比较新笔迹坐标点阵中每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的所有初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该字母最终的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的竖向穿越数的计算过程为:第一步,竖向扫描新笔迹坐标点阵中的每一列,记录扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一列各自转变的次数确定为各自的初始竖向穿越数;第二步,比较新笔迹坐标点阵中每一列的初始竖向穿越数,找出各个初始竖向穿越数重复3次或3次以上的所有初始竖向穿越数,然后从这些初始竖向穿越数中找出最大的初始竖向穿越数作为该字母最终的竖向穿越数;所述的步骤④-2中输入的手写拉丁字母上1/3部分的横向穿越数和字母下1/3部分的横向穿越数的计算过程为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;第二步,计算字母上1/3部分的上分界行,记为i3,i3=i1+1/3(i2-i1),将字符上界i1到上分界行i3之间的行作为该输入的手写拉丁字母上1/3部分;计算字母下1/3部分的下分界行,记为i4,i4=i1+2/3(i2-i1),将下分界行i4到字符下界i2之间的行作为该输入的手写拉丁字母下1/3部分;第三步,根据输入的整个手写拉丁字母的横向穿越数的计算过程,得到字符上界i1到上分界行i3每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该输入的手写拉丁字母上1/3部分的横向穿越数;采用计算字母上1/3部分的横向穿越数相同的方法,得到字母下1/3部分的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的最优竖向穿越数的计算过程为:在计算新笔迹坐标点阵中每一列的初始竖向穿越数的过程中,统计各个初始竖向穿越数出现的次数,将出现次数最多的初始竖向穿越数作为最优竖向穿越数。

7.根据权利要求4所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤④-2中新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处位置的判断过程为:第一步,自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;自左而右一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符左界,记为j1;自右而左一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符右界,记为j2;由字符上界i1、字符下界i2、字符左界j1和字符右界j2构成输入的手写拉丁字母的最小矩形外接框;第二步,将最小矩形外接框平均划分成左上小矩形框、左下小矩形框、右上小矩形框和右下小矩形框四个小矩形框;第三步,判断新笔迹坐标点阵中的最后一个新笔迹坐标点位于左上小矩形框、左下小矩形框、右上小矩形框还是右下小矩形框,当最后一个新笔迹坐标点们于左上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左上位置,当最后一个新笔迹坐标点们于左下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左下位置,当最后一个新笔迹坐标点们于右上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右上位置,当最后一个新笔迹坐标点们于右下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右下位置。

8.根据权利要求6所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤④-2中输入的手写拉丁字母是否存在左向开口圆弧的判断过程为:a.计算新笔迹坐标点阵中每一列的初始竖向穿越数;b.从最右侧列开始向左检测,找到初始竖向穿越数不为0的第一列,将该列记为k;c.当k-1列的初始竖向穿越数大于k列的初始竖向穿越数时,将k列定义为基准列;当k-1列的初始竖向穿越数小于k列的初始竖向穿越数时,终止检测,确定该字母不存在左向开口圆弧;当k-1列的初始竖向穿越数等于k列的初始竖向穿越数时,继续向左检测,直到检测到的列的初始竖向穿越数不等于k列的初始竖向穿越数时,将检测到的列定义为基准列;d.确定基准列后,记录下基准列的扫描线上的第m个穿入点的纵坐标和第m个穿出点的纵坐标,同时记录下基准列的左一列的扫描线上的第n个穿入点的纵坐标和第n个穿出点的纵坐标,m=1,2,…,M,n=1,2,…,N,M的值为基准列的扫描线上的穿入点或穿出点的总个数,N的值为基准列的左一列的扫描线上的穿入点或穿出点的总个数;e.找出基准列的扫描线上的每一对穿入点和穿出点之间的中间点;f.计算每一个中间点与第n个穿入点之间的第一直线距离,并找出基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点,计算每一个中间点与第n个穿出点之间的第二直线距离,并找出基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点,n=1,2,…,N,N为基准列的左一列的扫描线上的穿入点或穿出点的总个数;g.计算基准列的左一列的扫描线上满足第一直线距离小于等于2的第p个穿入点与基准列的左一列的扫描线上满足第二直线距离小于等于2的第p个穿出点的中间位置点,并判断基准列的扫描线上与计算得到的各个中间位置点处于同一行的点是否为非0点,当基准列的扫描线上与计算得到的其中一个中间位置点处于同一行的点为非0点时,确定输入的手写拉丁字母存在左向开口圆弧,当基准列的扫描线上与计算得到的各个中间位置点处于同一行的点均为0点时,确定输入的手写拉丁字母不存在左向开口圆弧,p=1,2,…,P,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数小于等于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数大于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数。

9.根据权利要求1所述的一种自由手写拉丁字母识别方法,其特征在于所述的步骤⑤包括以下具体步骤:⑤-1、提取输入的手写拉丁字母的freeman链码;⑤-2、利用公知的Viterbi算法计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率;⑤-3、利用公知的冒泡排序法对计算得到的各个匹配概率进行排序,获取最大匹配概率;⑤-4、将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。

说明书 :

技术领域

本发明涉及一种手写识别方法,尤其是涉及一种自由手写拉丁字母识别方法。

背景技术

随着信息技术的迅猛发展,各种手写文字识别技术不断深入,各种商用化识别系统投入市场。目前,研究热点集中在研制各种自由手写体字母识别系统,其中自由手写拉丁字母识别系统也是研制热点之一。尽管拉丁字母识别字符集很小,但有些拉丁字母结构、形状差别很小,彼此容易混淆,如在自由手写a、b、q、p、n、h等拉丁字母时,它们之间的差别很小,给自由手写拉丁字母识别系统的识别率带来了极大的影响。目前,一些自由手写拉丁字母识别系统,利用笔划顺序方向码和相邻两笔划位置关系码作为一级特征来分类,其中,笔划顺序方向码有4方向码和8方向码,相邻两笔划位置关系包括相连、相接、交叉、平行和分离;再利用同一笔划中的点特征如笔划中点坐标、笔划起点坐标等作为二级特征来细分类,如笔划起点坐标、笔划中点坐标、笔划末点坐标、横笔划最高点、横笔划最低点、竖笔划最左点、竖笔划最右点等特征点。该识别系统的识别过程,不管是一级特征还是二级特征,都依赖于笔划的提取和划分,但很多自由手写拉丁字母如a、b、q、p、n、h等,笔划特征比较模糊,而出现的圆弧部分比较多,所以选择笔划特征来识别拉丁字母,大大降低了识别率。

发明内容

本发明所要解决的技术问题是提供一种基于拉丁字母局部特征进行多层分类,以减小输入的手写拉丁字母匹配识别的搜索范围,提高识别匹配速度,提高识别率的自由手写拉丁字母识别方法。
本发明解决上述技术问题所采用的技术方案为:一种自由手写拉丁字母识别方法,包括以下步骤:
①对输入终端设备的手写拉丁字母的笔迹坐标进行采集,并将采集到的笔迹坐标实时存储到预先定义的结构体数组中;
②对存储在结构体数组中的笔迹坐标及由笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行预处理,得到新笔迹坐标点阵;
③根据每个标准拉丁字母在手写时存在的局部特征,对所有标准拉丁字母进行多层分类,得到多个输入的手写拉丁字母匹配结果的粗分类候选字母集合,具体过程为:③-1、第一层分类:根据标准拉丁字母手写时是否为上下结构,直接将所有标准拉丁字母分成上下结构粗分类候选字母集合和非上下结构粗分类候选字母集合,上下结构粗分类候选字母集合中包括手写时本身具有上下结构的标准拉丁字母和在书写时引起的具有上下结构的标准拉丁字母,非上下结构粗分类候选字母集合中包括除手写时本身具有上下结构的标准拉丁字母以外的所有标准拉丁字母;③-2、第二层分类:对于上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的最后笔划是否为横笔划将其分成横笔划粗分类候选字母集合和非横笔划粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合,横笔划粗分类候选字母集合中包括手写时本身最后笔划为横笔划的标准拉丁字母和在书写时引起的最后笔划为横笔划的标准拉丁字母,非横笔划粗分类候选字母集合中包括手写时除本身最后笔划为横笔划的标准拉丁字母以外的所有标准拉丁字母;对于非上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的横向穿越数H将其分成H=1、H=2、H=3和H=4粗分类候选字母集合;③-3、第三层分类:对于H=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S将其分成S=1、S=2、S=3和S=4粗分类候选字母集合,并将这四个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=2粗分类候选字母集合,再根据标准拉丁字母手写时上1/3部分的横向穿越数up将其分成up=1、up=2和up=3粗分类候选字母集合,并将up=2粗分类候选字母集合和up=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=3粗分类候选字母集合,再根据标准拉丁字母手写时的最优竖向穿越数Maxs将其分成Maxs=1、Maxs=2和Maxs=3粗分类候选字母集合,并将Maxs=2粗分类候选字母集合和Maxs=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=4粗分类候选字母集合,再根据标准拉丁字母手写时下1/3部分的横向穿越数down将其分成down=1、down=2和down=3粗分类候选字母集合,并将down=2粗分类候选字母集合和down=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;③-4、第四层分类:对于up=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S1将其分成S1=1、S1=2和S1=3粗分类候选字母集合;对于Maxs=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第一左上位置、第一左下位置、第一右上位置和第一右下位置粗分类候选字母集合;对于down=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S2将其分成S2=1、S2=2和S2=3粗分类候选字母集合;③-5、第五层分类:对于S1=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第二左上位置、第二左下位置、第二右上位置和第二右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=2粗分类候选字母集合分成第三左上位置、第三左下位置、第三右上位置和第三右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=3粗分类候选字母集合分成第四左上位置、第四左下位置、第四右上位置和第四右下位置粗分类候选字母集合;对于第一左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第一左向开口圆弧粗分类候选字母集合和第一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第一左上位置粗分类候选字母集合相同的分法,将第一左下、第一右上、第一右下位置粗分类候选字母集合分别分成第二左向开口圆弧和第二非左向开口圆弧粗分类候选字母集合、第三左向开口圆弧和第三非左向开口圆弧粗分类候选字母集合、第四左向开口圆弧和第四非左向开口圆弧粗分类候选字母集合;对于S2=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第五左上位置、第五左下位置、第五右上位置和第五右下位置粗分类候选字母集合;采用S2=1粗分类候选字母集合相同的分法,将S2=2粗分类候选字母集合分成第六左上位置、第六左下位置、第六右上位置和第六右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S2=3粗分类候选字母集合分成第七左上位置、第七左下位置、第七右上位置和第四右下位置粗分类候选字母集合;③-6、第六层分类:对于第二左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第五左向开口圆弧粗分类候选字母集合和第五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第二左上位置粗分类候选字母集合相同的分法,将第二左下、第二右上、第二右下位置粗分类候选字母集合分别分成第六左向开口圆弧和第六非左向开口圆弧粗分类候选字母集合、第七左向开口圆弧和第七非左向开口圆弧粗分类候选字母集合、第八左向开口圆弧和第八非左向开口圆弧粗分类候选字母集合;对于第三左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第九左向开口圆弧粗分类候选字母集合和第九非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第三左上位置粗分类候选字母集合相同的分法,将第三左下、第三右上、第三右下位置粗分类候选字母集合分别分成第十左向开口圆弧和第十非左向开口圆弧粗分类候选字母集合、第十一左向开口圆弧和第十一非左向开口圆弧粗分类候选字母集合、第十二左向开口圆弧和第十二非左向开口圆弧粗分类候选字母集合;对于第四左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十三左向开口圆弧粗分类候选字母集合和第十三非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第四左上位置粗分类候选字母集合相同的分法,将第四左下、第四右上、第四右下位置粗分类候选字母集合分别分成第十四左向开口圆弧和第十四非左向开口圆弧粗分类候选字母集合、第十五左向开口圆弧和第十五非左向开口圆弧粗分类候选字母集合、第十六左向开口圆弧和第十六非左向开口圆弧粗分类候选字母集合;对于第五左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十七左向开口圆弧粗分类候选字母集合和第十七非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第五左上位置粗分类候选字母集合相同的分法,将第五左下、第五右上、第五右下位置粗分类候选字母集合分别分成第十八左向开口圆弧和第十八非左向开口圆弧粗分类候选字母集合、第十九左向开口圆弧和第十九非左向开口圆弧粗分类候选字母集合、第二十左向开口圆弧和第二十非左向开口圆弧粗分类候选字母集合;对于第六左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十一左向开口圆弧粗分类候选字母集合和第二十一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第六左上位置粗分类候选字母集合相同的分法,将第六左下、第六右上、第六右下位置粗分类候选字母集合分别分成第二十二左向开口圆弧和第二十二非左向开口圆弧粗分类候选字母集合、第二十三左向开口圆弧和第二十三非左向开口圆弧粗分类候选字母集合、第二十四左向开口圆弧和第二十四非左向开口圆弧粗分类候选字母集合;对于第七左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十五左向开口圆弧粗分类候选字母集合和第二十五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第七左上位置粗分类候选字母集合相同的分法,将第七左下、第七右上、第七右下位置粗分类候选字母集合分别分成第二十六左向开口圆弧和第二十六非左向开口圆弧粗分类候选字母集合、第二十七左向开口圆弧和第二十七非左向开口圆弧粗分类候选字母集合、第二十八左向开口圆弧和第二十八非左向开口圆弧粗分类候选字母集合;
④根据输入的手写拉丁字母的局部特征,将输入的手写拉丁字母与步骤③得到的粗分类候选字母集合进行逐层匹配,得到与该输入的手写拉丁字母匹配的粗分类候选字母集合;
⑤提取输入的手写拉丁字母的freeman链码,计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率,再从各个匹配概率中获取最大匹配概率,将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。
所述的步骤②包括以下具体步骤:②-1、对存储在结构体数组中的笔迹坐标进行平滑滤波、去除硬件噪声及手写时产生的毛刺和断笔;②-2、利用联机单点宽度手写体的线性规一化和非线性规一化算法对由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行线性规一化和非线性规一化处理,得到新笔迹坐标点阵;②-3、对经过步骤②-2处理后得到的新笔迹坐标点阵中丢失的有效特征点进行补点操作。
所述的步骤②-2中的联机单点宽度手写体的线性规一化和非线性规一化算法为:a1.采用公知的坐标框图比例缩放和直接投影的方法,将由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵线性规一化到标准坐标点阵;a2.将标准坐标点阵中的标准坐标点表示为(x,y),并将标准坐标点(x,y)划分成非笔迹坐标点和笔迹坐标点;a3.计算标准坐标点(x,y)的密度函数d(x,y), d ( x , y ) = Max ( A / Lx , A / Ly ) , Lx + Ly < 6 A 0 , Lx + Ly 6 A , 其中,Lx为当前所取标准坐标点的位置上的横向密度,Ly为当前所取标准坐标点的位置上的竖向密度,A表示标准坐标点阵的长度,其值为64;a4.根据标准坐标点(x,y)的密度函数d(x,y)计算标准坐标点(x,y)的水平密度投影函数H(x)和垂直密度投影函数V(y), H ( x ) = Σ y = 1 J [ d ( x , y ) + a H ] , V ( y ) = Σ x = 1 I [ d ( x , y ) + a v ] , 其中,d(x,y)为标准坐标点(x,y)的密度函数,I×J表示标准坐标点阵的大小,其值为64×64,aH和av为矫正系数,其值均为0.1;a5.利用水平密度投影函数H(x)和垂直密度投影函数V(y)进行非线性规一化,求取新笔迹坐标点阵, m = Σ x = 1 i H ( x ) × M Σ x = 1 I H ( x ) , n = Σ y = 1 j V ( y ) × N Σ y = 1 J V ( y ) , 其中,I×J表示标准坐标点阵的大小,其值为64×64;M×N表示非线性规一化处理后得到的新笔迹坐标点阵的大小,其值预先设定为64×64;(m,n)为新笔迹坐标点阵中的坐标点;i=1,2,…,I,j=1,2,…,J。
所述的步骤④包括以下具体步骤:④-1、判断输入的手写拉丁字母是否为上下结构,如果输入的手写拉丁字母是上下结构,则再判断输入的手写拉丁字母的最后笔划是否为横笔划,如果是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为横笔划粗分类候选字母集合,如果不是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为非横笔划粗分类候选字母集合;如果输入的手写拉丁字母不是上下结构,则继续执行;④-2、计算输入的手写拉丁字母的横向穿越数,当横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,根据不同的竖向穿越数直接确定该输入的手写拉丁字母匹配的粗分类字母集合为S=1、S=2、S=3或S=4粗分类候选字母集合;当横向穿越数为2时,计算输入的手写拉丁字母上1/3部分的横向穿越数,当字母上1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为up=2粗分类候选字母集合或up=3粗分类候选字母集合,当字母上1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=3时,计算输入的手写拉丁字母的最优竖向穿越数,当最优竖向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为Maxs=2粗分类候选字母集合或Maxs=3粗分类候选字母集合,当最优竖向穿越数为1时,根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=4时,计算输入的手写拉丁字母下1/3部分的横向穿越数,当字母下1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为down=2粗分类候选字母集合或down=3粗分类候选字母集合,当字母下1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合。
所述的步骤④-1中判断输入的手写拉丁字母是否为上下结构的方法为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界;第二步,从字符上界开始扫描至字符下界,记录扫描过程中不存在新笔迹坐标点的空白行行数,当连续空白行行数大于等于3且连续空白行的最后一空白行的下一行为非空白行时,确定该输入的手写拉丁字母为上下结构。
所述步骤④-2中输入的手写拉丁字母的横向穿越数的计算过程为:第一步,横向扫描新笔迹坐标点阵中的每一行,记录每一行扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一行各自转变的次数确定为各自的初始横向穿越数;第二步,比较新笔迹坐标点阵中每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的所有初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该字母最终的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的竖向穿越数的计算过程为:第一步,竖向扫描新笔迹坐标点阵中的每一列,记录扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一列各自转变的次数确定为各自的初始竖向穿越数;第二步,比较新笔迹坐标点阵中每一列的初始竖向穿越数,找出各个初始竖向穿越数重复3次或3次以上的所有初始竖向穿越数,然后从这些初始竖向穿越数中找出最大的初始竖向穿越数作为该字母最终的竖向穿越数;所述的步骤④-2中输入的手写拉丁字母上1/3部分的横向穿越数和字母下1/3部分的横向穿越数的计算过程为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;第二步,计算字母上1/3部分的上分界行,记为i3,i3=i1+1/3(i2-i1),将字符上界i1到上分界行i3之间的行作为该输入的手写拉丁字母上1/3部分;计算字母下1/3部分的下分界行,记为i4,i4=i1+2/3(i2-i1),将下分界行i4到字符下界i2之间的行作为该输入的手写拉丁字母下1/3部分;第三步,根据输入的整个手写拉丁字母的横向穿越数的计算过程,得到字符上界i1到上分界行i3每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该输入的手写拉丁字母上1/3部分的横向穿越数;采用计算字母上1/3部分的横向穿越数相同的方法,得到字母下1/3部分的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的最优竖向穿越数的计算过程为:在计算新笔迹坐标点阵中每一列的初始竖向穿越数的过程中,统计各个初始竖向穿越数出现的次数,将出现次数最多的初始竖向穿越数作为最优竖向穿越数。
所述的步骤④-2中新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处位置的判断过程为:第一步,自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;自左而右一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符左界,记为j1;自右而左一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符右界,记为j2;由字符上界i1、字符下界i2、字符左界j1和字符右界j2构成输入的手写拉丁字母的最小矩形外接框;第二步,将最小矩形外接框平均划分成左上小矩形框、左下小矩形框、右上小矩形框和右下小矩形框四个小矩形框;第三步,判断新笔迹坐标点阵中的最后一个新笔迹坐标点位于左上小矩形框、左下小矩形框、右上小矩形框还是右下小矩形框,当最后一个新笔迹坐标点们于左上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左上位置,当最后一个新笔迹坐标点们于左下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左下位置,当最后一个新笔迹坐标点们于右上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右上位置,当最后一个新笔迹坐标点们于右下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右下位置。
所述的步骤④-2中输入的手写拉丁字母是否存在左向开口圆弧的判断过程为:a.计算新笔迹坐标点阵中每一列的初始竖向穿越数;b.从最右侧列开始向左检测,找到初始竖向穿越数不为0的第一列,将该列记为k;c.当k-1列的初始竖向穿越数大于k列的初始竖向穿越数时,将k列定义为基准列;当k-1列的初始竖向穿越数小于k列的初始竖向穿越数时,终止检测,确定该字母不存在左向开口圆弧;当k-1列的初始竖向穿越数等于k列的初始竖向穿越数时,继续向左检测,直到检测到的列的初始竖向穿越数不等于k列的初始竖向穿越数时,将检测到的列定义为基准列;d.确定基准列后,记录下基准列的扫描线上的第m个穿入点的纵坐标和第m个穿出点的纵坐标,同时记录下基准列的左一列的扫描线上的第n个穿入点的纵坐标和第n个穿出点的纵坐标,m=1,2,…,M,n=1,2,…,N,M的值为基准列的扫描线上的穿入点或穿出点的总个数,N的值为基准列的左一列的扫描线上的穿入点或穿出点的总个数;e.找出基准列的扫描线上的每一对穿入点和穿出点之间的中间点;f.计算每一个中间点与第n个穿入点之间的第一直线距离,并找出基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点,计算每一个中间点与第n个穿出点之间的第二直线距离,并找出基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点,n=1,2,…,N,N为基准列的左一列的扫描线上的穿入点或穿出点的总个数;g.计算基准列的左一列的扫描线上满足第一直线距离小于等于2的第p个穿入点与基准列的左一列的扫描线上满足第二直线距离小于等于2的第p个穿出点的中间位置点,并判断基准列的扫描线上与计算得到的各个中间位置点处于同一行的点是否为非0点,当基准列的扫描线上与计算得到的其中一个中间位置点处于同一行的点为非0点时,确定输入的手写拉丁字母存在左向开口圆弧,当基准列的扫描线上与计算得到的各个中间位置点处于同一行的点均为0点时,确定输入的手写拉丁字母不存在左向开口圆弧,p=1,2,…,P,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数小于等于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数大于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数。
所述的步骤⑤包括以下具体步骤:⑤-1、提取输入的手写拉丁字母的freeman链码;⑤-2、利用公知的Viterbi算法计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率;⑤-3、利用公知的冒泡排序法对计算得到的各个匹配概率进行排序,获取最大匹配概率;⑤-4、将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。
与现有技术相比,本发明的优点在考虑拉丁字母的多种写法,提取不同写法下拉丁字母多种稳定特征,利用一种特征对拉丁字母集合进行一次分类,这样可以将整个标准拉丁字母集合分类成多个互有交集的小拉丁字母集合,作为识别时粗分类候选字母集合,当识别输入的手写拉丁字母时,提取该输入的手写拉丁字母分类特征进行层层特征匹配,直到得到该字母匹配的粗分类候选字母集合,多种稳定特征的提取保证了识别率,字母集合层层分类和识别时的层层特征匹配到最后的粗分类候选字母集合,使得在输入的手写拉丁字母识别时,找到层层有规律搜索路径,大大提高了识别速度。

附图说明

图1为本发明的流程示意图;
图2a为字母本身为上下结构的手写拉丁字母的示意图;
图2b为因自由手写引起的上下结构的手写拉丁字母的示意图一;
图2c为因自由手写引起的上下结构的手写拉丁字母的示意图二;
图2d为因自由手写引起的上下结构的手写拉丁字母的示意图三;
图2e为因自由手写引起的上下结构的手写拉丁字母的示意图四;
图3为判断新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处位置的判断示意图;
图4为计算手写拉丁字母Lx,Ly的着眼方向示意图;
图5a为横向密度Lx的第一种取值的判定示意图;
图5b为横向密度Lx的第二种取值的判定示意图;
图5c为横向密度Lx的第三种取值的判定示意图;
图5d为横向密度Lx的第四种取值的判定示意图;
图5e为横向密度Lx的第五种取值的判定示意图;
图6为左向开口圆弧的手写字母示意图;
图7为一个手写拉丁字母的笔迹示意图;
图8为图7画圈部分Freeman码求取示意图;
图9为八方向Freeman码定义图;
图10a为利用本发明的识别方法对其中一个输入的手写字母进行识别后输出的结果图;
图10b为利用本发明的识别方法对另一个输入的手写字母进行识别后输出的结果图。

具体实施方式

以下结合附图实施例对本发明作进一步详细描述。
首先对预先设定在终端设备中的标准拉丁字母字库进行描述。
字库包括52个标准拉丁字母,以及每个标准拉丁字母对应的最优隐马可夫模型。最优隐马可夫模型的获取过程为:
1)、自然手写52个拉丁字母100次,每手写一个拉丁字母一次按照手写的笔迹顺序,根据图9所示的八方向freeman链码定义示意图求取该拉丁字母的所有笔迹经过的坐标点的八方位方向码,即freeman链码,freeman链码具有0、1、2、3、4、5、6和7八个方向码。这样每个拉丁字母的一次手写就可得到一串freeman链码,手写100次,即可得到一个拉丁字母对应的100串freeman链码,将每个拉丁字母得到的100串freeman链码作为该拉丁字母的100个样本。
2)、将样本输入到初始隐马可夫模型中进行样本训练,得到最优隐马可夫模型。具体包括以下步骤:第一步,确定状态数L,观察值个数G,并对初始隐马可夫模型中的模型参数进行等概率初始化,由于freeman链码具有0、1、2、3、4、5、6、7八种值,故在本实施例中取G=8,同时取L=10,L一般取0~20之间的值,从理论上来说L的值越大,得到的最优隐马可夫模型越准确,但L的值过大,不仅会增加计算复杂度,而且对终端设备的CPU的要求将更高。第二步,将步骤1)得到的样本作为初始隐马可夫模型的观察值序列,采用公知的Baum-Welch迭代重估算法来优化初始隐马可夫模型中的模型参数,最终得到最优隐马可夫模型。
步骤2)中的Baum-Welch迭代重估算法是基于最陡梯度下降的局部优化算法,参数估计时极易陷入局部最优解,该Baum-Welch迭代重估算法不能保证找到全局最大点,其收敛的点可能是局部极大点,为达到全局最优,可采用基于随机松弛的离散隐马可夫参数全局优化算法对初始隐马可夫模型中的模型参数进行全局优化训练,最终得到最优隐马可夫模型。
在标准拉丁字母字库的基础上,本发明的一种自由手写拉丁字母识别方法,如图1所示,包括以下步骤:
步骤①,对输入终端设备的手写拉丁字母(即待识对象)的笔迹坐标进行采集,并将采集到的笔迹坐标实时存储到预先定义的结构体数组中;在此具体实施例中,终端设备可以为手机、PDA(Personal Digital Assistant,个人数码助理)等数字终端产品,终端设备的输入框设定为192×192点阵坐标输入框。
步骤②,对存储在结构体数组中的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行预处理,预处理过程主要包括以下具体步骤:
②-1、对存储在结构体数组中的笔迹坐标进行平滑滤波、去除存在的硬件噪声及去除手写时产生的毛刺和断笔。在此具体实施例中,平滑滤波、去除存在的硬件噪声及去除手写时产生的毛刺和断笔均采用现有的成熟技术进行处理。
②-2、由于在手写拉丁字母时,手写字母在形体结构上与标准字母相比有较多不规整的地方,使手写字母的一些局部笔划存在各种各样的形变,这种形变会给后续的处理带来极大的影响,因此本发明提出了联机单点宽度手写体的线性规一化和非线性规一化算法以矫正手写字母的局部形变。
该算法对由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵进行线性规一化和非线性规一化处理,得到新笔迹坐标点阵,达到对手写字母的局部形变矫正的目的。该算法的具体步骤如下:
a1.采用公知的坐标框图比例缩放和直接投影的方法,将由经过步骤②-1处理后的笔迹坐标转换成矩阵形式存放构成的笔迹坐标点阵线性规一化到64×64标准坐标点阵,线性规一化处理可以减少后续非线性规一化处理的运算量,同时可增强非线性规一化处理的可行性。
a2.将标准坐标点阵中的标准坐标点表示为(x,y),并将标准坐标点(x,y)划分成非笔迹坐标点和笔迹坐标点。非笔迹坐标点为笔迹没有划过的地方,非笔迹坐标点的左右笔划存在情况,包括左右均无笔划、左边有笔划而右边无笔划及左右均有笔划;笔迹坐标点为笔迹划过的点,笔迹坐标点的左右笔划存在情况也同样有多种,包括左右均无笔划、左边有笔划而右边无笔划及左边无笔划而右边有笔划;笔划可定义为从落笔到提笔为1笔划。
a3.计算标准坐标点(x,y)的密度函数d(x,y), d ( x , y ) = Max ( A / Lx , A / Ly ) , Lx + Ly < 6 A 0 , Lx + Ly 6 A , 其中,Lx为当前所取标准坐标点的位置上的横向密度,Ly为当前所取标准坐标点的位置上的竖向密度,A表示标准坐标点阵的长度,其值为64。
a4.根据标准坐标点(x,y)的密度函数d(x,y)计算标准坐标点(x,y)的水平密度投影函数H(x)和垂直密度投影函数V(y), H ( x ) = Σ y = 1 J [ d ( x , y ) + a H ] , V ( y ) = Σ x = 1 I [ d ( x , y ) + a v ] , 其中,d(x,y)为标准坐标点(x,y)的密度函数,I×J表示标准坐标点阵的大小,其值为64×64;aH和av为矫正系数,其值均为0.1。矫正系数aH和av的值从理论上来说介于[0,1]之间,aH和av的大小与手写字母的局部形变矫正效果有关,对aH和av均取值为0.1、0.125、0.2、0.58和0.8时分别进行实验,经实验表明,当aH和av取值均为0.1时手写字母的局部形变矫正效果最为理想。
a5.利用水平密度投影函数H(x)和垂直密度投影函数V(y)进行非线性规一化,求取新笔迹坐标点阵, m = Σ x = 1 i H ( x ) × M Σ x = 1 I H ( x ) , n = Σ y = 1 J V ( y ) × N Σ y = 1 J V ( y ) , 其中,I×J表示标准坐标点阵的大小,其值为64×64;M×N表示非线性规一化处理后得到的新笔迹坐标点阵的大小,其值预先设定为64×64;(m,n)为新笔迹坐标点阵中的坐标点;i=1,2,…,I,j=1,2,…,J。
在此具体实施例中,当前所取标准坐标点的位置上的横向密度Lx和竖向密度Ly可通过以下方法获取。如图4所示,Lx的着眼点在左侧,而Ly的着眼点在上侧。当当前所取标准坐标点是笔迹坐标点时,Lx具有三种不同的值,当当前所取坐标点处于图5a和图5c中所示的位置时,其值为从当前所取标准坐标点向右划水平线所能经过的非连续笔迹点的次数+1,在此具体实施例中,向右的水平线所能经过的连续笔迹点的次数视为经过一次;当当前所取标准坐标点处于图5b中所示的位置时,其值为1;当当前所取标准坐标点处于图5e中所示的位置时,其值为2A。当当前所取标准坐标点是非笔迹坐标点时,Lx也具有三种不同的值,当当前所取标准坐标点处于图5a和图5c中所示的位置时,其值为从当前所取标准坐标点向右划水平线所能经过的非连续笔迹点的次数;当当前所取标准坐标点处于图5b中所示的位置时,其值为2A;当当前所取标准坐标点处于图5d中所示的位置时,其值为4A。其中,A表示标准坐标点阵的长度,其值为64。竖向密度Ly的取值方法与横向密度Lx的取值方法相同。图5a至图5e中代表当前所取的标准坐标点;“·”代表点笔划。
②-3、对经过步骤②-2处理后得到的新笔迹坐标点阵进行补点操作,以防止丢失有效的特征点。补点操作采用现有的经典的Bresenham画线算法,在新笔迹坐标点阵中距离大于1的两个邻近标准坐标点之间依笔迹走向添加中间特征点。
步骤③,制作粗分类候选字母集合,考虑到每个拉丁字母的多种普遍写法,依据多种特征将所有标准拉丁字母进行层层分类,得到多个输入的手写拉丁字母匹配结果的粗分类候选字母集合。同一拉丁字母有不同写法,可以提取不同特征,这样一个拉丁字母可能存在在不同的粗分类候选字母集合中。具体过程如下:③-1、第一层分类:根据标准拉丁字母手写时是否为上下结构,直接将所有标准拉丁字母分成上下结构粗分类候选字母集合和非上下结构粗分类候选字母集合,上下结构粗分类候选字母集合中包括如图2a所示的手写时本身具有上下结构的标准拉丁字母和如图2b、2c、2d和2e所示的在书写时引起的具有上下结构的标准拉丁字母,非上下结构粗分类候选字母集合中包括除手写时本身具有上下结构的标准拉丁字母以外的所有标准拉丁字母;③-2、第二层分类:对于上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的最后笔划是否为横笔划将其分成横笔划粗分类候选字母集合和非横笔划粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合,横笔划粗分类候选字母集合中包括手写时本身最后笔划为横笔划的标准拉丁字母和在书写时引起的最后笔划为横笔划的标准拉丁字母,非横笔划粗分类候选字母集合中包括手写时除本身最后笔划为横笔划的标准拉丁字母以外的所有标准拉丁字母;对于非上下结构粗分类候选字母集合,再根据标准拉丁字母手写时的横向穿越数H将其分成H=1、H=2、H=3和H=4粗分类候选字母集合;③-3、第三层分类:对于H=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S将其分成S=1、S=2、S=3和S=4粗分类候选字母集合,并将这四个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=2粗分类候选字母集合,再根据标准拉丁字母手写时上1/3部分的横向穿越数up将其分成up=1、up=2和up=3粗分类候选字母集合,并将up=2粗分类候选字母集合和up=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=3粗分类候选字母集合,再根据标准拉丁字母手写时的最优竖向穿越数Maxs将其分成Maxs=1、Maxs=2和Maxs=3粗分类候选字母集合,并将Maxs=2粗分类候选字母集合和Maxs=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;对于H=4粗分类候选字母集合,再根据标准拉丁字母手写时下1/3部分的横向穿越数down将其分成down=1、down=2和down=3粗分类候选字母集合,并将down=2粗分类候选字母集合和down=3粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;③-4、第四层分类:对于up=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S1将其分成S1=1、S1=2和S1=3粗分类候选字母集合;对于Maxs=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第一左上位置、第一左下位置、第一右上位置和第一右下位置粗分类候选字母集合,如图3所示的字母“a”的最后一个新笔迹坐标点落在右下位置;对于down=1粗分类候选字母集合,再根据标准拉丁字母手写时的竖向穿越数S2将其分成S2=1、S2=2和S2=3粗分类候选字母集合;③-5、第五层分类:对于S1=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第二左上位置、第二左下位置、第二右上位置和第二右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=2粗分类候选字母集合分成第三左上位置、第三左下位置、第三右上位置和第三右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S1=3粗分类候选字母集合分成第四左上位置、第四左下位置、第四右上位置和第四右下位置粗分类候选字母集合;对于第一左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第一左向开口圆弧粗分类候选字母集合和第一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第一左上位置粗分类候选字母集合相同的分法,将第一左下、第一右上、第一右下位置粗分类候选字母集合分别分成第二左向开口圆弧和第二非左向开口圆弧粗分类候选字母集合、第三左向开口圆弧和第三非左向开口圆弧粗分类候选字母集合、第四左向开口圆弧和第四非左向开口圆弧粗分类候选字母集合;对于S2=1粗分类候选字母集合,再根据标准拉丁字母手写时的新笔迹坐标点阵中的最后一个新笔迹坐标点在该标准拉丁字母中的位置信息将其分成第五左上位置、第五左下位置、第五右上位置和第五右下位置粗分类候选字母集合;采用S2=1粗分类候选字母集合相同的分法,将S2=2粗分类候选字母集合分成第六左上位置、第六左下位置、第六右上位置和第六右下位置粗分类候选字母集合;采用S1=1粗分类候选字母集合相同的分法,将S2=3粗分类候选字母集合分成第七左上位置、第七左下位置、第七右上位置和第四右下位置粗分类候选字母集合;③-6、第六层分类:对于第二左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第五左向开口圆弧粗分类候选字母集合和第五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第二左上位置粗分类候选字母集合相同的分法,将第二左下、第二右上、第二右下位置粗分类候选字母集合分别分成第六左向开口圆弧和第六非左向开口圆弧粗分类候选字母集合、第七左向开口圆弧和第七非左向开口圆弧粗分类候选字母集合、第八左向开口圆弧和第八非左向开口圆弧粗分类候选字母集合;对于第三左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第九左向开口圆弧粗分类候选字母集合和第九非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母
匹配结果的粗分类候选字母集合;采用第三左上位置粗分类候选字母集合相同的分法,将第三左下、第三右上、第三右下位置粗分类候选字母集合分别分成第十左向开口圆弧和第十非左向开口圆弧粗分类候选字母集合、第十一左向开口圆弧和第十一非左向开口圆弧粗分类候选字母集合、第十二左向开口圆弧和第十二非左向开口圆弧粗分类候选字母集合;对于第四左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十三左向开口圆弧粗分类候选字母集合和第十三非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第四左上位置粗分类候选字母集合相同的分法,将第四左下、第四右上、第四右下位置粗分类候选字母集合分别分成第十四左向开口圆弧和第十四非左向开口圆弧粗分类候选字母集合、第十五左向开口圆弧和第十五非左向开口圆弧粗分类候选字母集合、第十六左向开口圆弧和第十六非左向开口圆弧粗分类候选字母集合;对于第五左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第十七左向开口圆弧粗分类候选字母集合和第十七非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第五左上位置粗分类候选字母集合相同的分法,将第五左下、第五右上、第五右下位置粗分类候选字母集合分别分成第十八左向开口圆弧和第十八非左向开口圆弧粗分类候选字母集合、第十九左向开口圆弧和第十九非左向开口圆弧粗分类候选字母集合、第二十左向开口圆弧和第二十非左向开口圆弧粗分类候选字母集合;对于第六左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十一左向开口圆弧粗分类候选字母集合和第二十一非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第六左上位置粗分类候选字母集合相同的分法,将第六左下、第六右上、第六右下位置粗分类候选字母集合分别分成第二十二左向开口圆弧和第二十二非左向开口圆弧粗分类候选字母集合、第二十三左向开口圆弧和第二十三非左向开口圆弧粗分类候选字母集合、第二十四左向开口圆弧和第二十四非左向开口圆弧粗分类候选字母集合;对于第七左上位置粗分类候选字母集合,再根据标准拉丁字母手写时是否存在左向开口圆弧将其分成第二十五左向开口圆弧粗分类候选字母集合和第二十五非左向开口圆弧粗分类候选字母集合,并将这两个粗分类候选字母集合作为输入的手写拉丁字母匹配结果的粗分类候选字母集合;采用第七左上位置粗分类候选字母集合相同的分法,将第七左下、第七右上、第七右下位置粗分类候选字母集合分别分成第二十六左向开口圆弧和第二十六非左向开口圆弧粗分类候选字母集合、第二十七左向开口圆弧和第二十七非左向开口圆弧粗分类候选字母集合、第二十八左向开口圆弧和第二十八非左向开口圆弧粗分类候选字母集合;
④根据输入的手写拉丁字母的局部特征,将输入的手写拉丁字母与步骤③得到的粗分类候选字母集合进行逐层匹配,得到与该输入的手写拉丁字母匹配的粗分类候选字母集合;具体步骤为:④-1、判断输入的手写拉丁字母是否为上下结构,如果输入的手写拉丁字母是上下结构,则再判断输入的手写拉丁字母的最后笔划是否为横笔划,如果是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为横笔划粗分类候选字母集合,如果不是横笔划,则直接确定该输入的手写拉丁字母匹配的粗分类字母集合为非横笔划粗分类候选字母集合;如果输入的手写拉丁字母不是上下结构,则继续执行;④-2、计算输入的手写拉丁字母的横向穿越数,当横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,根据不同的竖向穿越数直接确定该输入的手写拉丁字母匹配的粗分类字母集合为S=1、S=2、S=3或S=4粗分类候选字母集合;当横向穿越数为2时,计算输入的手写拉丁字母上1/3部分的横向穿越数,当字母上1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为up=2粗分类候选字母集合或up=3粗分类候选字母集合,当字母上1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=3时,计算输入的手写拉丁字母的最优竖向穿越数,当最优竖向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为Maxs=2粗分类候选字母集合或Maxs=3粗分类候选字母集合,当最优竖向穿越数为1时,根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合;当H=4时,计算输入的手写拉丁字母下1/3部分的横向穿越数,当字母下1/3部分的横向穿越数为2或3时,直接确定该输入的手写拉丁字母匹配的粗分类字母集合为down=2粗分类候选字母集合或down=3粗分类候选字母集合,当字母下1/3部分的横向穿越数为1时,计算输入的手写拉丁字母的竖向穿越数,利用竖向穿越数再根据新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处的位置及输入的手写拉丁字母是否存在左向开口圆弧,确定该输入的手写拉丁字母匹配的粗分类字母集合。
上述步骤④-1中判断输入的手写拉丁字母是否为上下结构的方法为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界;第二步,从字符上界开始扫描至字符下界,记录扫描过程中不存在新笔迹坐标点的空白行行数,当连续空白行行数大于等于3且连续空白行的最后一空白行的下一行为非空白行时,确定该输入的手写拉丁字母为上下结构。
上述步骤④-2中输入的手写拉丁字母的横向穿越数的计算过程为:第一步,横向扫描新笔迹坐标点阵中的每一行,记录每一行扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一行各自转变的次数确定为各自的初始横向穿越数;第二步,比较新笔迹坐标点阵中每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的所有初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该字母最终的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的竖向穿越数的计算过程为:第一步,竖向扫描新笔迹坐标点阵中的每一列,记录扫描过程中每次由非新笔迹坐标点转变为新笔迹坐标点的次数,并将每一列各自转变的次数确定为各自的初始竖向穿越数;第二步,比较新笔迹坐标点阵中每一列的初始竖向穿越数,找出各个初始竖向穿越数重复3次或3次以上的所有初始竖向穿越数,然后从这些初始竖向穿越数中找出最大的初始竖向穿越数作为该字母最终的竖向穿越数;所述的步骤④-2中输入的手写拉丁字母上1/3部分的横向穿越数和字母下1/3部分的横向穿越数的计算过程为:第一步,首先自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;再自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;第二步,计算字母上1/3部分的上分界行,记为i3,i3=i1+1/3(i2-i1),将字符上界i1到上分界行i3之间的行作为该输入的手写拉丁字母上1/3部分;计算字母下1/3部分的下分界行,记为i4,i4=i1+2/3(i2-i1),将下分界行i4到字符下界i2之间的行作为该输入的手写拉丁字母下1/3部分;第三步,根据输入的整个手写拉丁字母的横向穿越数的计算过程,得到字符上界i1到上分界行i3每一行的初始横向穿越数,找出各个初始横向穿越数重复3次或3次以上的初始横向穿越数,然后从这些初始横向穿越数中找出最大的初始横向穿越数作为该输入的手写拉丁字母上1/3部分的横向穿越数;采用计算字母上1/3部分的横向穿越数相同的方法,得到字母下1/3部分的横向穿越数;所述的步骤④-2中输入的手写拉丁字母的最优竖向穿越数的计算过程为:在计算新笔迹坐标点阵中每一列的初始竖向穿越数的过程中,统计各个初始竖向穿越数出现的次数,将出现次数最多的初始竖向穿越数作为最优竖向穿越数。
上述步骤④-2中新笔迹坐标点阵中的最后一个新笔迹坐标点在输入的手写拉丁字母中所处位置结合图3的判断过程为:第一步,自上而下一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符上界,记为i1;自下而上一行一行扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将行值定位为正在扫描的当前行,并将该行值定义为字符下界,记为i2;自左而右一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符左界,记为j1;自右而左一列一列扫描新笔迹坐标点阵,当遇到第一个新笔迹坐标点时,将列值定位为正在扫描的当前列,并将该列值定义为字符右界,记为j2;由字符上界i1、字符下界i2、字符左界j1和字符右界j2构成输入的手写拉丁字母的最小矩形外接框;第二步,将最小矩形外接框平均划分成左上小矩形框、左下小矩形框、右上小矩形框和右下小矩形框四个小矩形框;第三步,判断新笔迹坐标点阵中的最后一个新笔迹坐标点位于左上小矩形框、左下小矩形框、右上小矩形框还是右下小矩形框,当最后一个新笔迹坐标点们于左上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左上位置,当最后一个新笔迹坐标点们于左下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的左下位置,当最后一个新笔迹坐标点们于右上小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右上位置,当最后一个新笔迹坐标点们于右下小矩形框时,确定最后一个新笔迹坐标点处于该输入的手写拉丁字母的右下位置。
上述步骤④-2中输入的手写拉丁字母是否存在左向开口圆弧的判断过程为:a.计算新笔迹坐标点阵中每一列的初始竖向穿越数;b.从最右侧列开始向左检测,找到初始竖向穿越数不为0的第一列,将该列记为k;c.当k-1列的初始竖向穿越数大于k列的初始竖向穿越数时,将k列定义为基准列;当k-1列的初始竖向穿越数小于k列的初始竖向穿越数时,终止检测,确定该字母不存在左向开口圆弧;当k-1列的初始竖向穿越数等于k列的初始竖向穿越数时,继续向左检测,直到检测到的列的初始竖向穿越数不等于k列的初始竖向穿越数时,将检测到的列定义为基准列,如图6所示,第i列的初始竖穿越竖为1,第i-1列的初始竖穿越数也是1,所以继续向左检测,直到遇到初始竖穿越数有变化的列,该列就是基准列,在图6中用Ref_line_i列标识;d.在图6中,确定基准列Ref_line_i后,记录下基准列的扫描线上的第m个穿入点Im_in的纵坐标(即穿入点Im_in在新笔迹坐标点阵中的行标)和第m个穿出点Im_out的纵坐标(即穿出点Im_out在新笔迹坐标点阵中的行标),同时记录下基准列的左一列Ref_line_i-1的扫描线上的第n个穿入点Jn_in的纵坐标(即穿入点Jn_in在新笔迹坐标点阵中的行标)和第n个穿出点Jn_out的纵坐标(即穿出点Jn_out在新笔迹坐标点阵中的行标),m=1,2,…,M,n=1,2,…,N,M的值为基准列的扫描线上的穿入点或穿出点的总个数,N的值为基准列的左一列的扫描线上的穿入点或穿出点的总个数,从图6中可看出,M=2,N=3;e.找出基准列的扫描线上的每一对相匹配的穿入点Im_in和穿出点Im_out之间的中间点Im_mid;f.计算每一个中间点Im_mid与第n个穿入点Jn_in之间的第一直线距离,并找出基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点,计算每一个中间点Im_mid与第n个穿出点Jn_out之间的第二直线距离,并找出基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点,n=1,2,…,N,N为基准列的左一列的扫描线上的穿入点或穿出点的总个数;g.计算基准列的左一列的扫描线上满足第一直线距离小于等于2的第p个穿入点与基准列的左一列的扫描线上满足第二直线距离小于等于2的第p个穿出点的中间位置点,并判断基准列的扫描线上与计算得到的各个中间位置点处于同一行的点是否为非0点,当基准列的扫描线上与计算得到的其中一个中间位置点处于同一行的点为非0点时,确定输入的手写拉丁字母存在左向开口圆弧,当基准列的扫描线上与计算得到的各个中间位置点处于同一行的点均为0点时,确定输入的手写拉丁字母不存在左向开口圆弧,在图6中,基准列Ref_line_i上有2个中间点,分别为I1_mid和I2_mid,通过计算基准列的左一列的扫描线上的各个穿入点与I1_mid之间的第一直线距离和各个穿出点与I1_mid之间的第二直线距离,满足条件的第1个穿入点为原来的第2个穿入点J2_in,满足条件的第1个穿出点为原来的第1个穿出点J1_out,计算得到满足条件的第1个穿入点与第1个穿出点的中间位置点为J1_mid;计算基准列的左一列的扫描线上的各个穿入点与I2_mid之间的第一直线距离和各个穿出点与I2_mid之间的第二直线距离,满足条件的第2个穿入点为原来的第3个穿入点J3_in,满足条件的第2个穿出点为原来的第3个穿出点J3_out,计算得到满足条件的第2个穿入点与第2个穿出点的中间位置点为J2_mid;判断基准列的扫描线上与计算得到的两个中间位置点J1_mid或J2_mid处于同一行的点是否为非0点,从图6中可知基准列的扫描线上与计算得到J1_mid处于同一行的点为非0点,而与中间位置点J2_mid处于同一行的点为0点,但这里有一个中间位置点即J1_mid满足条件了,可以确定输入的手写拉丁字母存在左向开口圆弧,如果均为0点,那么可以确定输入的手写拉丁字母不存在左向开口圆弧,p=1,2,…,P,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数小于等于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数,当基准列的左一列的扫描线上所有满足第一直线距离小于等于2的穿入点的总个数大于基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数时,P的值为基准列的左一列的扫描线上所有满足第二直线距离小于等于2的穿出点的总个数。在本实施例中,穿入点和穿出点中的“穿”是坐标点阵中点的变化,点阵也就是矩阵,点就是矩阵的元素,元素为0即没有书写笔迹,元素不为0即有书写笔迹,若点阵中某一列或某一行的元素全为0或全不为0,则无所谓“穿”,若某一列或某一行的元素有变化才有“穿”。如果从矩阵的低维到高维考虑,若同一列或同一行的两个0元素之间有不间隔的非0元素,则将行或列标小的0元素记为穿入点,行或列标大的0元素记为穿出点。
步骤⑤,提取输入的手写拉丁字母的freeman链码,计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率,再从各个匹配概率中获取最大匹配概率,将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。具体包括以下步骤:⑤-1、提取输入的手写拉丁字母的freeman链码;⑤-2、利用公知的Viterbi算法计算该输入的手写拉丁字母的freeman链码和预先设定的字库中与该输入的手写拉丁字母匹配的粗分类候选字母集合中每个字母相应的各个标准字母的最优隐马可夫模型的匹配概率;⑤-3、利用公知的冒泡排序法对计算得到的各个匹配概率进行排序,获取最大匹配概率;⑤-4、将预先设定的字库中与最大匹配概率对应的标准字母确定为输入的手写拉丁字母的最终识别结果。Viterbi算法用于计算最优匹配路径上的匹配概率,采用该算法大大减少了计算速度,提高了输入的手写拉丁字母的识别速度。
输入的手写拉丁字母的freeman链码的提取过程为:定义新笔迹坐标点阵中用于表示输入的手写拉丁字母的首笔划中的落笔的新笔迹坐标点为跟踪点;根据freeman链码八方向定义,确定跟踪点的值;根据图7、图8所示,按输入的手写拉丁字母的书写顺序,将下一个新笔迹坐标点作为跟踪点进行处理,直至最后一个新笔迹坐标点处理完毕,得到该输入的手写拉丁字母的freeman链码。freeman链码八方向定义如图9所示,freeman具有0、1、2、3、4、5、6和7八种值。
通过本发明的识别方法对两个自然手写的拉丁字母进行识别后,得到的识别结果分别如图10a和图10b所示,图中左边的字母表示输入的手写拉丁伯字母,右下的字母表示经本发明提出的与手写拉丁字母局部特征匹配的经过多层粗分类算法得到的候选字母集合,右上的字母表示最终的识别结果。从图10a和图10b中可以看出,本发明的识别精度较高。
在本实施例中,步骤③中关于上下结构的判断、横向穿越数的计算、竖向穿越数的计算、最优竖向穿越数的计算、最后一笔迹点相对于字母所处位置的判断均采用步骤④-1和④-2中所描述的方法或计算过程。