结合笔压的毛笔字笔锋模拟方法

文档序号:6523743阅读:2290来源:国知局
结合笔压的毛笔字笔锋模拟方法
【专利摘要】结合笔压的毛笔字笔锋模拟方法应用于手写系统。本算法发明的主要目的在于分析不同毛笔字技法结合手写板笔压写毛笔字时的笔锋变化,并做不同的算法处理,达到真正的融合艺术感的毛笔字字体效果,而不是简单的手写效果。本算法应着重保护对于不同毛笔字技法所对应的笔锋实时生成模拟算法进行保护。
【专利说明】结合笔压的毛笔字笔锋模拟方法
【技术领域】
[0001]该技术主要应用于手写系统,例如签名,手写艺术字,电子书法等,应对需要实时显示书写效果的领域,【技术领域】涉及到了毛笔字技法的分析,这块属于艺术领域,系统模拟及搭建属于软件领域,主要领域应为软件领域,算法的目的在于创造可以实时写出字体和字体对应笔锋效果的毛笔字,所以应是计算机图形学的一个分支,属于软件领域,同时由于涉及到了艺术分析,所以也可以属于数字艺术领域或者数字媒体【技术领域】。
【背景技术】
[0002]有技术多是非实时的,通过扩散算法达到相应的水墨效果,通常是先录入笔迹,然后根据笔记进行计算,最后生成图片;另外也有实时的毛笔字算法,但是算法本身注重的是笔画效果,而不是毛笔字本身整体的艺术感,不强化笔锋,只能让人看到觉得这是毛笔字,但是却写不出毛笔字相应的技法效果,处于一种只有技术,没有将艺术融合进去的境地,并没有分析不同字体应有不同的笔锋,不同技巧也应有不同的处理方式。

【发明内容】

[0003]本算法发明的主要目的在于分析不同毛笔字技法结合手写板笔压写毛笔字时的笔锋变化,并做不同的算法处理,达到真正的融合艺术感的毛笔字字体效果,而不是简单的手写效果。
[0004]实时毛笔字模拟是有的,但是利用手写板结合笔压去模拟不同书法技巧下笔锋变化的毛笔字系统是没有的,本算法应着重保护对于不同毛笔字技法所对应的笔锋实时生成模拟算法进行保护。
[0005]程序整体流程图如下图1a:
[0006]1.结合笔压的毛笔字笔锋模拟方法,其特征在于,包括如下步骤:
[0007]步骤101:获取输入数据:通过获取笔压的设备,录入书写者的行笔轨迹。
[0008]每一次传入的数据包中应包括:(I)当前笔压Press,数值范围是1_100,笔压为O时表示没有接触到手写板。
[0009]对于笔压Press为O的数据时不进行任何处理,继续获取下一个手写板包数据。
[0010]同时所有笔压都需要进行重新计算,笔压对应函
【权利要求】
1.结合笔压的毛笔字笔锋模拟方法,其特征在于,包括如下步骤: 步骤101:获取输入数据:通过获取笔压的设备,录入书写者的行笔轨迹; 每一次传入的数据包中应包括:(I)当前笔压Press,数值范围是1-100,笔压为O时表示没有接触到手写板; 对于笔压Press为O的数据时不进行任何处理,继续获取下一个手写板包数据; 同时所有笔压都需要进行重新计算,笔压对应函数其中X为输入笔



