基于轮廓拟合的新风格书法字合成

2017-07-10 10:27韩德志章夏芬
计算机应用与软件 2017年6期
关键词:部首关键点轮廓

石 雷 韩德志 章夏芬 毕 坤

(上海海事大学信息工程学院 上海 201306)

基于轮廓拟合的新风格书法字合成

石 雷 韩德志*章夏芬 毕 坤

(上海海事大学信息工程学院 上海 201306)

限于当前有限的数字书法资源,书法数据库中有时不一定有用户所需风格的书法字图像。针对这个问题,提出了基于两个书法字轮廓合成一系列具有中间风格的新书法字的方法。首先提取同一字不同风格的两个样本字的轮廓,接着用贝塞尔曲线拟合轮廓,再把矢量化轮廓字并归一化以获取可比性;然后,通过形状匹配法找到两个书法字对应的轮廓点对,选取关键点作为控制点,合成具有中间风格的书法字矢量轮廓;最后,用填充算法填充轮廓得到一个新风格的书法字。

轮廓拟合 填充算法 书法字合成

0 引 言

随着数字化技术和存储技术的迅猛发展,大量纸张书法作品被数字化成图像存储在计算机里,相应的书法创作和鉴赏也从纸张方式延伸到数字方式。在数字图书馆CADAL里[1],书法作品页面被切分成单字,做成书法单字字库以提供服务。用户可以从中选择自己所需单字合成名称,譬如“中国工程院”门口的院名以及院标上的书法字是用CADAL数据库中的单个书法字合成的,“浙江大学”门口的书法字是从毛泽东的书法字中挑选而后合成的。电子产品的普及使越来越多的人提笔忘字,利用历史书法字进行创作能体现出书法艺术文化,其需求不断增长。例如在产品包装、T恤设计、牌匾制作、视觉图形设计以及广告设计等应用中,通常都要求使用一组风格统一的书法字。但是,有限的书法数据库中检索出来的书法字的风格各异,并不一定是所需的,即数据库中缺少指定风格的书法字。因此,如何从已有的书法字中生成各种所需要风格的书法字成为亟需解决的问题。

书法字图像的本质是图像,图像是可以合成的。从这个角度出发,对已有的书法字图像进行分析,经过形变、合成,能得到具有新风格的书法字。基于这一思想,本文提出了一种基于书法字轮廓拟合的新风格书法字合成方法:提取用户所选的同一字不同风格的两个书法单字的轮廓,计算出匹配的轮廓点对,用参数控制点对间的变化距离,合成一系列中间风格的书法字轮廓,最后填充轮廓得到一个具有新风格的书法字。

1 相关工作

新风格书法字的生成有多年的研究。徐颂华首先实现了一个智能的新风格书法字生成系统[2],可以根据用户不同的要求生成不一样风格的书法字。但系统中新风格的书法字是基于一个指定的书法字,通过变换参数得到的,而用户很多时候并不确定这个书法字到底变到何种程度正是所需的。CADAL项目组的俞凯构建了一个风格一致的书法字合成系统[3]:提取已有书法字的部首,用来自不同字的部首合成一个新的书法字。这个想法很好,但书法字有粘连、变形、枯笔,很多时候部首提取的正确率不高。Cao Shi等提出类似的基于已有书法笔画生成新书法字的方法[4],笔画比部首更具体、变化更多。但是,同样道理,从已有书法字中提取笔画和提取部首一样有难度,至今尚未发现公开出版的提取书法笔画的实用系统。CADAL项目组的夏洋提出了一种基于本体的特定书法作品风格的楷书书法字合成方法[5],通过书法部首选择、书法笔画选择、书法部首合成及书法字合成各个阶段的算法设计,并最终实现一套基于本体的特定书法作品风格楷书书法字合成系统。这个方法很好,但也存在不足之处:所有的合成未改变原有字和部首的形状,若数据库中没有所需风格的字或部首,则指定风格的合成难以完成。Jun Dong所给出的新风格书法字生成的细节[6],是针对隶书的,通过笔画轮廓上的关键点的移动使笔画产生形变,生成新风格书法字,这种生成方法和徐颂华的方法[2]有类似的优缺点。

