电子毛笔书写方法、装置、计算机设备和存储介质与流程

文档序号:13935282
电子毛笔书写方法、装置、计算机设备和存储介质与流程

本发明涉及计算机技术领域,特别是涉及电子毛笔书写方法、装置、计算机设备和存储介质。



背景技术:

随着触摸屏技术的不断发展,触摸屏在手机、平板电脑、电子白板等终端上得到越来越多的应用。用户可以通过触摸屏与终端进行多种交互,如输入毛笔字等。当用户需要在终端书写毛笔字时,可以在触摸屏上通过安装在终端上的电子白板软件等电子书写应用程序进入书写界面,在书写界面通过手指或触摸笔模拟毛笔笔迹。目前,在触摸屏上模拟毛笔笔迹的方法主要是采用硬件设备获取触点数据,通过软件算法对触点数据进行修正处理。但传统方式中,为了使毛笔笔迹具有较好的平滑效果,软件算法在对触点数据进行修正处理时会丢弃部分触点数据。由于丢弃了部分触点数据,使得模拟出的毛笔笔迹相对实际的书写笔迹还原度不高。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够使模拟出的毛笔笔迹相对实际的书写笔迹具有较好的还原度的电子毛笔书写方法、装置、计算机设备和存储介质。

一种电子毛笔书写方法,包括:

获取书写笔迹的触点数据,所述触点数据包括触点坐标、触点大小和生成时间;所述书写笔迹包括当前触点和历史触点,所述历史触点与当前触点按照生成时间排列;

根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整;

根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染所述书写轮廓围成的区域。

在其中一个实施例中,所述根据当前触点的生成时间与相邻的历史触点的生成时间的差值对当前触点的触点大小进行调整的步骤,包括:

获取与当前触点相邻的历史触点的触点坐标;

根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;

若所述书写速度超过阈值,则根据书写速度与所述阈值的差值减小当前触点的触点大小。

在其中一个实施例中,所述根据所述预设数量历史触点的触点大小的平均值对当前触点的触点大小进行调整的步骤,包括:

计算与当前触点相邻的预设数量历史触点的触点大小的平均值;

将当前触点的触点大小调整为所述预设数量历史触点的触点大小的平均值。

在其中一个实施例中,所述书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点;在所述根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓的步骤之前,还包括:

将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或

将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

在其中一个实施例中,所述根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓的步骤,包括:

以当前触点的触点坐标为中心,以调整后的触点大小为直径,生成当前触点对应的圆形轮廓;

将当前触点对应的圆形轮廓与相邻的一个历史触点对应的圆形轮廓切线连接,形成当前节点对应的书写轮廓。

一种电子毛笔书写装置,该装置包括:

获取模块,用于获取书写笔迹的触点数据,所述触点数据包括触点坐标、触点大小和生成时间;所述书写笔迹包括当前触点和历史触点,所述历史触点与当前触点按照生成时间排列;

调整模块,用于根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整;

渲染模块,用于根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染所述书写轮廓围成的区域。

在其中一个实施例中,所述调整模块还用于根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;若所述书写速度超过阈值,则根据书写速度与所述阈值的差值减小当前触点的触点大小;或计算与当前触点相邻的预设数量历史触点的触点大小的平均值;将当前触点的触点大小调整为所述预设数量历史触点的触点大小的平均值。

在其中一个实施例中,所述书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点;所述调整模块还用于将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

一种计算机设备,包括存储装置及其处理器,所述存储装置中储存有计算机程序,所述处理器执行所述计算机程序时实现本发明任意一个实施例中提供的电子毛笔书写方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意一个实施例中提供的电子毛笔书写方法的步骤。

上述电子毛笔书写方法、装置、计算机设备和存储介质,根据书写笔迹中当前触点以及与当前触点相邻的预设数量历史触点的触点数据可以计算当前触点相对相邻的历史触点的生成时间的差值;根据计算得到的差值或相邻的预设数量历史触点的触点大小可以对当前触点的触点大小进行调整,根据调整后的触点大小可以生成当前触点的书写轮廓,通过渲染书写轮廓围成的区域可以模拟毛笔笔迹。由于在模拟毛笔笔迹时未丢弃任何触点数据,可以使模拟出的毛笔笔迹相对实际的书写笔迹具有较好的还原度;由于根据历史触点的触点数据及时调整当前触点的触点大小,也可以使模拟出的毛笔笔迹具有较好的平滑效果。

附图说明

图1为一个实施例中的电子毛笔书写方法的流程图;

图2A为一个实施例中电子毛笔书写方法中书写笔迹的示意图;

