启体书法字的矢量化

2010-06-05 06:31武仲科敖雪峰周明全
中文信息学报 2010年6期
关键词:矢量化链表角点

曹 芳,武仲科,敖雪峰,周明全

(北京师范大学 虚拟现实和可视化技术研究所,北京 100875)

1 引言

随着计算机图形图像技术的深入发展,其应用范围不断扩大。中国传统书法的展示和研究临摹需要大量现有优秀书画作品的传播作为基础,因此这些作品的电子化以及电子化后的二次开发都意义重大,对中国优秀传统文化的继承与发展起到重要的推进作用。

计算机对于图形的表示可以分为两大类:矢量图和位图。位图在表达清晰复杂的图像信息时有着优越的功能,但其占用大量存储空间,使得应用受到了限制。矢量图使用图形的元素点、线、矩形、多边形、圆和弧线等表达图形信息,而它们都是通过数学公式计算获得的,因此便于去除多余信息,所以矢量图形文件体积一般较小,无论放大、缩小或旋转等不会失真。这在表达书法字笔画问题上有很好的借鉴作用。

随着计算机技术的发展,大量的书法作品被扫描入计算机,作为光栅图像的文件存储占用大量空间,并且在进行变换时会产生失真,尤其是经放大后,字的边界会出现锯齿状。因此更好的方式是将它们转化为边界轮廓表示的矢量图形。矢量书法字存储小,可以方便快速地进行各种变换,实现高质量的显示和输出。同时矢量书法字便于对数字化书法文档的搜索,书法字的识别,书法文档的压缩和书法学习的应用[1]。因此其可以广泛应用于排版,动画和CAD等领域,具有非常好的应用前景。

在中国书法字的相关研究中,大量华人聚集的马来西亚,中国的香港科技大学,台湾交通大学,和内地的浙江大学等都走在业内前列。他们的研究主要集中在传统毛笔的电子化仿真模拟[2],笔迹的艺术再现[2],单一书法字的电子化处理,比如书法字的矢量化和矢量轮廓的平滑[3],以及书法字的数字化应用[4]等方面,都取得了令人瞩目的成绩。但在书法字矢量化相关研究中,大量研究处于理论阶段,实际应用较少,因此目前市场上存在矢量化书法字数目是非常少的,而且基本都是几种古体字,应用方式也很单一,主要是按输入的文字来选择不同字体。至于将其应用于虚拟书法学习中就更少了,因此我们所做的对启体书法字的矢量化研究的应用前景还是很大的。

常见的图像矢量化算法有:基于细化的方法包括边界追踪和适当骨架法;基于非细化的方法,包括轮廓线的方法、基于Hough变换的方法、正交方向搜索法(OZZ)、基于网格模式的方法、基于游码的方法和基于稀疏像素的方法;还有整体矢量化算法[5]。

基于非细化的矢量化算法不必先对光栅图像中的线体细化,提取中心骨架线。其中常见的轮廓线法是首先找到线体的形状,即图线的边缘轮廓信息,然后对图线边缘的轮廓信息进行对称搜索,在该过程中获得图线的中轴骨架矢量,取样和跟踪中心轴点[6]。本论文探讨基于非细化的轮廓线的矢量化算法,在寻找轮廓的过程中,附带将汉字的每一个笔画找出来,整个过程不同于以往通过细化来提取笔画的方式,所以称为非细化的矢量化方法。

启功先生,字元伯,又作元白,北京人。是我国当代著名的书画家、文物鉴定家、教育家、诗人。曾在北京师范大学任教授、博导,执教多年,他的书画作品流传广泛。启功先生借鉴历史上多位书法大家的精髓,加之自身深厚的文化功底,写得的书法字自成一体,俊秀舒展,收放自如,称为“启体”,见图 1。他为世人以及北京师范大学留下了宝贵的艺术财富,在国内乃至国际上都有着深远的影响。书法是中国的国粹,是我国最古老的艺术形式,她本身具有独一无二的表态传神的功能,将优秀的书法作品传承发扬,将启体传承发扬,是一项伟大的工作。