上述合成方法都是要基于书法笔画或部首的提取和分解的。虽然书法字笔画和部首能够更精确地表示书法字风格,但由于书法字存在笔画变形、枯笔、残笔、笔画模糊等特点,使得笔画和部首提取的正确率本身成为合成的关键因素,目前仍没有适用于多种字体风格的有效的部首和笔画提取方法。且不同风格的笔画组合而成的书法字虽然不同于原有风格,但可能会引起整个书法字的不协调。文献[7]则另辟蹊径,提出了一种适用于书法字轮廓变形的算法,根据训练样本的轮廓,用参数控制合成一系列中间风格的书法字轮廓。此算法合成的书法字对比使用不同风格笔画组合而成的书法字,更贴近用户所需,用户只需要选中源和目标风格就能生成一系列中间风格的新书法字。然而,该论文由于完成了源和目标书法字的关键轮廓点对匹配,所生成的中间风格的关键点对无法形成一个封闭区域,因此无法还原得到完整的新风格书法字。

本文提出了一种基于轮廓拟合的中间风格书法字生成方法,主要贡献如下:

1) 从单个书法字图像中选择同一字的两个不同风格的书法字图像,提取其轮廓点中的关键点;接着以关键点为控制点,使用贝塞尔曲线分段拟合轮廓曲线,得到一个可以自由变换大小的轮廓矢量字,再将两个书法字大小归一化。

2) 计算两个书法字的轮廓点的相似性,匹配对应轮廓点。

3) 通过设置不同参数调整轮廓点位置,再通过贝塞尔曲线拟合轮廓点,合成出一系列中间风格的书法字轮廓,最后通过填充的方法还原书法字的墨迹得到一个新的书法字。

本文中所使用的书法字图像来自于CADAL项目[1],扫描得到的页面图像被切分成单个书法字图像[8]。在预处理时,对书法字图像进行去噪、二值化成黑白图像。

2 书法字轮廓拟合

2.1 轮廓提取和跟踪

本文采用Canny算法[9]提取书法字图像的轮廓,并在提取轮廓时将图像上的所有像素点分为三类:背景点、轮廓点以及内部点。

一个汉字中含有多个笔画或部首,其轮廓线形成多个闭合区域。得到书法字的轮廓以后,将它们分成独立的互不重叠的闭合区域,作为生成轮廓矢量字的基本单元。本文采用轮廓跟踪的方法,按从下到上,从左到右的顺序找到第一个轮廓点,接着按顺时针方向找到与之相邻的下一个轮廓点,以此类推,直到重新回到起始点。这样便跟踪得到一个轮廓点的有序集合,这些轮廓点首尾相连就是一个封闭轮廓。接着,遍历所有未经过的轮廓点,得到所有封闭轮廓。设某一封闭轮廓上共有n个轮廓点,若n<8,则该轮廓是噪声,去除。最后,按闭合轮廓顺时针方向的右侧是内部点(书法字上的点),外侧是背景点的规则,将轮廓分为外轮廓和内轮廓。

2.2 关键点检测

轮廓是由多个像素点来表达的,多个连续的像素点形成轮廓线;这其中多个连续像素点存在冗余信息,只有部分点是关键点。书法字轮廓上的关键点是指拐点或者角点,即在轮廓线走势上变化最为剧烈的点。求轮廓线上的拐点,可通过计算每个像素点曲率,找最值方法得到。然而,像素点是离散的,其曲率不像连续曲线上的点那样精确;近似计算得到的拐点曲率与非拐点曲率差别较小,且对形状及尺寸变化较敏感,易受到噪声的干扰。尚振宏和刘明业根据离散曲线上拐点两侧多个点对间的欧氏距离之平方和的相对大小来计算曲率[10]。这种定义来源于离散曲线的外观特征,比用连续空间中曲率的差分近似表示更能准确反映出离散曲线上拐点的本质。选定邻接距离d的值(d>1),曲线上的点Pi的曲率是以Pi为中心,邻接距离d范围内,离Pi距离相等的点对之间的欧氏距离的平方和:

(1)