图2B为另一个实施例中电子毛笔书写方法中书写笔迹的示意图;

图3为一个实施例中电子毛笔书写方法中书写轮廓的示意图;

图4为一个实施例中电子毛笔书写装置的结构图;

图5为一个实施例中计算机设备的结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。

在一个实施例中,如图1所示,提供了一种电子毛笔书写方法,具体包括以下步骤:

步骤102,获取书写笔迹的触点数据,触点数据包括触点坐标、触点大小和生成时间;书写笔迹包括当前触点和历史触点,历史触点与当前触点按照生成时间排列。

当用户需要在终端书写毛笔字时,可以在触摸屏上通过安装在终端上的电子书写应用程序进入书写界面,在书写界面通过手指或触摸笔进行书写操作,形成书写笔迹。书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点,多个触点按照生成时间的先后排列。上述触摸屏可以是红外触摸屏,光学触摸屏等。终端通过触摸屏可以获取书写笔迹中每个触点的触点数据。触点数据包括触点坐标、触点大小和生成时间等。其中,触点坐标是指触点中心在触摸屏形成的点阵中的像素坐标,如(30pixel,40pixel);触点大小是指触点在触摸屏形成的点阵中占据的像素数量。

根据生成时间的先后,可以将触点区分为当前触点和历史触点。容易理解,当前触点仅存在于正在书写过程中的书写笔画。终端根据触点坐标的变化可以对不同的书写笔画进行区分。具体的,终端利用电子书写应用程序可以计算当前触点相对相邻的一个历史触点的触点坐标的变化值,若该变化值超过距离阈值,则将当前触点标记为一个书写笔画的起始触点,将与当前触点相邻的一个历史触点标记为另一个书写笔画的末尾触点。换句话说,若该变化值超过距离阈值,则表示当前触点与相邻的历史触点分别属于不同的书写笔画,且相邻的历史触点所在的书写笔画书写完成,当前触点所在的书写笔画开始书写。如图2A所示,汉字“八”包括“撇”和“捺”两个书写笔画,当前触点A相对相邻的一个历史触点B1的触点坐标的变化值超过距离阈值,则表示历史触点B1与当前触点A分别位于不同的书写笔画“撇”和“捺”,且历史触点B1所在的书写笔画“撇”已完成书写,当前触点A所在的书写笔画已开始书写。

需要说明的是,下文历史触点均是指当前触点所在书写笔画中的触点。如图2B所示,历史触点包括当前触点C所在书写笔画“捺”中的多个触点Dn(n=1~5)。容易理解,若当前触点为所在书写笔画的第一个触点,则不存在历史触点;否则,在当前触点之前存在一个或多个历史触点。

终端通过触摸屏获取书写笔迹中当前触点以及与当前触点相邻的预设数量历史触点的触点数据。预设数量可以是根据触摸屏的性能参数进行设定,如设置为6等。若与当前触点相邻的历史触点的数量少于预设数量,则终端获取与当前触点相邻的所有历史触点的触点数据。

步骤104,根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整。

为了在不丢弃任何触点数据的情况下,使模拟出的毛笔笔迹既可以具有较好的平滑效果,又可以相对实际的书写笔迹具有较好的还原度,从而体现毛笔字书写特征,本实施例终端利用电子书写应用程序对书写笔迹生成的每个触点的触点大小进行调整。具体的,终端利用电子书写应用程序计算与当前触点相邻的预设数量历史触点的触点大小的平均值,将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值,以防止触点大小突变,从而使得书写笔迹更平滑。

在一个实施例中,终端在根据与当前触点相邻的预设数量历史触点的触点大小的平均值对当前触点的触点大小进行调整之后,还可以根据当前触点的生成时间与相邻的一个历史触点的生成时间的差值对当前触点的触点大小进行调整。具体的,终端利用电子书写应用程序计算当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,根据得到的差值和变化值计算当前触点对应的书写速度。若当前触点的书写速度超过阈值,则根据书写速度与阈值的差值减小当前触点的触点大小。根据书写速度调整当前触点的触点大小,使得模拟出的毛笔笔迹更加符合毛笔字书写特征。

步骤106,根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染书写轮廓围成的区域。

书写笔迹中每生成一个触点,终端对该触点的触点大小进行调整,调整完成后根据调整后的触点大小描绘该触点的书写轮廓,并对该书写轮廓进行来填充,从而实现边书写边修正显示。

在一个实施例中,根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓的步骤包括:以当前触点的触点坐标为中心,以调整后的触点大小为直径,生成当前触点对应的圆形轮廓;将当前触点对应的圆形轮廓与相邻的一个历史触点对应的圆形轮廓切线连接,形成当前节点对应的书写轮廓。