图1 启功书法字

本文探讨非细化的轮廓线的矢量化算法,首先对启功书法字生成的位图进行二值化,然后边缘检测完成边界跟踪存入设定的链表,得到完整边界完成矢量化,同时将字体拆分为以笔画为单位的矢量图。我们对3 755个一级汉字的启功书法字完成了矢量化的工作,并对每一个字以单独笔画为单位,分别进行了矢量化,制作了一个完整的包含一级汉字和每个汉字相应的每一笔画的启功字库。这一工作的完成对于常见启体书法字的广泛传播和逐笔临摹打下了基础,同时我们在本实验室自主开发的书法学习系统上进行了成功的试验。

在下文中,第2节介绍轮廓线提取算法;第3节阐述笔画分割方法;第4节描述对矢量化结果的优化处理方法,第5节介绍建立书法字库,最后给出结果。

2 轮廓线提取

书法字作为光栅图像的一个特殊性就是边界是它最为重要的信息,本系统在取得汉字对应笔画的矢量化数据时,没有使用传统上最常见的将笔画骨架提取,然后对笔画进行分割的方法,而是采用基于角点的笔画分割算法对目标笔画轮廓进行精确提取的方法,因此可以不必对线体细化,提取中心骨架线,而是直接追踪光栅图像中的线体边界对汉字进行矢量化。

2.1 前期处理

在本系统中,首先对一幅书法灰度图像进行二值化处理,得到一幅黑白图像。然后建立原始二值图的数据矩阵。

2.2 提取过程

经过二值化后的黑白图像,可以较为容易的检测出边缘。边缘检测技术就是提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,边缘检测实际上就是检测图像特征发生变化的位置。一个书法字,作为一个有一定宽度的汉字,他的边界就是这个字的轮廓,是宽度为一个像素点的轮廓线,它的内部经过填充就是汉字的位图。我们将图像向各个方向移动一个像素的宽度,减去原始的位图,既获得了汉字位图各个方向的边缘,然后将原始二值图的数据矩阵存储为可识别外轮廓的矩阵,既边界轮廓的二值图的数据矩阵。

边缘检测完成后,将边界点的坐标存到边界链表中,然后追踪边缘的坐标。边界跟踪时,每次从最左下方开始搜索,然后延八个方向依次是左上方、上方、右上方、右方、右下方、下方、左下方和左方进行扫描,跟踪出一个组件的一条完整轮廓。这样就可以很好的矢量化有一定宽度的书法字,将他们的轮廓坐标记录下来,完成下一步的应用。矢量化结果见图2。

图2 矢量化结果

3 笔画分割

启体书法字的特征是断笔清晰,粘连的地方较少,属于一笔一画写就的。因此把一个汉字分解成若干笔画,使每一笔画成为一个独立的文件成为可能。我们建立这样一个过程,在梯度变化剧烈的地方寻找到交错点,再辅以人工交互,确定出两笔画间的交叉点,最后将一个笔画完整分开。

3.1 角点检测

概念介绍:在计算机视觉和图像处理中, 角点被定义为:图像边界上曲率足够大的点[7];系统还用到一个概念叫“十字角点”,是指两笔画相交构成十字交叉状态时那个位置的角点。该角点是一个笔画十字交叉点当中的角点。

为140度,就将它记录在一个角点链表中。这种方式得到的角点数目显然超过实际有效的角点个数,于是有必要进行一番筛选,或者辅以人工交互,选择出可连接的交角点,使其形成正确的角点对[9]。

3.2 寻找可连角点

汉字往往由若干笔画交错构成,当我们确定了某一角点后,如果它处于两个笔画的相交处,在它可能的前进方向上至少会有两个角点与之相邻,所以我们还需要确定这个角点该和哪一个角点连接,也就是找到这个角点的可连角点。