其中x、y分别表示像素点的坐标值,k为邻域内点对个数。d邻域内,Ci(k)值最大的轮廓点对应曲率最大值,为关键点。然而,由于腐蚀等各种原因,扫描处理得到的书法字轮廓仍然会存在抖动的现象,仅用曲率检测拐点很难排除这类噪声。因此,本文提出第二种拐点特征,定义为曲线上一点pi的到点pi+k和点pi-k所连直线的距离,即:

(2)

其中,preik=|pi-kpi-k+1|+|pi-k+1pi-k+2|+…+|pi-1-pi|,nextik=|pi+1pi+2|+|pi+2pi+3|+…+|pi+k-1-pi+k|,点pi、pi+k和点pi-k所组成的弧段中,pi处方向变化得越剧烈,曲线越弯曲,Di(k)就越大。两种方式的融合能更准确地区别关键与非关键点。本文选择的关键点,满足下式:

Di(k)/Ci(k)>θ

(3)

其中,经过实验测试,取k=3,θ=0.015。通过式(3)求得候选关键点后,还要对候选关键点进行筛选,要求两关键点之间,至少要有3个以上的轮廓点。从双重弯曲度最大的拐点开始,依次删除不符合上述要求的临近关键点,最终得到含有m个关键点的关键集。按上述方法依次求出所有闭合轮廓的关键点集。如图1(b)所示为“快”字的轮廓放大图,轮廓上的点为检测出的关键点。

图1 轮廓关键点提取

2.3 Bezier曲线拟合轮廓

相邻两个关键点以及它们之间的所有轮廓点组成一条轮廓段,一个闭合轮廓关键集的m个拐点将闭合轮廓划分为m条轮廓段,每一条轮廓段都可以用Bezier曲线来拟合。Bezier曲线能够根据控制点的坐标绘制出的一条平滑的矢量曲线。用Bezier曲线拟合轮廓段,要先确定其控制点。本文采用三次贝塞尔曲线,表示为:Q(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3

(4)

其中,P0、P1、P2和P3分别表示三次贝塞尔曲线的四个控制点,P0和P3为曲线段的起点和终点,t(0≤t≤1)为控制参数,t=0时为起始点,t=1时为终止点。取关键点集中两个距离最近的点对,作为Bezier曲线的起始点和终止点,还需计算另外两个控制点,即P1和P2的坐标。以Bezier曲线上所有的点与待拟合轮廓段上的对应点距离之和最小时,贝塞尔曲线最接近待拟合曲线,即所求P1和P2应该使下式S最小[11]:

(5)

其中,ti=(i-1)/(k-1),k为轮廓段上点的个数,Qi为轮廓段上第i个点,Q(ti)为Bezier曲线上的对应点。根据定义,可知P0=Q1,P3=Qk。任意取被拟合的轮廓上的两轮廓点,比如取三分之一处(即t=1/3)的点P1,三分之二处(即t=2/3)的点P2,代入式(4)求出相应的P1和P2。变化t值,再取两个点对,计算式(5)的S值。能使S最小的P1和P2为所要求Bezier曲线的控制点。同理可绘制出控制点集中其他点对的拟合曲线,最终书法字轮廓用Bezier曲线绘制,达到轮廓矢量化目的。矢量化的书法字轮廓放大时不再有锯齿型。

用两个不同风格的书法字在匹配相应点对时,需要它们的大小在同一个量级上。但扫描得到的书法字,有的来自小字碑拓,有的来自大字帖,同一个字大小不相同。为了能进行点对匹配,进而根据匹配的点对做合成,需要将书法字的大小归一化。本文统一将轮廓图像调整为128×128像素大小,如图2所示。

图2 贝塞尔曲线拟合书法字轮廓

3 轮廓填充

得到了书法字轮廓之后,还需填充轮廓包围区域才能形成一个完整的书法字。传统的区域填充算法有扫描线填充算法[12]、种子填充算法[13]、边填充算法[14]等。针对书法字轮廓的特点,本文提出一种基于边界跟踪的扫描线填充算法。

由于提取的书法字轮廓可能形成多个封闭区域,可分别判断每一轮廓的填充区域,然后在同一背景上先填充外轮廓,再用内轮廓覆盖,完成填充。因为每一个轮廓块是一个单连通闭合区域,可以通过边界点判断出填充区域。对某一封闭轮廓,首先用上文所述方法顺时针跟踪轮廓点,得到轮廓点的有序序列。设当前填充点的横坐标为s(初始时令s=-1),填充的终点横坐标为e;当前轮廓点为Pi(xi,yi),其下一个和上一个轮廓点分别为Pi+1(xi+1,yi+1)和Pi-1(xi-1,yi-1);按从上到下、从左到右的顺序遍历轮廓上的每一个像素点,按以下规则操作:

1) 若s=-1,且yi+1≤yi