I 100,Α.> 80压,y为输出笔压, (2)当前鼠标坐标Position[i]= (x,y), i=0~4,保留最少5个最新数据;5个坐标数据产生4个向量,进而计算出3个向量夹角: 手写板实际还是操作鼠标的移动,所以实际传入的是当前鼠标在屏幕中的像素坐标,范围宽度应该是O-屏幕宽像素,高度为O-屏幕高像素; 当某些手写板像素坐标使用的是(0-1,0-1)相对范围,需要在数据处理模块中进行转换; 步骤102:处理输入数据:硬件设备只提供了两种数据:笔压Press和位置Position ;其他衍生数据需要在处理模块中进行处理;· 具体详细数据及计算方式如下: 帧间距离Dis:获取两个数据包中传入的坐标,按照两点距离公式:Di_十算出距离,其中i=0~4,当Dis的累加数据小于100,从O开始保存之前的五组数据,Dis数据初始值为-1,笔压为O时清零Dis数据,全部赋初值-1 ;单位为:像素;x,y指的是像素坐标; Dis的距离累加值DisCum小于100可能是设备不稳定造成的,数据不能用; 距离累加值DisCum=Dis数组5个值的累加,用于在落笔阶段判断移动距离是否超过了阈值;阈值为屏幕宽度的8% ; 当前行笔方向夹角:记录行笔轨迹转过的角度,通过保留的5个坐标位置数据包,得出4个向量,进而计算出角度,根据平面向量夹角公式:设两向量分别为a=(ai,a2),b=(bi,b2),那么他们之间的夹角Ssjsff之后利用 arccos α即可得出夹角α ;按照顺序依次存储4个角度在数组中,数组初值为-1,代表没有赋值; 行笔夹角累加值:数组中角度的累加,即五个数据包内笔画转过的角度; 记录笔压变化,两次数据包之间的变化值,为正值说明笔压在增大,为负值说明笔压在减小; 图像类型数组:为数组类型,每一个数组变量存储一个笔刷图像; 步骤103:分析输入数据:根据不同的落笔数据和抬笔数据做不同的算法处理;首先是笔的选择,不同的笔对应了不同的落笔墨点,在落笔的方式不同时要有不同的效果;落笔的效果通过显示实验获得; 根据笔压的变化量进行判断,首先判断笔压Press从O到有数值,笔压变化量PressDis为正值说明是落笔过程,故在笔压有数值的那个包的时间算起,1.5秒内都强制进入步骤103-1 ;笔压变化量为负,最终笔压为O则为提笔过程,进入步骤103-2,其他情况进入行笔步骤103-3 ; 步骤103-1:落笔过程判断:落笔在毛笔书法中分两大类,藏锋和露峰,藏锋中分为垂直落笔和笔尖环绕法藏锋; 处理上分两种情况,由帧间距离数组Dis来判断,当Dis五个数据累加值DisCum,超过阈值,阈值为屏幕像素宽度的8% ; 当DisCum值超过阈值时,不需要更换笔刷,起笔阶段按照选择的笔型,随机使用Pen数组中一个笔刷图案作为笔刷,笔刷大小按照笔压函数对应的值变化即可; 当DisCum没有超过阈值时,判断为垂直落笔的藏锋,,那么每2个数据包就更换一次笔刷样式; 当前笔刷样式需要在笔刷Pen类型中按照笔的分类,在分类下进行随机选取,每经过两个数据包当前笔刷样式就需要更换一次,直到落笔阶段结束;转到步骤104 ; 步骤103-2:提笔部分:提笔同样分为露峰和藏锋,藏锋部分与行笔相同处理,提笔藏锋时笔刷大小按照笔压函数对应的值减小即可; 提笔露峰分为两种,第一种是正常的出峰,一种是折峰,具体算法为:判断PenRCum夹角累加值,小于90就是正常的出峰,笔刷按照笔压对应函数减少即可; PenRCum值大于90就是折峰,对于折峰,从PenRCum超过90度的数据包开始计算,向前倒推,找到PenRCum值不足90度的点作为起始点,PenRCum超过90度后当前点为第5号点,向前倒推不足90度的点为第2点,故从第2点开始,与后续所有数据包每两个数据包皆与起始点即2号点形成连线 三角形,后续数据包为3,4,5号点,那么形成的三星形为2,3,4和2,4,5两个三角形,同时填充.形成厚重的折峰;转到步骤104 ; 步骤103-3:,行笔期间按照笔压大小,调整笔刷大小进行排列即可;转到步骤104 ; 步骤104:输出:将整个图像存储成图像显示到屏幕上即可。
【文档编号】G06F3/0488GK103823628SQ201310686612
【公开日】2014年5月28日 申请日期:2013年12月15日 优先权日:2013年12月15日
【发明者】林华, 李蔚然, 刘浩君 申请人:北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1