电子毛笔书写笔迹生成方法

文档序号:6439490阅读:591来源:国知局
专利名称:电子毛笔书写笔迹生成方法
技术领域
本发明涉及计算机图形处理技术领域,特别涉及一种电子毛笔书写笔迹生成方法。
背景技术
中国毛笔书法是一门古老而深邃的艺术,是中华民族艺术宝库中一颗璀灿夺目的明珠,它伴随着中华文明的发展而发展。在计算机高速发展的今天,人们希望能使书法与时俱进,与现代科技相融合,如何在计算机上逼真的模拟出毛笔的书写效果是很多专家学者研究的方向。在众多的相关研究工作中,模拟毛笔书写笔迹主要的方法是采用硬件来获取输入数据,通过软件算法来对这些数据进行修正处理,以实现毛笔书写的效果,达到模拟真实毛笔动作的目的,如采用光导纤维来模拟倒立的毛笔笔头,通过在毛笔上添加传感器来捕捉捕获位置、压力等数据,并将这些数据转换成毛笔的各个参数,然后通过一系列的软件修正算法,来修正笔迹形状,模拟笔迹的书写效果。这些实现方法中,需要专用于毛笔笔迹的书写的硬件设备,设备成本高,同时,运笔过程中的“提按使转”无法得以体现,毛笔书写运行过程中若没有提按的参与,书法线条将是直来直去,僵硬呆板,线条质量就很差,甚至达不到书法艺术最起码的要求。现有技术中,运笔的轨迹是通过触摸笔在设备屏幕上划过而留下的轨迹,当触摸笔在设备屏幕上移动时,设备会以触摸事件的方式通知相应的处理软件当前触摸笔的位置、压力、时间、倾斜率等信息,由于设备的CPU处理能力和事件通知的机制,导致设备通知触摸事件的间隔并不均衡,当触摸笔的运行速度很慢时,触摸事件会很频繁,这样会导致笔迹在同一个区域重叠绘制,浪费CPU资源,而且,由于用户书写过程有抖动,如果每个像素的移动都进行绘制,则形成的笔迹有很多褶皱,不平滑;而当触摸笔运动很快时,触摸事件则会很少,这样会导致笔迹不连续。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是如何使手写输入的毛笔笔迹平滑、连续、无褶皱,且不浪费CPU资源。( 二 )技术方案为解决上述技术问题,本发明提供了一种电子毛笔书写笔迹生成方法,包括以下步骤Sl 根据触摸设备传递的触摸轨迹上触摸点坐标计算相邻两触摸点的距离;S2 若所述距离小于预定阈值,则按所述预定阈值为间距获取触摸点;若所述距离大于所述预定阈值,则在相邻两个触摸点之间插入插值点;S3 根据所述触摸轨迹上的点绘制预先设置的笔形以生成笔迹。其中,所述步骤S2中插入插值点的过程如下
S211 计算所述触摸轨迹上的所有触摸点间的直线轨迹;S212 根据以下公式计算插值点
Γ π . dis tan ce ,insertLouni =-xnumber_per snape
width— —其中,insertCount为两点间插值点个数,distance为沿直线轨迹方向上距离已 插值部分最近的一个触摸点到其前一点的距离,“肚}!为已插值部分绘制的最后一个笔形 的宽度,number_per_shape为每个笔形需要绘制的点的个数;S213 判断insertCount是否小于1,若小于1,则增加已插值的直线的长度,跳转 到步骤S212,否则执行步骤S214 ;S214 lì^M-MìèM^MìèP^: stepLength = distance/insertCount ;S215 按所述步长在所述直线轨迹上长度为上述distance的部分上插入一个点;S216 重复执行步骤S212 3215,直到最后一个触摸点。其中,所述步骤S2中插入插值点的过程如下S221 以触摸点为控制点计算贝塞尔曲线轨迹;S222 根据以下公式计算插值点
Γ π . dis tan ce ,insertCount =-xnumber_per snape
width— —其中,insertCount为两点间插值点个数,distance为沿贝塞尔曲线轨迹方向上 距离已插值部分最近的一个触摸点到其前一点的距离,《1肚1!为已插值部分绘制的最后一 个笔形的宽度,number_per_shape为每个笔形需要绘制的点的个数;S223 判断insertOnmt是否小于1,若小于1,则增加已插值的贝塞尔曲线的长 度,跳转到步骤3222,否则执行步骤S2M ;S224 计算插值点的插值步长 stepLength = distance/insertCount ;S225 按所述步长在所述贝塞尔曲线轨迹上长度为上述肚计皿⑶的部分上插入 ー个点;S226 重复执行步骤S222 3225,直到最后一个触摸点。其中,所述步骤5221中计算贝塞尔曲线轨迹的方式为以当前点的前一点为控制 点,从当前点的前二点向当前点与当前点的前一点的中点计算贝塞尔曲线轨迹。其中,当已插值的贝塞尔曲线到达最后一个触摸点与其前一触摸点的中点时,在 所述最后一个触摸点到其与其前一触摸点的中点的直线轨迹上按所述步骤3222 步骤 S226进行直线插值。其中,所述number_per_shape的值为5 10的整数。其中,所述步骤53中,绘制预先设置的笔形的方式为根据预设的最大笔宽1和当前触摸设备感应的压力确定所述笔形沿笔杆方向的 大圆半径d2 = WXpressure根据如下公式确定笔尖方向的小圆半径dl = d2XkXpressure在两个圆的同一侧分别绘制一条与两圆都相切的直线,以形成封闭的形状,在两 圆的直径和两切线形成梯形,所述梯形的高度为
h = HXpressure其中,H表示预设的最大笔行长度,k为形状比例参数。其中,所述k取值为0 1的浮点数,所述pressure量化到0 1浮点数。其中,所述预定阈值为0 5像素。(三)有益效果通过本发明的方法当触摸笔的运行速度很慢时,减少触摸点的个数,避免了笔迹在同一个区域重叠绘制导致的褶皱,同时节省了 CPU资源;而当触摸笔运动很快时,采用插值法进行插值,使得手写输入的毛笔笔迹平滑、连续。


