发明名称 几何代价和语义-识别代价融合的脱机手写汉字切分方法
摘要 几何代价和语义-识别代价融合的脱机手写汉字切分方法,属于文字识别领域,其特征在于,首先通过对输入的脱机手写汉字的行图像进行分析,提取出笔段,将笔段合并成子字符块,同时给出子字符块合并的几何代价,由这些几何代价生成若干可能的候选切分方法,对每个方法用语言的二元语法模型进行评价,得到每种切分方式的语义-识别代价,最后综合几何与语义-识别代价给出最优的切分识别方案。本发明应用于手写信封地址的切分与识别上,其切分正确率可以达到93%,大大改进了传统切分方法的性能,对于其他语言文字或领域的切分问题也有一定的指导作用。
申请公布号 CN1719454A 申请公布日期 2006.01.11
申请号 CN200510012195.2 申请日期 2005.07.15
申请人 清华大学 发明人 丁晓青;蒋焰;付强;刘长松;彭良瑞;方驰
分类号 G06K9/62(2006.01) 主分类号 G06K9/62(2006.01)
代理机构 代理人
主权项 1、几何代价和语义-识别代价融合的脱机手写汉字切分方法,其特征在于:它是借助图像采集设备和与其相连的计算机实现的,依次含有以下步骤:步骤一:通过图像采集设备为下述目的采集足够的训练样本,建立相应的库●脱机手写汉字的单字图像样本库;●已给出字符正确切分的行图像样本库:我们对已事先已经提取出的行图像样本标定它们的正确切分方式,然后把它们分为两个部分,一部分作为训练样本用于计算参数,另一部分作为测试样本用于测试本申请所述方法的性能;待切分对象涉及领域的语料库;步骤二:参数估计第2-1和2-2步是在给定的“待切分的行图像所涉及领域的语料库”上进行的,用于计算待切分的样本所涉及领域的语义约束关系,我们声明如下符号代表的含义:N<sub>c</sub>——汉字c在语料样本中出现的次数;N<sub>c1c2</sub>——双字词c<sub>1</sub>c<sub>2</sub>在语料样本中出现的次数;N——语料样本中的汉字总数;P(c)——汉字c在语料样本中出现的概率;P(c<sub>2</sub>|c<sub>1</sub>)——在语料样本中汉字c<sub>1</sub>后面紧接着出现汉字c<sub>2</sub>的概率;P<sub>smooth</sub>(·)——平滑处理后的概率;M——语料样本中包含的不同汉字的个数,国家一级汉字标准包括了常用汉字3755个,我们简单地设M=3755;第2-1步:在语料样本上估计P(c),也就是字符c出现的先验概率;另外还要估计字符间的转移概率,也就是P(c<sub>2</sub>|c<sub>1</sub>):2-1-1步:<maths num="001"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><mi>c</mi><mo>)</mo></mrow><mo>=</mo><mfrac><msub><mi>N</mi><mi>c</mi></msub><mi>N</mi></mfrac><mo>,</mo></mrow></math>]]></maths>N<sub>c</sub>为计算得到的每个汉字在语料库中出现的总次数;2-1-2步:对于二元语法模型,<maths num="002"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mn>2</mn></msub><mo>|</mo><msub><mi>c</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>=</mo><mfrac><msub><mi>N</mi><mrow><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub></mrow></msub><msub><mi>N</mi><msub><mi>c</mi><mn>1</mn></msub></msub></mfrac><mo>,</mo></mrow></math>]]></maths>其中N<sub>c1c2</sub>为计算得到的c<sub>1</sub>c<sub>2</sub>这个词在语料库中出现的次数;2-1-3步:我们采用了以下简单的处理方法来平滑数据,对于二元语法模型:<maths num="003"><![CDATA[ <math><mrow><msub><mi>P</mi><mi>smooth</mi></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>1</mn></msub><mo>|</mo><msub><mi>c</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mn>2</mn></msub><mo>|</mo><msub><mi>c</mi><mn>1</mn></msub><mo>)</mo></mrow></mtd><mtd><mi>if</mi><msub><mi>N</mi><mrow><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub></mrow></msub><mo>></mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>&epsiv;</mi></mtd><mtd><mi>if</mi><msub><mi>N</mi><mrow><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub></mrow></msub><mo>=</mo><mn>0</mn><mi>and</mi><msub><mi>N</mi><msub><mi>c</mi><mn>2</mn></msub></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mi>M</mi></mfrac></mtd><mtd><mi>if</mi><msub><mi>N</mi><mrow><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub></mrow></msub><mo>=</mo><mn>0</mn><mi>and</mi><msub><mi>N</mi><msub><mi>c</mi><mn>2</mn></msub></msub><mo>></mo><mn>0</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中ε是一个预先给定的很小的正数,取ε=10<sup>-9</sup>;第2-2步是在“脱机手写汉字的单字图像样本库”中的单字手写汉字图象样本上计算的,其中每个样本图像对应的正确字符是已知的,声明如下约定:N<sub>sample</sub>——脱机手写汉字图像样本库中图像样本的个数;x<sub>i</sub>——第i个样本图像;d<sub>j</sub>(x<sub>i</sub>)——由识别核心给出的第i个样本图像x<sub>i</sub>的第j个候选识别字对应的识别距离,识别核心按照识别距离的升序排列识别候选字,因此d<sub>1</sub>(x<sub>i</sub>)表示第i个样本图像x<sub>i</sub>的首选识别候选字对应的识别距离;N<sub>Cand</sub>——识别核心对单字字符图像给出的识别候选字的个数,这是一个识别核心的性能参数,因而是常数,而与输入字符图像无关;L<sub>i</sub>——第i个字符图像x<sub>i</sub>对应的正确汉字在字符图像的识别候选集中出现的序号,其中识别候选集按照识别距离的升序排列各个识别候选字;2-2-1步:计算脱机手写汉字识别核心对应的方差参数,用符号θ表示首先,对在步骤一中谈到的“脱机手写汉字的单字图像样本库”的全部图像样本进行识别,对每个图像,得到N<sub>Cand</sub>个识别候选字以及相应的识别距离;根据识别核心提供的识别距离计算第i个样本图像x<sub>i</sub>的首选字对应的识别距离d<sub>1</sub>(x<sub>i</sub>)与它的第j个识别字的识别距离之差,用y<sub>ij</sub>表示,即令y<sub>ij</sub>=d<sub>j</sub>(x<sub>i</sub>)-d<sub>1</sub>(x<sub>i</sub>),其次,极小化下式得到对参数θ的估计:<maths num="004"><![CDATA[ <math><mrow><mi>E</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><msub><mi>N</mi><mi>sample</mi></msub></mrow></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>sample</mi></msub></munderover><mo>{</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>L</mi><mi>i</mi></msub></munderover><msup><mrow><mo>[</mo><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><msub><mi>y</mi><mi>ij</mi></msub><mi>&theta;</mi></mfrac><mo>)</mo></mrow><mo>-</mo><mn>1</mn><mo>]</mo></mrow><mn>2</mn></msup><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><msub><mi>L</mi><mi>i</mi></msub><mo>+</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><mn>2</mn><msub><mi>y</mi><mi>ij</mi></msub></mrow><mi>&theta;</mi></mfrac><mo>)</mo></mrow><mo>}</mo></mrow></math>]]></maths>具体的极小化方法采取穷举的办法,在0和100之间取10000个点,0.01,0.02,0.03,…,99.8,99.9,100,作为θ代入上式,取得其中对应E最小值的作为对θ的估计;为了计算识别核心的混淆矩阵,我们声明如下约定:ω<sup>input</sup>(x)——图像x对应的真实类别;c<sub>j</sub>(x)——由识别核心给出的图像x的第j个候选识别结果,识别核心根据识别距离由小到大的升序排列识别候选字,因此c<sub>1</sub>(x)就是图像x首选识别候选字;{ω<sup>input</sup>(x)=ω}——对应的真实字符为ω的图像的样本集合;#{ω<sup>input</sup>(x)=ω}——对应的真实字符为ω的图像样本的个数;2-2-2步:计算混淆矩阵混淆矩阵是一个M×M的矩阵,其中M表示语料样本中包含了多少种不同的汉字,国家标准一级汉字字符集有3755个汉字,我们可设M=3755;如果我们把所有汉字按任意选定的顺序排列,char<sub>1</sub>,char<sub>2</sub>,…,char<sub>M</sub>,那么混淆矩阵的第α行第β列的元素就是P(char<sub>β</sub>|char<sub>α</sub>),表示实际类别是char<sub>α</sub>,但是却被识别核心识为cha<sub>r</sub>β概率;根据公式<maths num="005"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><mi>cha</mi><msub><mi>r</mi><mi>&beta;</mi></msub><mo>|</mo><msub><mi>char</mi><mi>&alpha;</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mrow><mo>#</mo><mo>{</mo><msup><mi>&omega;</mi><mi>input</mi></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&alpha;</mi></msub><mo>}</mo></mrow></mfrac><munder><mi>&Sigma;</mi><mrow><mi>x</mi><mo>&Element;</mo><mo>{</mo><msup><mi>&omega;</mi><mi>input</mi></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&alpha;</mi></msub><mo>}</mo></mrow></munder><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&beta;</mi></msub><mo>|</mo><mi>x</mi><mo>)</mo></mrow></mrow></math>]]></maths>计算出与识别核心相关的混淆概率矩阵,其中#{ω<sup>input</sup>(x)=char<sub>α</sub>}为对应于真实字符为char<sub>α</sub>的图像样本的个数;其中<maths num="006"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&beta;</mi></msub><mo>|</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><msub><mi>d</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mi>&theta;</mi></mfrac><mo>)</mo></mrow></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><msub><mi>d</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mi>&theta;</mi></mfrac><mo>)</mo></mrow></mrow></mfrac><mo>,</mo></mrow></math>]]></maths>它是识别核心给出的对图像x的识别结果为char<sub>β</sub>的置信度;<maths num="007"><![CDATA[ <math><mrow><munder><mi>&Sigma;</mi><mrow><mi>x</mi><mo>&Element;</mo><mo>{</mo><msup><mi>&omega;</mi><mi>input</mi></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&alpha;</mi></msub></mrow></munder><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>cha</mi><msub><mi>r</mi><mi>&beta;</mi></msub><mo>|</mo><mi>x</mi><mo>)</mo></mrow></mrow></math>]]></maths>表示真实字符为char<sub>α</sub>,但是识别候选字中包含了char<sub>β</sub>的全部字符图像中关于char<sub>β</sub>的识别置信度之和;除了上述四个方面外,我们还需要估计几何代价与语义-识别代价融合的参数λ,它由行图像的训练样本计算而来,我们放在最后一个部分来介绍如何估计参数λ;步骤三:字符行图像参数提取这一步完成对行图像参数的提取,包括笔划宽度、字符平均宽度和字符平均高度,涉及到如下的参数的估计:w<sub>s</sub>——笔划宽度;<img file="A2005100121950005C1.GIF" wi="48" he="57" />——字符平均宽度;<img file="A2005100121950005C2.GIF" wi="40" he="60" />——字符平均高度;第3-1步:笔划宽度,即书写笔迹的宽度w<sub>s</sub>估计首先,对文本行的水平黑像素游程进行直方图分析,水平黑游程是指横轴方向上黑象素连续占有的矩形区域,矩形的高为一个像素,宽即为水平黑游程的长度,直方图的横轴表示水平黑游程长度,纵坐标表示具有此长度的水平黑游程个数;设直方图中对应游程个数最多的水平黑游程长度为p,对应游程个数为hist(p),也就是说直方图的纵坐标最大值为hist(p),它对应的横坐标为p,则取<maths num="008"><![CDATA[ <math><mrow><msub><mi>w</mi><mi>s</mi></msub><mo>=</mo><mfrac><mrow><mrow><mo>(</mo><mi>p</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mi>hist</mi><mrow><mo>(</mo><mi>p</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>p</mi><mo>&times;</mo><mi>hist</mi><mrow><mo>(</mo><mi>p</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mi>p</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mi>h</mi><mrow><mo>(</mo><mi>p</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow><mrow><mi>h</mi><mrow><mo>(</mo><mi>p</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mi>h</mi><mrow><mo>(</mo><mi>p</mi><mo>)</mo></mrow><mo>+</mo><mi>h</mi><mrow><mo>(</mo><mi>p</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></mfrac><mo>;</mo></mrow></math>]]></maths>第3-2步:平均字符宽度<img file="A2005100121950005C4.GIF" wi="49" he="60" />的估计字符平均宽度反映了文本行的书写风格,对字符切分有着直接的影响,首先对文本行图像作竖直方向的投影,得到投影图,此图的横坐标与文本行的横坐标一一对应,纵坐标的值为文本行中相应横坐标竖直方向上全部黑象素点的个数,对投影图水平坐标轴方向也就是纵坐标为0的方向作水平黑游程分析,并且计算全部水平黑游程的平均值,以此作为字符平均宽度的估计;对于文本行中的字符间距过小而造成字符间笔划的相互重叠的情况,在投影图y=2w<sub>s</sub>+1的水平方向上做黑游程统计,计算其平均值,得到较好的字符平均宽度<img file="A2005100121950005C5.GIF" wi="50" he="58" />的估计;第3-3步:字符平均高度<img file="A2005100121950005C6.GIF" wi="40" he="59" />的估计字符平均高度的提取相对比较简单,只需将行图像在水平方向上平均分成若干等分,一般取五等分,再对所有小图像的高度取平均即为字符的平均高度<img file="A2005100121950005C7.GIF" wi="62" he="62" />步骤四:笔段提取阶段笔段是指汉字中横竖撇捺四种基本元素,笔段提取有效地克服了字符的粘连;笔段提取方法采用黑游程跟踪的方法,其思路是:首先在图像中寻找到一条水平黑游程,作为某一笔段的开始,然后对该水平黑游程从上向下逐行跟踪,直到跟踪结束,得到一笔段;跟踪采用的思路:在当前水平黑游程的下一行,取包含当前黑游程所在水平位置且左右各偏移一个像素的水平范围,在此范围内找到所有的水平黑游程;然后根据笔段已有游程的平均宽度、以及由笔段已有游程拟和得到的笔段方向,选择某一水平黑游程加入到已有的笔段游程中,并更新原笔段的信息;我们来详细描述一下这个过程,它依次含有以下步骤:第4-1步:按照由上到下的顺序扫描到一段水平黑象素游程时,如果它不在我们已有的各个笔段的黑游程记录中,那么把它作为某一新笔段的开始,同时把这段水平黑游程添加到新笔段的黑游程记录中;第4-2步:对于最近添加到笔段记录中的黑游程,我们再在这个水平黑游程下一行包含此水平游程的水平位置,且左右各偏移一个象素开始搜索新的水平黑游程,如果有某个水平游程的黑色象素延伸到这个区域,则将此游程提取出来;如果没有黑游程出现在这个区域,那么此笔段提取结束,回到4-1步继续搜索新的笔段;第4-3步:对于提取出的黑游程,我们考虑如何把它添加到笔段的黑游程记录中去:这里我们需要分两个情况讨论,一种情况是上一步提取出的水平黑游程仅有一个,那么进行4-3-1步;另一种情况是上一步提取出来的水平黑游程有两个或者两个以上,那么进行4-3-2步;4-3-1步:如果我们仅提取出一个水平黑游程,■如果这一笔段已有水平黑游程的平均宽度大于等于新的水平黑游程宽度的两倍,那么判断已达到笔段结束点,笔段提取结束;■如果新的水平黑游程宽度大于等于这一笔段已有水平黑游程的平均宽度的三倍,则判断其是一个笔段交叉点,那么根据已有的这一笔段的水平黑游程信息预测笔段方向,然后再在预测的方向上左右各偏移笔段水平黑游程平均宽度的一半,作为新的笔段黑游程加入到记录中;■如果新的水平黑游程宽度不满足上述两个前提,则判断它为合理的笔段黑游程,直接添加到笔段的水平黑游程记录中来;4-3-2步:如果我们提取出两个或以上的水平黑游程,那么我们首先利用已有的笔段水平黑游程信息预测笔段的方向,然后提取在预测方向上的游程作为我们的候选水平黑游程,最后重复4-3-1的三个判断更新黑游程记录表;步骤4-3-1和4-3-2采用的预测方法如下:对于笔段已经跟踪出来的所有水平黑游程分别求中点,然后按照最小二乘原则用线性函数拟合这些中点,同时根据拟合出的直线预测出笔段的方向;第4-4步:判决笔段的属性:对于提取出的笔段,我们首先分别计算它的高度和宽度■如果这一笔段所有水平黑游程的平均宽度大于给定的阈值,并且笔段宽度大于笔段高度,那么判断它为横笔划;■我们设定一个小步长,用MinStepLength表示,◆计算第i行和第i+MinStepLength行这两行的水平黑游程中点,“+”表示加号●如果中点一致,那么角度累加器加上<img file="A2005100121950007C1.GIF" wi="60" he="92" />●如果第i行中点横坐标大于第i+MinStepLength行中点的横坐标,那么角度累加器加上<img file="A2005100121950007C2.GIF" wi="1270" he="121" />●如果第i行中点横坐标小于第i+MinStepLength行中点横坐标,那么角度累加器加上<img file="A2005100121950007C3.GIF" wi="1355" he="118" />◆从每个笔段的第一行往下一直扫描到距离笔段高度为零处的MinStepLength行时,将所有角度相加,求平均角度:●如果平均角度大于零且比预先设定的值α<sub>1</sub>要小,那么判断为竖笔划;●如果平均角度大于上述的α<sub>1</sub>且小于预先设定的值α<sub>2</sub>那么判断为撇笔划;●如果平均角度大于上述的α<sub>2</sub>且小于预先设定的值α<sub>3</sub>那么判断为横笔划;●如果平均角度大于上述的α<sub>3</sub>且小于预先设定的值α<sub>4</sub>那么判断为捺笔划;●如果平均角度大于上述的α<sub>4</sub>那么判断为竖笔划;如果没有新的游程被找到,则该笔段跟踪结束;如果没有新的笔段被找到,则笔段提取结束;在每一笔段被提取出来时,笔段的属性,即横竖撇捺即也被决定;步骤五:笔段合并在笔段提取完成之后,还需要将笔段进一步合并为子字符,设R<sub>i</sub>和R<sub>j</sub>分别为两相邻笔段的外接矩形;(x<sub>i,1</sub>,y<sub>i,1</sub>)——R<sub>i</sub>的左上角点的坐标;(X<sub>i,2</sub>,y<sub>i,2</sub>)——R<sub>i</sub>的右下角点的坐标;(x<sub>j,1</sub>,y<sub>j,1</sub>)——R<sub>j</sub>的左上角点的坐标;(x<sub>j,2</sub>,y<sub>j,2</sub>)——R<sub>j</sub>的右下角点的坐标;D<sub>H</sub>(R<sub>i</sub>,R<sub>j</sub>)——R<sub>i</sub>右侧和R<sub>j</sub>左侧的水平距离,D<sub>H</sub>(R<sub>i</sub>,R<sub>j</sub>)值用正、负表示方向,R<sub>i</sub>右边框的水平位置在R<sub>j</sub>左边框的水平位置的右边,用负值表示;否则若R<sub>i</sub>右边框的水平位置在R<sub>j</sub>左边框的水平位置的左边,则用正值表示;D<sub>V</sub>(R<sub>i</sub>,R<sub>i</sub>)——R<sub>i</sub>底侧和R<sub>j</sub>顶侧的垂直距离,D<sub>V</sub>(R<sub>i</sub>,R<sub>j</sub>)值用正、负表示方向,R<sub>i</sub>底侧框的垂直位置在R<sub>j</sub>顶侧框的垂直位置的下面,用负值表示;否则若R<sub>i</sub>底侧框的垂直位置在R<sub>j</sub>顶侧框的垂直位置的上面,则用正值表示;width(R<sub>i</sub>)——R<sub>i</sub>的宽度;width(R<sub>j</sub>)——R<sub>j</sub>的宽度;笔段合并按照下面三个原则进行:1)如果R<sub>i</sub>和R<sub>j</sub>满足在水平方向上,R<sub>i</sub>包含R<sub>j</sub>或者R<sub>j</sub>包含R<sub>i</sub>,则将笔段i,j合并;2)如果R<sub>i</sub>和R<sub>j</sub>满足:D<sub>H</sub>(R<sub>i</sub>,R<sub>j</sub>)<0(即R<sub>i</sub>右边框在R<sub>j</sub>左边框之右),并且有<maths num="009"><![CDATA[ <math><mrow><mfrac><mrow><mo>-</mo><msub><mi>D</mi><mi>H</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>,</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>width</mi><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mfrac><mo>></mo><msub><mi>T</mi><mn>1</mn></msub></mrow></math>]]></maths>或<maths num="010"><![CDATA[ <math><mrow><mfrac><mrow><mo>-</mo><msub><mi>D</mi><mi>H</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>,</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>width</mi><mrow><mo>(</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></mfrac><mo>></mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo></mrow></math>]]></maths>则将笔段i,j合并,此处T<sub>1</sub>为预定义门限,一般取0.7;3)如果R<sub>i</sub>和R<sub>j</sub>满足:D<sub>H</sub>(R<sub>i</sub>,R<sub>j</sub>)<0,并且有<maths num="011"><![CDATA[ <math><mrow><mfrac><mrow><mo>-</mo><msub><mi>D</mi><mi>H</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>,</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>width</mi><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></mfrac><mo>></mo><msub><mi>T</mi><mn>2</mn></msub></mrow></math>]]></maths>且<maths num="012"><![CDATA[ <math><mrow><mfrac><mrow><mo>-</mo><msub><mi>D</mi><mi>H</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>,</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>width</mi><mrow><mo>(</mo><msub><mi>R</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></mfrac><mo>></mo><msub><mi>T</mi><mn>2</mn></msub><mo>,</mo></mrow></math>]]></maths>则将笔段i,j合并,此处T<sub>2</sub>为预定义门限,一般取0.5;笔段合并算法依次含有如下的步骤:第5-1步:初始化,笔段按水平方向上的位置从左向右排序;第5-2步::按照原则(1)搜索所有需要合并的笔段,如搜索到满足条件的笔段则将它们合并,合并完则转向第5-1步;否则转到第5-3步;第5-3步:按照原则(2)搜索所有需要合并的笔段,如搜索到满足条件的笔段则将它们合并,合并完则转向第5-1步;否则转到第5-4步;第5-4步:按照原则(3)搜索所有需要合并的笔段,如搜索到满足条件的笔段则将它们合并,合并完则结束;步骤六:字符合并的几何代价评估,包括六个子步骤我们把笔段合并的结果,从左向右排序记为:s<sub>1</sub>,s<sub>2</sub>,…,s<sub>N</sub>,这就是我们笔段合并后的子字符图像,要完成切分,需要将这些子字符图像进行适当合并以完成切分操作;我们介绍一下子字符图像的合并过程;我们用(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>),表示由子字符图像s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>合并而成的字符图像,我们按照下面的方式评估(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)合并的几何代价:w<sub>k</sub>——子字符图像s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>合并后的字符图像(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的宽度;h<sub>k</sub>——子字符图像s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>合并后的字符图像(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的高度;第6-1步:字符宽度w<sub>k</sub>打分,用S(w<sub>k</sub>)表示字符宽度得分设(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的宽度为w<sub>k</sub>,文本行的字符平均宽度为<img file="A2005100121950009C1.GIF" wi="74" he="62" />由3-2步得出,则<maths num="013"><![CDATA[ <math><mrow><mi>S</mi><mrow><mo>(</mo><msub><mi>w</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>a</mi><msup><mrow><mo>(</mo><mfrac><msub><mi>w</mi><mi>k</mi></msub><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mtd><mtd><mi>if</mi><mfrac><msub><mi>w</mi><mi>k</mi></msub><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>></mo><mn>1</mn></mtd></mtr><mtr><mtd><mi>b</mi><msup><mrow><mo>(</mo><mfrac><msub><mi>w</mi><mi>k</mi></msub><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup></mtd><mtd><mi>if</mi><mfrac><msub><mi>w</mi><mi>k</mi></msub><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>&le;</mo><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中a,b均为预定义参数,一般我们取a=100,b=400;第6-2步:字符宽高比r打分,用S(r)表示字符宽度得分<maths num="014"><![CDATA[ <math><mrow><mi>S</mi><mrow><mo>(</mo><mi>r</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><mo>{</mo><mi>c</mi><msup><mrow><mo>(</mo><mfrac><mi>r</mi><mover><mi>r</mi><mo>&OverBar;</mo></mover></mfrac><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mn>2</mn></msup><mo>,</mo><mn>100</mn><mo>}</mo><mo>,</mo></mrow></math>]]></maths>其中一般取c=100;r为字符(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的宽高比,<maths num="015"><![CDATA[ <math><mrow><mi>r</mi><mo>=</mo><mfrac><msub><mi>w</mi><mi>k</mi></msub><msub><mi>h</mi><mi>k</mi></msub></mfrac><mo>;</mo></mrow></math>]]></maths>r为字符平均宽高比<maths num="016"><![CDATA[ <math><mrow><mover><mi>r</mi><mo>&OverBar;</mo></mover><mo>=</mo><mfrac><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover><mover><msub><mi>h</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mfrac><mo>;</mo></mrow></math>]]></maths><img file="A2005100121950009C7.GIF" wi="51" he="63" />为文本行字符平均宽度,估计方法见第3-2步;<img file="A2005100121950009C8.GIF" wi="42" he="61" />为文本行字符平均高度,估计方法见第3-3步;第6-3步:字符内部子字符间的距离打分1)外接矩形框的水平距离:即子字符矩形框之间的水平距离,允许矩形框包围的区域有重叠;2)欧几里德距离:两个像素点间的欧氏距离是说,如果像素点1的坐标为(x<sub>1</sub>,y<sub>1</sub>)像素点2的坐标为(x<sub>2</sub>,y<sub>2</sub>),则这两个像素点间的欧式距离定义为<maths num="017"><![CDATA[ <math><mrow><msqrt><msup><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>-</mo><msub><mi>x</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msub><mi>y</mi><mn>1</mn></msub><mo>-</mo><msub><mi>y</mi><mn>2</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt><mo>;</mo></mrow></math>]]></maths>子字符A与子字符B间的欧几里德距离定义为A中全部黑像素点与B中全部黑像素点之间所有的欧式距离值的最小值;3)平均游程距离:我们计算两个子字符之间全部水平白游程的长度的平均值作为我们的平均游程距离;根据上述三种距离,我们定义(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的内部距离为<maths num="018"><![CDATA[ <math><mrow><msub><mi>d</mi><mi>in</mi></msub><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mi>k</mi></mrow><mrow><mi>i</mi><mo>=</mo><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>d</mi><mrow><mi>i</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mrow><mi>k</mi></mfrac><mo>,</mo></mrow></math>]]></maths>其中子字符s<sub>i</sub>与s<sub>j</sub>的距离d<sub>i,j</sub>定义为<maths num="019"><![CDATA[ <math><mrow><msub><mi>d</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mrow><munder><mi>&Sigma;</mi><mi>n</mi></munder><msub><mi>&gamma;</mi><mi>n</mi></msub><msubsup><mi>d</mi><mi>ij</mi><mi>n</mi></msubsup></mrow></mrow></math>]]></maths>即是上述三种距离的加权平均和,γ<sub>n</sub>是加权系数,一般来说我们取γ<sub>n</sub>都为1;定义内部距离分数为<maths num="020"><![CDATA[ <math><mrow><mi>S</mi><mrow><mo>(</mo><msub><mi>d</mi><mi>in</mi></msub><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>0</mn><mi>if</mi><msub><mi>d</mi><mi>in</mi></msub><mo>&lt;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mn>100</mn><mi>if</mi><msub><mi>d</mi><mi>in</mi></msub><mo>></mo><mfrac><msub><mi>w</mi><mi>k</mi></msub><mn>4</mn></mfrac><mi>or</mi><msub><mi>d</mi><mi>in</mi></msub><mo>></mo><mfrac><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mn>400</mn><msub><mi>d</mi><mi>in</mi></msub></mrow><msub><mi>w</mi><mi>k</mi></msub></mfrac><mi>otherwise</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>第6-4步:字符前后的距离打分,用S(D)表示假设字符(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)与前后子字符之间的距离分别为D<sub>L</sub>和D<sub>R</sub>;D<sub>L</sub>——子字符s<sub>k</sub>的外接矩形框与子字符s<sub>k-1</sub>的外接矩形框之间的水平距离,与步骤五中的定义一致:D<sub>R</sub>——子字符s<sub>k+nk-1</sub>的外接矩形框与子字符s<sub>k+nk</sub>的外接矩形框之间的水平距离,与步骤五中的定义一致:如果k=1则D<sub>L</sub>=∞;如果k+n<sub>k</sub>-1=N,则D<sub>R</sub>=∞;最后取D=min(D<sub>L</sub>,D<sub>R</sub>);对于字符前后距离的打分为S(D),<maths num="021"><![CDATA[ <math><mrow><mi>S</mi><mrow><mo>(</mo><mi>D</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>100</mn><mi>ifD</mi><mo>&lt;</mo><mo>-</mo><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mfrac><mrow><mn>25</mn><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover><mo>+</mo><mn>100</mn><mover><mi>D</mi><mo>&OverBar;</mo></mover><mo>-</mo><mn>75</mn><mi>D</mi></mrow><mrow><mover><mi>D</mi><mo>&OverBar;</mo></mover><mo>+</mo><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover></mrow></mfrac><mi>if</mi><mo>-</mo><mover><msub><mi>w</mi><mi>c</mi></msub><mo>&OverBar;</mo></mover><mo>&le;</mo><mi>D</mi><mo>&le;</mo><mover><mi>D</mi><mo>&OverBar;</mo></mover></mtd></mtr><mtr><mtd><mfrac><mrow><mn>25</mn><mrow><mo>(</mo><msub><mi>D</mi><mi>max</mi></msub><mo>-</mo><mi>D</mi><mo>)</mo></mrow></mrow><mrow><msub><mi>D</mi><mi>max</mi></msub><mo>-</mo><mover><mi>D</mi><mo>&OverBar;</mo></mover></mrow></mfrac><mi>if</mi><mover><mi>D</mi><mo>&OverBar;</mo></mover><mo>&le;</mo><mi>D</mi><mo>&le;</mo><msub><mi>D</mi><mi>max</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn><mi>ifD</mi><mo>></mo><msub><mi>D</mi><mi>max</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中<img file="A2005100121950010C5.GIF" wi="50" he="59" />为文本行中字符的平均宽度,D和D<sub>max</sub>分别为文本行中子字符外接矩形框之间的水平距离的平均值和子字符外接矩形框之间的水平距离的最大值;第6-5步:连通度打分,用S(C)表示定义子字符s<sub>i</sub>和子字符s<sub>j</sub>的连通度C<sub>ij</sub>为<img file="A2005100121950011C1.GIF" wi="1042" he="136" />字符(s<sub>k</sub>,s<sub>k+1</sub>,...,s<sub>k+nk-1</sub>)的连通性由三个量来表示:C<sub>I</sub>——内部连通性;C<sub>L</sub>——左部连通性;C<sub>R</sub>——右部连通性;其中内部连通性指的是字符内部子字符的连通程度;左部连通性和右部连通性指的是子字符s<sub>k</sub>和子字符s<sub>k-1</sub>,子字符s<sub>k+nk-1</sub>与子字符s<sub>k+nk</sub>之间的连通性;<maths num="022"><![CDATA[ <math><mrow><msub><mi>C</mi><mi>I</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mn>1</mn><mrow><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>1</mn></mrow></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mi>k</mi></mrow><mrow><mi>i</mi><mo>=</mo><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>C</mi><mrow><mi>i</mi><mo>,</mo><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>n</mi><mi>k</mi></msub><mo>></mo><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><msub><mi>n</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="023"><![CDATA[ <math><mrow><msub><mi>C</mi><mi>L</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi>k</mi><mo>,</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd><mtd><mi>k</mi><mo>></mo><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>k</mi><mo>=</mo><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="024"><![CDATA[ <math><mrow><msub><mi>C</mi><mi>R</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>1</mn><mo>,</mo><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub></mrow></msub></mtd><mtd><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>1</mn><mo>&lt;</mo><mi>N</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>k</mi><mo>+</mo><msub><mi>n</mi><mi>k</mi></msub><mo>-</mo><mn>1</mn><mo>=</mo><mi>N</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>连通度得分<maths num="025"><![CDATA[ <math><mrow><mi>S</mi><mrow><mo>(</mo><mi>C</mi><mo>)</mo></mrow><mo>=</mo><mn>100</mn><mo>&times;</mo><mo>[</mo><mn>1</mn><mo>-</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>C</mi><mi>I</mi></msub><mo>-</mo><mfrac><mrow><msub><mi>C</mi><mi>R</mi></msub><mo>+</mo><msub><mi>C</mi><mi>L</mi></msub></mrow><mn>2</mn></mfrac><mo>)</mo></mrow><mo>]</mo><mo>;</mo></mrow></math>]]></maths>第6-6步:计算总体分值作为几何代价整体的分数是以上五种分数的加权平均和<maths num="026"><![CDATA[ <math><mrow><mi>S</mi><mo>=</mo><mfrac><mrow><munder><mi>&Sigma;</mi><mi>i</mi></munder><msub><mi>&alpha;</mi><mi>i</mi></msub><msub><mi>S</mi><mi>i</mi></msub></mrow><munder><mrow><mi>&Sigma;</mi><msub><mi>&alpha;</mi><mi>i</mi></msub></mrow><mi>i</mi></munder></mfrac><mo>,</mo></mrow></math>]]></maths>一般我们取α<sub>1</sub>=5,α<sub>2</sub>=2,α<sub>3</sub>=3,α<sub>4</sub>=5,α<sub>5</sub>=2;步骤七:根据已经评价出来的几何代价计算前K条几何代价最优的切分方式当进行完步骤六之后,我们把行图像切分成了一列子字符图像,同时给出了子字符块之间合并的几何代价,但是我们需要进一步把子字符图像合并为字符图像,从而完成字符的切分,下面我们利用步骤六得到的子字符块合并的代价,生成一些可能的子字符合并方案,每个方案都对应行图像的一种切分结果,我们在步骤八中评价这些方案,并给出最优方案;第7-1步:切分图建立对于已经切分好的N个子字符图像s<sub>1</sub>,s<sub>2</sub>,…,s<sub>N</sub>,建立一个有向图(V,E),其中节点数为N+1,标记为Node<sub>1</sub>,Node<sub>2</sub>,Node<sub>3</sub>,...,Node<sub>N+1</sub>,也即V={Node<sub>1</sub>,Node<sub>2</sub>,Node<sub>3</sub>,...,Node<sub>N+1</sub>};对于任意的Node<sub>i</sub>,存在从Node<sub>i</sub>到Node<sub>i+1</sub>,Node<sub>i+2</sub>,Node<sub>i+3</sub>,...的有向路径,其中路径Node<sub>i</sub>→Node<sub>i+j</sub>对应了从第i,i+1,...,i+j-1块子字符合并,也即合并子字符图像s<sub>i</sub>,s<sub>i+1</sub>,...,s<sub>i+j-1</sub>,路径的代价就是此合并对应的几何代价;切分图每条由起点Node<sub>1</sub>到终点Node<sub>N+1</sub>的路径都对应了子字符图像s<sub>1</sub>,s<sub>2</sub>,...,s<sub>N</sub>的一种合并方法,也就是对行图像的一种切分方式,因此我们称它为切分路径;第7-2步:产生前K条几何代价最优的切分路径:我们下面介绍如何计算切分图(V,E)中从起点Node<sub>1</sub>到终点Node<sub>N+1</sub>按代价的升序排列的前K条路径,这里每条路径都对应了行图像的一种切分方式,实际上就是子字符图像s<sub>1</sub>,s<sub>2</sub>,...,s<sub>N</sub>一种合并方案,按照此方案合并子字符s<sub>1</sub>,s<sub>2</sub>,...,s<sub>N</sub>,从而完成对行图像的切分;算法的具体过程如下:给定图(V,E),设N<sub>Node</sub>——图的节点数,N<sub>Node</sub>=N+1,N代表已经切分好的子字符图像的个数;N<sub>Edge</sub>——边的条数;Start——起始节点,即为Node<sub>1</sub>;Edge——终止节点,即为Node<sub>N+1</sub>;K——需要计算的最优路径条数;π<sup>k</sup>(v)——从起点Start到节点v的路径总代价排第k的路径,其中v的取值集合为节点集Node<sub>1</sub>,Node<sub>2</sub>,Node<sub>3</sub>,...,Node<sub>N+1</sub>,所达路径代价按升序排列,因此π<sup>1</sup>(v)就是从起点Start到端点v的最短路径,如果取v=Node<sub>N+1</sub>,那么π<sup>1</sup>(Node<sub>N+1</sub>)表示了从起点到终点的最短路径;Γ<sup>-1</sup>(v)——v的前趋节点的集合,即所有可能连接到v的节点的集合,对于任何u∈Γ<sup>-1</sup>(v),均存在路径u→v;·——两条路径的连接,其中a路径的终点是b路径的起始点,连接后的路径a·b以a路径的起点作为起点,b路径终点作为终点;C[v]——节点v的候选路径集合;然后按照下述步骤进行:7-2-1步:首先对于所有v∈V,计算π<sup>1</sup>(v),即分别计算从起点Start到各个节点的最短路径;7-2-2步:对于每个v∈V,如果π<sup>1</sup>(v),π<sup>2</sup>(v),...,π<sup>k-1</sup>(v)已经完成,下面介绍如何利用π<sup>1</sup>(v),π<sup>2</sup>(v),...,π<sup>k-1</sup>(v)计算π<sup>k</sup>(v),其中2≤k≤K;如果k=2,那么初始化候选路径集合C[v],对v的前趋节点的集合Γ<sup>-1</sup>(v)中的每一个元素u,找到从起点Start到节点u的最短路径,构造新的路径π<sup>1</sup>(u)·v,添加到v的候选路径集合里,即C[v]←{π<sup>1</sup>(u)·v|u∈Γ<sup>-1</sup>(v)};如果k>2,对路径π<sup>k-1</sup>(v),找到路径π<sup>k-1</sup>(v)中v的前趋节点u<sub>0</sub>,即路径π<sup>k-1</sup>(v)通过节点u<sub>0</sub>连到v,一定存在整数l,满足1≤l≤k-1,使得π<sup>k-1</sup>(v)从起点Start到u<sub>0</sub>时走过的路径与π<sup>l</sup>(u<sub>0</sub>)一致,也就是说π<sup>k-1</sup>(v)恰好等于由路径π<sup>l</sup>(u<sub>0</sub>)的终点u<sub>0</sub>连接到节点v,即π<sup>k-1</sup>(v)=π<sup>l</sup>(u<sub>0</sub>)·v,对这样的整数l,我们再计算π<sup>l+1</sup>(u<sub>0</sub>);然后我们从候选路径集合C[v]里面去掉路径π<sup>l</sup>(u<sub>0</sub>)·v,而把π<sup>l+1</sup>(u<sub>0</sub>)·v添加到候选路径集合C[v]里面,即令C[v]←{C[v]-{π<sup>l</sup>(u<sub>0</sub>)·v}}∪{π<sup>l+1</sup>(u<sub>0</sub>)·v};则求C[v]中的最短路径,C[v]中的最短路径就是π<sup>k</sup>(v);递归地用以上算法,就得到了前K条切分路径;第7-3步:字符识别CharCandidatesSet——图像识别候选集,其中的每个元素都包含了N<sub>Cand</sub>个识别候选字和N<sub>Cand</sub>个对应的识别置信度;CharCandidatesSetNum——图像识别候选集中元素的个数;设子字符为s<sub>1</sub>s<sub>2</sub>...s<sub>N</sub>,我们建立一个(N+1)×(N+1)的查询表,即LookupTable,LookupTable中的元素首先全部设为-1,清空图像识别候选集,即CharCandidatesSet,并令CharCandidatesSetNum=0;For 1≤k≤K对第k个候选切分路径,即几何代价按升序排列排在第k的候选切分路径,对s<sub>p</sub>s<sub>p+1</sub>...s<sub>q</sub>(1≤p≤q≤N)这样的合并方式,查询LookupTable中的元素LookupTable(p,q+1),它表示查询表LookupTable中第p行第q+1列的元素;如果LookupTable(p,q+1)=-1,那么说明这种合并还没有被识别过,对这种组合得到的图像进行识别,得到N<sub>Cand</sub>个候选字,并且估计每个识别候选字的置信度,见第8-1步,然后把识别候选字及其对应的识别置信度整体作为一个元素添加到图像识别候选集CharCandidatesSet,然后令LookupTable(p,q+1)=CharCandidatesSetNum,同时让CharCandidatesSetNum增加1,也即CharCandidatesSetNum=CharCandidatesSetNum+1;如果LookupTable(p,q+1)≠-1,那么说明这种合并已被考虑过,不用再处理End For这一过程带来的好处是避免了识别核心的重复工作,大大节约了时间,在后面的步骤中如果我们需要知道子字符块s<sub>p</sub>s<sub>p+1</sub>...s<sub>q</sub>合并后的识别结果时,只要查询LookupTable的第p行第q+1列元素,就得到子字符块s<sub>p</sub>s<sub>p+1</sub>...s<sub>q</sub>合并后的识别结果在CharCandidatesSet中的序号,从而找到在CharCandidatesSet对应位置中已经记录的子字符块s<sub>p</sub>s<sub>p+1</sub>...s<sub>q</sub>合并后的识别结果及相应的置信度;步骤八:依赖于前面给出的K条几何意义下最优的候选切分方案,根据二元语法模型给出每个子字符合并方案对应的语义-识别代价:第8-1步:字符置信度估计x——待识别的字符图像;c<sub>j</sub>(x)——由识别核心给出的对图像x的第j个候选识别字,识别核心根据识别距离由小到大的升序排列识别候选字,因此c<sub>1</sub>(x)就是图像x的首选识别候选字;d<sub>j</sub>(x)——由识别核心给出的图像x的第j个候选识别字c<sub>j</sub>(x)对应的识别距离,因此d<sub>1</sub>(x)表示图像x的首选识别候选字对应的识别距离;N<sub>Cand</sub>——识别核心对单字字符图像给出的识别候选字的个数,如前2-2步所述,该值为常数,只与识别核心本身有关;P(c<sub>j</sub>(x)|x)——图像x识别为c<sub>j</sub>(x)的置信度,这是我们需要估计的对象;对于7-3步得到的所有候选字,用基于Gauss模型的置信度估计方法估计候选字的置信度:<maths num="027"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>|</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><msub><mi>d</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mi>&theta;</mi></mfrac><mo>)</mo></mrow></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><mfrac><mrow><msub><mi>d</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mi>&theta;</mi></mfrac><mo>)</mo></mrow></mrow></mfrac><mo>,</mo></mrow></math>]]></maths>θ就是我们前面2-3步计算出来的;利用前面计算的混淆矩阵修正估计的置信度,其中混淆矩阵由2-4计算得到,修正置信度由<maths num="028"><![CDATA[ <math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>|</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>Cand</mi></msub></munderover><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>|</mo><mi>x</mi><mo>)</mo></mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>|</mo><msub><mi>c</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>得到;第8-2步:基于二元语法的语义-识别置信代价计算对于已经给出的K条行图像切分路径,对每条切分路径应用以下的方法计算其对应的平均语义-识别置信代价,声明如下符号及其意义:n<sub>k</sub>——按照第k条切分路径合并子字符图像,共得到n<sub>k</sub>个合并后的字符图像;image<sub>k,t</sub>——按照第k条切分路径合并子字符图像后的第t个字符图像,其中1≤k≤K,1≤t≤n<sub>k</sub>;c<sub>j</sub>(image<sub>k,t</sub>)——识别核心给出的字符图像image<sub>k,t</sub>的第j个识别候选字,其中1≤j≤N<sub>Cand</sub>,1≤k≤K,1≤t≤n<sub>k</sub>,P(c<sub>j</sub>(image<sub>k,t</sub>)|image<sub>k,t</sub>)对应它的识别置信度;由于字符图像的识别和置信度的估计已经在7-3步中完成,在此步骤中我们通过查询LookupTable的方法从CharcandidatesSet中得到我们需要的识别结果和置信度;对第k条候选切分路径,1≤k≤K,使用下述的Vieterbi方法计算语义-识别代价:令Q[n<sub>k</sub>][N<sub>Cand</sub>]是一个二维数组,其中Q[t][j]保存了从第一个字符图像某个候选字到字节点c<sub>j</sub>(image<sub>k,t</sub>)的最大可能候选字选择方式所具有的概率的对数值,另外取一个二维指针数组Path[n<sub>k</sub>][N<sub>Cand</sub>]用于记录计算过程;初始化t=1,1≤j≤N<sub>Cand</sub>Path[1][j]=NULL,Q[1][j]=log P(c<sub>j</sub>(image<sub>k,1</sub>))+log(c<sub>j</sub>(image<sub>k,1</sub>)|image<sub>k,1</sub>),递归2≤t≤n<sub>k</sub>,对1≤j≤N<sub>Cand</sub>计算Q[t][j],<maths num="029"><![CDATA[ <math><mrow><mi>Q</mi><mo>[</mo><mi>t</mi><mo>]</mo><mo>[</mo><mi>j</mi><mo>]</mo><mo>=</mo><munder><mi>max</mi><mrow><mn>1</mn><mo>&le;</mo><mi>l</mi><mo>&le;</mo><msub><mi>N</mi><mi>Cand</mi></msub></mrow></munder><mo>{</mo><mi>Q</mi><mo>[</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>]</mo><mo>[</mo><mi>l</mi><mo>]</mo><mo>+</mo><mi>log</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>imag</mi><msub><mi>e</mi><mrow><mi>k</mi><mo>,</mo><mi>t</mi></mrow></msub><mo>)</mo></mrow><mo>|</mo><msub><mi>c</mi><mi>l</mi></msub><mrow><mo>(</mo><mi>imag</mi><msub><mi>e</mi><mrow><mi>k</mi><mo>,</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>}</mo><mo>+</mo><mi>log</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>imag</mi><msub><mi>e</mi><mrow><mi>k</mi><mo>,</mo><mi>t</mi></mrow></msub><mo>)</mo></mrow><mo>|</mo><mi>imag</mi><msub><mi>e</mi><mi>k</mi></msub></mrow></mrow></math>]]></maths>另外找到使得Q[t-1][l]+log P(c<sub>j</sub>(image<sub>k,t</sub>)|cl(image<sub>k,t-1</sub>))最大的l,记作l<sup>*</sup>,即<maths num="030"><![CDATA[ <math><mrow><msup><mi>l</mi><mo>*</mo></msup><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>l</mi><mo>&le;</mo><msub><mi>N</mi><mi>Cand</mi></msub></mrow></munder><mo>{</mo><mi>Q</mi><mo>[</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>]</mo><mo>[</mo><mi>l</mi><mo>]</mo><mo>+</mo><mi>log</mi><mi>P</mi><mrow><mo>(</mo><msub><mi>c</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>imag</mi><msub><mi>e</mi><mrow><mi>k</mi><mo>,</mo><mi>t</mi></mrow></msub><mo>)</mo></mrow><mo>|</mo><msub><mi>c</mi><mi>l</mi></msub><mrow><mo>(</mo><mi>imag</mi><msub><mi>e</mi><mrow><mi>k</mi><mo>,</mo><mi>t</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mrow></math>]]></maths>然后令Path[t][j]指向字节点c<sub>1*</sub>(image<sub>k,t-1</sub>),即字节点c<sub>j</sub>(image<sub>k,t</sub>)的父节点为c<sub>l*</sub>(image<sub>k,t-1</sub>)终止t=n<sub>k</sub>最后找到j<sup>*</sup>,使得<maths num="031"><![CDATA[ <math><mrow><msup><mi>j</mi><mo>*</mo></msup><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>j</mi><mo>&le;</mo><msub><mi>N</mi><mi>Cand</mi></msub></mrow></munder><mi>Q</mi><mo>[</mo><msub><mi>n</mi><mi>k</mi></msub><mo>]</mo><mo>[</mo><mi>j</mi><mo>]</mo><mo>,</mo></mrow></math>]]></maths>回溯Path[n<sub>k</sub>][j<sup>*</sup>]所指的路径,输出路径上的每个字节点,得到字符串即为我们的字符识别结果;在得到最优字符串的同时,我们也得到了最大可能路径的概率的对数值Q[n<sub>k</sub>][j<sup>*</sup>],我们将这个值作为对这条切分路径的语义-识别代价估计,将这个值除以n<sub>k</sub>,得到平均语义-识别代价<maths num="032"><![CDATA[ <math><mrow><msub><mi>H</mi><mi>k</mi></msub><mo>=</mo><mfrac><mrow><mi>Q</mi><mo>[</mo><msub><mi>n</mi><mi>k</mi></msub><mo>]</mo><mo>[</mo><msup><mi>j</mi><mo>*</mo></msup><mo>]</mo></mrow><msub><mi>n</mi><mi>k</mi></msub></mfrac><mo>;</mo></mrow></math>]]></maths>步骤九:综合几何代价与语义代价给出最终结果第9-1步:我们需要估计几何代价与语义-识别代价的融合参数λ声明如下约定:N<sub>L</sub>——已经给出子字符和正确子字符合并方式的行图像个数,即训练样本个数;n<sub>i,k</sub>——第i个训练样本第k个候选切分方式对应的字符个数;n<sub>i,0</sub>——第i个训练样本正确切分得到字符个数;g<sub>i,k</sub>——第i个训练样本第k个候选切分路径对应的几何代价,则g<sub>i,1</sub>表示第i个训练样本所有切分方式中几何代价的最小值;G<sub>i,k</sub>——第i个训练样本第k个候选切分方式对应的平均几何代价取归一化后的值;H<sub>i,k</sub>——第i个训练样本第k个候选切分方式对应的平均语义-识别代价;g<sub>i,0</sub>——第i个训练样本完全正确切分对应的几何代价;G<sub>i,0</sub>——第i个训练样本完全正确切分对应的平均几何代价取归一化后的值;H<sub>i,0</sub>——第i个训练样本完全正确切分对应的平均语义-识别代价;我们挑选N<sub>L</sub>个训练样本行图像,对每个行图像按照从步骤三到步骤八的顺序进行处理,从而得到n<sub>i,k</sub>,g<sub>i,k</sub>,H<sub>i,k</sub> 1≤i≤N<sub>L</sub>,1≤k≤K;我们选用下面的方式对步骤六中评价的几何代价进行归一化,并求其平均值,即我们令<maths num="033"><![CDATA[ <math><mrow><msub><mi>G</mi><mi>ik</mi></msub><mo>=</mo><mfrac><mn>1</mn><msub><mi>n</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub></mfrac><mi>log</mi><mrow><mo>(</mo><mi>&lambda;</mi><msup><mi>e</mi><mrow><mo>-</mo><mi>&lambda;</mi><mrow><mo>(</mo><msub><mi>g</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>g</mi><mrow><mi>i</mi><mo>,</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></msup><mo>)</mo></mrow><mn>1</mn><mo>&le;</mo><mi>i</mi><mo>&le;</mo><msub><mi>N</mi><mi>L</mi></msub><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi><mo>;</mo></mrow></math>]]></maths>类似地我们按照前面的步骤得到正确切分对应的几何代价归一化后的分数G<sub>i,0</sub> 1≤i≤N<sub>L</sub>和平均语义-识别代价H<sub>i,0</sub> 1≤i≤N<sub>L</sub>;记<maths num="034"><![CDATA[ <math><mrow><msubsup><mi>T</mi><mi>i</mi><mi>k</mi></msubsup><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>H</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>+</mo><msub><mi>G</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi><mo>,</mo></mrow></math>]]></maths>然后记T<sub>i</sub><sup>0*</sup>(λ)为第i个样本完全正确切分对应的T值,即<maths num="035"><![CDATA[ <math><mrow><msubsup><mi>T</mi><mi>i</mi><mn>0</mn></msubsup><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>H</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>+</mo><msub><mi>G</mi><mrow><mi>i</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>;</mo></mrow></math>]]></maths>极小化<maths num="036"><![CDATA[ <math><mrow><mi>N</mi><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>N</mi><mi>L</mi></msub></munderover><mo>#</mo><mo>{</mo><msubsup><mi>T</mi><mi>i</mi><mi>k</mi></msubsup><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow><mo>></mo><msubsup><mi>T</mi><mi>i</mi><mn>0</mn></msubsup><mrow><mo>(</mo><mi>&lambda;</mi><mo>)</mo></mrow><mo>|</mo><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi><mo>}</mo></mrow></math>]]></maths>即得到对加权系数λ的估计;其中#{T<sub>i</sub><sup>k</sup>(λ)>T<sub>i</sub><sup>0</sup>(λ)|1≤k≤K}表示在给定λ的情况下,第i个样本图像对应的K个候选切分路径中,T值比正确切分方式对应的T值还要大的候选路径的个数,极小化方法依然采用类似于极小化θ的尝试法:第9-2步:根据融合参数λ计算最优的切分识别路径对一般待切分的样本行图像,我们依步骤三——步骤八,计算出K条候选切分路径,并计算出每条路径的平均识别-语义代价H<sub>k</sub> 1≤k≤K和归一化后的平均几何代价<maths num="037"><![CDATA[ <math><mrow><msub><mi>G</mi><mi>k</mi></msub><mo>=</mo><mfrac><mn>1</mn><mi>n</mi></mfrac><mi>log</mi><mrow><mo>(</mo><mi>&lambda;</mi><msup><mi>e</mi><mrow><mo>-</mo><mi>&lambda;</mi><mrow><mo>(</mo><msub><mi>g</mi><mi>k</mi></msub><mo>/</mo><msub><mi>g</mi><mn>1</mn></msub><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></msup><mo>)</mo></mrow><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi><mo>,</mo></mrow></math>]]></maths>其中g<sub>k</sub> 1≤k≤K对应步骤六中得到的每条切分路径的几何代价,则综合的代价T<sub>k</sub>=H<sub>k</sub>+G<sub>k</sub> 1≤k≤K,取<maths num="038"><![CDATA[ <math><mrow><msup><mi>k</mi><mo>*</mo></msup><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi></mrow><mrow><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi></mrow></munder><msub><mi>T</mi><mi>k</mi></msub><mo>,</mo></mrow></math>]]></maths>则第k<sup>*</sup>个候选切分方式作为我们给出的最优切分。
地址 100084北京市北京100084-82信箱