发明内容
本申请所要解决的技术问题是提供一种反笔形走样的方法和装置,提升了笔形边界的光滑程度。
为了解决上述问题,本申请公开了一种反笔形走样方法,包括:
笔形覆盖步骤,依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合;
像素优化步骤,针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶;
边界曲线光滑步骤,通过曲线逼近拟合算法将笔形边界进行曲线拟合;其中,通过以下方式获取目标坐标点:
依据用户传入的坐标信息,获取所需笔形的外接矩形的范围;
在外接矩形的范围内,依据用户传入的坐标信息,覆盖笔形模板,获得外接矩形内的初步像素值;
遍历查找预置范围内的像素值,获取灰度范围内的像素值所对应的坐标 点作为目标坐标点。
其中,还包括步骤100,预置多种灰度为4阶的笔形模板。
其中,所述的基本笔形模板包括毛笔、钢笔和铅笔。
其中,用户按需求选择各种笔形模板中的一种。
其中,所述的曲线逼近拟合算法包括:拉格朗日n次曲线插值逼近算法、高斯消去法和最小二乘曲线拟合算法。
其中,当坐标之间的斜率范围只在0~1之间或者在1~正无穷大之间时通过拉格朗日n次曲线插值逼近算法进行曲线逼近拟合;当坐标之间的斜率范围介于0~1之间和1~正无穷大之间时,通过高斯消去法和最小二乘曲线拟合算法联合进行曲线逼近拟合。
相应的本申请还公开了一种反笔形走样装置,包括:
笔形覆盖模块,用于依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合;
像素优化模块,用于针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶;
边界曲线光滑模块,用于通过曲线逼近拟合算法将笔形边界进行曲线拟合;
其中,通过以下方式获取目标坐标点:
依据用户传入的坐标信息,获取所需笔形的外接矩形的范围;
在外接矩形的范围内,依据用户传入的坐标信息,覆盖笔形模板,获得外接矩形内的初步像素值;
遍历查找预置范围内的像素值,获取灰度范围内的像素值所对应的坐标点作为目标坐标点。
其中,还包括预置模块,用于预置多种灰度为4阶的笔形模板。
与现有技术相比,本申请具有以下优点:
本申请首先通过根据用户输入的坐标覆盖已经有初步渐变效果的具有多阶灰度的笔形模板,然后通过后端逐点算法将笔形边沿附近的像素进行最优化处理,最后再对笔形边界曲线进行光滑逼近拟合,大大提高了最终输出笔形边界的光滑程度,很大程度上去除了图形边界的锯齿或阶梯状走样效果。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请一种反笔形走样方法的流程示意图。
所述的方法包括:
笔形覆盖步骤110,依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合。
所述的笔形模板包括多种笔形,比如毛笔,钢笔,铅笔等笔形,这些笔形模板本身包括了多阶的灰度,比如4阶、5阶等。
当用户在传感器或者其他输入设备上进行书写操作时,其输入的笔形会通过传感器或者其他装置以坐标信息的形式输入。所述的坐标系与显示界面和传感器或相应功能装置的输入区域对应。在进行笔形覆盖时,会以用户通过传感器等装置传入的坐标点为依据或者是中心点,将所选择的笔形进行覆盖,其中,覆盖的范围包括了与用户输入的笔形对应的坐标点和周围相关的坐标点。比如用户输入的笔画为一横,坐标点一系列与横坐标轴平行的一行坐标点,并且用户选择钢笔笔形,那么钢笔笔形可以以此一行坐标点为依据,将具有宽度和长度的钢笔笔形覆盖到此行坐标点及其周围坐标点上,比如覆盖到以用户输入笔形对应的一行坐标点为中心周围的点上。
在实际中,显示界面是以像素点的形式显示图像的,系统的坐标系也以整个显示界面的像素点为基准对应。比如在800×600像素的显示界面中,以显示界面右下角第一个像素点坐标为原点,在显示界面从原点垂直向上排列的一列像素点为纵轴,从原点平行向右排列的一行像素点为横轴,这样, 此显示界面的所有像素点就囊括在此坐标系内了,然后将此坐标系与用户书写的传感器或者类似装置的输入区域进行关联。
实际中,根据用户通过传感器等传入的坐标点,计算这些坐标点外接矩形的范围,并根据所选择的所需的某个多阶笔形模板,以用户传入的坐标点为基准坐标点进行覆盖,就得到了外接矩形内笔形的一个初步的像素值。比如用户选择用输出钢笔笔形,那么就在所述坐标点上覆盖钢笔模板。
其中,引擎还会收集用户传入的坐标点的时间点,获得用户的笔形输入速度,以此作为覆盖笔形模板的最优参数,比如当用户选择毛笔笔形时,用户输入的两点坐标的之间时间段很短,则表明用户的输入比较快,那么此时覆盖的毛笔笔形就较轻;如果两点坐标点之间的时间段比较长,那么此时覆盖的毛笔笔形就较重。实际上时间的长短还可以通过传入引擎坐标点的距离决定的,如果两点距离较大,说明笔速较快,如果点与点之间的距离非常密,说明输入较慢。
在笔形覆盖完成后,就能得到一个在坐标点外接矩形内的由多阶灰度组成的具有初步光滑效果的笔形,其中,笔形覆盖的各个坐标点上具有一个初步的像素值,实现了前端反走样的效果。
像素优化步骤120,针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶。
当得到了在用户传入的坐标点的外接矩形范围内的笔形的一个初步的像素值后,针对需要进行优化的目标坐标点,根据其周围点的像素值,通过取均值的方法,遍历与这个点位置和像素值都同在一定范围内的点,对他们的像素值进行算数平均计算,获得当前坐标点的最优像素值,计算后的像素值范围即为0~255,即使灰度增至256阶。比如,设置的灰度范围为35~225,当遍历的时候查找到某个点的灰度为70,然后将此点周围的点的像素值也进行收集,然后通过均值方法计算得出此点的最优像素值。比如某个点的当前灰度值为70,他的颜色是比较深的灰色,属于模板四阶灰度中的第二阶,会通过遍历考察与它在同一外接矩形内周围点的像素值分布情况,选取 像素值在接近范围内的点,然后把这些像素点通过取算数平均值的方法进行像素合并计算。
其中,可以通过以下方式获取目标坐标点:
步骤A1,依据用户传入的坐标信息,获取所需笔形的外接矩形的范围。
先根据传入的坐标点计算外接矩形范围。
笔形模板本身的面积是已知的,用户每次传入点,就获得一个当前点的外接矩形范围,对每次获取的坐标范围与之前的取最大值就得到了最终输出时外接矩形的范围。
步骤A2,在外接矩形的范围内,依据用户传入的坐标信息,覆盖笔形模板,获得外接矩形内的初步像素值。
笔形模板本身包括了多阶灰度,当依据用户传入的坐标点覆盖完成后,在外接矩形内就直接获得了笔形的相关坐标点的一个初步像素值。在实际中,步骤A1和A2可以由步骤110完成。
步骤A3,遍历查找预置范围内的像素值,获取符合要求的像素值所对应的坐标点作为目标坐标点。
在覆盖完笔形模板后,外接矩形范围内的每个坐标点都存在一个灰度的像素值与之对应,此时在设置的灰度范围内,遍历外接矩形内的每个坐标点,查找其上覆盖的像素值是否在设置的灰度范围内,当某个坐标点对于的像素值在设置的灰度范围内,则将此坐标点作为目标坐标点。
同时将此目标坐标点周围坐标点的像素值进行收集,并通过取算数平均的方法,计算出当前坐标的最优灰度值。
边界曲线光滑步骤130,通过曲线逼近拟合算法将笔形边界进行曲线拟合。
当步骤120将矩形范围内笔形的最优像素值确定后,对笔形的边界进行曲线逼近拟合,提高笔形叠加部分构成的输出边界的光滑程度。
笔形模板具有一定的宽度和长度,当依据传入的坐标信息进行笔形模板覆盖,然后进行像素最优化处理后,因为笔形模板的原因,需要对整个笔形 的边界进行曲线逼近拟合处理。
在绘制笔形输出边界的曲线时,需要计算曲线的斜率,如果一段曲线的斜率范围只在0~1之间或者在1~正无穷大之间,那么对这两段曲线进行插值时就只使用拉格朗日n次曲线插值算法。原因有二,一是这两个斜率范插值的方法是不一样的,要区分处理。二是采用拉格朗日分段插值,可以保证曲线的收敛性,并且不会碰到解方程系数矩阵秩为0的无解情况。使用拉格朗日插值曲线拟合的情况占较大部分,比如画一条倾角小于15度的曲线,这时候斜率恒小于0.5,使用斜率在0~1之间的拉格朗日方法即可。
高斯消去法和最小二乘曲线拟合用于曲线的斜率介于0~1之间和1~正无穷大之间的情况。原因是拉格朗日分段插值由于在上述两个方向插值算法不一致,导致在45度临界点会造成间断,一方面我们通过画外接扇形弥补了一些间断的情况,但仍会导致间断,所以这种情况通过最小二乘曲线拟合进行弥补。
参照图2,示出本申请一种反笔形走样方法获取目标坐标点的流程示意图。
所述的方法包括:
步骤100,预置多种灰度为4阶的笔形模板。
本步骤将笔形模板从黑白两色增加至拥有4阶灰度的渐变值,使笔形模板本身具有更光滑的效果。一般情况下,本申请第一阶灰度为0,第二阶灰度一般在90左右,第3阶灰度一般在190左右,第四阶灰度为255。
笔形模板的种类包括钢笔、铅笔和毛笔。每种笔形的实时宽度不同(即线条画的宽度),比如说钢笔的实时宽度比较细,毛笔的实时宽度较宽。在每种笔形中,每种笔画包括多种形式的笔形。比如,“丿”这种笔画,可以按照书写大致习惯设置多种形式的一撇的形状,以便在笔形覆盖步骤110中,能以最合适的情况进行覆盖。
笔形覆盖步骤110,依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合。
当用户在传感器或者其他输入设备上进行书写操作时,其输入的笔形会 通过传感器或者其他装置以坐标信息的形式输入。所述的坐标系与显示界面和传感器或相应功能装置的输入区域对应。在进行笔形覆盖时,会以用户通过传感器等装置传入的坐标点为依据或者是中心点,将所选择的笔形进行覆盖,其中,覆盖的范围包括了与用户输入的笔形对应的坐标点和周围相关的坐标点。比如用户输入的笔画为一横,坐标点一系列与横坐标轴平行的一行坐标点,并且用户选择钢笔笔形,那么钢笔笔形可以以此一行坐标点为依据,将具有宽度和长度的钢笔笔形覆盖到此行坐标点及其周围坐标点上,比如覆盖到以用户输入笔形对应的一行坐标点为中心周围的点上。
在实际中,显示界面是以像素点的形式显示图像的,系统的坐标系也以整个显示界面的像素点为基准对应。比如在800×600像素的显示界面中,以显示界面右下角第一个像素点坐标为原点,在显示界面从原点垂直向上排列的一列像素点为纵轴,从原点平行向右排列的一行像素点为横轴,这样,此显示界面的所有像素点就囊括在此坐标系内了,然后将此坐标系与用户书写的传感器或者类似装置的输入区域进行关联。
实际中,根据用户通过传感器等传入的坐标点,计算这些坐标点外接矩形的范围,并根据所选择的所需的某个多阶笔形模板,以用户传入的坐标点为基准坐标点进行覆盖,就得到了外接矩形内笔形的一个初步的像素值。比如用户选择用输出钢笔笔形,那么就在所述坐标点上覆盖钢笔模板。
其中,引擎还会收集用户传入的坐标点的时间点,获得用户的笔形输入速度,以此作为覆盖笔形模板的最优参数,比如当用户选择毛笔笔形时,用户输入的两点坐标的之间时间段很短,则表明用户的输入比较快,那么此时覆盖的毛笔笔形就较轻;如果两点坐标点之间的时间段比较长,那么此时覆盖的毛笔笔形就较重。实际上时间的长短还可以通过传入引擎坐标点的距离决定的,如果两点距离较大,说明笔速较快,如果点与点之间的距离非常密,说明输入较慢。
在笔形覆盖完成后,就能得到一个在坐标点外接矩形内的由多阶灰度组成的具有初步光滑效果的笔形,其中,笔形覆盖的各个坐标点上具有一个初 步的像素值,实现了前端反走样的效果。
像素优化步骤120,针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶。
当得到了在用户传入的坐标点的外接矩形范围内的笔形的一个初步的像素值后,针对需要进行优化的目标坐标点,根据其周围点的像素值,通过计算算数平均值的方法,获得当前坐标点的最优像素值,计算后的像素值范围即为0~255,即使灰度增至256阶。比如,设置的灰度范围为35~225,当遍历的时候查找到某个点的灰度为70,然后将此点周围的点的像素值也进行收集,然后通过均值方法计算得出此点的最优像素值。
其中,可以通过以下方式获取目标坐标点:
步骤A1,依据用户传入的坐标信息,获取所需笔形的外接矩形的范围。
先根据传入的坐标点计算外接矩形范围。
步骤A2,在外接矩形的范围内,依据用户传入的坐标信息,覆盖笔形模板,获得外接矩形内的初步像素值。
笔形模板本身包括了多阶灰度,当依据用户传入的坐标点覆盖完成后,在外接矩形内就直接获得了笔形的相关坐标点的一个初步像素值。在实际中,步骤A1和A2可以由步骤110完成。
步骤A3,遍历查找预置范围内的像素值,获取符合要求的像素值所对应的坐标点作为目标坐标点。
在覆盖完笔形模板后,外接矩形范围内的每个坐标点都存在一个灰度的像素值与之对应,此时在设置的灰度范围内,遍历外接矩形内的每个坐标点,查找其上覆盖的像素值是否在设置的灰度范围内,当某个坐标点对于的像素值在设置的灰度范围内,则将此坐标点作为目标坐标点。
同时将此目标坐标点周围坐标点的像素值进行收集,并通过去均值的方法,计算出当前坐标的最优灰度值。
边界曲线光滑步骤130,通过曲线逼近拟合算法将笔形边界进行曲线拟合。
当步骤120将矩形范围内笔形的最优像素值确定后,对笔形的边界进行曲线逼近拟合,提高笔形叠加部分构成的输出边界的光滑程度。
笔形模板具有一定的宽度和长度,当依据传入的坐标信息进行笔形模板覆盖,然后进行像素最优化处理后,因为笔形模板的原因,需要对整个笔形的边界进行曲线逼近拟合处理。
在绘制笔形输出边界的曲线时,需要计算曲线的斜率,如果一段曲线的斜率范围只在0~1之间或者在1~正无穷大之间,那么对这两段曲线进行插值时就只使用拉格朗日n次曲线插值算法。原因有二,一是这两个斜率范插值的方法是不一样的,要区分处理。二是采用拉格朗日分段插值,可以保证曲线的收敛性,并且不会碰到解方程系数矩阵秩为0的无解情况。比如
高斯消去法和最小二乘曲线拟合用于曲线的斜率介于0~1之间和1~正无穷大之间的情况。原因是拉格朗日分段插值由于在上述两个方向插值算法不一致,导致在45度临界点会造成间断,一方面我们通过画外接扇形弥补了一些间断的情况,但仍会导致间断,所以这种情况通过最小二乘曲线拟合进行弥补。
最终,提高了输出的笔形的边界的光滑程度,大大降低了图形边界的锯齿状或阶梯状走样效果。
参照图3,示出了本申请一种反笔形走样装置的结构示意图。
所述的结构包括:
笔形覆盖模块210,用于依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合;
像素优化模块220,用于针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶;
边界曲线光滑模块230,用于通过曲线逼近拟合算法将笔形边界进行曲线拟合。
参照图4,示出了本申请优选的一种反笔形走样装置的结构示意图。
所述的结构包括:
括预置模块200,用于预置多种灰度为4阶的笔形模板。
笔形覆盖模块210,用于依据用户传入的坐标信息确定所需的多阶灰度笔形模板,并与用户输入的坐标轨迹结合;
像素优化模块220,用于针对目标坐标点,根据所述的每个目标坐标点的周围点的像素值,获得此点的最优像素值,将笔形的灰度增至256阶;
边界曲线光滑模块230,用于通过曲线逼近拟合算法将笔形边界进行曲线拟合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种反笔形走样方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。