2) 若s≠-1,且yj-1

3) 若不满足前两条,则继续向后遍历。

遍历完所有的点后,完成该轮廓块的填充。当填充完所有的轮廓块,就得到了一个完整的书法字。如图3所示。

图3 书法字轮廓的填充

4 新风格书法字合成

合成中间风格书法字的关键是如何将两个书法字的关键轮廓点一一对应起来,即轮廓点的匹配。轮廓点的匹配主要分为三个步骤:1) 轮廓块的匹配,以轮廓块作为合成的单元;2) 对应轮廓块上关键点对的匹配;3) 对应轮廓段上非关键轮廓点对的匹配。

所有轮廓点配对完成后,以其中一个字的轮廓点为源,另一个字的轮廓点为目标。受Bezier曲线生成算法中设置参数t的启发,本文设置一个类似的参数ρ,当ρ=0时得到的是源书法字,当ρ=1时得到的是目标书法字,当0<ρ<1时为中间风格书法字,既非源书法字,也非目标书法字。

4.1 轮廓块的匹配

同一个字可以有多种风格,但不管风格如何改变,整体的笔画或结构需要保持一致。各笔画或结构的对应在形态上具体表现为轮廓块的对应,两个相对应轮廓块上应该有足够多的相似点。

分别来自源书法字和目标书法字的两个点,若能构成点对,则它们存在相似的“邻居关系”。所谓“邻居关系”,是指它们和周围点的位置关系可用周围领域内其他轮廓点的数量来表示。本文采用文献[8]的方法,以书法字轮廓上一点为中心,分别取半径r=16,r=32,r=64和r=128为半径画圆,与8个方向的直线相交形成32个扇形区域。记pi为来自源书法字第i个轮廓点,qj为来自目标书法字的第j个轮廓点,pik表示点pi在第k个扇面内的轮廓点数量(k=1,2,…,32),S(pi,qj)表示两点的相似程度:

(6)

S(pi,qj)值越小,两点越相似。通过式(6)可得到源书法字上某轮廓点p在目标书法字轮廓上的最相似点为q,若能同时满足q在源书法字轮廓上的最相似点也为p,则认为这两点是对应点。设两书法字的轮廓块数分别为m和n,Ai和Bj(i=1,2,…,m;j=1,2,…,n)是分别来自两书法字的两个不同轮廓块,a和b分别为两轮廓块上轮廓点的个数,N(Ai,Bj)为两轮廓块上的对应点数量,当N(Ai,Bj)满足:N(Ai,Bj)=max[N(Ak,Bl):k=1,2,…,m;l=1,2,…,n]

(7)

(8)

则认为两轮廓块Ai和Bj为对应的轮廓块。

4.2 关键点的匹配

对应轮廓块匹配完成后,若两字轮廓块数量相同且一一对应,则可直接进行关键点的匹配。点对的匹配,不是孤立进行的,而是需要保持原有的先后约束关系。因此,以式(6)为度量找到匹配值最小的点还需满足与原有轮廓点的邻居关系,即原有的先后顺序,以保持各自在字轮廓上与前后点的位置关系不变。

设对应两轮廓块上关键点的数量分别为n和m,且n≤m,关键点序列分别为Pn和Qm,对应关键点对序列Dn初始时为空,按以下方法寻找对应关键点:

1) 首先根据式(6)找出Pn上一点p与其在Qm上的相似点q使S(pi,qj)最小,将p和q作为第一个对应关键点对,记作p1和q1,加入Dn。以p1和q1为起点,按顺时针方向将Pn和Qm记为(p1,p2,…,pn)和(q1,q2,…,qm),再按此顺序寻找匹配点对。