本文按照敖雪峰[9]的思想,设计的方法是:新建一个笔画链表,从左下方开始扫描得到的第一个边界点作为开始检测点,并从开始检测点沿着该检测点所在的边界线往下检测,同时将检测点依次加入到当前笔画链表中。直到遇到一个角点。先计算当前角点与旁边索引号相隔为k的点之间的连线的切矢值1;再计算当前角点与其余角点的连线的切矢值2;选取与切矢值1最接近的角点连线,也就找到了当前角点的可连角点。如图3所示。

图3 找到当前角点的可连角点

3.3 笔画分割过程

找到当前角点的可连角点后,为它们做直线插值。将插值得到的点都添加到当前笔画链表中,然后再从该角点的可连角点的向前方向切矢继续往下检测。因为最初在角点对找的不合适时,已添加人工交互,所以可以准确的将一条笔画分割出来,这样得到分割后的笔画轮廓矢量后,就是得到一条完整笔画的边界信息。对封闭的轮廓进行填充,就很容易的得到了笔画的位图。

4 矢量化结果的处理

4.1 结果的优化

仔细观察分解后的笔画,不可避免的会产生边界的粗糙(如图4、5显示),所以我们在毛躁的边界处采用局部插值的方法进行了平滑的优化工作,得到了良好的效果。方法是,在不够平滑的笔画两端各选一点,在笔画链表中找到距离最近的对应的两个点,进行插值,就得到了平滑的边界,对封闭轮廓再填充,就是优化后的笔画图,见图6。

图4 分割后的笔画的矢量化

图5 对应的分割后的笔画

图6 优化后的笔画轮廓字库

4.2 交互获取笔画顺序

对一个书法字进行了矢量化,将笔画分割出来后将要完成的是存储工作,这时就需要考虑如何获取笔画的顺序,笔顺是汉字一个重要特性,也是学写汉字时帮助记忆的重要方法。对笔顺的记录直接关系到这些矢量化后的书法字的下一步应用。

在我们的系统里,我们采用的方法是在矢量化和对笔画的分割过程中,交互进行提前笔顺的。具体到每一笔画的矢量化和分割时,系统设计了一个“泛提”功能,用一个类似“套索”的工具大体圈定一个笔画,再对这一区域进行矢量化和寻找角点的处理,然后提取笔画。得到的结果往往是以目标笔画为中心的若干小笔画,然后我们比较这些笔画的长度,显然最长的笔画是我们的目标笔画。如果这个过程是按照笔画原本的顺序进行的,那么存储在笔画链表中的笔画就是按照书法字笔画顺序得到的结果。如图7所示。

图7 获取笔画顺序

5 书法库的建立

矢量化完成后就要建立它的字库,方便查询。通常情况矢量字库都建有一个文件头, 用来记录版权、字体、原阵点阵大小等信息。

5.1 笔画存储

由于我们采取按照笔画顺序交互提取每条笔画的方式,所以每当一条笔画提取出来之后即将之保存到我们的笔画库文件中,相应的笔画库文件的每个项目由笔画所在汉字索引,笔画索引,笔画轮廓点数,笔画轮廓点顺序排列坐标和笔画在汉字中的书写顺序这几个字段组成。

5.2 书法字存储与编码

在我们的系统中,我们对所建立的3 755个一级国标汉字按照其在标准中出现的顺序按阿拉伯数字建立索引,并将其对应的书法汉字图像一并入库进行存储以建立书法汉字库。这里所建立的数字索引即是我们笔画库文件中的汉字索引字段指向的索引。

将启功书法字矢量化结果,依照上述方法,我们建立了含3 755个一级汉字的启功书法库。该库包含每个字分解后所有笔画的矢量化结果,以及笔画的对应的位图,笔画拆解时候是按照正确的笔顺拆解的,可以同时记录下笔画顺序。照这样的方法,在书法字的学习系统中,我们可以方便的按顺序逐笔调用,完成临摹。同时由于存储的是笔画轮廓的矢量信息,我们还可以方便的比对临摹结果和原始笔画的差异,帮助用户判断临摹的效果。图 8展示启功书法矢量库中一些字的轮廓。

