CN113590000A - 笔迹处理方法、笔迹处理装置、存储介质 - Google Patents
笔迹处理方法、笔迹处理装置、存储介质 Download PDFInfo
- Publication number
- CN113590000A CN113590000A CN202010365298.1A CN202010365298A CN113590000A CN 113590000 A CN113590000 A CN 113590000A CN 202010365298 A CN202010365298 A CN 202010365298A CN 113590000 A CN113590000 A CN 113590000A
- Authority
- CN
- China
- Prior art keywords
- track
- circle
- points
- unit
- pen
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Image Generation (AREA)
Abstract
一种笔迹处理方法、笔迹处理装置、非瞬时性存储介质。笔迹处理方法包括:对在触控显示屏上的原始笔迹轨迹进行采样以得到多个采样点;基于多个采样点,计算得到至少一个轨迹点组,其中,至少一个轨迹点组中的每个轨迹点组包括N个轨迹点,N个轨迹点包括M个采样点,N为大于等于3的整数,M为大于等于3的整数,M≤N;基于在至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,其中,多个轨迹单元的每个轨迹单元为水滴状的水滴单元;依次连接多个轨迹单元,以得到用于在触控显示屏上显示的笔迹。
Description
技术领域
本公开的实施例涉及一种笔迹处理方法、笔迹处理装置、非瞬时性存储介质。
背景技术
随着信息技术的迅速发展,书写输入的技术越来越成熟,用户对笔迹效果的要求也越来越高,用户不仅希望笔迹能被识别,更希望笔迹达到美观且具有逼真的笔锋效果。
发明内容
本公开的实施例提供一种笔迹处理方法,包括:对在触控显示屏上的原始笔迹轨迹进行采样以得到多个采样点;基于所述多个采样点,计算得到至少一个轨迹点组,其中,所述至少一个轨迹点组中的每个轨迹点组包括N个轨迹点,所述N个轨迹点包括M个采样点,N为大于等于3的整数,M为大于等于3的整数,M≤N;基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,其中,所述多个轨迹单元的每个轨迹单元为水滴状的水滴单元;依次连接所述多个轨迹单元,以得到用于在所述触控显示屏上显示的笔迹。
例如,在本公开一实施例提供的笔迹处理方法中,所述多个轨迹滴单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:确定在所述所有轨迹点中的动作类型为运笔的轨迹点,以得到T1个运笔轨迹点,其中,T1为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T1个运笔轨迹点一一对应的T1个运笔轨迹单元;获取第一平均参考速度;对于所述T1个运笔轨迹点中的第p个运笔轨迹点,根据所述第一参考平均速度和所述第p个运笔轨迹点对应的书写速度和位置,确定所述T1个运笔轨迹单元中与所述第p个运笔轨迹点对应的第p个运笔轨迹单元中的第一圆的半径和圆心,其中,p为正整数,且p小于等于T1;根据所述第p个运笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第p个运笔轨迹单元中的第二圆的半径和圆心;基于所述第p个运笔轨迹单元中的第一圆和第二圆,确定所述第p个运笔轨迹单元中的多边形,以确定所述第p个运笔轨迹单元,从而确定与所述T1个运笔轨迹点一一对应的所述T1个运笔轨迹单元,其中,所述第p个运笔轨迹单元的第一圆的半径由所述第p个运笔轨迹点对应的书写速度和所述第一平均参考速度决定,且满足以下关系式:
dt=kt*dt-1,kt=2/(1+e[0.06*(vt-vavg)/vavg])
其中,dt为在所述第p个运笔轨迹单元中的所述第一圆的直径,dt-1为与所述第p个运笔轨迹单元在时间上相邻的前一个轨迹单元的第一圆的直径,kt为所述第p个运笔轨迹点对应的半径调整系数,vt为所述第p个运笔轨迹点对应的书写速度,vavg为所述第一平均参考速度,0.3*ds≤dt≤1.1*ds,ds为设定线宽,
所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
例如,在本公开一实施例提供的笔迹处理方法中,所述多个轨迹单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:确定在所述所有轨迹点中的动作类型为收笔的轨迹点,以得到T2个收笔轨迹点,其中,T2为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T2个收笔轨迹点一一对应的T2个收笔轨迹单元;获取第二平均参考速度,其中,所述第二平均参考速度小于第一平均参考速度,所述第一平均参考速度为运笔阶段对应的参考速度;对于所述T2个收笔轨迹点中的第i个收笔轨迹点,根据所述第二平均参考速度和所述第i个收笔轨迹点对应的书写速度和位置,确定所述T2个收笔轨迹单元中与所述第i个收笔轨迹点对应的第i个收笔轨迹单元中的第一圆的半径和圆心,其中,i为正整数,且i小于等于T2;根据所述第i个收笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第i个收笔轨迹单元的第二圆的半径和圆心;基于所述第i个收笔轨迹单元中的第一圆和第二圆,确定所述第i个收笔轨迹单元中的多边形,以确定所述第i个收笔轨迹单元,从而确定与所述T2个收笔轨迹点一一对应的所述T2个收笔轨迹单元,其中,所述第i个收笔轨迹单元的第一圆的半径由所述第i个收笔轨迹点对应的书写速度和所述第二平均参考速度决定,满足以下关系式:
dy=ki’*dy-1,ki’=6/(1+e[0.06*(vi-vavg’)/vavg’])
其中,dy为在所述第i个收笔轨迹单元中的第一圆的直径,dy-1为与所述第i个收笔轨迹单元在时间上相邻的前一个轨迹单元的第一圆的直径,ki’为所述第i个收笔轨迹单元对应的半径调整系数,vi为所述第i个收笔轨迹点对应的书写速度,vavg’为所述第二平均参考速度,
所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的调节后的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
例如,在本公开一实施例提供的笔迹处理方法中,所述多个轨迹单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元包括:确定在所述所有轨迹点中的动作类型为起笔的轨迹点,以得到T3个起笔轨迹点,其中,T3为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T3个起笔轨迹点一一对应的T3个起笔轨迹单元;设定所述T3个起笔轨迹单元的第一圆的直径为设定线宽;对于所述T3个起笔轨迹点中的第z个起笔轨迹点,根据所述第z个起笔轨迹点对应的位置,确定所述T3个起笔轨迹单元中与所述第z个起笔轨迹点对应的第z个起笔轨迹单元中的第一圆的圆心,其中,z为正整数,且z小于等于T3;根据所述第z个起笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第z个起笔轨迹单元中的第二圆的半径和圆心;基于所述第z个起笔轨迹单元中的第一圆和第二圆,确定所述第z个起笔轨迹单元中的多边形,以确定所述第z个起笔轨迹单元,从而确定所述T3个起笔轨迹点对应的所述T3个起笔轨迹单元,其中,所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
例如,在本公开一实施例提供的笔迹处理方法中,依次连接所述多个轨迹单元,以得到用于在所述触控显示屏上显示的所述笔迹,包括:基于所述至少一个轨迹点组中的所有轨迹点在所述原始笔迹轨迹上对应的位置,对所述多个轨迹单元进行排序;对于排序后的所述多个轨迹单元中的任意相邻的第一轨迹单元和第二轨迹单元,响应于所述第一轨迹单元的第一圆和第二圆和所述第二轨迹单元的第一圆和第二圆中的任意两个圆均不是内含关系,确定所述第一轨迹单元的第一圆和所述第二轨迹单元的第一圆之间的两个第一公切点和两个第二公切点,确定所述第一轨迹单元的第二圆和所述第二轨迹单元的第二圆之间的两个第三公切点和两个第四公切点,其中,所述两个第一公切点位于所述第一轨迹单元的第一圆上,所述两个第二公切点位于所述第二轨迹单元的第一圆上,所述两个第三公切点位于所述第一轨迹单元的第二圆上,所述两个第四公切点位于所述第二轨迹单元的第二圆上;从所述两个第一公切点、所述两个第二公切点、所述两个第三公切点和所述两个第四公切点中选择得到四个目标公切点;依次连接所述四个目标公切点确定一个四边形,以使所述第一轨迹单元和所述第二轨迹单元连接,从而依次连接所述多个轨迹单元以得到所述笔迹。
例如,本公开一实施例提供的笔迹处理方法还包括:响应于所述第一轨迹单元的第一圆和第二圆和所述第二轨迹单元的第一圆和第二圆中的至少两个圆是内含关系,则确定所述第一轨迹单元和所述第二轨迹单元不需要连接。
例如,在本公开一实施例提供的笔迹处理方法中,从所述两个第一公切点、所述两个第二公切点、所述两个第三公切点和所述两个第四公切点中选择得到四个目标公切点,包括:确定所述第一轨迹单元的第一圆和第二圆之间的第一外公切线和第二外公切线,其中,所述第一外公切线的斜率小于所述第二外公切线的斜率;确定所述第一轨迹单元的第二圆和所述第二轨迹单元的第二圆之间的第三外公切线和第四外公切线;响应于所述第三外公切线的斜率大于所述第四公切线的斜率,且所述第三外公切线的斜率大于所述第一外公切线的斜率且小于所述第一轨迹单元的第一圆的圆心和第二圆的圆心之间的所述圆心连线的斜率,或者,响应于所述第三外公切线的斜率小于所述第四公切线的斜率,且所述第三外公切线的斜率小于所述第二外公切线的斜率且大于所述第一轨迹单元的第一圆的圆心和第二圆的圆心之间的所述连线的斜率,将所述两个第一公切点和所述两个第二公切点作为所述四个目标公切点;响应于所述第三外公切线的斜率大于所述第四公切线的斜率且小于所述第一外公切线的斜率,或者,响应于所述第三外公切线的斜率小于所述第四公切线的斜率且大于所述第二外公切线的斜率,将所述两个第一公切点中远离所述第一轨迹单元的第二圆的第一公切点、所述两个第三公切点中远离所述第一轨迹单元的第一圆的第三公切点、所述两个第二公切点中远离所述第二轨迹单元的第二圆的第二公切点和所述两个第四公切点中远离所述第二轨迹单元的第一圆的第四公切点作为所述四个目标公切点。
例如,在本公开一实施例提供的笔迹处理方法中,依次连接所述多个轨迹单元,以得到用于在所述触控显示屏上显示的所述笔迹,包括:对于所述至少一个轨迹点组中第k个轨迹点组,其中,所述第k个轨迹点组中的N个轨迹点在所述原始笔迹轨迹的延伸方向上依次排列,k为正整数,且小于等于所述至少一个轨迹点组的数量;确定在所述原始笔迹轨迹的延伸方向上所述第k个轨迹点组中的第一个轨迹点和第N个轨迹点;获取所述第一个轨迹点的第一个坐标和所述第N个轨迹点的第二个坐标;根据所述第一个坐标和所述第二个坐标,确定所述第k个轨迹点组对应的轨迹段的方向,根据所述第k个轨迹点组对应的所述轨迹段的方向,确定所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点;根据所述N个轨迹单元对应的N个第一连接点和N个第二连接点依次连接所述N个轨迹单元,从而依次连接所述多个轨迹单元,以得到所述笔迹。
例如,在本公开一实施例提供的笔迹处理方法中,根据所述第一个坐标和所述第二个坐标,确定所述第k个轨迹点组对应的轨迹段的方向,包括:根据所述第一个坐标和所述第二个坐标,确定第一坐标差和第二坐标差,其中,所述第一个坐标为(x1,y1),所述第二个坐标为(x2,y2),所述第一坐标差Δx表示为Δx=x2-x1,所述第二坐标差Δy表示为Δy=y2-y1;响应于所述第一坐标差为0和所述第二坐标差为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为其他方向,响应于所述第一坐标差不为0和所述第二坐标差为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为横方向,响应于所述第一坐标差为0和所述第二坐标差不为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为竖方向,
响应于所述第一坐标差不为0和所述第二坐标差不为0:
当Δx<0且Δy<0,确定所述第k个轨迹点组对应的所述轨迹段的方向为所述其他提方向。
例如,在本公开一实施例提供的笔迹处理方法中,根据所述第k个轨迹点组对应的所述轨迹段的方向,确定所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点,包括:当所述第k个轨迹点组对应的所述轨迹段的方向为横方向时:xsj=x1j,ysj=y1j-rj,xbj=x2j,ybj=y2j+Rj;当所述第k个轨迹点组对应的所述轨迹段的方向为竖方向时:xsj=x1j-rj,ysj=y1j,xbj=x2j+Rj,ybj=y2j;当所述第k个轨迹点组对应的所述轨迹段的方向为撇方向或提方向时:xsj=x1j-0.707*rj,ysj=y1j-0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j+0.707*Rj;当所述第k个轨迹点组对应的所述轨迹段的方向为捺方向或其他方向时:xsj=x1j-0.707*rj,ysj=y1j+0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j-0.707*Rj;其中,(xbj,ybj)为所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的第j个轨迹单元对应的第一连接点的坐标,(xsj,ysj)为所述第j个轨迹单元对应的第二连接点的坐标,(x2j,y2j)为所述第j个轨迹单元的第一圆的圆心的坐标,Rj为所述第j个轨迹单元的第一圆的半径,(x1j,y1j)为所述第j个轨迹单元的第二圆的圆心的坐标,rj为所述第j个轨迹单元的第二圆的半径。
例如,在本公开一实施例提供的笔迹处理方法中,所述C1的范围为1.2~2,所述C2的范围为0.2~0.4,所述预设圆心角度的范围为20°~40°,在基于所述触控显示屏的显示画面确定的像素坐标系中,所述第一圆的圆心的横坐标大于所述第二圆的圆心的横坐标,所述第一圆的圆心的纵坐标大于所述第二圆的圆心的纵坐标。
例如,在本公开一实施例提供的笔迹处理方法中,基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:基于所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个中间轨迹单元,对所述多个中间轨迹单元进行透明度处理,以得到所述多个轨迹单元。
例如,在本公开一实施例提供的笔迹处理方法中,对所述多个中间轨迹单元进行透明度处理,以得到所述多个轨迹单元,包括:根据所述多个中间轨迹单元,得到与所述多个中间轨迹单元一一对应的多个中间透明度轨迹单元,其中,每个所述透明度轨迹单元的形状和尺寸与每个所述透明度轨迹单元对应的中间轨迹单元的形状和尺寸均相同;对于所述多个中间透明度轨迹单元中的第h个中间透明度轨迹单元,在所述第h个中间透明度轨迹单元的边缘获取多个边缘透明度像素,从所述第h个中间透明度轨迹单元的中心向外延伸的方向上,将所述多个边缘透明度像素的透明度从100%逐渐变为0%,以得到所述第h个中间透明度轨迹单元对应的透明度轨迹单元,从而得到与所述多个中间透明度轨迹单元一一对应的多个透明度轨迹单元,其中,h为大于等于1且小于等于所述多个中间透明度轨迹单元的数量的正整数,所述多个边缘透明度像素中的至少部分边缘透明度像素位于对应的所述第h个中间透明度轨迹单元内,所述第h个中间透明度轨迹单元中除了所述多个边缘透明度像素之外的所有像素的透明度为100%;将所述多个中间轨迹单元和所述多个透明度轨迹单元分别进行叠加,以得到所述多个轨迹单元。
例如,在本公开一实施例提供的笔迹处理方法中,基于所述多个采样点,计算得到至少一个轨迹点组,包括:基于所述多个采样点,将所述原始笔迹轨迹划分为至少一个轨迹段,其中,每个轨迹段包括M个采样点;对所述至少一个轨迹段中的每个轨迹段进行插值处理以得到与每个轨迹段对应的轨迹点组,从而得到所述至少一个轨迹点组。
例如,在本公开一实施例提供的笔迹处理方法中,对所述至少一个轨迹段中的每个轨迹段进行插值处理以得到与每个轨迹段对应的轨迹点组,包括:对于每个轨迹段,根据该轨迹段对应的M个采样点,拟合得到所述轨迹段对应的贝塞尔曲线,在所述贝塞尔曲线上进行取点,以得到与所述轨迹段对应的轨迹点组。
例如,在本公开一实施例提供的笔迹处理方法中,所述笔迹的笔锋类型为毛笔笔锋。
本公开一实施例还提供一种笔迹处理装置,包括:存储器,用于非暂时性存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,其中,所述计算机可读指令被所述处理器运行时执行根据上述任一实施例所述的笔迹处理方法。
例如,本公开一实施例提供的笔迹处理装置还包括:触控显示屏,所述触控显示屏配置为基于用户的触控操作以获取所述原始笔迹轨迹。
例如,在本公开一实施例提供的笔迹处理装置中,所述触控显示屏还配置为显示所述笔迹。
本公开一实施例还提供一种非瞬时性存储介质,非暂时性地存储计算机可读指令,其中,当所述计算机可读指令由计算机执行时可以执行根据上述任一实施例所述的笔迹处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开一实施例提供的一种笔迹处理方法的示意性流程图;
图2A为本公开一些实施例提供的一种轨迹点组的示意图;
图2B为本公开一些实施例提供的另一种轨迹点组的示意图;
图3A为本公开一实施例提供的一种轨迹单元的示意图;
图3B为本公开一实施例提供的一种轨迹点的书写速度和轨迹点对应的轨迹单元的第一圆的直径之间的关系示意图;
图4为本公开一实施例提供的一种用于显示的笔迹的示意图;
图5A为本公开一实施例提供的一种第一轨迹单元和第二轨迹单元的示意图;
图5B为本公开一实施例提供的另一种第一轨迹单元和第二轨迹单元的示意图;
图6A为本公开一实施例提供的又一种第一轨迹单元和第二轨迹单元的示意图;
图6B为本公开一实施例提供的再一种第一轨迹单元和第二轨迹单元的示意图;
图7为本公开一实施例提供的又一种第一轨迹单元和第二轨迹单元的示意图;
图8A为本公开一实施例提供的一种不带透明度的轨迹单元的示意图;
图8B为本公开一实施例提供的一种带透明度的轨迹单元的示意图;
图9为本公开一些实施例提供的一种模拟铅笔笔锋的过程示意图;
图10为本公开一些实施例提供的一种模拟铅笔笔锋的效果图;
图11为本公开至少一实施例提供的一种笔迹处理装置的示意性框图;
图12为本公开至少一个实施例提供的一种存储介质的示意图;
图13示出了为本公开至少一实施例提供的一种硬件环境的示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
在教育、办公、医疗等领域内,智能交互设备,如电子白板作为一种便捷的工具,对信息的交互与共享产生了极其重要的作用。但是,电子交互白板的处理速度、笔迹美化效果还有待提升。目前,实现无压感书写输入毛笔笔锋效果的方法通常比较复杂,需要花费时间进行大量的计算才能输出具有笔锋效果的笔画,对硬件的计算资源要求较高,实时性欠缺,用户很难获得畅快的书写输入体验。
并且,近年来,随着平板电脑、智能手机等智能设备的技术进步,用户对书写功能的要求越来越高。然而,由于在智能设备的屏幕上的书写感受与在实际纸张上的书写感受不同,以及用户本身对书法的不熟悉,在智能设备上的书写效果不佳。笔迹自动美化技术能够消除书写笔迹的锯齿状或台阶状外观,同时具有笔锋效果,为用户提供更加光滑、圆润、流畅、自然的书写体验。
本公开的实施例提供的一种笔迹处理方法、笔迹处理装置和计算机存储介质,该笔迹处理方法包括:对在触控显示屏上的原始笔迹轨迹进行采样以得到多个采样点;基于多个采样点,计算得到至少一个轨迹点组,其中,至少一个轨迹点组中的每个轨迹点组包括N个轨迹点,N个轨迹点包括M个采样点,N为大于等于3的整数,M为大于等于3的整数,M≤N;基于在至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,其中,多个轨迹单元的每个轨迹单元为水滴状的水滴单元;依次连接多个轨迹单元,以得到用于在触控显示屏上显示的笔迹。
本公开的至少一实施例提供的笔迹处理方法中,用户通过手或者笔在电子设备上进行书写时,该无压感的书写轨迹还可以被美化为具有毛笔笔锋的展示效果,从而在电子设备上显示平滑且美化后的书写轨迹,在无压感情况下实时且有效地实现笔迹美化的效果。此外,该笔迹处理方法的计算速度快、实现原理简单、实时性好,从而笔迹处理方法可以应用于电子交互白板(例如,会议白板、教学白板等)、电子板报、机场数字签名墙、云本等需要书写输入的场景。
下面结合附图对本公开的几个实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图1为本公开一实施例提供的一种笔迹处理方法的示意性流程图。
例如,如图1所示,本公开一实施例提供的笔迹处理方法适用于具有触控显示功能的触控显示屏,可以包括以下步骤S10-S13:
步骤S10:对在触控显示屏上的原始笔迹轨迹进行采样以得到多个采样点;
步骤S11:基于多个采样点,计算得到至少一个轨迹点组;
步骤S12:基于在至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元;
步骤S13:依次连接多个轨迹单元,以得到用于在触控显示屏上显示的笔迹。
本公开实施例提供的笔迹处理方法可以基于轨迹点的运笔速度确定轨迹点对应的轨迹单元,从而实现模拟毛笔笔锋的书写效果。例如,在一些实施例中,本公开这些实施例提供的笔迹处理方法能够为机场显示屏提供一种趣味交互方式。机场作为一个城市的地标性建筑,是吸引游客的重要方式。本公开提供的笔迹处理方法可以集成到机场的显示屏上,当游客到达某个城市的机场时,可以在显示屏上书写签名,并以美化后的毛笔笔迹形式展示在显示屏上。游客与签名合影,形成一种独特的旅游“打卡”方式,从而吸引游客,有助于促进城市旅游业的发展。在另一些实施例中,本公开这些实施例提供的笔迹处理方法能够为智慧教室提供一种新型板报方式,该笔迹处理方法可以对学生或老师的板书、板报字体做美化,给出更清晰的的呈现。此外,该笔迹处理方法也可以设计更多的笔迹风格,例如,铅笔笔锋、钢笔笔锋等,在不丧失原有字体的基础上,形成更美观的字体。
例如,笔迹处理方法可以应用于搭载有安卓(android)***的电子设备上,电子设备可以包括应用层和算法层。应用层可以用于实现上述步骤S10,算法层可以用于实现上述步骤S11-S13。首先,应用层用于获取用户在触控显示屏上书写且由触控显示屏采集的原始笔迹轨迹(例如原始笔迹轨迹对应的初始数据,触控显示屏按照预定时序进行触控信号采集,得到初始数据,对初始数据进行处理得到相应的原始笔迹轨迹(例如,触控显示屏上被触摸点(触控电容)的组合)),并对原始笔迹轨迹进行采样以得到的多个采样点的坐标、类型和书写时间等相关信息。然后,应用层可以将多个采样点的坐标和每个采样点对应的类型和书写时间等相关信息传输至算法层,从而使算法层执行计算、判断等以进行后续美化笔迹的操作,例如,算法层对多个采样点进行平滑处理,并计算在不同笔锋(例如,铅笔笔锋或毛笔笔锋)的情况下,原始笔迹轨迹的显示方案,使原始笔迹轨迹实现笔迹美化的效果。原始笔迹轨迹的显示方案通过应用层实现显示,原始笔迹轨迹的显示方案包括起笔阶段的显示方案、运笔阶段的显示方案和收笔阶段的显示方案。需要说明的是,在本公开的实施例中,算法层可以对应于应用程序本身(例如,书写程序等),应用层对应于底层的驱动程序,底层的驱动程序对于触控显示屏采集的初始数据进行处理以得到对应的原始笔迹轨迹的数据,例如,时间、位置等;算法层获取经底层的驱动程序反馈的原始笔迹轨迹的数据,然后进行进一步处理。
例如,在步骤S10中,原始笔迹轨迹可以为用户通过手或笔输入到触控显示屏上的笔迹,即用户书写的笔迹。应用层可以通过稀疏采点的方式对原始笔迹轨迹进行采样以到多个采样点。多个采样点的数量可以根据实际情况确定。
例如,多个采样点沿着原始笔迹轨迹彼此间隔,即多个采样点彼此不重叠。
例如,原始笔迹轨迹可以具有任何形状。原始笔迹轨迹可以为中文字的轨迹,也可以为外文字(例如,英文、日文等)的轨迹。
需要说明的是,在一些实施例中,原始笔迹轨迹不在触控显示屏上进行显示;在另一实施例中,原始笔迹轨迹也可以在触控显示屏上进行显示,从而使用户可以同时观看到原始笔迹轨迹和美化后的笔迹。
图2A为本公开一些实施例提供的一种轨迹点组的示意图;图2B为本公开一些实施例提供的另一种轨迹点组的示意图。
例如,在步骤S11中,至少一个轨迹点组中的每个轨迹点组包括N个轨迹点,N个轨迹点包括M个采样点,N为大于等于3的整数,M为大于等于3的整数,M小于等于N。例如,在一些实施例中,N为9,M为3。本公开包括但不限于此,N和M的数量可以根据实际情况确定,在另一些实施例中,M可以为4,N可以为13。
例如,在一些实施例中,步骤S11可以包括:基于多个采样点,将原始笔迹轨迹划分为至少一个轨迹段,其中,每个轨迹段包括M个采样点;对至少一个轨迹段中的每个轨迹段进行插值处理以得到与每个轨迹段对应的轨迹点组,从而得到至少一个轨迹点组。
例如,如图2A所示,在一些实施例中,应用层可以在原始笔迹轨迹110上等时间间隔进行采样取点,以得到9个采样点C1-C9(黑空心点)。在原始笔迹轨迹110上,9个采样点C1-C9依次排列,例如,采样点C1和采样点C2相邻,采样点C2和采样点C3相邻,依次类推。
例如,在一些实施例中,在用户书写原始笔迹轨迹110的过程中,实时对原始笔迹轨迹110进行采样,以得到采样点,例如,每当应用层采样到三个采样点,应用层可以将采样到三个采样点输入至算法层,然后,算法层可以对该采样到的三个采样点进行处理,从而可以节省时间。例如,如图2A所示,在用户书写原始笔迹轨迹110的过程中,应用层即可对原始笔迹轨迹110进行采样,当应用层采样到采样点C1-C3之后,应用层即可将采样点C1-C3输入至算法层,以供算法层进行后续处理;同时,应用层继续进行采样,当应用层采样到采样点C4和C5之后,应用层即可将采样点C3-C5输入至算法层,依次类推。需要说明的是,例如,当算法层对采样点C1-C3进行处理之后,即可在触控显示屏上显示该用于显示的笔迹的与采样点C1-C3对应的部分,从而实现实时显示。又例如,也可以在算法层对所有采样点(例如采样点C1-C9)进行处理之后,然后,在触控显示屏上显示该完整的用于显示的笔迹。
又例如,在另一些实施例中,在用户书写完原始笔迹轨迹110之后,应用层再对原始笔迹轨迹110进行采样,以得到采样点。
例如,9个采样点C1-C9可以将原始笔迹轨迹划分为四个轨迹段,四个轨迹段分别为采样点C1-C3之间的第一轨迹段、采样点C3-C5之间的第二轨迹段、采样点C5-C7之间的第三轨迹段和采样点C7-C9之间的第四轨迹段。第一轨迹段、第二轨迹段、第三轨迹段和第四轨迹段在原始笔迹轨迹110的延伸方向(即从采样点C1到采样点C9的方向)上依次排列,第一轨迹段和第二轨迹段相邻且均与同一个采样点C3对应,第二轨迹段和第三轨迹段相邻且均与同一个采样点C5对应,第三轨迹段和第四轨迹段相邻且均与同一个采样点C7对应。
例如,原始笔迹轨迹110包括对应于起笔阶段的部分、对应于运笔阶段的部分和对应于收笔阶段的部分。对应于起笔阶段的部分、对应于运笔阶段的部分和对应于收笔阶段的部分可以根据安卓***的事件驱动的规则确定,例如,落笔事件对应于起笔阶段,抬笔事件对应于收笔阶段等。例如,如图2A所示,在一些实施例中,第一轨迹段可以表示原始笔迹轨迹110的对应于起笔阶段的部分,第二轨迹段和第三轨迹段可以表示原始笔迹轨迹110的对应于运笔阶段的部分,第四轨迹段可以表示原始笔迹轨迹110的对应于收笔阶段的部分。需要说明的是,在时间上,起笔阶段的部分位于运笔阶段的部分之前,运笔阶段的部分位于收笔阶段的部分之前。
例如,对至少一个轨迹段中的每个轨迹段进行插值处理以得到与每个轨迹段对应的轨迹点组,包括:对于每个轨迹段,根据该轨迹段中的M个采样点,拟合得到该轨迹段对应的贝塞尔曲线,在贝塞尔曲线上进行取点,以得到与轨迹段对应的轨迹点组。
例如,对于第一轨迹段,可以对第一轨迹段对应的三个采样点C1-C3进行二阶贝塞尔曲线拟合以得到与第一轨迹段对应的贝塞尔曲线100。类似地,对于第二轨迹段,可以对第二轨迹段对应的三个采样点C3-C5进行二阶贝塞尔曲线拟合以得到与第二轨迹段对应的贝塞尔曲线;对于第三轨迹段,可以对第三轨迹段对应的三个采样点C5-C7进行二阶贝塞尔曲线拟合以得到与第三轨迹段对应的贝塞尔曲线;对于第四轨迹段,可以对第四轨迹段对应的三个采样点C7-C9进行二阶贝塞尔曲线拟合以得到与第四轨迹段对应的贝塞尔曲线。
例如,以第一轨迹段为例,如图2A所示,与第一轨迹段对应的贝塞尔曲线100上进行插值取点,以得到与第一轨迹段对应的轨迹点组。例如,在采样点C1和采样点C2之间采样3个轨迹点,在采样点C2和采样点C3之间也采样3个轨迹点,由此,与第一轨迹段对应的轨迹点组包括9个轨迹点,该9个轨迹点为与第一轨迹段对应的三个采样点C1-C3和图2A所示的在贝塞尔曲线100上的其余6个轨迹点(黑实心点,即插值得到的点)。对所有轨迹段分别进行插值取点,从而得到与至少一个轨迹段一一对应的至少一个轨迹点组。
例如,如图2B所示,在另一些实施例中,应用层可以在原始笔迹轨迹上例如等时间间隔进行采样取点,以得到5个采样点A1-A5。在原始笔迹轨迹上,5个采样点A1-A5依次排列,例如,采样点A1和采样点A2相邻,采样点A2和采样点A3相邻,依次类推。
例如,5个采样点A1-A5也可以将原始笔迹轨迹划分为四个轨迹段,四个轨迹段分别为采样点A1-A2之间的第一轨迹段、采样点A2-A3之间的第二轨迹段、采样点A3-A4之间的第三轨迹段和采样点A4-A5之间的第四轨迹段。第一轨迹段、第二轨迹段、第三轨迹段和第四轨迹段在原始笔迹轨迹的延伸方向(即从采样点A1到采样点A5的方向)上依次排列。
例如,对于第一轨迹段,首先,应用层将与第一轨迹段对应的两个采样点A1和A2传输至算法层,然后,算法层计算出采样点A1和A2的中点B1,对采样点A1和A2、中点B1进行二阶贝塞尔曲线拟合以得到与第一轨迹段对应的贝塞尔曲线100。类似地,对于第二轨迹段,应用层将对第二轨迹段对应的两个采样点A2和A3传输至算法层,算法层计算出采样点A2和A3的中点B2,对采样点A2和A3、中点B2进行二阶贝塞尔曲线拟合以得到与第二轨迹段对应的贝塞尔曲线;对于第三轨迹段,应用层将对第三轨迹段对应的两个采样点A3和A4传输至算法层,算法层计算出采样点A3和A4的中点B3,对采样点A3和A4、中点B3进行二阶贝塞尔曲线拟合以得到与第三轨迹段对应的贝塞尔曲线;对于第四轨迹段,应用层将对第四轨迹段对应的两个采样点A4和A5传输至算法层,算法层计算出采样点A4和A5的中点B4,对采样点A4和A5、中点B4进行二阶贝塞尔曲线拟合以得到与第四轨迹段对应的贝塞尔曲线。
例如,以第一轨迹段为例,如图2B所示,与第一轨迹段对应的贝塞尔曲线100上进行插值取点,以得到与第一轨迹段对应的轨迹点组,例如,在采样点A1和采样点B1之间采样3个轨迹点,在采样点B1和采样点A2之间也采样3个轨迹点。对所有轨迹段分别进行插值取点,从而得到与至少一个轨迹段一一对应的至少一个轨迹点组。
例如,可以采用等曲线间隔的方式采样轨迹点,例如,如图2A所示,对于采样点C1、采样点C2、在采样点C1和采样点C2之间的3个轨迹点,这五个轨迹点中任意相邻的两个轨迹点之间的曲线段的长度为采样点C1和采样点C2之间的曲线段的长度的四分之一,对于采样点C2、采样点C3、在采样点C2和采样点C3之间的3个轨迹点,这五个轨迹点中任意相邻的两个轨迹点之间的曲线段的长度为采样点C2和采样点C3之间的曲线段的长度的四分之一。值得注意的是,如图2A所示,在采样点C1和采样点C2之间的两个相邻轨迹点之间的曲线段的长度和在采样点C2和采样点C3之间的两个相邻轨迹点之间的曲线段的长度不相等。
又例如,也可以采样等时间间隔的方式采样轨迹点,也就是说,每个轨迹段组中的九个轨迹点中任意相邻的两个轨迹点之间的时间差是固定的。需要说明的是,本公开对采样轨迹点的方式不作具体限制。
需要说明的是,与第一轨迹段对应的轨迹点组中的所有轨迹点均位于与第一轨迹段对应的贝塞尔曲线100上,与第一轨迹段对应的轨迹点组中的一个或多个轨迹点可能并不位于第一轨迹段上。
例如,将原始笔迹轨迹划分为至少一个轨迹段,然后分别对至少一个轨迹段进行采样轨迹点,从而可以在整体性和实时性之间实现平衡,同时,有助于后续步骤(例如,收笔处理)的操作。
需要说明的是,在一些实施例中,可以将采样得到的多个采样点直接作为轨迹点组中的轨迹点,而不需要对采样点进行插值处理。如图2A所示,对于第一轨迹段,可以直接对第一轨迹段进行采样以得到九个采样点,该九个采样点即可作为第一轨迹段对应的轨迹点组中的轨迹点。
例如,在一些实施例中,至少一个轨迹点组中的所有轨迹点可以均为运笔轨迹点;在另一些实施例中,至少一个轨迹点组中的所有轨迹点可以均为起笔轨迹点;在又一些实施例中,至少一个轨迹点组中的所有轨迹点可以均为收笔轨迹点。又例如,在一些实施例中,至少一个轨迹点组中的所有轨迹点可以包括起笔轨迹点、运笔轨迹点和收笔轨迹点中的至少两种。
图3A为本公开一实施例提供的一种轨迹单元的示意图;图3B为本公开一实施例提供的一种轨迹点的书写速度和轨迹点对应的轨迹单元的第一圆的直径之间的关系示意图。
例如,如图3A所示,每个轨迹单元至少包括多边形220、第一圆200和第二圆210,例如,在一些实施例中,多边形220为四边形,这里,第一圆200的半径大于第二圆210的半径,多边形220的四个顶点为第一圆200和第二圆210之间的四个外公切点q1-q4。需要说明的是,在本公开的实施例中,水滴状的水滴单元表示一个水滴状的闭合轨迹。
例如,在另一些实施例中,每个轨迹单元可以包括两条线段、第一圆和第二圆,两条线段即为第一圆和第二圆的两条外公切线的在外公切点q1-q4之间的线段,即图3A所示的,两条线段即为线段q1q3和线段q2q4。又例如,在另一些实施例中,也可以将每个轨迹单元中的第二圆替换为三角形。本宫对此不作具体限制。
例如,应用层可以将采样得到的所有轨迹点和所有轨迹点的相关信息传输至算法层。轨迹点的相关信息可以包括每个轨迹点的坐标、每个轨迹点的书写时间、每个轨迹点的书写速度和笔锋运动过程中的动作类型(下面简称轨迹点的动作类型)等。
例如,如图3A所示,以触控显示屏的显示画面的左上角为坐标原点确定一个像素坐标系OXY,X轴向右延伸,Y轴向下延伸。例如,在图中,X轴可以与水平方向平行,Y轴可以与竖直方向平行。例如,轨迹点的坐标可以为轨迹点对应的多个像素点中任意一个像素点的坐标;或者,轨迹点的坐标可以为轨迹点对应的多个像素点的中间像素点的坐标。
例如,轨迹点的动作类型可以包括起笔、运笔(也称为行笔)和收笔。当某个轨迹点的动作类型为起笔,则表示该轨迹点位于原始笔迹轨迹的起笔阶段的部分,当某个轨迹点的动作类型为运笔,则表示该轨迹点位于原始笔迹轨迹的运笔阶段的部分,当某个轨迹点的动作类型为收笔,则表示该轨迹点位于原始笔迹轨迹的收笔阶段的部分。例如,如图2A所示,在一些实施例中,第一轨迹段对应的所有轨迹点的动作类型均为起笔,第二轨迹段和第三轨迹段对应的所有轨迹点的动作类型均为运笔,第四轨迹段对应的所有轨迹点的动作类型均为收笔。
例如,采样点的书写速度可以根据相邻采样点的坐标和时间确定,插值得到的点(例如,图2A所示的在贝塞尔曲线100上C1和C2之间的黑实心点)的速度和类型是根据用于插值的两个真实的采样点(即采样点C1和C2)确定的。
例如,对于图2A所示的采样点C2,采样点C3的书写速度可以根据采样点C2的坐标和时间以及采样点C3的坐标和时间确定,即根据采样点C2和采样点C3之间的时间差和位置差确定,例如,采样点C3的书写速度可以为采样点C2和采样点C3之间的位置差除以采样点C2和采样点C3之间的时间差得到。插值得到的点速度均是模拟出的,插值得到的点的书写速度可以基于采样点的书写速度确定,例如,对于采样点C2、采样点C3、采样点C2和采样点C3之间的3个插值得到的点,这五个轨迹点中任意相邻的两个轨迹点的书写速度之差为采样点C2的书写速度和采样点C3的书写速度的差值的四分之一,即这五个轨迹点的书写速度呈等差数列。又例如,在另一种实施中,对于采样点C2和采样点C3之间的3个插值得到的点,该3个插值得到的点的书写速度为采样点C2的书写速度和采样点C3的书写速度的平均值。
例如,原始笔迹轨迹对应的第一个采样点(例如,对于图2A所示的原始笔迹轨迹110,第一个采样点为采样点C1)的速度为0,对于与该第一采样点相邻的第二采样点(例如,对于图2A所示的原始笔迹轨迹110,第二个采样点为采样点C2),该第二采样点的书写速度则可以根据第一采样点(即采样点C1)和第二个采样点(即采样点C2)之间的时间差和位置差确定。此外,在又一些实施例中,在获取采样点时,也可以直接获取该采样点对应的书写速度,即应用层可以获取采样点的书写速度,并将该书写速度传输至算法层。
例如,插值得到的点(例如,图2A所示的在贝塞尔曲线100上C1和C2之间的黑实心点)的类型和用于插值的两个真实的采样点(即采样点C1和C2)的类型相同。
例如,笔迹的宽度与轨迹点的书写速度相关,当轨迹点的书写速度快,则笔迹的宽度小,当轨迹点的书写速度慢,则笔迹的宽度大。
例如,在步骤S12中,针对原始笔迹轨迹上每一个轨迹点,应用层在轨迹点对应的位置设置一个水滴的形状来模拟毛笔书写的效果,实现模拟毛笔笔锋。
例如,在一些实施例中,步骤S12包括:确定在所有轨迹点中的动作类型为运笔的轨迹点,以得到T1个运笔轨迹点,其中,T1为小于等于所有轨迹点的数量的正整数,多个轨迹单元包括与所述T1个运笔轨迹点一一对应的T1个运笔轨迹单元;获取第一平均参考速度;对于T1个运笔轨迹点中的第p个运笔轨迹点,根据第一参考平均速度和第p个运笔轨迹点对应的书写速度和位置,确定T1个运笔轨迹单元中与第p个运笔轨迹点对应的第p个运笔轨迹单元中的第一圆的半径和圆心,其中,p为正整数,且p小于等于T1;根据第p个运笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定第p个运笔轨迹单元中的第二圆的半径和圆心;基于第p个运笔轨迹单元中的第一圆和第二圆,确定第p个运笔轨迹单元中的多边形,以确定第p个运笔轨迹单元,分别对T1个运笔轨迹点进行上述处理,从而确定与T1个运笔轨迹点一一对应的T1个运笔轨迹单元。
例如,当第p个运笔轨迹点实际上为采样得到的采样点,则第p个运笔轨迹点的书写速度可以通过第p个运笔轨迹点对应的时间和位置和与该第p个运笔轨迹点相邻的上一个采样点对应的时间和位置确定。当第p个运笔轨迹点实际上为通过对两个相邻的采样点进行插值得到轨迹点,则该第p个运笔轨迹点的书写速度可以通过该两个相邻的采样点的书写速度确定。
例如,如图2A所示,T1个运笔轨迹点为采样点C3至采样点C7、采样点C3和采样点C7之间的所有轨迹点;如图2B所示,T1个运笔轨迹点为采样点A2至采样点A4、采样点A2和采样点A4之间的所有轨迹点。
例如,对于多个轨迹单元中的每个轨迹单元,如图3A所示,第一圆200的圆心O1为第一圆200所在的轨迹单元对应的轨迹点。例如,在一些实施例中,对于第p个运笔轨迹单元,第p个运笔轨迹单元的第一圆的圆心为第p个运笔轨迹点的坐标;在另一些实施例中,可以按照预定规则,根据第p个运笔轨迹点的坐标确定第p个运笔轨迹单元的第一圆的圆心。例如,预定规则可以为:原始笔迹轨迹位于触控显示屏的第一区域,用于显示的笔迹位于触控显示屏的第二区域(第二区域位于第一区域的右侧),第一圆位于对应的轨迹点的右侧预设距离的位置等,第一区域的尺寸、第二区域的尺寸、预定规则和预设距离可以由用户根据实际情况设定。
例如,第p个运笔轨迹单元的第一圆200的半径由第p个运笔轨迹点对应的书写速度和第一平均参考速度决定,且满足以下关系式:
dt=kt*dt-1,kt=2/(1+e[0.06*(vt-vavg)/vavg])
其中,dt为在第p个运笔轨迹单元中的第一圆的直径,dt-1为与第p个运笔轨迹单元在时间上相邻的前一个轨迹单元(例如,前一个轨迹单元可能为运笔轨迹单元,也可能为后面将要描述的起笔轨迹单元)的第一圆的直径,kt为第p个运笔轨迹点对应的半径调整系数,vt为第p个运笔轨迹点对应的书写速度,vavg为第一平均参考速度,例如,vavg可以为500像素点/秒。例如,如图2A所示,在时间上,与采样点C3相邻的前一个轨迹点为轨迹点C30,采样点C3对应的轨迹单元在时间上相邻的前一个轨迹单元为轨迹点C30对应的轨迹单元。
需要说明的是,在另一些实施例中,第p个运笔轨迹单元的第二圆的圆心为第p个运笔轨迹点,然后,根据第一圆的圆心和第二圆的圆心之间的圆心,基于第p个运笔轨迹单元的第二圆的圆心确定第p个运笔轨迹单元的第一圆的圆心。
例如,算法层预先设定书写过程的第一平均参考速度vavg,如果当前轨迹点的书写速度小于等于第一平均参考速度,调整当前轨迹点对应的轨迹单元中的第一圆的直径变大,使当前轨迹点对应的笔画***;如果当前轨迹点的书写速度大于第一平均参考速度,调整当前轨迹点对应的轨迹单元中的第一圆的直径变小,使当前轨迹点对应的笔画变细。
例如,第一圆200的直径的调整范围设置有限制,第一圆200的直径的最大值不得超过设定线宽的1.1倍,第一圆200的直径的最小值不得低于设定线宽的0.3倍,也就是说,0.3*ds≤dt≤1.1*ds,其中,ds为设定线宽,从而防止由于用户手抖或用户不适应带来的笔画过粗过细。例如,ds为常数,且可以由用户设定。
例如,第一圆200的直径实际上对应于轨迹点的书写速度,如图3B所示,第一圆200的直径的最大值对应于轨迹点的书写速度的截断低速,第一圆200的直径的最小值对应于轨迹点的书写速度的截断高速,在平均速度附近,第一圆200的直径的变化较平缓,从而抑制笔画宽度抖动。
例如,圆心位置关系表示:第一圆200的圆心O1和第二圆210的圆心O2之间的圆心连线O1O2沿逆时针方向旋转预设圆心角度θ到对应方向VD,第一圆200的圆心O1和第二圆210的圆心O2满足以下关系式:
do/R=C1,
其中,R为第一圆200的半径,do为第一圆200的圆心O1和第二圆210的圆心O2之间的圆心连线O1O2的距离,C1为常数。
例如,半径关系表示:第一圆200的半径大于第二圆210的半径,且第一圆200的半径和第二圆210的半径满足以下关系式:
r/R=C2,
其中,r为第二圆210的半径,C2为常数。
例如,在一些实施例中,C1的范围为1.2~2,例如,C1为1.8;C2的范围为0.2~0.4,例如,C2为0.3;预设圆心角度θ的范围为20°~40°,例如,预设圆心角度θ为30度。C1和C2的取值需要满足使得第一圆200和第二圆210不相交。
例如,对应方向VD可以为X轴的反方向,在基于触控显示屏的显示画面确定的像素坐标系OXY中,第一圆200的圆心的横坐标大于第二圆210的圆心的横坐标,第一圆200的圆心的纵坐标大于第二圆210的圆心的纵坐标,由此,如图3A所示,第二圆210位于第一圆200的左上方。
例如,在另一些实施例中,在步骤S12中,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元包括:确定在所有轨迹点中的动作类型为起笔的轨迹点,以得到T3个起笔轨迹点,其中,T3为小于等于所有轨迹点的数量的正整数,多个轨迹单元包括与所述T3个起笔轨迹点一一对应的T3个起笔轨迹单元;设定T3个起笔轨迹单元的第一圆的直径为设定线宽;对于T3个起笔轨迹点中的第z个起笔轨迹点,根据第z个起笔轨迹点对应的位置,确定T3个起笔轨迹单元中与第z个起笔轨迹点对应的第z个起笔轨迹单元中的第一圆的圆心,其中,z为正整数,且z小于等于T3;根据第z个起笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定第z个起笔轨迹单元中的第二圆的半径和圆心;基于第z个起笔轨迹单元中的第一圆和第二圆,确定第z个起笔轨迹单元中的多边形,以确定第z个起笔轨迹单元,分别对T3个起笔轨迹点进行上述处理,从而确定T3个起笔轨迹点对应的所述T3个起笔轨迹单元。
例如,在一些实施例中,第z个起笔轨迹单元的第一圆的圆心为第z个起笔轨迹点的坐标。在另一些实施例中,可以按照预定规则,根据第z个起笔轨迹点的坐标确定第z个起笔轨迹单元的第一圆的圆心。圆心位置关系和半径位置关系可以参考上面的相关描述,重复之处不再赘述。
例如,在模拟毛笔笔锋的过程中,用户可以指定使用设定线宽进行书写,此时,在起笔阶段,可以设置与起笔轨迹点对应的轨迹单元中的第一圆的直径与设定线宽相同。
例如,在一些实施例中,所有轨迹点仅包括一个起笔轨迹点,即T3为1,如图2A所示,起笔轨迹点可以为采样点C1,此时,采样点C1对应的起笔轨迹单元的第一圆的直径为设定线宽;在另一些实施例中,所有轨迹点包括多个起笔轨迹点,即T3大于1,例如T3为9,此时,多个起笔轨迹点可以为采样点C1、采样点C2、采样点C3、采样点C1和采样点C3之间的所有轨迹点,多个起笔轨迹点对应的多个起笔轨迹单元的第一圆的直径均相同且均为设定线宽。
图4为本公开一实施例提供的一种用于显示的笔迹的示意图。
例如,在另一些实施例中,在步骤S12中,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元包括:确定在所有轨迹点中的动作类型为收笔的轨迹点,以得到T2个收笔轨迹点,其中,T2为小于等于所有轨迹点的数量的正整数,多个轨迹单元包括与T2个收笔轨迹点一一对应的T2个收笔轨迹单元;获取第二平均参考速度;对于T2个收笔轨迹点中的第i个收笔轨迹点,根据第二平均参考速度和第i个收笔轨迹点对应的书写速度和位置,确定T2个收笔轨迹单元中与所述第i个收笔轨迹点对应的第i个收笔轨迹单元中的第一圆的半径和圆心,其中,i为正整数,且i小于等于T2;根据第i个收笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定第i个收笔轨迹单元的第二圆的半径和圆心;基于第i个收笔轨迹单元中的第一圆和第二圆,确定第i个收笔轨迹单元中的多边形,以确定所述第i个收笔轨迹单元,分别对T2个收笔轨迹点进行上述处理,从而确定与T2个收笔轨迹点一一对应的T2个收笔轨迹单元。
例如,在收笔阶段,由于轨迹单元的第一圆的直径的截断处理,在不做附加处理时无法产生“尖”的效果。在收笔阶段,可以设置第二平均参考速度,如果收笔阶段的轨迹点的书写速度大于第二平均参考速度,则对该收笔阶段的轨迹点执行收笔尖处理,即减小收笔阶段的轨迹点对应的轨迹单元的第一圆的直径,使得收笔阶段的轨迹点的宽度可以小于设定线宽。如图4所示,当对收笔阶段对应的轨迹点执行收笔尖处理时,收笔部分(图4中圆圈圈出来的部分)的线宽较小,与毛笔笔锋类似;当不对收笔阶段对应的轨迹点执行收笔尖处理时,收笔部分的线宽较大。
例如,在一些实施例中,第i个收笔轨迹单元的第一圆的圆心为第i个收笔轨迹点的坐标,在另一些实施例中,可以按照预定规则,根据第i个收笔轨迹点的坐标确定第i个收笔轨迹单元的第一圆的圆心。
例如,第i个收笔轨迹单元的第一圆的半径由第i个收笔轨迹点对应的书写速度和第二平均参考速度决定,满足以下关系式:
dy=ki’*dy-1,ki’=6/(1+e[0.06*(vi-vavg’)/vavg’])
其中,dy为在第i个收笔轨迹单元中的第一圆的直径,dy-1为与第i个收笔轨迹单元在时间上相邻的前一个轨迹单元的第一圆的直径,ki’为第i个收笔轨迹单元对应的半径调整系数,vi为第i个收笔轨迹点对应的书写速度,vavg’为第二平均参考速度。
需要说明的是,圆心位置关系和半径位置关系可以参考上面的相关描述,重复之处不再赘述。
例如,第一平均参考速度为运笔阶段对应的参考速度,第二平均参考速度为收笔阶段对应的参考速度。第二平均参考速度vavg’小于第一平均参考速度vavg,在一些实施例中,第二平均参考速度可以为vavg’=100.0像素点/s。
例如,基于至少一个轨迹点组在原始笔迹轨迹上对应的位置,对至少一个轨迹点组进行排序,将排序后的至少一个轨迹点组中的最后一个轨迹点组中的N个轨迹点的动作类型为收笔,即将最后一个轨迹点组中的N个轨迹点作为收笔轨迹点,例如,如图2A所示,T2个收笔轨迹点可以为采样点C8、采样点C9、采样点C7和采样点C9之间的所有轨迹点;如图2B所示,T2个收笔轨迹点为采样点A5、采样点A4和采样点A5之间的所有轨迹点。需要说明的是,本公开的实施例包括但不限于此,T2个收笔轨迹点的数量可以根据实际情况确定。
例如,在上面的描述中,以触控和显示在同一个触控显示屏中实现为例进行说明,然而,本公开不限于此,在另一些实施例中,原始笔迹轨迹可以通过触控装置采集,用于显示的笔迹可以通过显示装置进行显示,也就是说,触控装置和显示装置分离设置,此时,可以将触控装置的触控区域(即可供用户书写的区域)的左上角作为原点、向右延伸的方向作为x轴(x的值越来越大),向下延伸的方向作为y轴(y的值越来越大),以构建第一坐标系,每个轨迹点的坐标为每个轨迹点在第一坐标系中的坐标。例如,类似地,可以将显示装置的显示区域的左上角作为原点、向右延伸的方向作为x轴(x的值越来越大),向下延伸的方向作为y轴(y的值越来越大),以构建第二坐标系,此时,需要将每个轨迹点的坐标(每个轨迹点在第一坐标系中的坐标)映射到第二坐标系中,以确定在第二坐标系中每个轨迹点对应的轨迹单元的第一圆的圆心。也就是说,轨迹点位于第一坐标系,第一圆的圆心位于第二坐标系。
图5A为本公开一实施例提供的一种第一轨迹单元和第二轨迹单元的示意图;图5B为本公开一实施例提供的另一种第一轨迹单元和第二轨迹单元的示意图。
例如,在一些实施例中,对于相邻的第一轨迹单元和第二轨迹单元,可以基于第一轨迹单元的第一圆和第二圆和第二轨迹单元的第一圆和第二圆的公切点连接第一轨迹单元和第二轨迹单元,从而准确地连接多个轨迹单元,使得显示的笔迹更加平滑。
例如,步骤S13包括:基于至少一个轨迹点组中的所有轨迹点在原始笔迹轨迹上对应的位置,对多个轨迹单元进行排序;对于排序后的多个轨迹单元中的任意相邻的第一轨迹单元和第二轨迹单元,响应于第一轨迹单元的第一圆和第二圆和第二轨迹单元的第一圆和第二圆中的任意两个圆均不是内含关系,确定第一轨迹单元的第一圆和第二轨迹单元的第一圆之间的两个第一公切点和两个第二公切点,确定第一轨迹单元的第二圆和第二轨迹单元的第二圆之间的两个第三公切点和两个第四公切点;从两个第一公切点、两个第二公切点、两个第三公切点和两个第四公切点中选择得到四个目标公切点;依次连接四个目标公切点确定一个四边形,以使第一轨迹单元和第二轨迹单元连接,分别对多个轨迹单元进行上述处理,从而依次连接多个轨迹单元以得到笔迹。
例如,如图2A所示,沿采样点C1至采样点C9的方向,对所有轨迹点对应的多个轨迹单元进行排序。
例如,如图5A所示,对于多个轨迹单元中的任意相邻的第一轨迹单元300和第二轨迹单元310,如果第一轨迹单元300的第一圆和第二圆和第二轨迹单元310的第一圆和第二圆中的任意两个圆均不是内含关系,此时,计算第一轨迹单元300的第一圆和第二轨迹单元310的第一圆之间的两个第一公切点w11和w12和两个第二公切点w21和w22,计算第一轨迹单元300的第二圆和第二轨迹单元310的第二圆之间的两个第三公切点w31和w32和两个第四公切点w41和w42;例如,两个第一公切点w11和w12位于第一轨迹单元300的第一圆上,两个第二公切点w21和w22位于第二轨迹单元310的第一圆上,两个第三公切点w31和w32位于第一轨迹单元300的第二圆上,两个第四公切点w41和w42位于第二轨迹单元310的第二圆上。
图5B示出了第一轨迹单元300和第二轨迹单元310之间的各种位置关系。在图5A和图5B中,有阴影的圆表示第一轨迹单元300,没有阴影的圆表示第二轨迹单元310。如图5B所示,以第一轨迹单元300为中心确定九宫格,九宫格包括区域1-9,第一轨迹单元300位于九宫格的第二行第二列,即第一轨迹单元300位于区域5;第二轨迹单元310可以位于九宫格的任意位置,例如,当第二轨迹单元310位于区域5时,第一轨迹单元300和第二轨迹单元310中的两个圆可能具有相交或内含关系;当第二轨迹单元310位于区域1、2、3、4、6、7、8、9时,第一轨迹单元300和第二轨迹单元310中的任意两个圆均不是内含关系。
需要说明的是,为了清楚示出各个公切点,图5A和图5B中没有画出轨迹单元的多边形,仅示出了轨迹单元的第一圆和第二圆。
下面简单介绍计算任意两个圆之间的精确外公切点的方式。
如图5A所示,以两个圆分别为第一轨迹单元300的第一圆和第二轨迹单元310的第一圆为例,假设两个圆的方程分别如下所示:
其中,r1表示第一轨迹单元300的第一圆的半径,r2表示第二轨迹单元310的第一圆的半径,a1表示第一轨迹单元300的第一圆的圆心的横坐标,a2表示第二轨迹单元310的第一圆的圆心的横坐标,b1表示第一轨迹单元300的第一圆的圆心的纵坐标,b2表示第二轨迹单元310的第一圆的圆心的纵坐标。
假设两个圆的两条公切线L的方程表示为:
L:y=kx+b
两条公切线L与第一轨迹单元300的第一圆相切的条件表示为:
两条公切线L与第二轨迹单元310的第一圆相切的条件表示为:
从而可以根据上述公式(1)和(2)可以计算得到两组(k,b)。将两组(k,b)代入下式(3)和(4)可得第一轨迹单元300的第一圆和第二轨迹单元310的第一圆之间的两个第一公切点w11和w12和两个第二公切点w21和w22。
两组(x1,y1)表示两个第一公切点w11和w12,两组(x2,y2)表示两个第二公切点w21和w22。
例如,从两个第一公切点、两个第二公切点、两个第三公切点和两个第四公切点中选择得到四个目标公切点,包括:
确定第一轨迹单元的第一圆和第二圆之间的第一外公切线和第二外公切线,其中,第一外公切线的斜率小于第二外公切线的斜率;
确定第一轨迹单元的第二圆和第二轨迹单元的第二圆之间的第三外公切线和第四外公切线;
响应于第三外公切线的斜率大于第四公切线的斜率,且第三外公切线的斜率大于第一外公切线的斜率且小于第一轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心连线的斜率,或者,响应于第三外公切线的斜率小于第四公切线的斜率,且第三外公切线的斜率小于第二外公切线的斜率且大于第一轨迹单元的第一圆的圆心和第二圆的圆心之间的连线的斜率,将两个第一公切点和两个第二公切点作为四个目标公切点;
响应于第三外公切线的斜率大于第四公切线的斜率且小于第一外公切线的斜率,或者,响应于第三外公切线的斜率小于第四公切线的斜率且大于第二外公切线的斜率,将两个第一公切点中远离第一轨迹单元的第二圆的第一公切点、两个第三公切点中远离第一轨迹单元的第一圆的第三公切点、两个第二公切点中远离第二轨迹单元的第二圆的第二公切点和两个第四公切点中远离第二轨迹单元的第一圆的第四公切点作为四个目标公切点。
图6A为本公开一实施例提供的又一种第一轨迹单元和第二轨迹单元的示意图;图6B为本公开一实施例提供的再一种第一轨迹单元和第二轨迹单元的示意图。
例如,如图6A和图6B所示,第一轨迹单元的第一圆和第二圆之间的第一外公切线的斜率为k1,第一轨迹单元的第一圆和第二圆之间的第二外公切线的斜率为k2,第一轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心连线的斜率表示为k0,当第一轨迹单元的第一圆和第二圆之间的预设圆心角度θ固定时,k1、k0和k2均为常数,且k1小于k0,k0小于k2。第一轨迹单元的第二圆和第二轨迹单元的第二圆之间的第三外公切线的斜率为k3,第一轨迹单元的第二圆和第二轨迹单元的第二圆之间的第四外公切线的斜率为k4,在图6A所示的示例中,k3大于k4,在图6B所示的示例中,k3小于k4。k3和k4由第一轨迹单元和第二轨迹单元之间的位置关系决定。
例如,响应于第三外公切线的斜率k3大于第四公切线的斜率k4,即在图6A所示的示例中,第三外公切线的斜率k3大于第一外公切线的斜率k1且小于第一轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心连线的斜率k0,或者,响应于第三外公切线的斜率k3小于第四公切线的斜率k4,即在图6B所示的示例中,第三外公切线的斜率k3小于第二外公切线的斜率k2且大于第一轨迹单元的第一圆的圆心和第二圆的圆心之间的连线的斜率k0,可以将两个第一公切点w11和w12和两个第二公切点w21和w22作为四个目标公切点。此时,如图5B所示,第二轨迹单元310可以位于九宫格的第一行第一列的区域1或第三行第三列的区域9。
例如,响应于第三外公切线的斜率k3大于第四公切线的斜率k4且小于第一外公切线的斜率k1,或者,响应于第三外公切线的斜率k3小于第四公切线的斜率k4且大于第二外公切线的斜率k2,此时,如图5B所示,第二轨迹单元310可以位于九宫格的第一行第二列的区域2或第一行第三列的区域3或第二行第一列的区域4或第二行第三列的区域6或第三行第一列的区域7或第三行第二列的区域8。在此情况下,可以将两个第一公切点w11和w12中远离第一轨迹单元的第二圆的第一公切点、两个第三公切点w31和w32中远离第一轨迹单元的第一圆的第三公切点、两个第二公切点w21和w22中远离第二轨迹单元的第二圆的第二公切点和两个第四公切点w41和w42中远离第二轨迹单元的第一圆的第四公切点作为四个目标公切点。
图7为本公开一实施例提供的又一种第一轨迹单元和第二轨迹单元的示意图。
例如,如图7所示,对于第一轨迹单元310的第一圆的两个第一公切点w11和w12,第一公切点w11和第一轨迹单元310的第二圆的圆心的距离为d1,第一公切点w12和第一轨迹单元310的第二圆的圆心的距离为d2,由于d1大于d2,因此,可以选择第一公切点w11作为目标公切点。
例如,笔迹处理方法还包括:响应于第一轨迹单元的第一圆和第二圆以及第二轨迹单元的第一圆和第二圆中,四个圆的至少两个圆是内含关系,则确定第一轨迹单元和第二轨迹单元不需要连接。
例如,如图5B所示,第二轨迹单元310位于九宫格的区域5中,且第一轨迹单元300的第一圆和第二轨迹单元310的第一圆是内含关系,在此种情况下,可以确定第一轨迹单元和第二轨迹单元不需要连接。
例如,在另一些实施例中,在运笔阶段,为了提高算法速度,可以不通过公切点连接多个轨迹单元,而获取轨迹单元对应的近似连接点以连接多个轨迹单元。例如,步骤S13包括:对于至少一个轨迹点组中第k个轨迹点组,其中,第k个轨迹点组中的N个轨迹点在原始笔迹轨迹的延伸方向上依次排列,k为正整数,且小于等于至少一个轨迹点组的数量;确定在原始笔迹轨迹的延伸方向上第k个轨迹点组中的第一个轨迹点和第N个轨迹点;获取第一个轨迹点的第一个坐标和第N个轨迹点的第二个坐标;根据第一个坐标和第二个坐标,确定第k个轨迹点组对应的轨迹段的方向;根据第k个轨迹点组对应的轨迹段的方向,确定第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点;根据N个轨迹单元对应的N个第一连接点和N个第二连接点依次连接N个轨迹单元,对所有轨迹点对应的多个轨迹单元均按照上述方式确定连接点,然后根据连接点依次连接多个轨迹单元,以得到用于在触控显示屏上显示的笔迹。
例如,可以设定轨迹段的方向包括6个方向,6个方向分别为横方向、竖方向、撇方向、捺方向、提方向、其他方向。
例如,根据第一个坐标和第二个坐标,确定第k个轨迹点组对应的轨迹段的方向,包括:根据第一个坐标和第二个坐标,确定第一坐标差和第二坐标差,其中,第一个坐标为(x1,y1),第二个坐标为(x2,y2),第一坐标差Δx表示为Δx=x2-x1,第二坐标差Δy表示为Δy=y2-y1;响应于第一坐标差为0和第二坐标差为0,确定第k个轨迹点组对应的轨迹段的方向为其他方向,响应于第一坐标差不为0和第二坐标差为0,确定第k个轨迹点组对应的轨迹段的方向为横方向,响应于第一坐标差为0和第二坐标差不为0,确定第k个轨迹点组对应的轨迹段的方向为竖方向,响应于第一坐标差不为0和第二坐标差不为0:
当Δx<0且Δy<0,确定第k个轨迹点组对应的轨迹段的方向为其他提方向。
例如,根据第k个轨迹点组对应的轨迹段的方向,确定第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点,包括:
当第k个轨迹点组对应的轨迹段的方向为横方向时:xsj=x1j,ysj=y1j-rj,xbj=x2j,ybj=y2j+Rj;
当第k个轨迹点组对应的轨迹段的方向为竖方向时:xsj=x1j-rj,ysj=y1j,xbj=x2j+Rj,ybj=y2j;
当第k个轨迹点组对应的轨迹段的方向为撇方向或提方向时:xsj=x1j-0.707*rj,ysj=y1j-0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j+0.707*Rj;
当第k个轨迹点组对应的轨迹段的方向为捺方向或其他方向时:xsj=x1j-0.707*rj,ysj=y1j+0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j-0.707*Rj;
其中,(xbj,ybj)为第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的第j个轨迹单元对应的第一连接点的坐标,(xsj,ysj)为第j个轨迹单元对应的第二连接点的坐标,(x2j,y2j)为第j个轨迹单元的第一圆的圆心的坐标,Rj为第j个轨迹单元的第一圆的半径,(x1j,y1j)为第j个轨迹单元的第二圆的圆心的坐标,rj为第j个轨迹单元的第二圆的半径。
例如,在一些实施例中,第k个轨迹点组中的N个轨迹点对应的N个轨迹单元包括第三轨迹单元和第四轨迹单元,且第三轨迹单元和第四轨迹单元彼此相邻。根据N个轨迹单元对应的N个第一连接点和N个第二连接点依次连接N个轨迹单元,包括:对于第三轨迹单元和第四轨迹单元,连接第三轨迹单元对应的第一连接点和第二连接点和第四轨迹单元对应的第一连接点和第二连接点以确定一个四边形,从而连接第三轨迹单元和第四轨迹单元。例如,在一些实施例中,首先,连接第三轨迹单元对应的第一连接点和第二连接点,连接第四轨迹单元对应的第一连接点和第二连接点,然后,连接第三轨迹单元对应的第一连接点和第四轨迹单元对应的第一连接点,连接第三轨迹单元对应的第二连接点和第四轨迹单元对应的第二连接点,从而确定一个四边形,以使得第三轨迹单元和第四轨迹单元连接。
图8A为本公开一实施例提供的一种不带透明度的轨迹单元的示意图,图8B为本公开一实施例提供的一种带透明度的轨迹单元的示意图。
例如,为了去除应用层所显示的笔迹的边缘的毛刺,提高边缘平滑度,可以将原始的轨迹单元改进为带透明度的轨迹单元。例如,步骤S12包括:基于至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与至少一个轨迹点组中的所有轨迹点一一对应的多个中间轨迹单元,对多个中间轨迹单元进行处理,以得到多个轨迹单元。
例如,对多个中间轨迹单元进行处理,以得到多个轨迹单元,包括:根据多个中间轨迹单元,得到与多个中间轨迹单元一一对应的多个中间透明度轨迹单元,其中,每个透明度轨迹单元的形状和尺寸与每个透明度轨迹单元对应的中间轨迹单元的形状和尺寸均相同;对于多个中间透明度轨迹单元中的第h个中间透明度轨迹单元,在第h个中间透明度轨迹单元的边缘获取多个边缘透明度像素,从第h个中间透明度轨迹单元的中心向外延伸的方向上,将多个边缘透明度像素的透明度从100%逐渐变为0%,以得到第h个中间透明度轨迹单元对应的透明度轨迹单元,从而得到与多个中间透明度轨迹单元一一对应的多个透明度轨迹单元,其中,h为大于等于1且小于等于多个中间透明度轨迹单元的数量的正整数,多个边缘透明度像素中的至少部分边缘透明度像素位于对应的第h个中间透明度轨迹单元内,第h个中间透明度轨迹单元中除了多个边缘透明度像素之外的所有像素的透明度为100%;将多个中间轨迹单元和多个透明度轨迹单元分别进行叠加,以得到多个轨迹单元。
图8A示出了不带透明度的中间轨迹单元,图8B示出了带透明度的中间透明度轨迹单元,假设可以通过像素矩阵表示不带透明度的中间轨迹单元和带透明度的中间透明度轨迹单元,中间轨迹单元的形状和中间透明度轨迹单元的形状相同,中间轨迹单元的尺寸和中间透明度轨迹单元的尺寸也相同。如图8A所示,在中间轨迹单元对应的像素矩阵中,中间轨迹单元的内部的像素的灰阶值为1,中间轨迹单元的外部的像素的灰阶值为0。灰阶值为1表示像素点不透明,灰阶值为0表示像素透明。如图8B所示,在中间透明度轨迹单元对应的像素矩阵中,从中间透明度轨迹单元的中心向外延伸的方向上,将中间透明度轨迹单元的边缘的多个边缘透明度像素的透明度从100%(即灰度值为1)逐渐变为0%(即灰度值为0),以得到中间轨迹单元对应的透明度轨迹单元。
例如,对于某个轨迹点,可以将该轨迹点对应的中间轨迹单元和透明度轨迹单元进行叠加,以得到该轨迹点对应的轨迹单元。当某个像素的透明度超过100%,将该某个像素的透明度设置为100%。最后,像素的透明度与像素的RGB值相乘,从而确定像素的真实颜色,综合各个像素的真实颜色最终确定用于显示的笔迹的颜色。
需要说明的是,为了减少计算时间,也可以不设置透明轨迹单元。
图9为本公开一些实施例提供的一种模拟铅笔笔锋的过程示意图,图10为本公开一些实施例提供的一种模拟铅笔笔锋的效果图。
例如,用于在触控显示屏上显示的笔迹的笔锋类型为毛笔笔锋。本公开的实施例包括但不限于此,在另一些实施例中,用于在触控显示屏上显示的笔迹的笔锋类型也可以为铅笔笔锋。例如,在铅笔笔锋的模拟过程中,可以设置应用层显示的线宽为恒定值。
如图9所示,在起笔阶段,应用层以设定的线宽为直径、以初始采样点(例如,图2A所示的采样点C1)为圆心确定初始采样点对应的圆,使起笔部分变得圆润。在运笔阶段,维持线宽不变,确定运笔阶段的各个轨迹点对应的圆,然后,计算各个轨迹点对应的圆的连接点,最后,基于各个轨迹点对应的圆的连接点依次连接各个轨迹点对应的圆。在收笔阶段,以设定的线宽为短轴、以最后的采样点(例如,图2A所示的采样点C9)为圆心确定最后的采样点对应的椭圆,椭圆的长轴大小与最后的采样点对应的书写速度成线性正相关,椭圆的长轴的方向与应用层采集到的最后两采样点(例如,图2A所示的采样点C8和采样点C9)对应的两个圆的圆心之间的连线方向一致。如图10所示,“春天”两个中文字的笔锋类型为铅笔笔锋。
本公开至少一个实施例还提供一种笔迹处理装置,图11为本公开至少一实施例提供的一种笔迹处理装置的示意性框图。
例如,如图11所示,笔迹处理装置1200包括存储器1220和处理器1230。应当注意,图11所示的笔迹处理装置1200的组件只是示例性的,而非限制性的,根据实际应用需要,该笔迹处理装置1200还可以具有其他组件。
例如,存储器1220用于非暂时性存储计算机可读指令;处理器1230用于运行计算机可读指令,计算机可读指令被处理器1230运行时执行根据上述任一实施例所述的笔迹处理方法中的一个或多个步骤。
例如,如图11所示,笔迹处理装置1200还包括触控显示屏1240。触控显示屏1240配置为基于用户的触控操作以获取原始笔迹轨迹。例如,触控显示屏1240可以包括电子笔、触摸屏、鼠标、触摸板等输入装置。
例如,触控显示屏1240还配置为显示该用于显示的笔迹。例如,触控显示屏1240还可以包括上面描述的投影仪等显示装置。
需要说明的是,存储器1220和处理器1230可以集成在触控显示屏1240中,又例如,存储器1220和处理器1230也可以集成在云端服务器中。
例如,笔迹处理装置1200还可以包括通信模块,通信模块用于实现笔迹处理装置1200与其他电子设备之间的通信,例如,当笔迹处理装置1200应用于机场的显示屏中时,通信模块可以将用于显示的笔迹从机场的显示屏传输至用户的手机或平板电脑内,从而用户的手机或平板电脑可以存储该用于显示的笔迹。
例如,处理器1230可以控制笔迹处理装置1200中的其它组件以执行期望的功能。处理器1230可以是中央处理单元(CPU)、张量处理器(TPU)等具有数据处理能力和/或程序执行能力的器件。中央处理元(CPU)可以为X86或ARM架构等。
例如,存储器1220可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机可读指令,处理器1230可以运行所述计算机可读指令,以实现笔迹处理装置1200的各种功能。
例如,存储器1220、存储器1230和触控显示屏1240等组件之间可以通过网络进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。网络可以包括局域网、互联网、电信网、基于互联网和/或电信网的物联网(Internet of Things)、和/或以上网络的任意组合等。有线网络例如可以采用双绞线、同轴电缆或光纤传输等方式进行通信,无线网络例如可以采用3G/4G/5G移动通信网络、蓝牙、Zigbee或者WiFi等通信方式。本公开对网络的类型和功能在此不作限制。
例如,关于笔迹处理装置1200执行笔迹美化的过程的详细说明可以参考文本识别方法的实施例中的相关描述,重复之处不再赘述。
本公开至少一实施例还提供一种存储介质。图12为本公开至少一个实施例提供的一种存储介质的示意图。例如,如图12所示,在存储介质1300上可以非暂时性地存储一个或多个计算机可读指令1301。例如,当所述计算机可读指令1301由计算机执行时可以执行根据上文所述的笔迹处理方法中的一个或多个步骤。
例如,该存储介质1300可以应用于上述笔迹处理装置1200中,例如,其可以为笔迹处理装置1200中的存储器1220。关于存储介质1300的说明可以参考笔迹处理装置1200的实施例中对于存储器的描述,重复之处不再赘述。
图13示出了为本公开至少一实施例提供的一种硬件环境的示意图。本公开提供的笔迹处理装置1200可以应用在互联网***。
利用图13中提供的计算机***可以实现本公开中涉及的笔迹处理装置1200。这类计算机***可以包括个人电脑、笔记本电脑、平板电脑、手机、个人数码助理、智能眼镜、智能手表、智能指环、智能头盔及任何智能便携设备或可穿戴设备。本实施例中的特定***利用功能框图解释了一个包含用户界面的硬件平台。这种计算机设备可以是一个通用目的的计算机设备,或一个有特定目的的计算机设备。两种计算机设备都可以被用于实现本实施例中的笔迹处理装置1200。计算机***可以实施当前描述的实现笔迹美化所需要的信息的任何组件。例如,计算机***能够被计算机设备通过其硬件设备、软件程序、固件以及它们的组合所实现。为了方便起见,图13中只绘制了一台计算机设备,但是本实施例所描述的实现笔迹美化所需要的信息的相关计算机功能是可以以分布的方式、由一组相似的平台所实施的,分散计算机***的处理负荷。
如图13所示,计算机***可以包括通信端口250,与之相连的是实现数据通信的网络,例如,计算机***可以通过通信端口250发送和接收信息及数据,即通信端口250可以实现计算机***与其他电子设备进行无线或有线通信以交换数据。计算机***还可以包括一个处理器组220(即上面描述的处理器),用于执行程序指令。处理器组220可以由至少一个处理器(例如,CPU)组成。计算机***可以包括一个内部通信总线210。计算机***可以包括不同形式的程序储存单元以及数据储存单元(即上面描述的存储器或存储介质),例如硬盘270、只读存储器(ROM)230、随机存取存储器(RAM)240,能够用于存储计算机处理和/或通信使用的各种数据文件,以及处理器组220所执行的可能的程序指令。计算机***还可以包括一个输入/输出组件260,输入/输出组件260用于实现计算机***与其他组件(例如,用户界面280等)之间的输入/输出数据流。
通常,以下装置可以连接输入/输出组件260:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信接口。
虽然图13示出了具有各种装置的计算机***,但应理解的是,并不要求计算机***具备所有示出的装置,可以替代地,计算机***可以具备更多或更少的装置。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本发明的实施例的附图中,层或结构的厚度和尺寸被放大。可以理解,当诸如层、膜、区域或基板之类的元件被称作位于另一元件“上”或“下”时,该元件可以“直接”位于另一元件“上”或“下”,或者可以存在中间元件。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种笔迹处理方法,包括:
对在触控显示屏上的原始笔迹轨迹进行采样以得到多个采样点;
基于所述多个采样点,计算得到至少一个轨迹点组,其中,所述至少一个轨迹点组中的每个轨迹点组包括N个轨迹点,所述N个轨迹点包括M个采样点,N为大于等于3的整数,M为大于等于3的整数,M≤N;
基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,其中,所述多个轨迹单元的每个轨迹单元为水滴状的水滴单元;
依次连接所述多个轨迹单元,得到用于在所述触控显示屏上显示的笔迹。
2.根据权利要求1所述笔迹处理方法,其中,所述多个轨迹单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,
基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:
确定在所述所有轨迹点中的动作类型为运笔的轨迹点,以得到T1个运笔轨迹点,其中,T1为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T1个运笔轨迹点一一对应的T1个运笔轨迹单元;
获取第一平均参考速度;
对于所述T1个运笔轨迹点中的第p个运笔轨迹点,根据所述第一参考平均速度和所述第p个运笔轨迹点对应的书写速度和位置,确定所述T1个运笔轨迹单元中与所述第p个运笔轨迹点对应的第p个运笔轨迹单元中的第一圆的半径和圆心,其中,p为正整数,且p小于等于T1;
根据所述第p个运笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第p个运笔轨迹单元中的第二圆的半径和圆心;
基于所述第p个运笔轨迹单元中的第一圆和第二圆,确定所述第p个运笔轨迹单元中的多边形,以确定所述第p个运笔轨迹单元,从而确定与所述T1个运笔轨迹点一一对应的所述T1个运笔轨迹单元,
其中,所述第p个运笔轨迹单元的第一圆的半径由所述第p个运笔轨迹点对应的书写速度和所述第一平均参考速度决定,且满足以下关系式:
dt=kt*dt-1,kt=2/(1+e[0.06*(vt-vavg)/vavg])
其中,dt为在所述第p个运笔轨迹单元中的所述第一圆的直径,dt-1为与所述第p个运笔轨迹单元在时间上相邻的前一个轨迹单元的第一圆的直径,kt为所述第p个运笔轨迹点对应的半径调整系数,vt为所述第p个运笔轨迹点对应的书写速度,vavg为所述第一平均参考速度,0.3*ds≤dt≤1.1*ds,ds为设定线宽,
所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
3.根据权利要求1所述笔迹处理方法,其中,所述多个轨迹单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,
基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:
确定在所述所有轨迹点中的动作类型为收笔的轨迹点,以得到T2个收笔轨迹点,其中,T2为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T2个收笔轨迹点一一对应的T2个收笔轨迹单元;
获取第二平均参考速度,其中,所述第二平均参考速度小于第一平均参考速度,所述第一平均参考速度为运笔阶段对应的参考速度;
对于所述T2个收笔轨迹点中的第i个收笔轨迹点,根据所述第二平均参考速度和所述第i个收笔轨迹点对应的书写速度和位置,确定所述T2个收笔轨迹单元中与所述第i个收笔轨迹点对应的第i个收笔轨迹单元中的第一圆的半径和圆心,其中,i为正整数,且i小于等于T2;
根据所述第i个收笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第i个收笔轨迹单元的第二圆的半径和圆心;
基于所述第i个收笔轨迹单元中的第一圆和第二圆,确定所述第i个收笔轨迹单元中的多边形,以确定所述第i个收笔轨迹单元,从而确定与所述T2个收笔轨迹点一一对应的所述T2个收笔轨迹单元,
其中,所述第i个收笔轨迹单元的第一圆的半径由所述第i个收笔轨迹点对应的书写速度和所述第二平均参考速度决定,满足以下关系式:
dy=ki’*dy-1,ki’=6/(1+e[0.06*(vi-vavg’)/vavg’])
其中,dy为在所述第i个收笔轨迹单元中的第一圆的直径,dy-1为与所述第i个收笔轨迹单元在时间上相邻的前一个轨迹单元的第一圆的直径,ki’为所述第i个收笔轨迹单元对应的半径调整系数,vi为所述第i个收笔轨迹点对应的书写速度,vavg’为所述第二平均参考速度,
所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的调节后的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
4.根据权利要求1所述笔迹处理方法,其中,所述多个轨迹单元中的每个轨迹单元至少包括多边形、第一圆和第二圆,所述多边形的四个顶点为所述第一圆和所述第二圆之间的四个外公切点,
确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元包括:
确定在所述所有轨迹点中的动作类型为起笔的轨迹点,以得到T3个起笔轨迹点,其中,T3为小于等于所述所有轨迹点的数量的正整数,所述多个轨迹单元包括与所述T3个起笔轨迹点一一对应的T3个起笔轨迹单元;
设定所述T3个起笔轨迹单元的第一圆的直径为设定线宽;
对于所述T3个起笔轨迹点中的第z个起笔轨迹点,根据所述第z个起笔轨迹点对应的位置,确定所述T3个起笔轨迹单元中与所述第z个起笔轨迹点对应的第z个起笔轨迹单元中的第一圆的圆心,其中,z为正整数,且z小于等于T3;
根据所述第z个起笔轨迹单元中的第一圆的半径和圆心、每个轨迹单元的第一圆的半径和第二圆的半径之间的半径关系和每个轨迹单元的第一圆的圆心和第二圆的圆心之间的圆心位置关系,确定所述第z个起笔轨迹单元中的第二圆的半径和圆心;
基于所述第z个起笔轨迹单元中的第一圆和第二圆,确定所述第z个起笔轨迹单元中的多边形,以确定所述第z个起笔轨迹单元,从而确定所述T3个起笔轨迹点对应的所述T3个起笔轨迹单元,
其中,所述圆心位置关系表示:所述第一圆的圆心和所述第二圆的圆心之间的圆心连线沿逆时针方向旋转预设圆心角度到对应方向,所述第一圆的圆心和所述第二圆的圆心满足以下关系式:
do/R=C1,
其中,R为所述第一圆的半径,do为所述第一圆的圆心和所述第二圆的圆心之间的所述圆心连线的距离,C1为常数;
所述半径关系表示:所述第一圆的半径大于所述第二圆的半径,且所述第一圆的半径和所述第二圆的半径满足以下关系式:
r/R=C2,
其中,r为所述第二圆的半径,C2为常数。
5.根据权利要求2-4任一项所述笔迹处理方法,其中,依次连接所述多个轨迹单元,以得到用于在所述触控显示屏上显示的所述笔迹,包括:
基于所述至少一个轨迹点组中的所有轨迹点在所述原始笔迹轨迹上对应的位置,对所述多个轨迹单元进行排序;
对于排序后的所述多个轨迹单元中的任意相邻的第一轨迹单元和第二轨迹单元,
响应于所述第一轨迹单元的第一圆和第二圆和所述第二轨迹单元的第一圆和第二圆中的任意两个圆均不是内含关系,确定所述第一轨迹单元的第一圆和所述第二轨迹单元的第一圆之间的两个第一公切点和两个第二公切点,确定所述第一轨迹单元的第二圆和所述第二轨迹单元的第二圆之间的两个第三公切点和两个第四公切点,其中,所述两个第一公切点位于所述第一轨迹单元的第一圆上,所述两个第二公切点位于所述第二轨迹单元的第一圆上,所述两个第三公切点位于所述第一轨迹单元的第二圆上,所述两个第四公切点位于所述第二轨迹单元的第二圆上;
从所述两个第一公切点、所述两个第二公切点、所述两个第三公切点和所述两个第四公切点中选择得到四个目标公切点;
依次连接所述四个目标公切点确定一个四边形,以使所述第一轨迹单元和所述第二轨迹单元连接,从而依次连接所述多个轨迹单元以得到所述笔迹。
6.根据权利要求5所述笔迹处理方法,还包括:
响应于所述第一轨迹单元的第一圆和第二圆和所述第二轨迹单元的第一圆和第二圆中的至少两个圆是内含关系,则确定所述第一轨迹单元和所述第二轨迹单元不需要连接。
7.根据权利要求5所述笔迹处理方法,其中,从所述两个第一公切点、所述两个第二公切点、所述两个第三公切点和所述两个第四公切点中选择得到四个目标公切点,包括:
确定所述第一轨迹单元的第一圆和第二圆之间的第一外公切线和第二外公切线,其中,所述第一外公切线的斜率小于所述第二外公切线的斜率;
确定所述第一轨迹单元的第二圆和所述第二轨迹单元的第二圆之间的第三外公切线和第四外公切线;
响应于所述第三外公切线的斜率大于所述第四公切线的斜率,且所述第三外公切线的斜率大于所述第一外公切线的斜率且小于所述第一轨迹单元的第一圆的圆心和第二圆的圆心之间的所述圆心连线的斜率,或者,响应于所述第三外公切线的斜率小于所述第四公切线的斜率,且所述第三外公切线的斜率小于所述第二外公切线的斜率且大于所述第一轨迹单元的第一圆的圆心和第二圆的圆心之间的所述连线的斜率,将所述两个第一公切点和所述两个第二公切点作为所述四个目标公切点;
响应于所述第三外公切线的斜率大于所述第四公切线的斜率且小于所述第一外公切线的斜率,或者,响应于所述第三外公切线的斜率小于所述第四公切线的斜率且大于所述第二外公切线的斜率,将所述两个第一公切点中远离所述第一轨迹单元的第二圆的第一公切点、所述两个第三公切点中远离所述第一轨迹单元的第一圆的第三公切点、所述两个第二公切点中远离所述第二轨迹单元的第二圆的第二公切点和所述两个第四公切点中远离所述第二轨迹单元的第一圆的第四公切点作为所述四个目标公切点。
8.根据权利要求2-4任一项所述笔迹处理方法,其中,依次连接所述多个轨迹单元,以得到用于在所述触控显示屏上显示的所述笔迹,包括:
对于所述至少一个轨迹点组中第k个轨迹点组,其中,所述第k个轨迹点组中的N个轨迹点在所述原始笔迹轨迹的延伸方向上依次排列,k为正整数,且小于等于所述至少一个轨迹点组的数量;
确定在所述原始笔迹轨迹的延伸方向上所述第k个轨迹点组中的第一个轨迹点和第N个轨迹点;
获取所述第一个轨迹点的第一个坐标和所述第N个轨迹点的第二个坐标;
根据所述第一个坐标和所述第二个坐标,确定所述第k个轨迹点组对应的轨迹段的方向,
根据所述第k个轨迹点组对应的所述轨迹段的方向,确定所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点;
根据所述N个轨迹单元对应的N个第一连接点和N个第二连接点依次连接所述N个轨迹单元,从而依次连接所述多个轨迹单元,以得到所述笔迹。
9.根据权利要求8所述笔迹处理方法,其中,根据所述第一个坐标和所述第二个坐标,确定所述第k个轨迹点组对应的轨迹段的方向,包括:
根据所述第一个坐标和所述第二个坐标,确定第一坐标差和第二坐标差,其中,所述第一个坐标为(x1,y1),所述第二个坐标为(x2,y2),所述第一坐标差Δx表示为Δx=x2-x1,所述第二坐标差Δy表示为Δy=y2-y1;
响应于所述第一坐标差为0和所述第二坐标差为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为其他方向,
响应于所述第一坐标差不为0和所述第二坐标差为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为横方向,
响应于所述第一坐标差为0和所述第二坐标差不为0,确定所述第k个轨迹点组对应的所述轨迹段的方向为竖方向,
响应于所述第一坐标差不为0和所述第二坐标差不为0:
当Δx<0且Δy<0,确定所述第k个轨迹点组对应的所述轨迹段的方向为所述其他提方向。
10.根据权利要求9所述笔迹处理方法,其中,根据所述第k个轨迹点组对应的所述轨迹段的方向,确定所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的每个轨迹单元的第一圆上的第一连接点和第二圆上的第二连接点,包括:
当所述第k个轨迹点组对应的所述轨迹段的方向为横方向时:xsj=x1j,ysj=y1j-rj,xbj=x2j,ybj=y2j+Rj;
当所述第k个轨迹点组对应的所述轨迹段的方向为竖方向时:xsj=x1j-rj,ysj=y1j,xbj=x2j+Rj,ybj=y2j;
当所述第k个轨迹点组对应的所述轨迹段的方向为撇方向或提方向时:xsj=x1j-0.707*rj,ysj=y1j-0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j+0.707*Rj;
当所述第k个轨迹点组对应的所述轨迹段的方向为捺方向或其他方向时:xsj=x1j-0.707*rj,ysj=y1j+0.707*rj,xbj=x2j+0.707*Rj,ybj=y2j-0.707*Rj;
其中,(xbj,ybj)为所述第k个轨迹点组中的N个轨迹点对应的N个轨迹单元中的第j个轨迹单元对应的第一连接点的坐标,(xsj,ysj)为所述第j个轨迹单元对应的第二连接点的坐标,(x2j,y2j)为所述第j个轨迹单元的第一圆的圆心的坐标,Rj为所述第j个轨迹单元的第一圆的半径,(x1j,y1j)为所述第j个轨迹单元的第二圆的圆心的坐标,rj为所述第j个轨迹单元的第二圆的半径。
11.根据权利要求2-4任一项所述笔迹处理方法,其中,所述C1的范围为1.2~2,所述C2的范围为0.2~0.4,所述预设圆心角度的范围为20°~40°,
在基于所述触控显示屏的显示画面确定的像素坐标系中,所述第一圆的圆心的横坐标大于所述第二圆的圆心的横坐标,所述第一圆的圆心的纵坐标大于所述第二圆的圆心的纵坐标。
12.根据权利要求1-4任一项所述笔迹处理方法,其中,基于在所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个轨迹单元,包括:
基于所述至少一个轨迹点组中的至少部分轨迹点的书写速度,确定与所述至少一个轨迹点组中的所有轨迹点一一对应的多个中间轨迹单元,
对所述多个中间轨迹单元进行透明度处理,以得到所述多个轨迹单元。
13.根据权利要求12所述笔迹处理方法,其中,对所述多个中间轨迹单元进行透明度处理,以得到所述多个轨迹单元,包括:
根据所述多个中间轨迹单元,得到与所述多个中间轨迹单元一一对应的多个中间透明度轨迹单元,其中,每个所述透明度轨迹单元的形状和尺寸与每个所述透明度轨迹单元对应的中间轨迹单元的形状和尺寸均相同;
对于所述多个中间透明度轨迹单元中的第h个中间透明度轨迹单元,在所述第h个中间透明度轨迹单元的边缘获取多个边缘透明度像素,从所述第h个中间透明度轨迹单元的中心向外延伸的方向上,将所述多个边缘透明度像素的透明度从100%逐渐变为0%,以得到所述第h个中间透明度轨迹单元对应的透明度轨迹单元,从而得到与所述多个中间透明度轨迹单元一一对应的多个透明度轨迹单元,其中,h为大于等于1且小于等于所述多个中间透明度轨迹单元的数量的正整数,所述多个边缘透明度像素中的至少部分边缘透明度像素位于对应的所述第h个中间透明度轨迹单元内,所述第h个中间透明度轨迹单元中除了所述多个边缘透明度像素之外的所有像素的透明度为100%;
将所述多个中间轨迹单元和所述多个透明度轨迹单元分别进行叠加,以得到所述多个轨迹单元。
14.一种笔迹处理装置,包括:
存储器,用于非暂时性存储计算机可读指令;以及
处理器,用于运行所述计算机可读指令,其中,所述计算机可读指令被所述处理器运行时执行根据权利要求1-13任一项所述的笔迹处理方法。
15.根据权利要求14所述的笔迹处理装置,还包括:触控显示屏,
其中,所述触控显示屏配置为基于用户的触控操作以获取所述原始笔迹轨迹。
16.一种非瞬时性存储介质,非暂时性地存储计算机可读指令,其中,当所述计算机可读指令由计算机执行时可以执行根据权利要求1-13任一项所述的笔迹处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010365298.1A CN113590000B (zh) | 2020-04-30 | 2020-04-30 | 笔迹处理方法、笔迹处理装置、存储介质 |
PCT/CN2021/080463 WO2021218445A1 (zh) | 2020-04-30 | 2021-03-12 | 笔迹处理方法、笔迹处理装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010365298.1A CN113590000B (zh) | 2020-04-30 | 2020-04-30 | 笔迹处理方法、笔迹处理装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590000A true CN113590000A (zh) | 2021-11-02 |
CN113590000B CN113590000B (zh) | 2023-01-17 |
Family
ID=78237463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010365298.1A Active CN113590000B (zh) | 2020-04-30 | 2020-04-30 | 笔迹处理方法、笔迹处理装置、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113590000B (zh) |
WO (1) | WO2021218445A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115673A (zh) * | 2021-11-25 | 2022-03-01 | 海信集团控股股份有限公司 | 车载屏幕的控制方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510158B (zh) * | 2021-12-08 | 2022-12-30 | 深圳市康冠商用科技有限公司 | 电子笔画纠错方法、装置、触摸屏设备及存储介质 |
CN115098014B (zh) * | 2021-12-29 | 2024-05-14 | 山东蓝贝思特教装集团股份有限公司 | 书写笔迹显示方法、控制器及tft液晶书写装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937848A (zh) * | 2012-12-04 | 2013-02-20 | 上海合合信息科技发展有限公司 | 对手写笔迹进行编辑处理的方法及电子设备 |
CN107292936A (zh) * | 2017-05-18 | 2017-10-24 | 湖南大学 | 一种汉字字体矢量化方法 |
CN110321054A (zh) * | 2019-06-20 | 2019-10-11 | 广州视源电子科技股份有限公司 | 毛笔笔迹绘制方法、装置、设备及可读存储介质 |
CN110531875A (zh) * | 2019-08-21 | 2019-12-03 | 深圳市威屏科技有限公司 | 书写笔锋的生成方法、终端设备及存储介质 |
US20200042109A1 (en) * | 2017-06-22 | 2020-02-06 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for dynamically displaying interface content and device thereof |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521858B (zh) * | 2011-11-28 | 2014-04-02 | 北京盛世宣合信息科技有限公司 | 电子毛笔书写笔迹生成方法 |
-
2020
- 2020-04-30 CN CN202010365298.1A patent/CN113590000B/zh active Active
-
2021
- 2021-03-12 WO PCT/CN2021/080463 patent/WO2021218445A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937848A (zh) * | 2012-12-04 | 2013-02-20 | 上海合合信息科技发展有限公司 | 对手写笔迹进行编辑处理的方法及电子设备 |
CN107292936A (zh) * | 2017-05-18 | 2017-10-24 | 湖南大学 | 一种汉字字体矢量化方法 |
US20200042109A1 (en) * | 2017-06-22 | 2020-02-06 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for dynamically displaying interface content and device thereof |
CN110321054A (zh) * | 2019-06-20 | 2019-10-11 | 广州视源电子科技股份有限公司 | 毛笔笔迹绘制方法、装置、设备及可读存储介质 |
CN110531875A (zh) * | 2019-08-21 | 2019-12-03 | 深圳市威屏科技有限公司 | 书写笔锋的生成方法、终端设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115673A (zh) * | 2021-11-25 | 2022-03-01 | 海信集团控股股份有限公司 | 车载屏幕的控制方法 |
CN114115673B (zh) * | 2021-11-25 | 2023-10-27 | 海信集团控股股份有限公司 | 车载屏幕的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113590000B (zh) | 2023-01-17 |
WO2021218445A1 (zh) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381754B (zh) | 笔迹处理方法、设备及介质 | |
CN113590000B (zh) | 笔迹处理方法、笔迹处理装置、存储介质 | |
CN103310474B (zh) | 一种手写原笔迹的实现方法及*** | |
US8854342B2 (en) | Systems and methods for particle-based digital airbrushing | |
US8358320B2 (en) | Interactive transcription system and method | |
CN104345948A (zh) | 一种手写原笔迹的实现方法、实现装置及电子设备 | |
US10438385B2 (en) | Generating ink effects for a digital ink stroke | |
US11288499B2 (en) | Interactive method for generating strokes with Chinese ink painting style and device thereof | |
EP4207083A1 (en) | Elastic object rendering method and apparatus, device, and storage medium | |
CN102156688B (zh) | 一种文字变形特效处理方法及装置 | |
CN104407696B (zh) | 移动设备的虚拟球模拟及控制的方法 | |
US11789604B2 (en) | Handwriting processing method, handwriting processing device and non-transitory storage medium | |
CN108628455A (zh) | 一种基于触摸屏手势识别的虚拟沙画绘制方法 | |
CN107608510A (zh) | 手势模型库的建立方法、装置及电子设备 | |
CN112580213A (zh) | 电场线的显示图像的生成方法和装置、存储介质 | |
WO2021218448A1 (zh) | 笔迹形成方法、笔迹形成装置及电子设备 | |
Shin et al. | Simulating oriental brush character considered with aerial action of pen tablet | |
CN112990134A (zh) | 图像仿真方法、装置、电子设备及存储介质 | |
US20240020893A1 (en) | Handwriting Forming Method and Apparatus, and Electronic Device | |
CN114585992B (zh) | 书写轨迹处理方法、触控设备、书写***及存储介质 | |
CN112306359A (zh) | 一种笔迹的展示方法、装置、设备及存储介质 | |
Zhao et al. | A Lightweight Processing Method for Hand-Drawn Pressure-Sensitive Trajectories Oriented Toward Web-Based 3D Modeling | |
CN115344344A (zh) | 动态画笔效果生成方法、装置、电子设备及存储介质 | |
CN115981489A (zh) | 一种带笔锋效果的书写笔迹粗细变化控制方法及*** | |
CN117011436A (zh) | 虚拟植物的动画生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |