一种反笔形走样的方法和装置 【技术领域】
本申请涉及图像反走样领域, 特别设计一种反笔形走样的方法和装置。背景技术 在液晶显示器上绘制各种图形, 比如手写识别时使用者绘制倾斜的直线或曲线, 笔形边界上常常会出现锯齿状或阶梯状不光滑的效果, 称为走样现象。 现有技术中, 显示器 绘图是按照一个个像素点来依次显示图形的, 像素点本身是一个矩形具有一定宽度, 若某 个像素点在要显示图形的坐标范围之内, 就显示某种颜色, 若在图形范围之外就显示背景 色, 当这些矩形在一条斜线上依次排列时, 就形成了锯齿状或阶梯状的走样效果 ; 在某些分 辨率很高的显示屏上绘制图形时仍然可以用肉眼观察到笔形的这种走样现象, 如果是一些 分辨率较低的嵌入式设备, 笔形走样效果会更加明显, 这在一定程度上降低了使用者进行 人机交互时的体验度。
发明内容
本申请所要解决的技术问题是提供一种反笔形走样的方法和装置, 提升了笔形边 界的光滑程度。
为了解决上述问题, 本申请公开了一种反笔形走样方法, 包括 :
笔形覆盖步骤, 依据用户传入的坐标信息确定所需的多阶灰度笔形模板, 并与用 户输入的坐标轨迹结合 ;
像素优化步骤, 针对目标坐标点, 根据所述的每个目标坐标点的周围点的像素值, 获得此点的最优像素值, 将笔形的灰度增至 256 阶 ;
边界曲线光滑步骤, 通过曲线逼近拟合算法将笔形边界进行曲线拟合。
其中, 通过以下方式获取目标坐标点 :
步骤 A1, 依据用户传入的坐标信息, 获取所需笔形的外接矩形的范围 ;
步骤 A2, 在外接矩形的范围内, 依据用户传入的坐标信息, 覆盖笔形模板, 获得外 接矩形内的初步像素值 ;
步骤 A3, 遍历查找预置范围内的像素值, 获取符合要求的像素值所对应的坐标点 作为目标坐标点。
其中, 还包括步骤 100, 预置多种灰度为 4 阶的笔形模板。
其中, 所述的基本笔形模板包括毛笔、 钢笔和铅笔。
其中, 用户按需求选择各种笔形模板中的一种。
其中, 所述的曲线逼近拟合算法包括 : 拉格朗日 n 次曲线插值逼近算法、 高斯消去 法和最小二乘曲线拟合算法。
其中, 当坐标之间的斜率范围只在 0 ~ 1 之间或者在 1 ~正无穷大之间时通过拉 格朗日 n 次曲线插值逼近算法进行曲线逼近拟合 ; 当坐标之间的斜率范围介于 0 ~ 1 之 间和 1 ~正无穷大之间时, 通过高斯消去法和最小二乘曲线拟合算法联合进行曲线逼近拟合。 相应的本申请还公开了一种反笔形走样装置, 包括 :
笔形覆盖模块, 用于依据用户传入的坐标信息确定所需的多阶灰度笔形模板, 并 与用户输入的坐标轨迹结合 ;
像素优化模块, 用于针对目标坐标点, 根据所述的每个目标坐标点的周围点的像 素值, 获得此点的最优像素值, 将笔形的灰度增至 256 阶 ;
边界曲线光滑模块, 用于通过曲线逼近拟合算法将笔形边界进行曲线拟合。
其中, 还包括预置模块, 用于预置多种灰度为 4 阶的笔形模板。
与现有技术相比, 本申请具有以下优点 :
本申请首先通过根据用户输入的坐标覆盖已经有初步渐变效果的具有多阶灰度 的笔形模板, 然后通过后端逐点算法将笔形边沿附近的像素进行最优化处理, 最后再对笔 形边界曲线进行光滑逼近拟合, 大大提高了最终输出笔形边界的光滑程度, 很大程度上去 除了图形边界的锯齿或阶梯状走样效果。
附图说明
图 1 是本申请一种反笔形走样方法的流程示意图 ; 图 2 是本申请优选的一种反笔形走样方法的流程示意图 ; 图 3 是本申请一种反笔形走样装置的结构示意图 ; 图 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, 用于通过曲线逼近拟合算法将笔形边界进行曲线拟合。
本说明书中的各个实施例均采用递进的方式描述, 每个实施例重点说明的都是与 其他实施例的不同之处, 各个实施例之间相同相似的部分互相参见即可。 对于实施例而言,
由于其与方法实施例基本相似, 所以描述的比较简单, 相关之处参见方法实施例的部分说 明即可。
以上对本申请所提供的一种反笔形走样方法和装置, 进行了详细介绍, 本文中应 用了具体个例对本申请的原理及实施方式进行了阐述, 以上实施例的说明只是用于帮助理 解本申请的方法及其核心思想 ; 同时, 对于本领域的一般技术人员, 依据本申请的思想, 在 具体实施方式及应用范围上均会有改变之处, 综上所述, 本说明书内容不应理解为对本申 请的限制。