图1是本发明实施例的一种电子毛笔书写笔迹生成方法流程图;图2是图1的方法中采用直线插值方法的示意图;图3是图1的方法中采用贝塞尔曲线插值方法的示意图;图4是图1的方法中绘制笔迹的笔形示意图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。如图1所示,为本发明实施例的一种电子毛笔书写笔迹生成方法流程图,包括步骤S101,根据触摸设备传递的触摸轨迹上触摸点坐标计算相邻两触摸点的距离。触摸笔在触摸设备的触摸屏上书写时触摸设备会记录触摸笔的位置坐标、压力等信息。 由于触摸笔是运动的,触摸笔的位置坐标形成一个连续的运动轨迹,触摸设备会根据触摸笔的运动速度记录若干触摸点。得到这些触摸点后根据其坐标计算相邻触摸点之间的距
1 O步骤S102 判断上述距离是否小于预定阈值,若小于该阈值,则执行步骤S103,否则执行步骤S104。步骤S103,由于设备的CPU处理能力和事件通知的机制,导致设备通知触摸事件的间隔并不均衡,当触摸笔的运行速度很慢时,触摸事件会很频繁,导致上述距离会小于预定阈值,这样会导致笔迹在同一个区域重叠绘制。因此对于这种情况,按该阈值为间距的获取触摸点,这样避免了在同一个区域重叠绘制而且可以保证最终生成的笔迹连续、平滑,同时节省了 CPU资源。步骤S104,当触摸笔的运行速度很快时,触摸设备CPU捕捉到的触摸事件会很少, 因此触摸点也很少,若按这些触摸点去绘制笔形,那么生成的笔迹将不连续,为了避免这种情况的发生,本发明在相邻两个触摸点之间插入若干插值点。插值的方法有以下两种1、采用直线插值法,插值示意图如图2所示,插值步骤如下步骤1,计算所述触摸轨迹上的所有触摸点间的直线轨迹,即将触摸点之间用直线连接,计算该直线的轨迹。步骤2,根据以下公式计算插值点Γ π . dis tan ce ,insertLount =-χ number _ per _ shape
width— —其中,insertCount为两点间插值点个数,distance为沿值线轨迹方向上距离已插值部分最近的一个触摸点到其前一点的距离,width为已插值部分绘制的最后一个笔形的宽度,number_per_Shape为每个笔形需要绘制的点的个数。步骤3,判断insertCount是否小于1,若小于1,则增加已插值的直线的长度,跳转到步骤2,否则执行步骤4。步骤4,计算插值点的插值步长st印Length = distance/insertCount。步骤5,按所述步长在所述直线轨迹上长度为上述distance的部分上插入一个
点ο步骤6,重复执行步骤2 步骤5,直到最后一个触摸点。图2中,方形为触摸点,线为触摸点连接线,圆形为插值点,从图中可以看出,通过插值,可以解决触摸点距离过长的问题,使得笔形出现次数均勻,轨迹能够连续。但是,图中也显示了一个问题,由于插值是在两个触摸点的连接直线上,从而导致,两条直线之间有一个明显的转折,一个笔划有多个折线连接而成,笔迹平滑度不高,笔迹边缘可能有细小的锯齿,不像手写形成的笔迹。2、采用贝塞尔曲线插值法,可以克服直线插值法中两条直线之间有一个明显的转折的问题,插值示意图如图3所示,插值步骤如下步骤1,以触摸点为控制点计算贝塞尔曲线轨迹,本实施例中,计算贝塞尔曲线轨迹的方式为以当前点的前一点为控制点,从当前点的前二点向当前点与当前点的前一点的中点计算贝塞尔曲线轨迹。步骤2,根据以下公式计算插值点
Γ π . dis tan ce ,insertLount =-χ number _per _ shape
width— —其中,insertCount为两点间插值点个数,distance为沿贝塞尔曲线轨迹方向上距离已插值部分最近的一个触摸点到其前一点的距离,width为已插值部分绘制的最后一个笔形的宽度,number_per_shape为每个笔形需要绘制的点的个数。如图3所示,P0、P1、P2、P3为连续的几个触摸点,P3为当前点,当P3触摸事件发生时,笔迹已经处理到IPLO位置(即已插值到IPLO点),此时,计算IPLO到P2间的插值点, 根据最后显示笔形宽度width和预设的每个笔形需要绘制的点的个数nUmber_per_Shape, 采用上述公式计算IPLO和P2两点间插值点个数,其中,distance为从IPLO到P2的曲线长度。步骤3,判断insertCount是否小于1,若小于1,则增加已插值的贝塞尔曲线的长度,跳转到步骤2,否则执行步骤4。步骤4,计算插值点的插值步长st印Length = distance/insertCount。步骤5,按所述步长在所述贝塞尔曲线轨迹上长度为上述distance的部分上插入
——个占
I ;^ O步骤6,重复执行步骤2 步骤5,直到最后一个触摸点。由于上述计算贝塞尔曲线轨迹的特殊性(贝塞尔曲线绘制总是从当前点的前二点绘制到当前的前一点与当前点的中点,因此,该中点与当前点之间总是不能被处理),在重复过程中,当已插值的贝塞尔曲线到达最后一个触摸点与其前一触摸点的中点时,在最后一个触摸点到其与其前一触摸点的中点的直线轨迹上按所述直线插值的步骤2 步骤6进行。上述两种插值方式中,width有下限20像素和上限预设值80像素,否则当width 太小时会导致插入点太多而影响性能,width太大则插入点过少,轨迹不平滑。改变参数 number_per_Shape可以改变笔形的密度,此值设置大则密度大,显示笔迹平滑紧密,但会导致运行速度变慢,此值设置小,运行速度提高,但可能导致笔迹不平整,甚至不连续,根据实验,优选设置为5到10比较合适。步骤S105,根据触摸轨迹上的点绘制预先设置的笔形以生成笔迹。笔形模型如图 4所示,具体绘制方式如下根据预设的最大笔宽W(取值为10 100像素)和当前触摸设备感应的压力确定笔形沿笔杆方向的大圆半径d2 = WXpressure当在计算插值点时,若2Xd2在20 80像素的范围内,width的值即为2Xd2, 2Xd2 小于 20 时,width 取 20,2Xd2 大于 80 时,width 取 80。根据如下公式确定笔尖方向的小圆半径dl = d2 XkX pressure在两个圆的同一侧分别绘制一条与两圆都相切的直线,以形成封闭的形状,在两圆的直径和两切线形成梯形,梯形的高度为h = HXpressure其中,H(取值为10 100像素)表示预设的最大笔形长度,k为形状比例参数,取值为0 1的浮点数,pressure量化到0 1浮点数。采用本发明的电子毛笔书写笔迹生成方法使得手写输入的毛笔笔迹平滑、连续, 同时节省手持设备的系统资源。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种电子毛笔书写笔迹生成方法,其特征在于,包括以下步骤51根据触摸设备传递的触摸轨迹上触摸点坐标计算相邻两触摸点的距离;52若所述距离小于预定阈值,则按所述预定阈值为间距获取触摸点;若所述距离大于所述预定阈值,则在相邻两个触摸点之间插入插值点;53根据所述触摸轨迹上的点绘制预先设置的笔形以生成笔迹。
2.如权利要求1所述的电子毛笔书写笔迹生成方法,其特征在于,所述步骤S2中插入插值点的过程如下5211计算所述触摸轨迹上的所有触摸点间的直线轨迹;5212根据以下公式计算插值点
3.如权利要求1所述的电子毛笔书写笔迹生成方法,其特征在于,所述步骤S2中插入插值点的过程如下5221以触摸点为控制点计算贝塞尔曲线轨迹;5222根据以下公式计算插值点
4.如权利要求3所述的电子毛笔书写笔迹生成方法,其特征在于,所述步骤S221中计算贝塞尔曲线轨迹的方式为以当前点的前一点为控制点,从当前点的前二点向当前点与当前点的前一点的中点计算贝塞尔曲线轨迹。
5.如权利要求4所述的电子毛笔书写笔迹生成方法,其特征在于,当已插值的贝塞尔曲线到达最后一个触摸点与其前一触摸点的中点时,在所述最后一个触摸点到其与其前一触摸点的中点的直线轨迹上按所述步骤S222 步骤进行直线插值。
6.如权利要求2 5中任一项所述的电子毛笔书写笔迹生成方法,其特征在于,所述 number_per_shape的值为5 10的整数。
7.如权利要求1 5中任一项所述的电子毛笔书写笔迹生成方法,其特征在于,所述步骤S3中,绘制预先设置的笔形的方式为根据预设的最大笔宽W和当前触摸设备感应的压力确定所述笔形沿笔杆方向的大圆半径d2 = WXpressure根据如下公式确定笔尖方向的小圆半径dl = d2XkXpressure在两个圆的同一侧分别绘制一条与两圆都相切的直线,以形成封闭的形状,在两圆的直径和两切线形成梯形,所述梯形的高度为h = HXpressure其中,H表示预设的最大笔行长度,k为形状比例参数。
8.如权利要求7所述的电子毛笔书写笔迹生成方法,其特征在于,所述k取值为0 1 的浮点数,所述pressure量化到0 1浮点数。
9.如权利要求1 5中任一项所述的电子毛笔书写笔迹生成方法,其特征在于,所述预定阈值为0 5像素。
全文摘要
本发明公开了一种电子毛笔书写笔迹生成方法,涉及计算机图形处理技术领域,该方法包括以下步骤S1根据触摸设备传递的触摸轨迹上触摸点坐标计算相邻两触摸点的距离;S2若所述距离小于预定阈值,则按所述预定阈值为间距获取触摸点;若所述距离大于所述预定阈值,则在相邻两个触摸点之间插入插值点;S3根据所述触摸轨迹上的点绘制预先设置的笔形以生成笔迹。本发明使得手写输入的毛笔笔迹平滑、连续。
文档编号G06F3/041GK102521858SQ20111038527
公开日2012年6月27日 申请日期2011年11月28日 优先权日2011年11月28日
发明者刘炎, 谭韩成, 赵志强 申请人:北京盛世宣合信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1