当前位置
主页 > 新闻资讯 >
一种计算机模仿汉字手写笔迹的方法
热度:10来源:http://tianjin.mofangbiji.com

本发明公开了一种计算机模仿汉字手写笔迹的方法。采用计算机图像处理和人工智能的方法,可以实现由计算机来学习并模仿个人手写笔迹。该方法预先对已有的个人手写体汉字样本的进行了笔划分解与分类,对每个用户写过的每个笔划、部首、整字以及字体内部空间结构都进行了统一的参数化,并连同几种常用字体,由此建立了个人手写字体数据库;在模仿个人手写字迹的时候,首先将待模仿汉字分解成部首或笔划,并逐一在个人手写字体数据库中找到每个部首或笔划,并按照该个人的字体内部空间结构特征将各部首或笔划重组起来,作为模仿字迹输出。本发明直接从汉字的笔划偏旁构成规则上进行分析,从而更加本质的抓住了个人笔迹的特征,更好的模仿个人笔迹。

图片.png

一种计算机模仿汉字手写笔迹的方法

技术领域

本发明涉及计算机艺术与美学以及人工智能领域,尤其涉及一种计算机模仿汉字手写笔迹的方法。


背景技术

已经有大量的工作来模拟人类的艺术思维,并进一步建立计算机智能系统以解决真实世界里的问题。在中文字方面,1995年的Proceedings of the InternationalConference on Computer Processing of Oriental Languages(ICCPOL)会议论文集(文章标题“Chinese glyph generation using character composition and beautyevaluation metrics”)公布了一个使用启发式的方法来尝试定量评估中文字体美感的问题:他们定义了在汉字写作里的四条规则,并实现到了他们基于规则的美学评分模块中;这一模块简单地对四条规则逐一计算相应的分数,并得到他们的加权和。2005年的IEEE Intelligent Systems杂志(文章标题“Automaticgeneration of artistic Chinese calligraphy”,以下简称文献IS2005)刊登了一个中国艺术书法的自动生成系统。但是,他们的工作主要关注在使用基于约束的推理来生成格式化的中文字体,而几乎没有关注到这些生成结果如何具有美感。

为了获得更好的计算机中文字体生成结果,也为了尝试对美学做定量计算,我们通过学习基本数值关系背后的训练集从而实现了汉字美观度评分。许多在工作中使用过专家系统的人知道,高级的专家规则并不总能正常工作;而有时这并不一定是由于专家系统本身的知识盲点,或者问题根本无法总结。因此我们觉得,我们基于学习技术的数据驱动方法可以提供一种比人类专家的大脑评测更好的机器评价能力。

在绘画方面,计算机图形学领域中同样有一些研究自动绘画创作的工作,但这大都是在给定一幅照片的基础上完成的。其他也有人探索了结合人工智能和人机交互技术来创作绘画风格的动画,如2006年ACM学报ACM Trans.Graph刊登的文章“Animating Chinese paintings through stroke-based decomposition”用笔划分解的方法来实现动态的绘画。在视觉艺术领域之外,计算机音乐是另一个应用人工智能技术来进行或协助创作的成功方向。在2007年的国际人工智能联合大会(IJCAI2007)上,有一个独立的专题叫音乐人工智能(MUSIC-AI2007)来专门研讨这一话题。值得注意的是,对于计算机音乐的研究包括自动音乐创作与音乐评价,这与我们在中文字体上的思路比较相似。此外还有其他大量的研究工作:如故事创作,可信执法官,互动式故事,等等,都旨在捕捉美学的可计算性。


发明内容

本发明的目的是克服现有技术的不足,提供一种计算机模仿汉字手写笔迹的方法。

计算机模仿汉字手写笔迹的方法包括以下步骤:

1)预先对已有个人手写体汉字样本进行笔划分解与分类,对每个用户写过的每个笔划、部首、整字以及字体内部空间结构都进行了统一的参数化,并连同几种常用字体,建立个人手写字体数据库;

2)对待模仿汉字,在其对应的楷体字上做笔划分解以及参数化;

3)逐一根据个人手写字体数据库构造待模仿汉字的各个部首或笔划;