2) 以p1为起点,按顺序遍历关键点序列集Pn。设当前点pi的相似点为qj,Dn中最后一对关键点对中的一点为qk∈Qm。若S(pi,qj)<φ(φ为经验阈值),则认为pi和qj相似度太低,将该点对从Dn中删除。继续遍历,若j

3) 再次遍历序列集Pn,若其第i个点pi不在集合Dn中,则找Dn中离pi最近的两个点pa和pb(a

4) 以同样的方式遍历序列集Qm,若存在点qj不在集合Dn中,做与步骤3类似处理。

通过以上步骤,集合Dn中将有t对有序关键点对,将两个对应的轮廓块分别分成t段。如图4所示,是两个“之”字的对应点对的轮廓块:“之”字第一个轮廓块(构成一个“点”)上有6个点对,分别标记为1~6;第二个轮廓块上有17个关键点对;同一个点对使用了相同序号。

图4 关键点匹配示例:编号相同者为相应点对

有时两字风格相差很大,可能有粘连或断笔,这使得同一个字不同书法字的轮廓块数量不一样。这种情况下,上述方法失效。这种情况下,需要通过人工的手段指定或修正部分关键点,使轮廓块能够相互对应,以便达到良好效果。

4.3 非关键轮廓点的匹配

对应轮廓块上的对应关键点将各自分割成若干一一对应的轮廓段,这些轮廓段可由一系列以关键点为头尾的序列表示。与关键点的匹配类似,在寻找对应非关键轮廓点时也要遵循序列的前后关系。所不同的是,由于关键点有决定整个书法字结构的左右,因此需要严格一一对应,而非关键轮廓点在合成时是主要形变的部分,可以一对多或多对一,也不要求精准配对。

设对应两轮廓段上非关键轮廓点的数量分别为n和m,且n≤m,非关键轮廓点对应序列分别为Pn={p1,p2,…,pn}和Qm={q1,q2,…,qm}。记a=⎣m/n」,b=m%n,a=n/(b+1),其中a和b为正整数,k为正实数。从p1开始遍历Pn,其中的每个点都从q1按顺序对应上Qm中的a个或a+1个点。对于Pn中的某一点pi:

1) 若i=⎣k×c」,其中c为正整数且 ,则pi对应Qm序列上a+1个点;

2) 反之,pi对应Qm上a个点。

根据以上规则遍历Pn上所有的点即可完成非关键轮廓点的匹配。

4.4 轮廓的合成与填充

轮廓的合成实质上就是根据已有的n个对轮廓点对集合Dn,通过某种映射得到新的轮廓点集Pn。其中,轴平移便是最简单的一种。设对应点对pi和pj的坐标分别为(xi,yi)和(xj,yj),则新的轮廓点p的坐标为:

(x,y)=[xj+(xi-xj)×ρ,yj+(yi-yj)×ρ]

(8)

其中0<ρ<1,ρ越大,p越接近pi,反之则越接近pj。通过调整ρ的值,便可控制合成的轮廓在两种不同风格间变换。

为确保合成轮廓为闭合曲线,先用前面第2节所述的曲线拟合方法将合成轮廓矢量化,再用第3节所述的填充方法对轮廓进行填充,便可得到所需的书法字。如图5和图6所示分别为两个“世”字和“之”字在取不同值时合成效果。ρ=0和ρ=1时分别是源书法字与目标书法字,其他的ρ取值合成的是介于这两者风格之间的新风格书法字。ρ的取值越靠近0,所合成的新字图像风格与源书法字越相似;ρ的取值越靠近1,所合成的新字图像风格与目标书法字越相似。

图5 “世”字的合成效果

图6 “之”字的合成效果

5 结 语

本文探讨了一种基于轮廓拟合的中间风格书法字合成方法,通过直接控制轮廓点在两个书法字对应轮廓点之间的位置,合成出一种中间风格的书法字轮廓,避免了提取笔画以及建立风格语义与轮廓形状之间映射关系的复杂过程;合成以贝塞尔曲线拟合的轮廓段位基本单位,可获得矢量闭合轮廓,克服了离散轮廓点不连续的缺点;最后以轮廓块为单位,填充获得完整的书法字。

