基于几何代价与语义-识别代价结合的脱机手写汉字字符的切分方法
几何代价和语义-识别代价融合的脱机手写汉字切分方法,其特征在于:它是借助图像采集设备和与其相连的计算机实现的,依次含有以下步骤: 步骤一:通过图像采集设备为下述目的采集足够的训练样本,建立相应的库 ●脱机手写汉字的单字图像样本库; ●已给出字符正确切分的行图像样本库:我们对已事先已经提取出的行图像样本标定它们的正确切分方式,然后把它们分为两个部分,一部分作为训练样本用于计算参数,另一部分作为测试样本用于测试本申请所述方法的性能; 待切分对象涉及领域的语料库; 步骤二:参数估计 第2-1和2-2步是在给定的“待切分的行图像所涉及领域的语料库”上进行的,用于计算待切分的样本所涉及领域的语义约束关系,我们声明如下符号代表的含义: N↓[c]-汉字c在语料样本中出现的次数; N↓[c↓[1]c↓[2]]-双字词c↓[1]c↓[2]在语料样本中出现的次数; N-语料样本中的汉字总数; P(c)-汉字c在语料样本中出现的概率; P(c↓[2]|c↓[1])-在语料样本中汉字c↓[1]后面紧接着出现汉字c↓[2]的概率; P↓[smooth](·)-平滑处理后的概率; M-语料样本中包含的不同汉字的个数,国家一级汉字标准包括了常用汉字3755个,我们简单地设M=3755; 第2-1步:在语料样本上估计P(c),也就是字符c出现的先验概率;另外还要估计字符间的转移概率,也就是P(c↓[2]|c↓[1]): 2-1-1步:P(c)=N↓[c]/N,N↓[c]为计算得到的每个汉字在语料库中出现的总次数; 2-1-2步:对于二元语法模型,P(c↓[2]|c↓[1])=N↓[c↓[1]c↓[2]]/N↓[c↓[1]],其中N↓[c↓[1]c↓[2]]为计算得到的c↓[1]c↓[2]这个词在语料库中出现的次数; 2-1-3步:我们采用了以下简单的处理方法来平滑数据,对于二元语法模型: *** 其中ε是一个预先给定的很小的正数,取ε=10↑[-9]; 第2-2步是在“脱机手写汉字的单字图像样本库”中的单字手写汉字图像样本上计算的,其中每个样本图像对应的正确字符是已知的,声明如下约定: N↓[sample]-脱机手写汉字图像样本库中图像样本的个数; x↓[i]-第i个样本图像; d↓[j](x↓[i])-由识别核心给出的第i个样本图像x↓[i]的第j个候选识别字对应的识别距离,识别核心按照识别距离的升序排列识别候选字,因此d↓[1](x↓[i])表示第i个样本图像x↓[i]的首选识别候选字对应的识别距离; N↓[Cand]-识别核心对单字字符图像给出的识别候选字的个数,这是一个识别核心的性能参数,因而是常数,而与输入字符图像无关; L↓[i]-第i个字符图像x↓[i]对应的正确汉字在字符图像的识别候选集中出现的序号,其中识别候选集按照识别距离的升序排列各个识别候选字; 2-2-1步:计算脱机手写汉字识别核心对应的方差参数,用符号θ表示 首先,对在步骤一中谈到的“脱机手写汉字的单字图像样本库”的全部图像样本进行识别,对每个图像,得到N↓[Cand]个识别候选字以及相应的识别距离; 根据识别核心提供的识别距离计算第i个样本图像x↓[i]的首选字对应的识别距离d↓[1](x↓[i])与它的第j个识别字的识别距离之差,用y↓[ij]表示,即令y↓[ij]=d↓[j](x↓[i])-d↓[1](x↓[i]),其次,极小化下式得到对参数θ的估计: E=1/2N↓[sample]*{*[exp(-y↓[ij]/θ)-1]↑[2]+*exp(-2y↓[ij]/θ)} 具体的极小化方法采取穷举的办法,在0和100之间取10000个点,0.01,0.02,0.03,…,99.8,99.9,100,作为θ代入上式,取得其中对应E最小值的作为对θ的估计; 为了计算识别核心的混淆矩阵,我们声明如下约定: ω↑[input](x)-图像x对应的真实类别; c↓[j](x)-由识别核心给出的图像x的第j个候选识别结果,识别核心根据识别距离由小到大的升序排列识别候选字,因此c↓[1](x)就是图像x首选识别候选字; {ω↑[input](x)=ω}-对应的真实字符为ω的图像的样本集合; #{ω↑[input](x)=ω}-对应的真实字符为ω的图像样本的个数; 2-2-2步:计算混淆矩阵 混淆矩阵是一个M×M的矩阵,其中M表示语料样本中包含了多少种不同的汉字,国家标准一级汉字字符集有3755个汉字,我们可设M=3755;如果我们把所有汉字按任意选定的顺序排列,char↓[1],char↓[2],…,char↓[M],那么混淆矩阵的第α行第β列的元素就是P(char↓[β]|char↓[α]),表示实际类别是char↓[α],但是却被识别核心识为char↓[β]概率; 根据公式P(char↓[β]|char↓[α])=1/#{ω↑[input](x)=char↓[α]}*P(c↓[j](x)=char↓[β]|x)计算出与识别核心相关的混淆概率矩阵,其中#{ω↑[input](x)=char↓[α]}为对应于真实字符为char↓[α]的图像样本的个数; 其中P(c↓[j](x)=char↓[β]|x)=*,它是识别核心给出的对图像x的识别结果为char↓[β]的置信度; *P(c↓[j](x)=char↓[β]|x)表示真实字符为char↓[α],但是识别候选字中包含了char↓[β]的全部字符图像中关于char↓[β]的识别置信度之和; 除了上述四个方面外,我们还需要估计几何代价与语义-识别代价融合的参数λ,它由行图像的训练样本计算而来,我们放在最后一个部分来介绍如何估计参数λ; 步骤三:字符行图像参数提取 这一步完成对行图像参数的提取,包括笔划宽度、字符平均宽度和字符平均高度,涉及到如下的参数的估计: w↓[s]-笔划宽度; *-字符平均宽度; *-字符平均高度; 第3-1步:笔划宽度,即书写笔迹的宽度w↓[s]估计 首先,对文本行的水平黑像素游程进行直方图分析,水平黑游程是指横轴方向上黑象素连续占有的矩形区域,矩形的高为一个像素,宽即为水平黑游程的长度,直方图的横轴表示水平黑游程长度,纵坐标表示具有此长度的水平黑游程个数;设直方图中对应游程个数最多的水平黑游程长度为p,对应游程个数为hist(p),也就是说直方图的纵坐标最大值为hist(p),它对应的横坐标为p,则取w↓[s]=(p-1)×hist(p-1)+p×hist(p)+(p+1)×h(p+1)/h(p-1)+h(p)+h(p+1); 第3-2步:平均字符宽度*的估计 字符平均宽度反映了文本行的书写风格,对字符切分有着直接的影响,首先对文本行图像作竖直方向的投影,得到投影图,此图的横坐标与文本行的横坐标一一对应,纵坐标的值为文本行中相应横坐标竖直方向上全部黑象素点的个数,对投影图水平坐标轴方向也就是纵坐标为0的方向作水平黑游程分析,并且计算全部水平黑游程的平均值,以此作为字符平均宽度的估计;对于文本行中的字符间距过小而造成字符间笔划的相互重叠的情况,在投影图y=2w↓[s]+1的水平方向上做黑游程统计,计算其平均值,得到较好的字符平均宽度*的估计; 第3-3步:字符平均高度*的估计 字符平均高度的提取相对比较简单,只需将行图像在水平方向上平均分成若干等分,一般取五等分,再对所有小图像的高度取平均即为字符的平均高度*; 步骤四:笔段提取阶段 笔段是指汉字中横竖撇捺四种基本元素,笔段提取有效地克服了字符的粘连; 笔段提取方法采用黑游程跟踪的方法,其思路是:首先在图像中寻找到一条水平黑游程,作为某一笔段的开始,然后对该水平黑游程从上向下逐行跟踪,直到跟踪结束,得到一笔段; 跟踪采用的思路:在当前水平黑游程的下一行,取包含当前黑游程所在水平位置且左右各偏移一个像素的水平范围,在此范围内找到所有的水平黑游程;然后根据笔段已有游程的平均宽度、以及由笔段已有游程拟和得到的笔段方向,选择某一水平黑游程加入到已有的笔段游程中,并更新原笔段的信息;我们来详细描述一下这个过程,它依次含有以下步骤: 第4-1步:按照由上到下的顺序扫描到一段水平黑象素游程时,如果它不在我们已有的各个笔段的黑游程记录中,那么把它作为某一新笔段的开始,同时把这段水平黑游程添加到新笔段的黑游程记录中; 第4-2步:对于最近添加到笔段记录中的黑游程,我们再在这个水平黑游程下一行包含此水平游程的水平位置,且左右各偏移一个象素开始搜索新的水平黑游程,如果有某个水平游程的黑色象素延伸到这个区域,则将此游程提取出来;如果没有黑游程出现在这个区域,那么此笔段提取结束,回到4-1步继续搜索新的笔段; 第4-3步:对于提取出的黑游程,我们考虑如何把它添加到笔段的黑游程记录中去:这里我们需要分两个情况讨论,一种情况是上一步提取出的水平黑游程仅有一个,那么进行4-3-1步;另一种情况是上一步提取出来的水平黑游程有两个或者两个以上,那么进行4-3-2步; 4-3-1步: 如果我们仅提取出一个水平黑游程, ■如果这一笔段已有水平黑游程的平均宽度大于等于新的水平黑游程宽度的两倍,那么判断已达到笔段结束点,笔段提取结束; ■如果新的水平黑游程宽度大于等于这一笔段已有水平黑游程的平均宽度的三倍,则判断其是一个笔段交叉点,那么根据已有的这一笔段的水平黑游程信息预测笔段方向,然后再在预测的方向上左右各偏移笔段水平黑游程平均宽度的一半,作为新的笔段黑游程加入到记录中; ■如果新的水平黑游程宽度不满足上述两个前提,则判断它为合理的笔段黑游程,直接添加到笔段的水平黑游程记录中来; 4-3-2步: 如果我们提取出两个或以上的水平黑游程,那么我们首先利用已有的笔段水平黑游程信息预测笔段的方向,然后提取在预测方向上的游程