4)根据个人手写字体数据库模仿待模仿汉字的内部空间结构,将模仿得到的各个部首或笔划拼接成完整的汉字,作为模仿字迹结果;若有多个备选方案,则择一作为模仿字迹结果。

所述的预先对已有个人手写体汉字样本进行笔划分解与分类,对每个用户写过的每个笔划、部首、整字以及字体内部空间结构都进行了统一的参数化,并连同几种常用字体,建立个人手写字体数据库步骤:

(1)对每个已有的个人手写体汉字图像,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字;

(2)根据步骤(1)所得的参数向量,将每个汉字按整字、部首、笔划组织成层次式的树形结构表示;树形结构中的每一个节点都表示了个人书写笔迹中的一个单字或部首或笔划,每个单字或部首的各个子部分都是其对应节点的子节点;

(3)在步骤(2)所得树形结构中,对每一节点的单字或部首,计算出其内部空间结构的参数化矩阵。

所述的对每个已有的个人手写体汉字图像,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字步骤:

a)对汉字图像做细化处理,以获得该字的骨架图像;

b)将该字与其标准楷书字体做笔划匹配,用启发式搜索的方法找出骨架各部分与标准笔划的一一对应关系,完成骨架上的笔划分解;

c)对每笔划上的各骨架点,以其为圆心画椭圆,使该椭圆尽量大而又不包含任何原字体图像上的空白部分,该笔划的所有椭圆区域总和即为笔划分解所得的图像轮廓;

d)将所有椭圆的长短轴、圆心坐标列为一个矩阵,即为该字体的参数向量。

所述的在步骤(2)所得树形结构中,对每一节点的单字或部首,计算出其内部空间结构的参数化矩阵步骤:

e)对每个单字或部首的各个子部分:部首或笔划作出其范围矩形,即在二维平面上包含该字部分且边框平行于x轴与y轴的面积最小矩形;

f)计算每两个子部分的范围矩形之间的相互空间位置,即对每两个范围矩形计算它们在水平、竖直方向上的重叠部分,设得到的两个量分别为Bh、Bv;设该单字或部首共有n个子部分,则得到一个n×n的矩阵,其中每个矩阵元素为一个二元组(Bh,Bv),即该单字或部首的内部空间结构的参数化矩阵。

所述的对待模仿汉字,在其对应的楷体字上做笔划分解以及参数化步骤:

(4)对该待模仿汉字,如权利要求3所述,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字;

(5)对该待模仿汉字,如权利要求4所述,计算出其内部空间结构的参数化矩阵。

所述的逐一根据个人手写字体数据库构造待模仿汉字的各个部首或笔划步骤:

(6)枚举该汉字所有可能的部首级与笔划级的子部分划分方案;

(7)对步骤(6)中的每一种子部分划分方案,对方案中的各个子部分,在个人手写字体数据库中查找该子部分是否在该个人已有笔迹中出现;若有,则选出所有该子部分的笔迹作为候选,若已有笔迹不足5~10个,则随机以常用字体的该子部分补足;

(8)为步骤(7)中的每个子部分的每个候选,计算其子部分仿写可靠度;若该候选笔迹来源于该个人,则该候选的子部分仿写可靠度为1,否则为0;

(9)为步骤(6)中的每一种子部分划分方案,计算其仿写可靠度;设按该方案,待仿写汉字由n个子部分构成,则该方案的仿写可靠度X=x1A1+x2A2+...+xnAn,其中x1,x2,...,xn分别为该方案下各个子部分的子部分仿写可靠度,A1,A2,...,An为在待仿写汉字的标准楷体字中,各个子部分范围矩形所占面积在整字范围矩形所占面积的比例;

(10)为每一种子部分划分方案选出仿写可靠度最高的一组仿写结果。

所述的根据个人手写字体数据库模仿待模仿汉字的内部空间结构,据此将模仿得到的各个部首或笔划拼接成完整的汉字,作为模仿字迹结果;若有多个备选方案,则择一作为模仿字迹结果步骤:

(11)预先在标准楷体字体中,将所有汉字按照结构分类,分类包括:独体结构、左右结构、上下结构、内外结构、左中右结构、上中下结构;