此方法易于实现,可用于书法字相关艺术设计等应用中,同时也为书法字合成相关研究提供了有价值的参考。进一步的工作是研究如何降低噪声的影响,以获取更加自然的书法字轮廓;使用不同字的轮廓块合成新的书法字;建立书法墨迹模型,还原更真实的书法字。

[1] China-America Digital Academic Library[OL].[2016-03-10]. http://www.cadal.zju.edu.cn/ NewCalligraphy/.

[2] Xu S, Jiang H, Jin T, et al. Automatic Generation of Chinese Calligraphic Writings with Style Imitation[J]. IEEE Intelligent Systems, 2009, 24(2):44-53.

[3] Yu K, Wu J Q, Zhuang Y T. Style-consistency calligraphy synthesis system in digital library[C]//Joint International Conference on Digital Libraries, Jcdl 2009, Austin, Tx, Usa, June. DBLP, 2009:145-152.

[4] Shi C, Xiao J G, Jia W H, et al. Automatic Generation of Chinese Character Based on Human Vision and Prior Knowledge of Calligraphy[M]// Natural Language Processing and Chinese Computing. Springer Berlin Heidelberg, 2012:23-33.

[5] 夏洋. 基于本体模型的特定风格书法字合成研究[D]. 杭州: 浙江大学, 2014.

[6] Dong J, Xu M, Zhang X J, et al. The Creation Process of Chinese Calligraphy and Emulation of Imagery Thinking[J]. IEEE Intelligent Systems, 2008, 23(6):56-62.

[7] 章夏芬. 中国数字书法检索与作品真伪鉴别的研究[D]. 杭州: 浙江大学, 2006.

[8] 章夏芬, 庄越挺, 鲁伟明, 等. 根据形状相似性的书法内容检索[J].计算机辅助设计与图形学学报,2005(11):2565-2569.

[9] Canny J. A computational cpproach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,8(6).

[10] 尚振宏, 刘明业. 基于欧氏距离的拐点检测算法[J].计算机应用,2004,24(10):88-91.

[11] 张俊松. 书法碑帖图像去噪、轮廓拟合及纹理建模研究[D]. 杭州:浙江大学,2007.

[12] Pelagotti A, Piuri V. Neural spectral composition for function approxi-mation[C]//Proc of ICNN, Houston, TX.June 9-12,1997,2:860-864.

[13] 孙家广, 杨长贵. 计算机图形学[M]. 北京:清华大学出版社, 1998.

[14] 王琪, 王丽萍, 陈凯迪.一种简单的图案填充算法[J].微计算机信息, 2005,21(9):116-117.

CALLIGRAPHIC CHARACTER SYNTHESIS BASED ON CONTOUR FITTING

Shi Lei Han Dezhi*Zhang Xiafen Bi Kun

(CollegeofInformationEngineering,ShanghaiMaritimeUniversity,Shanghai201306,China)

Limited to the current limited number of calligraphy resources, calligraphy database does not necessarily have the user needs the style of calligraphy images. To solve this problem, a new method of synthesizing a series of calligraphic characters with intermediate style based on two calligraphic outline is proposed. First, the contours of two sample words with different styles of the same word are extracted, then the contours are fitted by Bezier curve, then the vectorized contour words are normalized to obtain the comparability. Then, the contour points of the two calligraphic words are found by the shape matching method, and the key points are taken as the control points to synthesize the calligraphic vector outline with the intermediate style. Finally, fill the outline with the fill algorithm to get a new style of calligraphy.

Contour fitting Fill algorithm Calligraphic character synthesis

2016-04-29。国家自然科学基金项目(61373028,61070154)。石雷,硕士生,主研领域:数字图像处理。韩德志,博士后。章夏芬,讲师。毕坤,讲师。

TP391

A

10.3969/j.issn.1000-386x.2017.06.010

猜你喜欢
部首关键点轮廓
肉兔育肥抓好七个关键点
建筑设计中的防火技术关键点
弄清偏旁与部首
OPENCV轮廓识别研究与实践
基于实时轮廓误差估算的数控系统轮廓控制
系在绳上的“冬”
高速公路主动发光轮廓标应用方案设计探讨
机械能守恒定律应用的关键点
同部首的字