如图3所示,在对当前触点的触点大小进行调整之后,终端通过电子书写应用程序以当前触点的触点坐标为中心,以调整后的触点大小为直径,生成当前触点对应的圆形轮廓,并将当前触点对应的圆形轮廓与相邻的一个历史触点对应的圆形轮廓切线连接,形成当前节点对应的书写轮廓。若当前触点为所在书写笔画的第一个触点,则当前触点对应的圆形轮廓即为其书写轮廓。

需要说明的是,图3仅为了更清晰的展示各个触点对应的圆形轮廓和书写轮廓,并未对触点的书写轮廓进行渲染。应当理解,实际操作中,每个历史触点对应的书写轮廓均应当已完成渲染,即每个触点均是边书写边修正显示的,而不应当理解为每个书写笔画只有在书写完成时才进行渲染显示。

终端采用切线连接的方式将相邻两个触点对应的书写轮廓进行连接,由此通过多条线段形成书写笔迹对应的轮廓,实际操作中,相邻两个触点之间的距离非常小,近似可以看成是一条平滑的曲线描绘书写笔迹的轮廓,使得书写笔迹更平滑。

本实施例中,根据书写笔迹中当前触点以及与当前触点相邻的预设数量历史触点的触点数据可以计算当前触点相对相邻的历史触点的生成时间的差值;根据计算得到的差值或相邻的预设数量历史触点的触点大小可以对当前触点的触点大小进行调整,根据调整后的触点大小可以生成当前触点的书写轮廓,通过渲染书写轮廓围成的区域可以模拟毛笔笔迹。由于在模拟毛笔笔迹时未丢弃任何触点数据,可以使模拟出的毛笔笔迹相对实际的书写笔迹具有较好的还原度;由于根据历史触点的触点数据及时调整当前触点的触点大小,也可以使模拟出的毛笔笔迹具有较好的平滑效果。

在一个实施例中,根据当前触点的生成时间与相邻的历史触点的生成时间的差值对当前触点的触点大小进行调整的步骤,包括:获取与当前触点相邻的历史触点的触点坐标;根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;若书写速度超过阈值,则根据书写速度与阈值的差值减小当前触点的触点大小。

终端利用电子书写应用程序计算当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,根据得到的差值和变化值计算当前触点对应的书写速度,判断该书写速度是否超过阈值,若是,则按照第一预设公式减小当前触点的触点大小;否则,按照第二预设公式增大当前触点的触点大小。具体的,上述阈值,第一预设公式以及第二预设公式均可以是根据用户书写习惯或经验自由设置的,如上述阈值可以是30pixel/s;上述第一预设公式可以是当前触点的触点大小*20%*((书写速度-阈值)/书写速度)。在另一个实施例中,若当前触点的书写速度小于或等于阈值,则保持当前触点的触点大小。

本实施例中,根据书写速度调整当前触点的触点大小,使得模拟出的毛笔笔迹更加符合毛笔字书写特征。

在一个实施例中,根据预设数量历史触点的触点大小的平均值对当前触点的触点大小进行调整的步骤,包括:计算与当前触点相邻的预设数量历史触点的触点大小的平均值;将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值。

终端利用电子书写应用程序计算与当前触点相邻的预设数量历史触点的触点大小的平均值,将当前触点的触点大小调整为该预设数量历史触点的触点大小的平均值。预设数量可以是根据触摸屏的性能参数进行设定,如设置为6等。容易理解,终端也可以将当前触点的触点大小调整为该预设数量历史触点的触点大小的平均值的倍数,如60%等。

本实施例,将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值,可以防止触点大小突变,从而使得书写笔迹更平滑。

在一个实施例中,书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点;在根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓的步骤之前,还包括:将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

在一个书写笔画完成时,终端利用电子书写应用程序对该书写笔画中起始的多个触点的触点大小,和/或末尾的多个触点的触点大小进行调整。起始的多个触点是指该书写笔画中生成时间靠前的第一预设数量触点的触点;末尾的多个触点是指该书写笔画中生成时间靠后的第二预设数量触点。第一预设数量和第二预设数量分别可以根据用户书写习惯或经验自由设置。

终端利用电子书写应用程序将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小,或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。第一预设比例和第二预设比例分别可以根据用户书写习惯或经验自由设置,如50%。第一预设比例和第二预设比例可以相同,也可以不同。