(12)对待模仿汉字,在该个人已写过的字中,查找该汉字是否被其写过;则将所有该人写过的该汉字笔迹的内部空间结构参数矩阵作为候选;

(13)若该汉字未曾被该人写过,则在该个人已写过的字中,查找出所有与待模仿汉字属同一结构分类的汉字;

(14)对步骤(13)已找出的汉字,计算每个汉字与其对应在各个常用字体上的字体相似度;两个字体间的字体相似度定义为:在放缩字体使得两个字体的范围矩形面积一样时,两个字体的字迹部分的重合面积占范围矩形面积的比例;对每一常用字体,取所有所求字体相似度的平均值作为该常用字体与待仿写人字迹的总体相似度;

(15)取总体相似度最大的常用字体,按照待模仿汉字在该常用字体中的内部结构参数矩阵,将如步骤(10)所述的各个部首或笔划的仿写结果组合成整字,作为该字的仿写输出。

本发明与现有技术相比具有的有益效果:

(1)实现了高度自动化的笔迹仿写,大大减少了其中原本繁琐的人工操作;

(2)从汉字的笔划形状与空间结构关系上直接分析与保存,更加本质的抓住了个人笔迹的潜在特征,使仿写结果更为合理;

(3)选择部首与笔划的策略更加理性合理,使仿写字迹更加接近本人的笔迹。


附图说明

图1是本发明所述系统的实施例流程图;

图2(a)是汉字样本字体;

图2(b)是图2(a)中字体的细化结果;

图2(c)是图2(a)中字体的“几何图”;

图3是本发明所述笔划分解及汉字参数化的流程示例图;

图3(a)是汉字样本字体;

图3(b)是图3(a)的“几何图”;

图3(c)是图3(a)的对应标准字体,即正楷字体;

图3(d)是图3(a)在骨架上的笔划分解结果;

图3(d)是图3(a)的最终笔划分解结果;

图4是本发明所述利用用户交互界面协助笔划分解及汉字参数化的流程示例图;

图4(a)是汉字样本字体;

图4(b)是图4(a)的“几何图”;

图4(c)是图4(a)的标准字体,即正楷字体;

图4(d)是图4(a)的自动分解结果,彩色笔划表示在自动分解成功的笔划;

图4(e)是用户通过交互界面在字体上勾勒的剩余笔划草图;

图4(f)是根据用户草图得到的骨架上的笔划匹配结果;

图4(g)是综合图4(d)和图4(f)所示结果后的笔划骨架;

图4(h)是图4(a)的最终笔划分解结果;

图5是手写字体数据库中,两个汉字字体以树型结构表示的示例图;

图6是汉字手写笔迹模仿结果的一些示例,其中第1、3行分别是两个不同个人的手写笔迹,第2、4行分别是本发明所述系统通过该个人其他手写字迹来模仿得到的仿写结果;

图7是汉字手写笔迹模仿结果的一些示例,其中前4行是用作建立个人手写字体数据库的个人手写笔迹样例,后4行是利用前4行的笔迹样例应用本发明所述实施例系统得到的仿写结果。


具体实施方式

计算机模仿汉字手写笔迹的方法包括以下步骤:

1)预先对已有个人手写体汉字样本进行笔划分解与分类,对每个用户写过的每个笔划、部首、整字以及字体内部空间结构都进行了统一的参数化,并连同几种常用字体,建立个人手写字体数据库;

2)对待模仿汉字,在其对应的楷体字上做笔划分解以及参数化;

3)逐一根据个人手写字体数据库构造待模仿汉字的各个部首或笔划;

4)根据个人手写字体数据库模仿待模仿汉字的内部空间结构,将模仿得到的各个部首或笔划拼接成完整的汉字,作为模仿字迹结果;若有多个备选方案,则择一作为模仿字迹结果。

所述的预先对已有个人手写体汉字样本进行笔划分解与分类,对每个用户写过的每个笔划、部首、整字以及字体内部空间结构都进行了统一的参数化,并连同几种常用字体,建立个人手写字体数据库步骤:

(1)对每个已有的个人手写体汉字图像,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字;