图8 书法矢量化字列举

6 总结

本文探讨了一种基于非细化的轮廓线的启功书法字矢量化算法,完成了对一级汉字的启功书法字及每个字对应笔画的矢量化,构造了这样一个启功字体书法矢量库,其可以应用于CAD, 3D字生成以及书法学习中,我们将在未来的文章中展示这些应用。 图 9是两组启功书法的矢量化结果。

图9 启功书法矢量化结果展示

致谢

在启功字体的矢量化和应用系统的构建过程中,我得到了王燕妮师姐的大力帮助。对于一级汉字矢量化,是由赵鹏、张丽、张美霞和我共同完成的,在此要对他们的无私帮助和重要工作深表感谢。

[1] Junsong Zhang, Hongwei Lin, Jinhui Yu. A Novel Method for Vectorizing Historical Documents of Chinese Calligraphy[C]//Zhejiang University State Key Lab of CAD&CG Hangzhou,Zhejiang,310058,China.

[2] Nelson.S.H Chu and Chiew Lan Tai. Real Time Painting with an Expressive Virtual Chinese Brush[J]. IEEE Computer Graphics and Applications (S0272-1716),2004,10:76-85.

[3] Hsi-Ming Yang, Jainn-Jyh Lu, and Hsi-Jian Lee. A Bezier Curve-based Approach to Shape Description for Chinese Calligraphy Characters[C]//Department of Computer Science and Information Engineering National Chiao Tung University Hsinchu, Taiwan 30050.

[4] 吴英飞. 书法重现及其在数字化图书馆中的应用[D].中国博士学位论文全文数据库,2008.

[5] 彭荣杰. 图像矢量化方法研究与应用[D].中国优秀硕士学位论文全文数据库. 2006.

[6] 李学营. 点阵图像矢量化的研究[D]. 中国优秀博硕士学位论文全文数据库 (硕士),2007,(06).

[7] S M Smith, J M Brady. SUSAN. A New Approach to Low Level Image Processing [R]. UK:Internal Technical Report TR95SMS1c, 1995.

[8] THEC-H,CHINR-T. On the Detection of Dominant Points on Digital Curves[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,1989,11(8):859-872.

[9] 敖雪峰. 基于角点检测的毛笔字笔画分割算法[C]//图像图形技术与应用进展——第三届图像图形技术与应用学术会议论文集, 2008.

[10] 张鹏远,董海,周文灵.计算机图像处理技术基础[M].北京:北京大学出版社,1996.

[11] 李宾,谭建荣,彭群生.一个基于扫描串的统-整体矢量化算法[J].软件学报,1998,6:426-431.

[12] X Lin, S Shimotsuji, M Minoh, et al. Efficient Diagram Understanding with Charactenstic Pattern Detection[C]//Computer Vision, Graphics and Image Processing, 1985,30:84-106.

[13] CHEN Ju-wei,LEESuh-yin. On-line Chinese Character Recognition via a Representation of Spatial Relationships between Strokes[J]. International Journal of Pattern Recognition and Artificial Intelligence,1997,11(3):329-357.

[14] 章毓晋.图像分割[M].北京:科学出版社.

猜你喜欢
矢量化链表角点
一种改进的Shi-Tomasi角点检测方法
多支撑区域模式化融合角点检测算法仿真
如何用链表实现一元多项式相加
跟麦咭学编程
基于FAST角点检测算法上对Y型与X型角点的检测
农村土地承包经营权确权登记调查底图制作方法的探究
DEM的建立及其在林业上的应用
基于MTF规则的非阻塞自组织链表
交互式矢量化技术在水文站网分布图编绘中的应用
乡镇区域作物秸秆产生量估算方法研究