本发明涉及图像处理技术领域,尤其涉及一种打印处理方法和装置。
背景技术:
栅格图像处理器(rasterimageprocessor,简称rip)是一种解释器,用来将页面描述语言所描述的版面信息转换成点阵数据,以使得设备对点阵数据进行打印处理,得到所需的打印文件等。其中,曲线的绘制是rip的一项主要工作,对曲线进行折线化,得到折线,然后对折线进行填充,得到点阵数据,之后再由设备对点阵数据进行打印处理。
现有技术中,由于通常情况下,曲线的两个端点往往与其它曲线的端点,或者是直线段的端点连接,这样,在对各曲线进行折线化并得到各折线后,在对各折线或者直线段进行填充时,在各连接点的位置,即曲线与曲线连接的端点位置处,或者是曲线与直线段连接的端点位置处,极易产生尖角问题,从而使得生成的点阵数据不准确,进而在根据点阵数据进行打印时,造成打印结果不准确。目前,可通过确定各连接点处的夹角,即连接点处相邻两个线段之间的夹角,当夹角满足一定计算条件时,将连接点所在位置的形状由锐角连接改为直线连接,从而可避免尖角问题,以使得生成的点阵数据准确,进而在根据点阵数据进行打印时,提高打印结果的准确性。
然而现有技术中,在对曲线进行折线化时,存在折线化精度问题,因而可能会导致所确定的连接点的夹角存在偏差,那么就会造成有些连接点处的形状需要进行修改但未修改的情况,从而依旧是存在尖角问题,致使生成的点阵数据仍旧不准确,进而根据点阵数据进行打印处理时,仍会造成打印结果不准确。
技术实现要素:
本发明提供一种打印处理方法和装置,能够解决现有技术中存在的尖角问题,从而提高了所生成的点阵数据的准确性,进而提高了打印结果的准确性。
第一方面,本发明提供一种打印处理方法,包括:
确定待处理的曲线的起点的凹凸性、以及所述曲线的终点的凹凸性;
若所述起点为凹,则在所述曲线的第一位置上增加一个新增折点,其中,所述第一位置为所述曲线上的距离所述起点为预设距离的位置,若所述终点为凹,则在所述曲线的第二位置上增加一个新增折点,其中,所述第二位置为所述曲线上的距离所述终点为预设距离的位置,以得到处理后的曲线,其中,所述预设距离是基于数据类型的最小精度而确定的;
对所述处理后的曲线进行折线化,得到由多个折线段构成的折线;
根据所述折线生成点阵数据,并对所述点阵数据进行打印处理。
进一步地,所述确定曲线的起点的凹凸性,包括:
获取第一参考向量、第一远点向量和第一近点向量,其中,所述第一参考向量的起点为以所述曲线的起点作为终点的其它曲线上的最后一个折点,或者,所述第一参考向量的起点为以所述曲线的起点作为终点的直线段的起点,所述其它曲线上的最后一个折点是基于预设的原折线化算法得到的;第一远点向量的起点为所述曲线的起点,所述第一远点向量的终点为所述曲线上的第一个折点;所述第一近点向量的起点为所述曲线的起点,所述第一近点向量的终点为所述曲线上的位于所述曲线的起点与所述第一个折点之间的一点;
将所述第一参考向量与所述第一远点向量所构成的夹角作为第一远点角,将所述第一参考向量与所述第一近点向量所构成的夹角作为第一近点角,其中,所述第一远点角小于180度,所述第一近点角小于180度;
若所述第一近点角小于所述第一远点角,则确定所述曲线的起点为凹;
若所述第一近点角大于等于所述第一远点角,则确定所述曲线的起点为凸。
进一步地,确定所述曲线的终点的凹凸性,包括:
获取第二参考向量、第二远点向量和第二近点向量,其中,所述第二参考向量的起点为以所述曲线的终点作为起点的其它曲线上的第一个折点,或者,所述第二参考向量的起点为以所述曲线的终点作为起点的直线段的终点,所述其它曲线上的第一个折点是基于预设的原折线化算法得到的;所述第二远点向量的起点为所述曲线的终点,所述第二远点向量的终点为所述曲线上的最后一个折点;所述第二近点向量的起点为所述曲线的终点,所述第二近点向量的终点为所述曲线上的位于所述曲线的终点与所述最后一个折点之间的一点;
将所述第二参考向量与所述第二远点向量所构成的夹角作为第二远点角,将所述第二参考向量与所述第二近点向量所构成的夹角作为第二近点角,其中,所述第二远点角小于180度,所述第二近点角小于180度;
若所述第二近点角小于所述第二远点角,则确定所述曲线的终点为凹;
若所述第二近点角大于等于所述第二远点角,则确定所述曲线的终点为凸。
进一步地,所述对所述处理后的曲线进行折线化,得到由多个折线段构成的折线,包括:
当在所述曲线中增加至少一个新增折点时,根据所述至少一个新增折点和预设的原折线化算法,对所述处理后的曲线进行折线化,得到所述折线;
当在所述曲线中未增加新增折点时,根据所述原折线化算法,对所述处理后的曲线进行折线化,得到所述折线。
进一步地,当在所述曲线中增加两个新增折点时,根据所述至少一个新增折点和所述原折线化算法,对所述处理后的曲线进行折线化,得到所述折线,包括:
获取与所述第一位置上的新增折点对应的第一变化步长,并获取与所述第二位置上的新增折点对应的第二变化步长;
根据所述原折线化算法,确定两个新增折点之间的折线段数目;
根据所述第一变化步长、所述第二变化步长和所述折线段数目,确定两个新增折点之间的第三变化步长;
根据所述第三变化步长,在所述曲线上确定至少一个其它折点;
将所述曲线的起点、两个新增折点、至少一个其它折点、所述曲线的终点按照相应顺序进行连接,得到由多个折线段构成的折线。
进一步地,所述第三变化步长为ff=(1-fv1-fv2)/wn;
其中,fv1为所述第一变化步长,fv2为所述第二变化步长,wn为所述折线段数目,ff>fv1,ff>fv2。
第二方面,本发明提供了一种打印处理装置,包括:
凹凸性确定单元,用于确定待处理的曲线的起点的凹凸性、以及所述曲线的终点的凹凸性;
第一处理单元,用于若所述起点为凹,则在所述曲线的第一位置上增加一个新增折点,其中,所述第一位置为所述曲线上的距离所述起点为预设距离的位置,若所述终点为凹,则在所述曲线的第二位置上增加一个新增折点,其中,所述第二位置为所述曲线上的距离所述终点为预设距离的位置,以得到处理后的曲线,其中,所述预设距离是基于数据类型的最小精度而确定的;
折线化单元,用于对所述处理后的曲线进行折线化,得到由多个折线段构成的折线;
第二处理单元,用于根据所述折线生成点阵数据,并对所述点阵数据进行打印处理。
进一步地,所述确定单元,包括:
第一获取子单元,用于获取第一参考向量、第一远点向量和第一近点向量,其中,所述第一参考向量的起点为以所述曲线的起点作为终点的其它曲线上的最后一个折点,或者,所述第一参考向量的起点为以所述曲线的起点作为终点的直线段的起点,所述其它曲线上的最后一个折点是基于预设的原折线化算法得到的;第一远点向量的起点为所述曲线的起点,所述第一远点向量的终点为所述曲线上的第一个折点;所述第一近点向量的起点为所述曲线的起点,所述第一近点向量的终点为所述曲线上的位于所述曲线的起点与所述第一个折点之间的一点;
第一处理子单元,用于将所述第一参考向量与所述第一远点向量所构成的夹角作为第一远点角,将所述第一参考向量与所述第一近点向量所构成的夹角作为第一近点角,其中,所述第一远点角小于180度,所述第一近点角小于180度;
第一确定子单元,用于若所述第一近点角小于所述第一远点角,则确定所述曲线的起点为凹;若所述第一近点角大于等于所述第一远点角,则确定所述曲线的起点为凸。
进一步地,所述确定单元,包括:
第二获取子单元,用于获取第二参考向量、第二远点向量和第二近点向量,其中,所述第二参考向量的起点为以所述曲线的终点作为起点的其它曲线上的第一个折点,或者,所述第二参考向量的起点为以所述曲线的终点作为起点的直线段的终点,所述其它曲线上的第一个折点是基于预设的原折线化算法得到的;所述第二远点向量的起点为所述曲线的终点,所述第二远点向量的终点为所述曲线上的最后一个折点;所述第二近点向量的起点为所述曲线的终点,所述第二近点向量的终点为所述曲线上的位于所述曲线的终点与所述最后一个折点之间的一点;
第二处理子单元,用于将所述第二参考向量与所述第二远点向量所构成的夹角作为第二远点角,将所述第二参考向量与所述第二近点向量所构成的夹角作为第二近点角,其中,所述第二远点角小于180度,所述第二近点角小于180度;
第二确定子单元,用于若所述第二近点角小于所述第二远点角,则确定所述曲线的终点为凹;若所述第二近点角大于等于所述第二远点角,则确定所述曲线的终点为凸。
进一步地,所述折线化单元,具体用于当在所述曲线中增加至少一个新增折点时,根据所述至少一个新增折点和预设的原折线化算法,对所述处理后的曲线进行折线化,得到所述折线;当在所述曲线中未增加新增折点时,根据所述原折线化算法,对所述处理后的曲线进行折线化,得到所述折线。
进一步地,当在所述曲线中增加两个新增折点时,所述折线化单元,具体用于获取与所述第一位置上的新增折点对应的第一变化步长,并获取与所述第二位置上的新增折点对应的第二变化步长;根据所述原折线化算法,确定两个新增折点之间的折线段数目;根据所述第一变化步长、所述第二变化步长和所述折线段数目,确定两个新增折点之间的第三变化步长;根据所述第三变化步长,在所述曲线上确定至少一个其它折点;将所述曲线的起点、两个新增折点、至少一个其它折点、所述曲线的终点按照相应顺序进行连接,得到由多个折线段构成的折线。
进一步地,所述第三变化步长为ff=(1-fv1-fv2)/wn;
其中,fv1为所述第一变化步长,fv2为所述第二变化步长,wn为所述折线段数目,ff>fv1,ff>fv2。
第三方面,本发明提供了一种打印处理设备,包括:存储器和处理器;
所述存储器,用于存储计算机程序;
其中,所述处理器执行所述存储器中的计算机程序,以实现如第一方面中所述的方法。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的方法。
本发明提供一种打印处理方法和装置,针对待处理的曲线,首先确定曲线的起点的凹凸性以及曲线的终点的凹凸性,若起点为凹,则在曲线上的第一位置,即在无限趋近于起点的位置增加一个新增折点,若起点为凸,则不在第一位置增加新增折点,若终点为凹,则在曲线上的第二位置,即无限趋近于终点的位置增加一个新增折点,若终点为凸,则不在第二位置增加新增折点,以得到处理后的曲线,然后再对处理后的曲线进行折线化,得到折线,由于增加了对曲线的各端点的凹凸性判断,并在只有端点为凹时,才在无限趋近于端点的位置增加一个新增折点,这样,在各连接点处,所确定的相邻两个线段之间的夹角更易满足预设的计算条件,从而将连接点所在位置的形状由锐角连接改为直线连接,避免了尖角问题,使得生成的点阵数据准确,进而在根据点阵数据进行打印时,提高了打印结果的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明提供的pdf手册的内容的示意图一;
图2为本发明提供的pdf手册的示意图二;
图3为本发明实施例一提供的打印处理方法的流程示意图;
图4为本发明实施例二提供的打印处理方法的流程示意图;
图5为本发明实施例二提供的曲线示意图一;
图6为本发明实施例二提供的曲线示意图二;
图7为本发明实施例三提供的打印处理装置的结构示意图;
图8为本发明实施例五提供的打印处理设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了能够更好的理解本案,下面对于一些相关技术进行介绍。
图1为本发明提供的pdf手册内容的示意图一,图2为本发明提供的pdf手册的示意图二。根据pdf手册,线条连接样式(linejoinstyle)描述了勾边路径(strokepath)在连接处的夹角形状,分为锐角连接(miterjoin)、圆角连接(roundjoin)、直线连接(beveljoin)三种。其中,对于miterjoin的情况,当两条线段之间的夹角非常尖锐,使得结合点长度(miterlength)超过了strokepath的线宽(linewidth)时,就会出现尖角问题。那么为了避免这种尖角问题,pdf手册中还提到了miterlength与linewidth比值的最大值——miterlimit,即miterlength/linewidth=1/sin(j/2),那么当二分之一夹角j的正弦值的倒数大于miterlimit时,则将miterjoin改为beveljoin,从而避免尖角问题。
为了解决在生成点阵数据时可能会出现的尖角问题,可在各连接点的位置进行上述判断,举例来说,曲线hg与曲线gk连接,其中,g为两条曲线的连接点,假设按照原有折线化算法对曲线hg与曲线gk进行折线化,得到曲线hg上的最后一个折点u,以及曲线gk上的第一个折点v,即u、v均为靠近连接点g的折点,则针对连接点g所确定的夹角即为角ugv,然后判断二分之一夹角(即角ugv)的正弦值的倒数是否大于一预设阈值,若是,则将连接点g所在位置的形状由miterjoin改为beveljoin。但是,在实际执行过程中,由于所确定的夹角存在一些偏差,可能无法将连接点处的形状由miterjoin改为beveljoin,从而仍然存在尖角问题,进而使得点阵数据不准确,打印结果不准确。
图3为本发明实施例一提供的打印处理方法的流程示意图,以该实施例提供的方法应用于打印处理装置来进行示例说明,如图3所示,该方法包括:
步骤301:确定待处理的曲线的起点的凹凸性、以及曲线的终点的凹凸性。
其中,曲线通常指的是三次贝塞尔曲线(béziercurve)。
在本实施例中,可通过多种方式确定曲线的起点的凹凸性、以及曲线的终点的凹凸性。举例来说,在确定曲线的起点的凹凸性时,可在曲线上的靠近起点的位置选定一点,将该点与起点连成一条弦,再过这条弦的中点作垂直于x轴(横轴)的直线,若该垂线与曲线弧的交点位于弦的下方,则确定起点处为凹,若交点位于弦的上方,则确定起点处为凸。在确定曲线的终点的凹凸性时,可在曲线上的靠近终点的位置选定一点,接下来的处理过程可参照上述方法,此处不再赘述。
步骤302:若起点为凹,则在曲线的第一位置上增加一个新增折点,其中,第一位置为曲线上的距离起点为预设距离的位置,若终点为凹,则在曲线的第二位置上增加一个新增折点,其中,第二位置为曲线上的距离终点为预设距离的位置,以得到处理后的曲线,其中,预设距离是基于数据类型的最小精度而确定的。
在本实施例中,第一位置指的是在数据类型允许的精度下,无限趋近于曲线的起点的位置,第二位置指的是在数据类型允许的精度下,无限趋近于曲线的终点的位置。也即,在确定起点为凹时,在曲线上的无限趋近于起点的位置增加一个新增折点,在确定起点为凸时,则不在曲线上的无限趋近于起点的位置增加新增折点,在确定终点为凹时,在曲线上的无限趋近于终点的位置增加一个新增折点,在确定终点为凸时,则不在曲线上的无限趋近于终点的位置增加新增折点,以得到处理后的曲线。
步骤303:对处理后的曲线进行折线化,得到由多个折线段构成的折线。
在本实施例中,处理后的曲线中可能包括0或1或2个新增折点。当包括1或2个新增折点,则可根据新增折点和预设的原折线化算法对处理后的曲线进行折线化;当包括0个新增折点时,可按照原折线化算法对处理后的曲线进行折线化,其中,原折线化算法指的是现有技术中采用不加点方式进行折线化的算法。举例来说,若在曲线xy上的无限趋近于起点x的位置增加了新增折点p、以及在曲线上的无限趋近于终点y的位置增加了新增折点q,且根据原折线化算法确定了曲线xy之间的两个折点u(靠近x一端)、v(靠近y一端),则在对增加了p、q的曲线xy进行折线化后,将得到由xp、pu、uv、vq和qy构成的折线。增加1个新增折点的情况也可参照上述处理过程,此处不再赘述。
步骤304:根据折线生成点阵数据,并对点阵数据进行打印处理。
在本实施例中,在对相连接的各曲线完成折线化后,接下来可根据折线进行填充,以生成点阵数据,也即光栅数据,然后再对点阵数据进行打印处理,得到所需的打印文件等等。
本发明实施例提供了一种打印处理方法,针对待处理的曲线,首先确定曲线的起点的凹凸性以及曲线的终点的凹凸性,若起点为凹,则在曲线上的第一位置,即在无限趋近于起点的位置增加一个新增折点,若起点为凸,则不在第一位置增加新增折点,若终点为凹,则在曲线上的第二位置,即无限趋近于终点的位置增加一个新增折点,若终点为凸,则不在第二位置增加新增折点,以得到处理后的曲线,然后再对处理后的曲线进行折线化,得到折线,由于增加了对曲线的各端点的凹凸性判断,并在只有端点为凹时,才在无限趋近于端点的位置增加一个新增折点,这样,在各连接点处,所确定的相邻两个线段之间的夹角更易满足预设的计算条件,从而将连接点所在位置的形状由锐角连接改为直线连接,避免了尖角问题,使得生成的点阵数据准确,进而在根据点阵数据进行打印时,提高了打印结果的准确性。
图4为本发明实施例二提供的打印处理方法的流程图,如图4所示,该方法可以包括:
步骤401:确定待处理的曲线的起点的凹凸性。
在本实施例中,为了更加准确的确定曲线的起点的凹凸性,具体可通过如下各个步骤进行实现:
第一步骤:获取第一参考向量、第一远点向量和第一近点向量,其中,第一参考向量的起点为以曲线的起点作为终点的其它曲线上的最后一个折点,或者,第一参考向量的起点为以曲线的起点作为终点的直线段的起点,其它曲线上的最后一个折点是基于预设的原折线化算法得到的;第一远点向量的起点为曲线的起点,第一远点向量的终点为曲线上的第一个折点;第一近点向量的起点为曲线的起点,第一近点向量的终点为曲线上的位于曲线的起点与第一个折点之间的一点;
第二步骤:将第一参考向量与第一远点向量所构成的夹角作为第一远点角,将第一参考向量与第一近点向量所构成的夹角作为第一近点角,其中,第一远点角小于180度,第一近点角小于180度;
第三步骤:若第一近点角小于第一远点角,则确定曲线的起点为凹;
第四步骤:若第一近点角大于等于第一远点角,则确定曲线的起点为凸。
举例来说,图5为本发明实施例二提供的曲线的示意图一,如图5所示,共包括ac和cb两条曲线,其中,c为曲线ac和cb的连接点,且c为曲线ac的终点、以及c为曲线cb的起点,a1为曲线ac上的最后一个折点,该最后一个折点是基于原折线化算法对曲线ac进行折线化后得到的折点,即a1为曲线ac上所得到的距离终点c最近的一个折点(图5只是示例性的给出该点,并未对该点的位置进行限定),b1为曲线cb上的第一个折点,该第一个折点也是基于原折线化算法对曲线cb进行折线化时得到的折点,即b1为曲线cb上所得到的距离起点c的最近的一个折点,b2为b1与c之间的一点,a2为a1与c之间的一点。以确定曲线cb的起点c的凹凸性为例,第一参考向量为
再举例来说,图6为本发明实施例二提供的曲线的示意图二,如图6所示,共包括rf和ft两条曲线,其中,f为曲线rf和ft的连接点,且f为曲线rf的终点、以及f为曲线ft的起点,假设c1为曲线rf上的最后一个折点,该最后一个折点是基于原折线化算法对曲线rf进行折线化后得到的折点,即c1为曲线rf上所得到的距离终点f最近的一个折点,d1为曲线ft上的第一个折点,该第一个折点也是基于原折线化算法对曲线ft进行折线化时得到的折点,即d1为曲线ft上所得到的距离起点f的最近的一个折点,d2为d1与f之间的一点,c2为c1与f之间的一点。以确定曲线ft的起点f的凹凸性为例,第一参考向量为
步骤402:若起点为凹,则在曲线的第一位置上增加一个新增折点,其中,第一位置为曲线上的距离起点为预设距离的位置。
在本实施例中,以图5所示的曲线cb为例,由于确定曲线cb的起点c为凸,则不在曲线cb的无限趋近于起点c的位置增加新增折点,以图6所示的曲线ft为例,由于确定曲线ft的起点f为凹,则在曲线ft的无限趋近于起点f的位置增加一个新增折点。
步骤403:确定曲线的终点的凹凸性。
在本实施例中,为了更加准确的确定曲线的终点的凹凸性,具体可通过如下各个步骤进行实现:
第一步骤:获取第二参考向量、第二远点向量和第二近点向量,其中,第二参考向量的起点为以曲线的终点作为起点的其它曲线上的第一个折点,或者,第二参考向量的起点为以曲线的终点作为起点的直线段的终点,其它曲线上的第一个折点是基于预设的原折线化算法得到的;第二远点向量的起点为曲线的终点,第二远点向量的终点为曲线上的最后一个折点;第二近点向量的起点为曲线的终点,第二近点向量的终点为曲线上的位于曲线的终点与最后一个折点之间的一点;
第二步骤:将第二参考向量与第二远点向量所构成的夹角作为第二远点角,将第二参考向量与第二近点向量所构成的夹角作为第二近点角,其中,第二远点角小于180度,第二近点角小于180度;
第三步骤:若第二近点角小于第二远点角,则确定曲线的终点为凹;
第四步骤:若第二近点角大于等于第二远点角,则确定曲线的终点为凸。
举例来说,以确定图5中曲线ac的终点c的凹凸性为例,则第二参考向量为
可参照上述方法确定图6中曲线rf的终点f为凹,此处不在展开叙述。
步骤404:若终点为凹,则在曲线的第二位置上增加一个新增折点,其中,第二位置为曲线上的距离终点为预设距离的位置,以得到处理后的曲线,预设距离是基于数据类型的最小精度而确定的。
在本实施例中,在本实施例中,以图5所示的曲线ac为例,由于确定曲线ac的终点c为凸,则不在曲线ac的无限趋近于终点c的位置增加新增折点,以图6所示的曲线rf为例,由于确定曲线rf的终点f为凹,则在曲线rf的无限趋近于终点f的位置增加一个新增折点。
步骤405:当在曲线中增加至少一个新增折点时,根据至少一个新增折点和预设的原折线化算法,对处理后的曲线进行折线化,得到折线;当在曲线中未增加新增折点时,根据原折线化算法,对处理后的曲线进行折线化,得到折线。
在本实施例中,当曲线中增加至少一个新增折点时,折线化的过程可参照上述步骤403。当曲线中增加了两个新增折点时,可根据如下各步骤进行折线化:
第一步骤:获取与第一位置上的新增折点对应的第一变化步长,并获取与第二位置上的新增折点对应的第二变化步长;
第二步骤:根据原折线化算法,确定两个新增折点之间的折线段数目;
第三步骤:根据第一变化步长、第二变化步长和折线段数目,确定两个新增折点之间的第三变化步长;
第四步骤:根据第三变化步长,在曲线上确定至少一个其它折点;
第五步骤:将曲线的起点、两个新增折点、至少一个其它折点、曲线的终点按照相应顺序进行连接,得到由多个折线段构成的折线。
其中,第三变化步长为ff=(1-fv1-fv2)/wn;其中,fv1为第一变化步长,fv2为第二变化步长,wn为折线段数目,ff>fv1,ff>fv2。
在本实施例中,曲线通常为三次贝塞尔曲线,可通过起点、终点以及两个控制点绘制而成。通过获取第一变化步长,可根据现有技术确定出第一位置上的新增折点所对应的x、y坐标,通过获取第二变化步长,可确定出第二位置上的新增折点所对应的x、y坐标,根据第一变化步长、第二变化步长和折线段数目确定出两个新增折点之间的第三变化步长,从而接下来根据第三变化步长,通过现有技术可顺序求出各其它折点的x、y坐标,最终通过各个坐标完成折线化。
值得说明的是,当曲线中未增加新增折点时,也可通过上述步骤405下的第一至第四步骤完成折线化,针对此情形,只需将其中的两个新增折点用曲线的起点和终点进行替换即可。
再就是,当曲线端点处为凸时,按原有折线化算法,即使不增加折点,可能依然会出尖角,此时也可采取减少折点或增大曲线端点处的变化步长的方式,使得曲线折线化后,端点处的夹角变小,进而将miterjoin改为beveljoin,避免path尖角问题。
步骤406:根据折线生成点阵数据,并对点阵数据进行打印处理。
在本实施例中,如图6所示,通过上述过程在曲线rf的无限趋近于终点f的位置增加了一个新增折点s(图中未示出),在曲线ft的无限趋近于起点f的位置增加了一个新增折点e(图中未示出),则此时所确定出的连接点f的夹角为sfe,而按现有技术中确定连接点f的夹角为c1fd1,由于角sfe小于角c1fd1,因此经过二分之一夹角的正弦值的倒数的计算后,角sfe所对应的值大于角c1fd1所对应的值,因而更易满足计算值大于预设阈值的情形,从而将连接点f的形状由miterjoin改为beveljoin,避免path尖角问题,这样,所生成的点阵数据更加准确,打印结果更加准确。
如图5所示,若直接在曲线ac的无限趋近于终点c的位置增加一个新增折点,以及在曲线cb的无限趋近于起点c的位置增加一个新增折点,那么依据这两个新增折点所确定的c的夹角要大于a1cb1,从而所得到的计算值要减少,这样,将会造成计算值不大于预设阈值的情况,因而未将c的形状进行更改。因此,通过上述凹凸性的判断,并未在曲线ac的无限趋近于终点c的位置增加一个新增折点,以及并未在曲线cb的无限趋近于起点c的位置增加一个新增折点,以解决直接增加两个新增折点所可能带来的尖角问题,从而提高点阵数据的准确性,提高打印结果的准确性。
本发明实施例通过获取第一参考向量、第一远点向量和第一近点向量,能够根据这三个向量更为准确的确定出曲线的起点的凹凸性,以及通过获取第二参考向量、第二远点向量和第二近点向量,能够根据这三个向量更为准确的确定出曲线的终点的凹凸性,从而能够进一步避免尖角问题,提高点阵数据的准确性,进而提高打印结果的准确性。
图7为本发明实施例三提供的打印处理装置的结构示意图,包括:
凹凸性确定单元701,用于确定待处理的曲线的起点的凹凸性、以及所述曲线的终点的凹凸性;
第一处理单元702,用于若所述起点为凹,则在所述曲线的第一位置上增加一个新增折点,其中,所述第一位置为所述曲线上的距离所述起点为预设距离的位置,若所述终点为凹,则在所述曲线的第二位置上增加一个新增折点,其中,所述第二位置为所述曲线上的距离所述终点为预设距离的位置,以得到处理后的曲线,其中,所述预设距离是基于数据类型的最小精度而确定的;
折线化单元703,用于对所述处理后的曲线进行折线化,得到由多个折线段构成的折线;
第二处理单元704,用于根据所述折线生成点阵数据,并对所述点阵数据进行打印处理。
在本实施例中,本实施例的打印处理装置可执行本发明实施例一提供的打印处理方法,其实现原理相类似,此处不再赘述。
本发明针对待处理的曲线,首先确定曲线的起点的凹凸性以及曲线的终点的凹凸性,若起点为凹,则在曲线上的第一位置,即在无限趋近于起点的位置增加一个新增折点,若起点为凸,则不在第一位置增加新增折点,若终点为凹,则在曲线上的第二位置,即无限趋近于终点的位置增加一个新增折点,若终点为凸,则不在第二位置增加新增折点,以得到处理后的曲线,然后再对处理后的曲线进行折线化,得到折线,由于增加了对曲线的各端点的凹凸性判断,并在只有端点为凹时,才在无限趋近于端点的位置增加一个新增折点,这样,在各连接点处,所确定的相邻两个线段之间的夹角更易满足预设的计算条件,从而将连接点所在位置的形状由锐角连接改为直线连接,避免了尖角问题,使得生成的点阵数据准确,进而在根据点阵数据进行打印时,提高了打印结果的准确性。
本发明实施例四提供一种打印处理装置,在实施例三的基础上,
所述确定单元,包括:
第一获取子单元,用于获取第一参考向量、第一远点向量和第一近点向量,其中,所述第一参考向量的起点为以所述曲线的起点作为终点的其它曲线上的最后一个折点,或者,所述第一参考向量的起点为以所述曲线的起点作为终点的直线段的起点,所述其它曲线上的最后一个折点是基于预设的原折线化算法得到的;第一远点向量的起点为所述曲线的起点,所述第一远点向量的终点为所述曲线上的第一个折点;所述第一近点向量的起点为所述曲线的起点,所述第一近点向量的终点为所述曲线上的位于所述曲线的起点与所述第一个折点之间的一点;
第一处理子单元,用于将所述第一参考向量与所述第一远点向量所构成的夹角作为第一远点角,将所述第一参考向量与所述第一近点向量所构成的夹角作为第一近点角,其中,所述第一远点角小于180度,所述第一近点角小于180度;
第一确定子单元,用于若所述第一近点角小于所述第一远点角,则确定所述曲线的起点为凹;若所述第一近点角大于等于所述第一远点角,则确定所述曲线的起点为凸。
进一步地,所述确定单元,包括:
第二获取子单元,用于获取第二参考向量、第二远点向量和第二近点向量,其中,所述第二参考向量的起点为以所述曲线的终点作为起点的其它曲线上的第一个折点,或者,所述第二参考向量的起点为以所述曲线的终点作为起点的直线段的终点,所述其它曲线上的第一个折点是基于预设的原折线化算法得到的;所述第二远点向量的起点为所述曲线的终点,所述第二远点向量的终点为所述曲线上的最后一个折点;所述第二近点向量的起点为所述曲线的终点,所述第二近点向量的终点为所述曲线上的位于所述曲线的终点与所述最后一个折点之间的一点;
第二处理子单元,用于将所述第二参考向量与所述第二远点向量所构成的夹角作为第二远点角,将所述第二参考向量与所述第二近点向量所构成的夹角作为第二近点角,其中,所述第二远点角小于180度,所述第二近点角小于180度;
第二确定子单元,用于若所述第二近点角小于所述第二远点角,则确定所述曲线的终点为凹;若所述第二近点角大于等于所述第二远点角,则确定所述曲线的终点为凸。
进一步地,所述折线化单元,具体用于当在所述曲线中增加至少一个新增折点时,根据所述至少一个新增折点和预设的原折线化算法,对所述处理后的曲线进行折线化,得到所述折线;当在所述曲线中未增加新增折点时,根据所述原折线化算法,对所述处理后的曲线进行折线化,得到所述折线。
进一步地,当在所述曲线中增加两个新增折点时,所述折线化单元,具体用于获取与所述第一位置上的新增折点对应的第一变化步长,并获取与所述第二位置上的新增折点对应的第二变化步长;根据所述原折线化算法,确定两个新增折点之间的折线段数目;根据所述第一变化步长、所述第二变化步长和所述折线段数目,确定两个新增折点之间的第三变化步长;根据所述第三变化步长,在所述曲线上确定至少一个其它折点;将所述曲线的起点、两个新增折点、至少一个其它折点、所述曲线的终点按照相应顺序进行连接,得到由多个折线段构成的折线。
进一步地,所述第三变化步长为ff=(1-fv1-fv2)/wn;
其中,fv1为所述第一变化步长,fv2为所述第二变化步长,wn为所述折线段数目,ff>fv1,ff>fv2。
在本实施例中,本实施例的打印处理装置可执行本发明实施例一提供的打印处理方法,其实现原理相类似,此处不再赘述。
本发明实施例通过获取第一参考向量、第一远点向量和第一近点向量,能够根据这三个向量更为准确的确定出曲线的起点的凹凸性,以及通过获取第二参考向量、第二远点向量和第二近点向量,能够根据这三个向量更为准确的确定出曲线的终点的凹凸性,从而能够进一步避免尖角问题,提高点阵数据的准确性,进而提高打印结果的准确性。
图8为本发明实施例五提供的打印处理设备的结构示意图,包括:,包括:存储器801和处理器802;
所述存储器801,用于存储计算机程序;
其中,所述处理器802执行所述存储器801中的计算机程序,以实现任一实施例中的方法。
本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现任一实施例中的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。