(2)根据步骤(1)所得的参数向量,将每个汉字按整字、部首、笔划组织成层次式的树形结构表示;树形结构中的每一个节点都表示了个人书写笔迹中的一个单字或部首或笔划,每个单字或部首的各个子部分都是其对应节点的子节点;

(3)在步骤(2)所得树形结构中,对每一节点的单字或部首,计算出其内部空间结构的参数化矩阵。

所述的对每个已有的个人手写体汉字图像,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字步骤:

a)对汉字图像做细化处理,以获得该字的骨架图像;

b)将该字与其标准楷书字体做笔划匹配,用启发式搜索的方法找出骨架各部分与标准笔划的一一对应关系,完成骨架上的笔划分解;

c)对每笔划上的各骨架点,以其为圆心画椭圆,使该椭圆尽量大而又不包含任何原字体图像上的空白部分,该笔划的所有椭圆区域总和即为笔划分解所得的图像轮廓;

d)将所有椭圆的长短轴、圆心坐标列为一个矩阵,即为该字体的参数向量。

所述的在步骤(2)所得树形结构中,对每一节点的单字或部首,计算出其内部空间结构的参数化矩阵步骤:

e)对每个单字或部首的各个子部分:部首或笔划作出其范围矩形,即在二维平面上包含该字部分且边框平行于x轴与y轴的面积最小矩形;

f)计算每两个子部分的范围矩形之间的相互空间位置,即对每两个范围矩形计算它们在水平、竖直方向上的重叠部分,设得到的两个量分别为Bh、Bv;设该单字或部首共有n个子部分,则得到一个n×n的矩阵,其中每个矩阵元素为一个二元组(Bh,Bv),即该单字或部首的内部空间结构的参数化矩阵。

所述的对待模仿汉字,在其对应的楷体字上做笔划分解以及参数化步骤:

(4)对该待模仿汉字,如权利要求3所述,对其做细化,笔划分解,提取出其轨迹与书写宽度特征,以参数向量的形式表示每个汉字;

(5)对该待模仿汉字,如权利要求4所述,计算出其内部空间结构的参数化矩阵。

所述的逐一根据个人手写字体数据库构造待模仿汉字的各个部首或笔划步骤:

(6)枚举该汉字所有可能的部首级与笔划级的子部分划分方案;

(7)对步骤(6)中的每一种子部分划分方案,对方案中的各个子部分,在个人手写字体数据库中查找该子部分是否在该个人已有笔迹中出现;若有,则选出所有该子部分的笔迹作为候选,若已有笔迹不足5~10个,则随机以常用字体的该子部分补足;

(8)为步骤(7)中的每个子部分的每个候选,计算其子部分仿写可靠度;若该候选笔迹来源于该个人,则该候选的子部分仿写可靠度为1,否则为0;

(9)为步骤(6)中的每一种子部分划分方案,计算其仿写可靠度;设按该方案,待仿写汉字由n个子部分构成,则该方案的仿写可靠度X=x1A1+x2A2+...+xnAn,其中x1,x2,...,xn分别为该方案下各个子部分的子部分仿写可靠度,A1,A2,...,An为在待仿写汉字的标准楷体字中,各个子部分范围矩形所占面积在整字范围矩形所占面积的比例;

(10)为每一种子部分划分方案选出仿写可靠度最高的一组仿写结果。

所述的根据个人手写字体数据库模仿待模仿汉字的内部空间结构,据此将模仿得到的各个部首或笔划拼接成完整的汉字,作为模仿字迹结果;若有多个备选方案,则择一作为模仿字迹结果步骤:

(11)预先在标准楷体字体中,将所有汉字按照结构分类,分类包括:独体结构、左右结构、上下结构、内外结构、左中右结构、上中下结构;

(12)对待模仿汉字,在该个人已写过的字中,查找该汉字是否被其写过;则将所有该人写过的该汉字笔迹的内部空间结构参数矩阵作为候选;

(13)若该汉字未曾被该人写过,则在该个人已写过的字中,查找出所有与待模仿汉字属同一结构分类的汉字;