本实施例,根据毛笔字书写特征,如入笔应轻入,收笔应轻收,对书写笔迹中的笔锋和/或笔尾的粗细进行调整,使得模拟出的毛笔笔迹具有较好的入笔和收笔效果,从而更加符合毛笔字中间粗,两边回锋有力的书写特征,提高毛笔笔迹的模拟效果。

在一个实施例中,如图4所示,提供了一种电子毛笔书写装置,包括:获取模块402,调整模块404和渲染模块406,其中,

获取模块402,用于获取书写笔迹的触点数据,触点数据包括触点坐标、触点大小和生成时间;书写笔迹包括当前触点和历史触点,历史触点与当前触点按照生成时间排列。

调整模块404,用于根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整。

渲染模块406,用于根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染书写轮廓围成的区域。

在一个实施例中,调整模块404还用于计算与当前触点相邻的预设数量历史触点的触点大小的平均值,将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值;或者根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;若书写速度超过阈值,则根据书写速度与阈值的差值减小当前触点的触点大小。

在一个实施例中,书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点。调整模块404还用于将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

在一个实施例中,提供了一种计算机设备的内部框图,如图5所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器、网络接口、显示屏和输入装置。其中,计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该计算机设备的非易失性存储介质存储有操作系统和计算机程序,该计算机设备的内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机程序被处理器执行时以实现一种电子毛笔书写方法。该终端的网络接口用于与外部的网络接口进行通信。终端的显示屏可以是红外触摸屏等,输入装置可以是显示屏上覆盖的触摸层,还可以是终端外壳上设置的按键、轨迹球,触控板,外接的键盘、触控板或鼠标等。该计算机设备可以是台式电脑、个人笔记本电脑、手机、平板电脑、电子白板等。处理器执行计算机程序时可以执行以下步骤:获取书写笔迹的触点数据,触点数据包括触点坐标、触点大小和生成时间;书写笔迹包括当前触点和历史触点,历史触点与当前触点按照生成时间排列;根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整;根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染书写轮廓围成的区域。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,处理器执行计算机程序时还执行以下步骤:获取与当前触点相邻的历史触点的触点坐标;根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;若书写速度超过阈值,则根据书写速度与阈值的差值减小当前触点的触点大小。

在一个实施例中,处理器执行计算机程序时还执行以下步骤:计算与当前触点相邻的预设数量历史触点的触点大小的平均值;将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值。

在一个实施例中,书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点;处理器执行计算机程序时还执行以下步骤:将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

在一个实施例中,处理器执行计算机程序时还执行以下步骤:以当前触点的触点坐标为中心,以调整后的触点大小为直径,生成当前触点对应的圆形轮廓;将当前触点对应的圆形轮廓与相邻的一个历史触点对应的圆形轮廓切线连接,形成当前节点对应的书写轮廓。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现计算机程序以下步骤:获取书写笔迹的触点数据,触点数据包括触点坐标、触点大小和生成时间;书写笔迹包括当前触点和历史触点,历史触点与当前触点按照生成时间排列;根据当前触点的生成时间与相邻的历史触点的生成时间的差值,或预设数量历史触点的触点大小对当前触点的触点大小进行调整;根据当前触点的触点坐标和调整后的触点大小生成当前触点的书写轮廓,渲染书写轮廓围成的区域。

在一个实施例中,计算机程序被处理器执行时还执行以下步骤:获取与当前触点相邻的历史触点的触点坐标;根据当前触点的生成时间与相邻的历史触点的生成时间的差值,以及当前触点的触点坐标与相邻的历史触点的触点坐标的变化值,计算当前触点对应的书写速度;若书写速度超过阈值,则根据书写速度与阈值的差值减小当前触点的触点大小。

在一个实施例中,计算机程序被处理器执行时还执行以下步骤:计算与当前触点相邻的预设数量历史触点的触点大小的平均值;将当前触点的触点大小调整为预设数量历史触点的触点大小的平均值。

在一个实施例中,书写笔迹包括一个或多个书写笔画,每个书写笔画包括多个触点;计算机程序被处理器执行时还执行以下步骤:将当前触点所在书写笔画中生成时间靠前的第一预设数量触点的触点大小按照第一预设比例减小;和/或将当前触点所在书写笔画中生成时间靠后的第二预设数量触点的触点大小按照第二预设比例减小。

在一个实施例中,计算机程序被处理器执行时还执行以下步骤:以当前触点的触点坐标为中心,以调整后的触点大小为直径,生成当前触点对应的圆形轮廓;将当前触点对应的圆形轮廓与相邻的一个历史触点对应的圆形轮廓切线连接,形成当前节点对应的书写轮廓。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,前述计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,前述计算机可读取存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1