专利名称:一种基于像素精度的代数曲线光栅化方法
技术领域:
本发明涉及计算机代数曲线曲面造型技术,特别涉及一种基于像素精度的代数曲线光栅化方法。
背景技术:
代数曲线曲面在几何造型中的表示能力很强,比参数曲线曲面更能表示具有任意拓扑的复杂曲线曲面。但是由于它在直观控制方面远不如参数曲线,并且控制系数数目较多,所以对代数曲线曲面的研究并不多。代数B-样条曲线在几何直观性上弥补了幂基代数曲线的编辑不直观的缺点,具有分段光滑、可局部编辑、几何编辑直观、可表示复杂拓扑形态等优点。在平面代数曲线的绘制研究方面,主要面临困难是求解曲线的拓扑信息的问题。对于二次的平面代数曲线就有抛物线、椭圆、双曲线、交叉直线四种拓扑结构,随着曲线次数的增加,曲线的拓扑形态会迅速增多,这给求解曲线的拓扑结构带来极大的挑战。在求解曲线拓扑的过程中,还必要面临精确求解曲线的奇异点(尖点、自相交点、孤立点)。对于曲线的奇异点,求解奇异点的拓扑信息也是在数值计算中的难题,其最终归结为求解带有重根的线性方程求解。对于带有重根的线性方程求解,现在还没有能够在计算时间和精度上取得很好的平衡。对于已经给出的拓扑结构,并不等于能够完整的刻画代数曲线。在代数曲线的光栅化过程中,即使得到了代数曲线的分段线性拓扑同构体,由于代数曲线光栅化算法一般采用像素采样点跟踪算法,对于相互靠近的曲线有可能出现跟踪错误的结果。这样导致从一个种子点出发,不能准确地到达分段曲线的终点。改进的算法是在需要的像素位置做子像素跟踪,但是这个过程需要更多的计算。在代数曲线可视化过程中,如何实现代数曲线快速光栅化是代数曲线曲面造型技术发展的重要研究课题。现有技术中,代数曲线的绘制方法可以分为两类物体空间算法和图像空间算法。在物体空间算法中,采用大量的直线段逼近代数曲线,然后利用已有的图形绘制方法显示这些逼近的直线段集合。在逼近过程中,核心是计算曲线上特征点,使得逼近直线段集合和原始曲线的拓扑一致。在计算代数曲线上的特征点时,最常用的方法是柱形代数分解。该方法的主要瓶颈在于柱形代数分解过程中需要消耗比较大的时间,不能达到实时绘制的要求。在图像空间算法中,算法确定曲线通过的像素或者子像素,然后对该像素进行着色。两类算法各有优缺点。对于给定的图像空间区域,检测曲线是否通过该区域。排除曲线没有通过的区域,对于有曲线通过的区域,运用细分或者跟踪的方式,直到每个区域只有像素或子像素大小。该方法缺乏对曲线的精确计算,不能准确计算曲线上的采样点
发明内容
本发明提供了一种基于像素精度的代数曲线光栅化方法,克服了现有技术的代数曲线绘制方法绘制效率较低以及绘制曲线精度不高的问题。一种基于像素精度的代数曲线光栅化方法,包括以下步骤(I)输入待绘制的代数曲线及其相关信息;
(2)将该曲线的特征点限制在一个像素范围内,得到若干包含曲线特征点的特征区域;如没有特殊说明,本文中的曲线即指待绘制的代数曲线。(3)求得曲线与所述特征区域边界的交点,通过所述的交点构建曲线在特征区域的拓扑连接信息;(4)根据特征区域边界的交点确定曲线的走向,利用直线段连接相邻的特征区域,得到直线段拟合曲线;所述的直线段通过特征区域边界的交点;(5)对所述的直线段拟合曲线进行优化,绘制并显示曲线。在本发明中,所述的特征区域定义为描述在像素精度内的刻画曲线特征点的区域,特征区域通常包含特征点,但在具体实施过程中也有可能是包含曲线上非常靠近的分支曲线段。所述的特征点为曲线上的奇异点和曲线上切向垂直或者水平的点。下面结合附图详细介绍本发明的具体实施方式
。优选地,步骤⑵中,所述的将该曲线的特征点限制在一个像素范围内,得到若干包含曲线特征点的特征区域,包括步骤(2. I)均匀细分该曲线的区域,得到细分后的子区域;(2. 2)利用区间分析的方法确定每个子区域的值域范围;判断每个子区域内是否存在该曲线的特征点,若存在则继续细分该子区域;(2. 3)重复步骤(2. 2),直到包含特征点的子区域的区域面积小于一个像素;将该子区域作为所述的特征区域。优选地,步骤(3)中,所述的求得曲线与所述特征区域边界的交点,包括步骤(3. I)以所述的特征区域为中心,用若干像素面积已知的包围盒包围每个特征区域;(3. 2)通过单变量方程计算出曲线和包围盒的交点作为曲线与所述特征区域边界的交点。上述的包围盒实质上即包括特征区域所占像素面积以及特征区域附近的像素面积。由于本发明所实现的曲线绘制方法的精确度高,特征区域在本发明中的区域面积小于一个像素,因此难以获取原曲线与特征区域边界的交点。获取上述交点能够求出从该特征区域弓I出的曲线弧线个数,从而判断曲线在其区域的拓扑连接关系。采用所述包围盒的方式,即以特征区域为中心,用包围盒将特征区域包围,能够在不对绘制精度产生影响的前提下,等效地得到原曲线与特征区域边界的交点特点。一般地,包围盒所占像素面积可为3*3像素。优选地,步骤(4)中,所述的利用直线段连接相邻的特征区域后,包括步骤(4. I)检测所有直线段所占像素是否超过某一预设的像素值;若否,则直接得到所述的直线段拟合曲线,若是,则执行以下步骤;(4. 2)对超过该像素值的直线段所在的区间进行扫描,求得扫描线与该区间内曲线的交点;(4. 3)将上述直线段拆分为通过区间内交点的若干直线段;所述的区间内交点包括所述特征区域边界的交点以及扫描线与该区间内曲线的交点;重复步骤(4. I) (4. 3)。优选地,步骤(5)中,所述的对所述的直线段拟合曲线进行优化,包括步骤(5. I)获取拟合曲线直线段的斜率;(5. 2)根据直线段的斜率,选用垂直扫描线或/和水平扫描线对直线段所在区间的曲线进行扫描,扫描线与该曲线的交点作为采样点的初始值;
(5. 3)基于采样点的初始值,通过牛顿迭代算法求出扫描方向上最邻近的根,牛顿迭代算法的终止条件为求根精度满足预设的像素精度绘制要求。用分段线性直线逼近曲线的绘制效果只能粗略地表示曲线在该区域内的情况;扫描直线段,以该分段直线段上的采样点(与扫描线的交点)作为初始值,通过牛顿迭代求出在扫描方向上最邻近的根,可以精确的计算出曲线上的采样点,从而提高曲线绘制的精度。具体地,步骤(5.2)中,所述根据直线段的斜率,选用垂直扫描线或/和水平扫描线对直线段所在区间的曲线进行扫描,包括以下情况在处理斜率绝对值小于1/K的直线段时,通过垂直扫描线对曲线进行扫描;对于斜率绝对值大于K的直线段,通过水平扫描线对曲线进行扫描;对于斜率绝对值属于[1/K,K]的直线段,应同时在水平和垂直两个方向对曲线进行扫描。K值可根据须实现的绘制精度作预先选取,一般可选取为K = 2。进一步地,步骤(5)中,所述的绘制并显示曲线,包括步骤结合反走样技术绘制并显示曲线。更进一步地,步骤(5)中,所述的绘制并显示曲线,也可以包括步骤对所得到曲线的采样点做反走样处理,根据处理得到的像素灰度值显示曲线。具体地,所述的对所得到曲线的采样点做反走样处理,包括步骤以预先设定像素半径的圆表示所述的采样点,计算该圆覆盖像素面积的百分比,得到像素的灰度值。本发明的技术方案能够处理不高于四次的幂基形式代数曲线,并且能够保证曲线在像素精度条件下绘制的正确性,曲线处理效率较高。本发明技术方案的技术原理如下一、关于特征区域。所述的特征区域实质上是把所述的特征点限制在一定的像素范围内,用以实现特征点在像素精度内的可视化;为了避免求解高次方程时的数值计算,采用细分区间的方法求解特征区域,即通过确定屏幕空间,让特征区域小于一个像素大小。给输入的代数曲线,为一种平面隐式代数曲线,其表达式如下f (x, y) =E BijXiYj = 0其中i、j分别为x、y的次数,Bij为对应的控制系数。对于区域[a,b]*[c,d],利用区间分析的方法确定f(x,y)和fY(x,y)的范围分别是和[gp];如果
且,说明该区域内可能有X-特征点,需要继续细分直到最后得到的区间小于一个像素,否则说明该 区域内没有X-特征点。利用这个样的方法,可以快速的得到包含特征点的区间,且这些区间都小于一个像素。二、关于曲线与所述特征区域边界的交点。用包围盒包围所述的特征区域,通过单变量方程计算出曲线和包围盒的交点基于如下原理其中由于不同的特征区域为已知,用一个小的包围盒包围特征区域不会同时包含两个特征区域;通过单变量方程计算出曲线和包围盒的交点用到四次及以下方程求根,由于目前已有的算法能够利用解析的方法求解五次及以下的方程,整个方法能准确的求出曲线和特征区域边界的交点,从而得到出从特征区域引出的弧线的个数。三、关于用直线段拟合曲线。为了让所得到的直线段拟合曲线接近于的曲线,对相隔较远的两个特征区域进行加密采样,即通过拆分超过一定像素值的直线段,以保证下一步中拟合曲线优化并绘制的正确性。四、关于分段曲线的优化。对直线段拟合曲线进行优化是为了对曲线进行进一步逼近,以完成曲线的绘制。在本发明中,以直接段上的点作为初始值,通过牛顿迭代求出该方向上最邻近的根,最后使用反走样的效果绘制曲线。以水平方向(即X方向)上的迭代过程为例,具体迭代过程基于以下公式x +1 =x + f^y\
f 0 ,少)其中,Xn为迭代前的计算结果,xn+1表示下一个点的结果。优化过程是用牛顿迭代的方法求解的,并根据屏幕像素的精度控制所要求根的精度;可以根据所需的绘制精度设定直线段斜率的判断依据,即上述的K值。五、关于绘制曲线。曲线在理论上是没有宽度的,在绘制过程中,曲线本身不会覆盖像素的任何面积,只会经过像素。为了增强绘制曲线的效果,一般都把曲线理解为带有一定宽度。在曲线绘制过程,为了减少锯齿状现象,需要对带有线宽的曲线做反走样。通过计算带有线宽的曲线对像素区域的影响,有区别的显示不同像素的颜色值,从视觉上消除锯齿的效果。最简单的处理方法是计算出曲线覆盖像素面积的百分比,从而决定像素的灰度值。本发明提供了基于特征区域的一般隐式代数曲线的绘制方法,能够处理不高于四次幂基形式代数曲线;采用了区间检测算法,对屏幕区域进行细分,把特征点限定在一定的区域内,使得最后特征区域小于一个像素;通过计算特征区域边界和曲线的交点连接特征区域,得到分段曲线逼近;最后用牛顿迭代计算对曲线进行优化,得到带有线宽反走样效果的曲线绘制。本发明能够在绘制效果和绘制效率上取得平衡,满足实时绘制的要求;同时在像素精度内将带有奇异点的代数曲线进行可视化处理。本发明的具体技术效果如下一、本发明不仅能够快速的绘制隐式代数曲线,而且能够通过牛顿迭代得到高质量的曲线,保证曲线的光顺性;二、本发明避免了直接计算曲线的拓扑信息,无需准确求解奇异点的拓扑结构,也不涉及对复杂的子结式和高次方程的求根问题,在对曲线光栅化的过程中把奇异点投影于某个像素,从而实现曲线的实时光栅化,并且保证在非奇异点的区域结果的正确性;三、本发明在计算的过程中给出了特征区域的连接关系,得到曲线的分段直线逼近,能够保证曲线在像素精度下的正确性。
图I为本发明的技术方案的流程示意;图2为本发明应用于具 体曲线的绘制过程示意图;图3为本发明特征区域和曲线边界有四个交点的情况下区域内的曲线拓扑连接关系图;图4为本发明拆分直线段并重新判断曲线通过交点方向后的连接情况示意图;图5为本发明利用牛顿迭代得到曲线采样点的部分过程示意图;图6为本发明垂直扫描线的反走样效果示意图;图7为本发明方法应用于部分平面隐式代数曲线的光栅化结果示意图。
具体实施例方式下面结合附图详细介绍本发明的具体实施方式
。如图I所述的一种基于像素精度的代数曲线光栅化方法,包括以下步骤(I)输入待绘制的代数曲线及其相关信息。输入的代数曲线为一种平面隐式代数曲线,其表达式如下f (x, y) =E SLiiK1J3 = 0其中i、j分别为X、y的次数,X、y的次数不高于四次;代数曲线的相关信息即包括表达式中的au,Bij为代数曲线对应的控制系数。(2)将该曲线的特征点限制在一个像素范围内,得到若干包含曲线特征点的特征区域。特征点为曲线上的奇异点和曲线上切向垂直或者水平的点。特征区域定义为描述在像素精度内的刻画曲线特征点的区域,特征区域通常包含特征点,但在具体实施过程中也有可能是包含曲线上非常靠近的分支曲线段。本步骤进一步包括步骤(2. I)均匀细分该曲线的区域,得到细分后的子区域;(2. 2)利用区间分析的方法确定每个子区域的范围;判断每个子区域内是否存在该曲线的特征点,若存在则继续细分该子区域;(2. 2)重复步骤(2. 2),直到包含特征点的子区域的区域面积小于一个像素;将该子区域作为所述的特征区域。(3)求得曲线与所述特征区域边界的交点,通过所述的交点构建曲线在特征区域的拓扑连接信息。本步骤进一步包括步骤(3. I)以所述的特征区域为中心,用若干像素面积已知的包围盒包围每个特征区域;
(3.2)通过单变量方程计算出曲线和包围盒的交点,通过曲线和包围盒的交点重构曲线在特征区域的拓扑连接信息。包围盒实质上即包括特征区域所占像素面积以及特征区域附近的像素面积。由于本发明所实现的曲线绘制方法的精确度高,特征区域在本发明中的区域面积小于一个像素,因此难以获取原曲线与特征区域边界的交点。获取上述交点能够求出从该特征区域引出的曲线弧线个数,从而判断曲线在其区域的拓扑连接关系。采用所述包围盒的方式,即以特征区域为中心,用包围盒将特征区域包围,能够在不对绘制精度产生影响的前提下,等效地得到原曲线与特征区域边界的交点特点。在本实施例中,包围盒所占像素面积可为3*3像素。 (4)根据特征区域边界的交点确定曲线的走向,利用直线段连接相邻的特征区域,得到直线段拟合曲线;所述的直线段通过特征区域边界的交点。本步骤进一步包括对相隔较远的相邻的特征区域之间的直线段进行拆分的过程,即对其进行加密采样,在根据特征区域边界的交点确定曲线的走向并利用直线段连接相邻的特征区域之后,具体包括步骤(4. I)检测所有直线段所占像素是否超过某一预设的像素值;若否,则直接得到所述的直线段拟合曲线,若是,则执行以下步骤;(4. 2)对超过该像素值的直线段所在的区间进行扫描,求得扫描线与该区间内曲线的交点;(4. 3)将上述直线段拆分为通过区间内交点的若干直线段;所述的区间内交点包括所述特征区域边界的交点以及扫描线与该区间内曲线的交点;重复步骤(4. I) (4. 3)。(5)对所述的直线段拟合曲线进行优化,绘制并显示曲线。由于用分段线性直线逼近曲线的绘制效果(即上一步骤中产生的直线段拟合曲线)只能粗略地表示曲线在该区域内的情况;为了提高曲线绘制的精度,需对直线段拟合曲线进行优化,具体包括如下步骤(5. I)获取拟合曲线直线段的斜率;(5. 2)根据直线段的斜率,选择扫描方式对于斜率绝对值小于1/K的直线段时,通过垂直扫描线对曲线进行扫描;对于斜率绝对值大于K的直线段,通过水平扫描线对曲线进行扫描;对于斜率绝对值属于[1/K,K]的直线段,应同时在水平和垂直两个方向对曲线进行扫描;其中,上述的K值可根据须实现的绘制精度作预先选取,在本实施例中选取为K =2。将上述的扫描线与该曲线的交点作为采样点的初始值;(5.3)基于采样点的初始值,通过牛顿迭代算法求出扫描方向上最邻近的根,牛顿迭代算法的终止条件为求根精度满足预设的像素精度绘制要求。对上述步骤基于牛顿迭代算法所得到曲线的采样点做反走样处理,即以预先设定像素半径的圆表示所述的采样点,计算该圆覆盖像素面积的百分比,得到像素的灰度值;最后,根据反走样处理得到的像素灰度值显示曲线。为了进一步论述本实施例方法的实施过程,下面结合图2,对本实施例代数曲线光栅化的实现过程以及效果作阐述。如图2a所示是步骤(2)中求得曲线的特征区域200的示意图,特征区域200实质上是把特征点限制在一定的像素范围内,用以实现特征点在像素精度内的可视化;为了避免求解高次方程时的数值计算,本实施例采用细分区间的方法求解特征区域,即通过确定屏幕空间,让特征区域小于一个像素大小。对于区域[a, b]*[c, d],利用区间分析的方法确定f (X, y)和fy(x,y)的范围分别
是和[gT];如果且,说明该区域内可能有X-特征点,需要继 续细分直到最后得到的区间小于一个像素,否则说明该区域内没有X-特征点。整个过程在GPU上实现,在实际的应用中,每次把区间剖分为8*8的子区域,最后得到的区域可能包含特征点。由于区间分析方法会带来过高估计的问题,导致在某些区域需要更多的剖分,但不影响最后的结果正确性。最后得到的区域也有可能不包含X-特征点,但是这个区域仍然会细分到很小的范围,细分结果主要和分辨率相关,在可视化范围内,这个区域并不影响最后的结果。在实施过程中还需要求解曲线与所述特征区域边界的交点,由于不同的特征区域为已知,用一个小的包围盒包围特征区域不会同时包含两个特征区域;结合图2b,用3*3像素面积的包围盒201包围特征区域200,并通过单变量方程计算出曲线和包围盒201的交点202。通过单变量方程计算出曲线和包围盒的交点,其中用到四次及以下方程求根。目前已有的算法能够利用解析的方法求解五次及以下的方程,整个方法能准确的求出曲线和特征区域边界的交点,从而得到出从特征区域引出的弧线的个数。对于每个的特征区域200,虽然无法确定在该区域内的曲线的形状,但已经能够满足曲线可视化的应用。在实现过程中更多的是关心这个区域对外延伸出多少条曲线,并由此确定这个区域和周边的连接关系。对于特征区域内部的曲线走向是否自相交,由于特征区域均小于一个像素,在一个像素内部曲线走向时候自相交已经没有必要深究。例如对于特征区域和曲线边界有四个交点的情况,如图3所示,由于特征区域200的像素面积在一个像素内,通常认为曲线通过区域的中心自相交,最后自相交的交点通过计算交点的重心得到。结合图2c,直线段拟合曲线中往往包括相邻特征区域较远这一种情况,实例中往往会通过检测直线段203是否大于一定像素值来判断是否属于上述情况。在出现上述情况中,为了让所得到的分段直线和最后想要的曲线相当接近,对相隔较远的两个特征区域要加密采样,以保证直线段优化结果的正确性。具体将直线段203作如下处理利用已有的特征区间的X坐标剖分区域,对于较大的区域用垂直扫描线和曲线求交(两个扫描线距离超过100个像素,在中间插入另一个扫描线),得到垂直扫描线与曲线的交点;将该直线段拆分为通过该交点的若干直线段。由于图2所示的原始曲线较为简单,当在上述情况下,若该直线段所在区域的扫描结果包含若干交点,此时,拆分过程需要重新判断曲线通过交点的方向,结合图4 :如果该直线段所在区域左右两个的扫描线上没有特征区域,通过计算区域周边和曲线的交点得到区域内的曲线逼近。如图4a,计算得到该区域左边扫描线有两个交点LI、L2,右边有两个交点R1、R2,曲线和区域在上边界有一个交点Tl,该点斜率大于O,曲线和区域在下边界有一个交点BI,该点斜率大于O。利用已知交点的斜率得到曲线通过该点的方向,可以确定曲线L1-T1、L2-R1、B1-R2。如果该直线段所在区域左右两个的扫描线其中一个上有特征区域,并且该区域内边界上只有一个特征区域,那么可以通过周边信息确定曲线的逼近。如下图4b,计算得到该区域左边扫描线有一个交点SI,右边有两个交点Rl、R2,曲线和区域在下边界有一个交点BI,该点斜率小于O。可以确定曲线Sl-Rl、S1-R2、Sl-Bl。完成上述全部过程后,得到最终的直线段拟合曲线;对其进行优化并结合反走样技术绘制显示如图2d所示的曲线204。在具体操作过程中,首先把获取的直线段数据传到GPU内,然后利用CUDA计算,以直线段与扫描线的交 点作为采样值的初始值,通过牛顿迭代求出该方向上最邻近的根,最后结合反走样的效果绘制曲线。下面来具体说明在已经得到的直线段拟合曲线基础上准确的计算曲线上的采样点的优化过程优化过程是用牛顿迭代的方法求解的,根据屏幕像素的精度控制所要求根的精度。在处理斜率绝对值小于1/K的直线段时,通过垂直扫描线对曲线进行优化;对于斜率绝对值大于K的直线段,通过水平扫描线对曲线进行优化;对于斜率绝对值属于[1/K,K]的线段,同时在水平和垂直两个方向优化曲线。实现优化过程中选取K = 2。如图5所示,曲线上的点S的坐标为(xs,ys),通过牛顿迭代可以得到最后的坐标结果T(xt,yt) ;5a图采用垂直扫描线迭代计算曲线上的点,5b图采用水平方向,5c图在水平和垂直两个方向迭代计算曲线上的采样点。在迭代过程中会出现导数为0的情况,例如对于水平方向上的迭代过程x +1 =x + f^y\
f 0 ,少)如果在迭代计算过程中没有遇到f1 (xn, y)为0的情况,求根收敛的过程会非常的快,一般至多三次迭代就可以得到最后的结果。考虑到浮点数的精度问题,如果出现PUn,y)为0的情况,该点相当接近奇异点,可以通过f(xn,y)确定最后的取舍情况。当两个像素之间的距离为d的时候,牛顿迭代求根的精度只要在d/100即可满足绘制的要求。在反走样过程中,对之前所得到的曲线上的采样点直接做反走样,根据之前扫描线的方向来减少采样点之间相互覆盖的重复计算。对于在垂直方向上的采样点,如果线宽为d个像素。对于每个采样点计算上方
到p」范围内,左右各取个像素。结合图6,图6a所示的a区域。计算像
素到采样点的距离,确定像素的灰度值。采样点下方b区域的像素也同样的计算得到。中间灰色区域认为被完全覆盖,直接填充。对于其他的区域,由于相邻的采样点(深灰色点)也会有同样的计算,所以不用完全计算整个圆形区域。本质上,只需要对每个垂直采样点计算如图6b所示的扇形区域,就可以得到完整的反走样效果。对于水平扫描线,需要计算的区域变成圆形区域的左右两个区域。这个方法虽然仍然有重复计算的问题,但是能够有效避免在拐角位置的缺口问题。
将本实施例的方法应用 于部分平面隐式代数曲线的光栅化效果可参见图7。图7显示了六类平面隐式代数曲线的光栅化结果。其中各个部分代数曲线的表达式如下7a y4-x3 = 0 ;7b y4-x2y2+xy2~x3 = 0 ;7c x3+3x2y2_x2+y2 = 0 ;7d 4x4-4x2+y2 = 0 ;7e 3y4-5y3+x2 = 0 ;7f jA-x2 = O0本发明的方法不仅能够快速的绘制隐式代数曲线,而且能够通过牛顿迭代得到高质量的曲线,保证曲线的光顺性;避免了复杂的子结式和高次方程求根问题的数值计算过程,便于实时绘制曲线;在计算的过程中给出特征区域的连接关系,得到曲线的分段直线逼近,能够保证曲线在像素精度下的正确性。
权利要求
1.一种基于像素精度的代数曲线光栅化方法,其特征在于,包括以下步骤 (1)输入待绘制的代数曲线及其相关信息; (2)将该曲线的特征点限制在ー个像素范围内,得到若干包含曲线特征点的特征区域; (3)求得曲线与所述特征区域边界的交点,通过所述的交点构建曲线在特征区域的拓扑连接信息; (4)根据特征区域边界的交点确定曲线的走向,利用直线段连接相邻的特征区域,得到直线段拟合曲线;所述的直线段通过特征区域边界的交点; (5)对所述的直线段拟合曲线进行优化,绘制并显示曲线。
2.如权利要求I所述的代数曲线光栅化方法,其特征在于,步骤(2)中,所述的将该曲线的特征点限制在一个像素范围内,得到若干包含曲线特征点的特征区域,包括步骤 (2. I)均匀细分该曲线的区域,得到细分后的子区域; (2. 2)利用区间分析的方法确定每个子区域的值域范围;判断每个子区域内是否存在该曲线的特征点,若存在则继续细分该子区域; (2. 3)重复步骤(2. 2),直到包含特征点的子区域的区域面积小于ー个像素;将该子区域作为所述的特征区域。
3.如权利要求I所述的代数曲线光栅化方法,其特征在于,步骤(3)中,所述的求得曲线与所述特征区域边界的交点,包括步骤 (3. I)以所述的特征区域为中心,用若干像素面积已知的包围盒包围每个特征区域; (3. 2)通过单变量方程计算出曲线和包围盒的交点作为曲线与所述特征区域边界的交点。
4.如权利要求I所述的代数曲线光栅化方法,其特征在于,步骤(4)中,所述的利用直线段连接相邻的特征区域后,包括步骤 (4. I)检测所有直线段所占像素是否超过某ー预设的像素值;若否,则直接得到所述的直线段拟合曲线,若是,则执行以下步骤; (4. 2)对超过该像素值的直线段所在的区间进行扫描,求得扫描线与该区间内曲线的交点; (4. 3)将上述直线段拆分为通过区间内交点的若干直线段;所述的区间内交点包括所述特征区域边界的交点以及扫描线与该区间内曲线的交点;重复步骤(4. I) (4. 3)。
5.如权利要求I或4所述的代数曲线光栅化方法,其特征在于,步骤(5)中,所述的对所述的直线段拟合曲线进行优化,包括步骤 (5. I)获取拟合曲线直线段的斜率; (5. 2)根据直线段的斜率,选用垂直扫描线或/和水平扫描线对直线段所在区间的曲线进行扫描,扫描线与该曲线的交点作为采样点的初始值; (5. 3)基于采样点的初始值,通过牛顿迭代算法求出扫描方向上最邻近的根,牛顿迭代算法的終止条件为求根精度满足预设的像素精度绘制要求。
6.如权利要求I 4任一项所述的代数曲线光栅化方法,其特征在于,步骤(5)中,所述的绘制并显示曲线,包括步骤 结合反走样技术绘制并显示曲线。
7.如权利要求5所述的代数曲线光栅化方法,其特征在于,步骤(5)中,所述的绘制并显示曲线,包括步骤 对所得到曲线的采样点做反走样处理,根据处理得到的像素灰度值显示曲线。
8.如权利要求7所述的代数曲线光栅化方法,其特征在于,所述的对所得到曲线的采样点做反走样处理,包括步骤 以预先设定像素半径的圆表示所述的采样点,计算该圆覆盖像素面积的百分比,得到像素的灰度值。
全文摘要
本发明公开了一种基于像素精度的代数曲线光栅化方法,包括步骤输入待绘制的代数曲线及其相关信息;将该曲线的特征点限制在一个像素范围内,得到若干包含曲线特征点的特征区域;求得曲线与所述特征区域边界的交点,通过所述的交点构建曲线在特征区域的拓扑连接信息;根据特征区域边界的交点确定曲线的走向,利用直线段连接相邻的特征区域,得到直线段拟合曲线;所述的直线段通过特征区域边界的交点;以及,对所述的直线段拟合曲线进行优化,绘制并显示曲线。本发明能够通过牛顿迭代得到高质量的曲线,保证曲线的光顺性;避免了复杂的子结式和高次方程求根问题的数值计算过程,便于实时绘制曲线。
文档编号G06T11/00GK102651137SQ20121009445
公开日2012年8月29日 申请日期2012年4月1日 优先权日2012年4月1日
发明者冯结青, 黄锦基 申请人:浙江大学