(14)对步骤(13)已找出的汉字,计算每个汉字与其对应在各个常用字体上的字体相似度;两个字体间的字体相似度定义为:在放缩字体使得两个字体的范围矩形面积一样时,两个字体的字迹部分的重合面积占范围矩形面积的比例;对每一常用字体,取所有所求字体相似度的平均值作为该常用字体与待仿写人字迹的总体相似度;

(15)取总体相似度最大的常用字体,按照待模仿汉字在该常用字体中的内部结构参数矩阵,将如步骤(10)所述的各个部首或笔划的仿写结果组合成整字,作为该字的仿写输出。

如图1所示,本发明所述的实施例系统包括个人书写笔迹样例10、笔划分解与参数化20、手写字体数据库建立30、笔划与部首仿写40、字体空间结构模仿50、个人笔迹仿写结果60。

个人书写笔迹样例10:该部分包括多个该个人笔迹的字体图像;在本实施例中,所有的字体图像都被分离成了一个个的单字,然后将它们归一化成同一尺寸的二值黑白图像(长宽均为300像素点);其示例如图2A所示。

笔划分解与参数化20:在本实施例中,该部分包括以下步骤:

(A)从字体图像中提取其结构特征,其步骤详述如下(参见图2A、图2B、图2C):

1)对汉字图像101做细化(Thinning)处理,以获得该字的骨架图像;本实施例应用了ACM学报在1994年所公布的一个图像细化算法(“A noniterativethinning algorithm”A CM TransactionsonMathematical Software,20(1):5-20,1994);其示例如图2B所示;

2)从骨架图像中提取“特征点”(“特征点”的定义参考IEEE学报1999年公布的一篇文章“Identification of fork points on the skeletons of handwritten Chinesecharacters”IEEE Transactions on Pattern Analysisand Machine Intelligence(PAMI)21(10):1095-1100,1999,以下简称文献PAMI99),这些特征点将把整个骨架分割成若干条曲线段;

3)对每条曲线段都用多条首尾相连的直线段来近似,具体步骤如下:对每一条未被直线段取代的曲线段AB,设A、B分别是其两端端点;计算以曲线段AB上的某一点C为顶点的夹角ACB,当角ACB最大时的角度值小于一个预定值(如135度),则将曲线段AB分割成AC,CB两段;否则以直线段连接AB两点,取代原有的曲线段AB;该步骤不断进行直至所有曲线段均被直线段所取代;

4)由一系列直线段及其端点构成的图被称为该字体的“几何图”(geometricgraph);对“几何图”做修正和剪枝;本实施例应用了文献PAMI99中使用的骨架图修正技术;最终得到的“几何图”示例如图2C所示;

(B)在步骤(A)中所述汉字字体与其标准字体间计算出一个最佳的笔划匹配,从而完成笔划分解,其步骤详述如下(参见图3):

1)对步骤(A)所述字体的标准字体重复步骤(A),得到该标准字体的“几何图”;并假设标准字体的笔划分解结果已经预知;

2)在步骤(A)中所述字体的“几何图”与其标准字体的“几何图”间,计算出一个最佳的笔划匹配结果;本实施例应用了《模式识别》杂志于2001年公布的一篇文章(“Model-based stroke extraction and matching for handwritten Chinesecharacter recognition”.Pattern Recognition,34(12):2339-2352,2001)中所述启发式搜索的方法来计算出“几何图”上的笔划间一一对应关系;

3)将“几何图”上以多条直线段表示的各笔划轨迹,转化为在原字体轮廓上的笔划分解结果,其具体方法为:对各笔划上的各直线段上的每一点,以其为圆心画椭圆,使该椭圆尽量大而又不包含任何原字体图像上的空白部分(即在原字体的黑白图像上,该椭圆区域内的所有像素点均为黑色),该笔划的所有椭圆区域总和即为笔划分解所得的图像轮廓;

(C)对与标准字体形态相差较大的字体,对步骤(B)中无法完成匹配的部分笔划,使用一个交互式的用户界面来协助笔划分解,其步骤详述如下(参见图4):

1)用户通过交互式的用户界面来为字体描绘其骨架草图;

2)根据用户草图来修改由标准字体而得的“几何图”;本实施例将步骤(2)中未完成匹配的部分笔划在标准字体“几何图”中均由用户草图的对应部分所替代;

3)重复步骤(B),重新计算笔划间的最佳匹配方案,从而完成笔划分解;(D)对完成笔划分解的字体,将其参数化,以向量的形式表达;本实施例采用了2005年IEEE Intelligent System杂志中的一篇文献Automatic generation of artisticChinese calligraphy中的汉字参数化方法,每个字体都等价的用一个矩阵在向量空间中表示。

手写字体数据库建立30:如图5所示,在本实施例中对已有个人手写体汉字样本,并连同几种常用字体,建立个人手写字体数据库;将每个汉字按整字、部首、笔划组织成层次式的树形结构表示;树形结构中的每一个节点都表示了个人书写笔迹中的一个单字或部首或笔划,每个单字或部首的各个子部分都是其对应节点的子节点;

对每一节点的单字或部首,计算出其内部空间结构的参数化矩阵:

1)对每个单字或部首的各个子部分:部首或笔划作出其范围矩形,即在二维平面上包含该字部分且边框平行于x轴与y轴的面积最小矩形;

2)计算每两个子部分的范围矩形之间的相互空间位置,即对每两个范围矩形计算它们在水平、竖直方向上的重叠部分,设得到的两个量分别为Bh、Bv;设该单字或部首共有n个子部分,则得到一个n×n的矩阵,其中每个矩阵元素为一个二元组(Bh,Bv),即该单字或部首的内部空间结构的参数化矩阵。

笔划与部首仿写40:在本实施例中,该部分包括以下步骤:

1)对待仿写汉字,对其正楷字体做笔划分解与参数化20,并计算出其内部空间结构的参数化矩阵;

2)通过其正楷字体,枚举该汉字所有可能的部首级与笔划级的子部分划分方案,如图5(a)中的“行”字,其可能的子部分划分方案包括:P0,P1P2,P1P5P6,P3P4P2,P3P4P5P6共五种;

3)对每一种子部分划分方案,对方案中的各个子部分,在手写字体数据库建立20中得到字体数据库中查找该子部分是否存在,选出所有该子部分的笔迹作为候选;

4)为每个子部分的每个候选,计算其仿写可靠度;若该候选为该个人所写笔迹,则该候选的仿写可靠度为1;若该候选来自于常用字体,则仿写可靠度为0;

5)为每一种子部分划分方案,计算其仿写可靠度;设按该方案,待仿写汉字由n个子部分构成,则该方案的仿写可靠度X=x1A1+x2A2+...+xnAn,其中x1,x2,...,xn分别为该方案下各个子部分的子部分仿写可靠度,A1,A2,...,An为在待仿写汉字的标准楷体字中,各个子部分范围矩形所占面积在整字范围矩形所占面积的比例;

(10)为每一种子部分划分方案选出仿写可靠度最高的一组方案,作为笔划与部首仿写40的仿写结果。

字体空间结构模仿50:在本实施例中,该部分包括以下步骤:

1)预先在标准楷体字体中,将所有汉字按照结构分类,分类包括:独体结构、左右结构、上下结构、内外结构、左中右结构、上中下结构;

2)对待模仿汉字,在该个人已写过的字中,查找该汉字是否被其写过;则将所有该人写过的该汉字笔迹的内部空间结构参数矩阵作为候选;

3)若该汉字未曾被该人写过,则在该个人已写过的字中,查找出所有与待模仿汉字属同一结构分类的汉字;

4)对已找出的汉字,计算每个汉字与其对应在各个常用字体上的字体相似度;两个字体间的字体相似度定义为:在放缩字体使得两个字体的范围矩形面积一样时,两个字体的字迹部分的重合面积占范围矩形面积的比例;对每一常用字体,取所有所求字体相似度的平均值作为该常用字体与待仿写人字迹的总体相似度;

5)取总体相似度最大的常用字体,按照待模仿汉字在该常用字体中的内部结构参数矩阵,将笔划与部首仿写40中得到的各个部首或笔划的仿写结果组合成整字,作为该字的仿写结果。

个人笔迹仿写结果60:在本实施例中,该部分采用与个人书写笔迹样例10相同的表示方式,即同一尺寸的二值黑白图像,作为仿写结果输出;其示例如图6、图7所示。