CN102663184B - 基于正则化条件的代数b-样条曲线的光栅化方法 - Google Patents
基于正则化条件的代数b-样条曲线的光栅化方法 Download PDFInfo
- Publication number
- CN102663184B CN102663184B CN201210097403.3A CN201210097403A CN102663184B CN 102663184 B CN102663184 B CN 102663184B CN 201210097403 A CN201210097403 A CN 201210097403A CN 102663184 B CN102663184 B CN 102663184B
- Authority
- CN
- China
- Prior art keywords
- curve
- region
- algebraic
- control coefrficient
- spline
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims abstract description 8
- 230000011218 segmentation Effects 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 18
- 238000003780 insertion Methods 0.000 claims description 14
- 230000037431 insertion Effects 0.000 claims description 14
- 238000001514 detection method Methods 0.000 claims description 10
- 239000011159 matrix material Substances 0.000 claims description 7
- 238000013467 fragmentation Methods 0.000 abstract 1
- 238000006062 fragmentation reaction Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 17
- 230000000694 effects Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 241000871495 Heeria argentea Species 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于正则化条件的代数B-样条曲线的光栅化方法,包括步骤:输入待绘制的代数B-条样曲线及其相关信息;将该曲线分片处理,转化为分段代数Bézier曲线;根据屏幕空间参数,确定需显示的曲线段;对需显示的曲线段,以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数;检测每个子区域是否满足正则条件;对满足正则条件或虽不满足正则条件但区域面积小于一个像素的子区域,绘制该子区域的曲线并在屏幕显示。本发明可以将曲线界定至简单区域中,进行像素精度求精;可以将特征点逐步求精至像素精度,避免了时间空间复杂度很高的特征点计算;还实现了具有复杂拓扑的代数B-样条曲线的实时光栅化绘制。
Description
技术领域
本发明涉及计算机代数曲线曲面造型技术,特别涉及一种基于正则化条件的代数B-样条曲线的光栅化方法。
背景技术
计算机辅助几何设计始兴于20世纪60年代,在计算机发展的影响下,为了利用计算机更高效地进行设计,人们开始寻找研究曲线或曲面的表示方法。随着计算机技术的发展,代数B-样条曲线更多的应用于曲线表示中。使用代数B-样条曲线表示方法的优点在于,代数B-样条曲线的控制系数具有几何意义,在编辑的过程中可以直观地通过改变控制系数控制曲线的形状。
1989年,MIT的Patrikalakis教授和Kriezis将分段连续的B-样条基函数引入到代数曲面的表示,提出了代数B-样条曲面。其二维表现形式是代数B-样条曲线。
X=[x0,x1,x2…xk+m],Y=[y0,y1,y2…yl+n]
代数B-样条曲线是代数B-样条曲线研究的基础,上式中,n、m分别为x、y方向上的控制系数的个数,k、1分别为x、y方向上的次数。Bij是代数B-样条曲线的控制系数,Ni,k(x)和Nj,l(y)是基于X、Y节点向量的B-样条基函数。代数B-样条曲线的节点向量和控制系数能很的反映曲线的特征。
节点向量对曲线的影响:对于次数相同的曲线,节点向量之间的距离反映了控制系数所能够影响的区域。原始节点向量差值越大,对应的控制系数影响的区域越大。对于重节点的情况,控制系数对相邻区域影响减少。当重节点次数等于曲线的次数,两边的控制系数相互不影响,可以把曲线分为两个代数B-样条曲线。因此,通过重节点插入算法,能够把代数B-样条曲线转化为分段代数Bézier曲线。
控制系数对曲线的影响:如果角点的控制系数为零,由端点插值性可以保证曲线通过该角点。如果对于n次的代数B-样条曲线,某方向上连续n+1个控制系数都大于零或者小于零,说明该n+1个控制系数对应的节点向量上没有曲线通过。对于某个控制系数B,如果B的绝对值越大,会使得曲线越远离所对应的控制节点,反之B绝对值越小,曲线越接近于控制节点。
代数B-样条曲线具有良好的几何性质。变差缩减性:对于给定的方向,沿该方向的直线与曲线的交点不多于控制系数在此方向上的变号次数。局部编辑能力:对于给定的节点向量,每个控制系数所影响的区域为n+1个节点向量区间,n为曲线在该方向的次数,代数曲线中控制系数具有明显的几何意义,便于对曲面的直观编辑。光滑性:在节点的区间内,曲线的光滑性为n,在没有重节点的节点上光滑性为n-1。
代数B-样条曲线本质上也是代数曲线,只是在表现形式上有所不同。只是基函数不一样,所以可以实现幂基多项式表示的代数曲线和Bernstein基表示的代数B-样条曲线之间的互换。代数B-样条曲线也可以看成是二维标量场的零值等线。代数B-样条曲线在平面点云重建研究工作中有着独特的优势:不需要对无序点云参数化,容易估算点到曲线的距离,方便加入各种约束条件优化结果。
实际的应用中,快速高精度绘制代数B-样条曲线也是研究者关注的问题。现有技术中,主要针对幂基多项式的代数曲线绘制方法,运用求解曲线的子结式的方法精确的计算曲线上的特征点,这类算法实现效率较慢,不能有效的对曲线分段绘制,无法满足实时绘制的要求。
发明内容
本发明提供了一种基于正则化条件的代数B-样条曲线的光栅化方法,用简单的剖分方法,把代数B-样条曲线保拓扑的剖分为分段的简单曲线。该方法能够在像素精度内准确的绘制没有奇异点的像素曲线,同时给出了保拓扑的光栅化结果。
一种基于正则化条件的代数B-样条曲线的光栅化方法,包括如下步骤:
(1)输入待绘制的代数B-条样曲线及其相关信息;曲线的相关信息包括该曲线的节点向量以及控制系数;
如没有特殊说明,本文中的曲线即指代数B-条样曲线。
(2)将该曲线分片处理,转化为分段代数Bézier曲线,即用代数Bernstein多项式表示输入曲线分片处理后的每个曲线段;
(3)根据屏幕空间参数,确定需显示的曲线段;
(4)对需显示的曲线段,以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数;检测每个子区域是否满足正则条件;对检测出的不满足正则条件的子区域,继续以细分的方式剖分,直到剖分后的子区域满足正则条件或者区域面积小于一个像素;
(5)对满足正则条件或虽不满足正则条件但区域面积小于一个像素的子区域,绘制该子区域的曲线并在屏幕显示。
本发明首先将代数B-样条曲线转化为分片代数Bernstein多项式曲线,然后并行剖分每一段代数Bernstein多项式曲线,直至每一段子曲线满足正则化条件。该方法不仅可以将曲线界定至简单区域中,进而进行像素精度求精;而且可以将特征点逐步求精至像素精度,避免了时间空间复杂度很高的特征点计算。该方法实现了具有复杂拓扑的代数B-样条曲线的实时光栅化绘制;本发明的方法不同于现有技术中幂基多项式曲线的绘制方法,完全避免了求解特征点所需要的数值计算。在把代数B-样条曲线转化为分片代数Bézier曲线以后,利用Bernstein多项式所具有的凸包性,极大程度地加快了区间检测算法。本发明的方法所用的细分算法简单,且利于并行计算,计算的过程均可采用GPU,并实现加速。
下面介绍本发明的优选技术方案。
进一步地,步骤(2)中,假设所述的曲线为x和y方向上双n次代数B-样条曲线;所述的将该曲线分片处理,包括步骤:
对于处在该曲线x或y方向上两端的节点向量进行节点插入,使其重节点数为n+1,
对于处在该曲线x或y方向上两端之间的节点向量进行节点插入,使其重节点数为n;
将每个非零的节点向量区间的曲线段分别转化为一个独立的代数Bézier曲线。
更进一步地,步骤(2)中,所述的代数Bernstein多项式的表示形式为:
作为优选,步骤(4)中,所述的以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数,包括步骤:
将该曲线段所对应的区域细分为8*8的均匀子区域,通过插值计算的方法得到每个子区域的控制系数。
进一步地,所述的插值计算的方法为de Casteljau算法。
更进一步地,所述的de Casteljau算法,基于如下递推式:
pn+1,m+1=(1-t)pn,m+tpn,m+1 ②
通过式②可以得到新的控制系数:[0,t]区间的控制系数可以表示为(p0,0,p1,1,...,pn,n),[t,1]区间的控制系数可以表示为(pn,n,pn-1,n,...,p0,n)。n为该方向的次数,m为中间递推变量,t为控制系数的分割点。
优选地,所述的检测该区域是否满足正则条件,包括步骤:
检测Bernstein多项式的控制系数在x和y方向上的改变次数:
若x和y方向系数改变次数都为0,即所有的系数同号,区域内没有曲线,直接跳出;
若x和y方向系数改变次数不全为0,但改变的次数都小于2,则对Bernstein多项式控制系数进行差分检测以判断是否满足正则条件;
若存在x或y方向系数改变次数大于1,则不满足正则条件。
进一步地,所述的对Bernstein多项式控制系数进行差分检测以判断是否满足正则条件,包括步骤:
将该Bernstein多项式在x或y方向上相邻的控制系数相减,检测所得到的差分结果是否同号:
若得到的所有差分结果同号,说明该区域满足正则化条件。
若得到的所有差分结果不同号,说明该区域不满足正则化条件。
优选地,步骤(5)中,所述的绘制该子区域的曲线,包括步骤:
对于满足正则条件的子区域,用扫描线对曲线进行采样;求出扫描线与该区域代数Bézier多项式曲线的交点,用Bézier点插入算法计算曲线上交点的坐标信息;
对于不满足正则化条件且区域面积小于一个像素的子区域,计算该区域代数Bézier多项式曲线的边界点;
结合反走样技术,绘制曲线。
具体地,所述的结合反走样技术,绘制曲线,包括步骤:
以预先设定半径的圆表示所述的交点以及边界点,计算该圆所覆盖像素面积的百分比,得到像素的灰度值。更为具体地,所述的圆的半径可预先设定为2~5个像素。
上述技术方案基于的技术原理如下:
一、关于正则化条件。
对于给定的代数Bézier曲面片,如果在某一定义域C内在x或y方向上的控制系数符号改变次数为0或者1,而且在该方向上相邻系数的差分不变号,那么称该函数在该定义域内为x或y方向上满足正则条件:
具体地,对于一维Bernstein多项式表示的曲线,正则定义可以理解为:在曲线定义域为[a,b]的区间上,Bernstein多项式的系数最多只改变一次符号,其导函数的系数符号不变号。导函数的系数表示为:ri=n(pi+1-pi),其中n是多项式次数,(p0,p1,...,pn)为原来曲线的控制系数,(r0,r1,...,rn-1)为曲线导数的控制系数。所以导函数的系数符号由相邻的两个控制系数的差值所决定的。一维情况的导函数的系数符号不变号,当且仅当原始的Bernstein多项式为单调非递增数列。对于二维Bernstein多项式,代数Bézier曲线必须满足在定义域D内,曲线在x、y方向上均为正则,才能说代数Bézier曲线在该定义域D内满足正则化条件。
综上,满足正则化条件的代数Bézier曲线,其拓扑由曲线和定义域D边界的交点决定。
二、关于代数Bézier曲线的控制系数。
若代数Bézier曲线在某一区域内满足正则条件,则说明该曲线的Bernstein多项式函数在该区域内在x和y方向上单调。因此,在该区域内的代数Bézier曲线最多只有一条曲线,且y相对于x是单调的。
从上述进一步可知,如果该代数Bézier曲线的控制系数在x或y方向上改变次数为1,则该区域内必有一条曲线,否则该区域内没有任何曲线。
三、关于曲线绘制过程的采样点。
对于满足正则条件的子区域,所述的采样点即为上述技术方案中扫描线与该区域代数Bézier多项式曲线的交点。
在该区域曲线的控制系数符号有改变的情况下,可以通过Bernstein多项式的凸包性质确定曲线和该区域的边界有且只有两个交点。在这个区域内,由这两个交点所连成的直线段也是曲线在该区域内的多边形化结果,并且Bernstein多项式对于x和y方向都是单调的;因此区域内的必然只有一条简单曲线,扫描线和该简单曲线最多只有一个交点。
四、关于曲线绘制过程的反走样技术。
曲线在理论上是没有宽度的,在绘制过程中,曲线本身不会覆盖像素的任何面积,只会经过像素。为了增强绘制曲线的效果,一般都把曲线理解为带有一定宽度。在曲线绘制过程,为了减少锯齿状现象,需要对带有线宽的曲线做反走样。通过计算带有线宽的曲线对像素区域的影响,有区别的显示不同像素的颜色值,从视觉上消除锯齿的效果。最简单的处理方法是计算出曲线覆盖像素面积的百分比,从而决定像素的灰度值。
本发明的技术效果如下:
一、区间检测简单。
利用正则化条件,检测在某个区域内是否有曲线通过,细分的结果能够保证只有一个简单曲线段通过该区域。正则化条件检测的过程中只有加减运算,保证了区域优化结果的收敛性。
二、能够准确计算相互靠近的曲线。
对于相互靠近的曲线,在正则化条件检测中会把该区域压缩到一个像素大小,最后通过Bézier插入算法计算曲线上点。这样避免了跟踪相互靠近曲线而带来的跟踪错误,也不用在子像素范围内跟踪曲线。
三、算法并行计算。
由于Bernstein多项式表示的代数Bézier曲线具有统一形式的控制系数。随着硬件设备的快速发展,该算法细分过程能够在GPU上并行运算,保证实时绘制的要求。
附图说明
图1为本发明方法的流程示意图;
图2为本发明应用于4-4次代数B-样条曲线的效果示意图;
图3为本发明应用于3-4次代数B-样条曲线的效果示意图;
图4为本发明应用于3-3次代数B-样条曲线的效果示意图。
具体实施方式
本实施例基于的技术手段是:把输入的曲线分片处理,在只有一条曲线段且Bernstein多项式保证单调性的区域,直接用扫描线的方法绘制。对于不满足上述条件的区域,用细分的方式剖分区域,直到最后的区域小于一定的范围(一般都是一个像素)。为了检测出Bernstein多项式单调性的区域,这里采用的是约束条件比较强而算法复杂度不高的正则化条件检测。剖分的过程包括:把每个代数Bernstein多项式曲线的区域细分为8*8的子区间;通过de Casteljau算法确定对应区域的控制系数,对要绘制子区域做正则条件检测。整个算法流程在GPU上实现,利用并行处理所有细分计算和绘制过程,达到实时编辑的优点。
如图1所示的一种基于正则化条件的代数B-样条曲线的光栅化方法,包括如下步骤:
(1)输入待绘制的代数B-条样曲线及其相关信息;曲线的相关信息包括该曲线的节点向量以及控制系数。
具体地,在本实施例中,输入待绘制的代数B-条样曲线可用式a1表示:
x、y方向上的节点向量设为X=[x0,x1,x2…xk+m]以及Y=[y0,y1,y2…yl+n];n、m分别为x、y方向上的控制系数的个数,k、1分别为x、y方向上的次数;Bij是代数B-样条曲线的控制系数,Ni,k(x)和Nj,l(y)是基于X、Y节点向量的B-样条基函数;由于Bij在储存形式上均二维矩阵,其下标i、j分别表示为二维矩阵的行数以及列数。
(2)将该曲线分片处理,转化为分段代数Bézier曲线,即用如式a2的代数Bernstein多项式表示输入曲线分片处理后的每个曲线段:
本步骤利用节点插入算法对输入的原始曲线作分片处理,具体过程如下:
假设输入的曲线为x和y方向上双n次代数B-样条曲线,那么,将该曲线分片处理,包括步骤:
对于处在该曲线x或y方向上两端的节点向量进行节点插入,使其重节点数为n+1,
对于处在该曲线x或y方向上两端之间的节点向量进行节点插入,使其重节点数为n;
将每个非零的节点向量区间的曲线段分别转化为一个独立的代数Bézier曲线。
把输入的原始曲线转化为分段代数Bézier曲线,从而使得每个曲线段的拥有统一的存储格式。
(3)根据屏幕空间参数,确定需显示的曲线段。
在一般的编辑过程中,设计到平移与放缩操作。为了有效地减少计算量,在本步骤中根据屏幕空间参数对不在屏幕上的代数Bézier曲线直接剔除。通过确定屏幕空间的参数所显示的区域,判断每个代数Bézier曲线是否需要显示。只绘制将要显示的曲线段。
(4)对需显示的曲线段,以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数;检测每个子区域是否满足正则条件;对检测出的不满足正则条件的子区域,继续以细分的方式剖分,直到剖分后的子区域满足正则条件或者区域面积小于一个像素。
本步骤中,以细分的方式剖分该曲线段所对应的子区域,得到每个子区域曲线的控制系数,包括步骤:
将该曲线段所对应的区域细分为8*8的均匀子区域,通过插值计算的方法得到每个子区域的控制系数,其中,所述的插值计算的方法为deCasteljau算法。
所述的de Casteljau算法,基于如下递推式:
pn+1,m+1=(1-t)pn,m+tpn,m+1……a3
通过式a3可以得到新的控制系数:[0,t]区间的控制系数可以表示为(p0,0,p1,1,...,pn,n),[t,1]区间的控制系数可以表示为(pn,n,pn-1,n,...,p0,n)。n为该方向的次数,m为中间递推变量,t为控制系数的分割点。
基于式a3,通过de Casteljau算法确定代数Bernstein多项式的控制系数的具体过程如下:
令一维de Casteljau插入算法对于控制系数的分割点为t∈[0,1],对于四次的情况,通过插值运算
pn+1,m+1=(1-t)pn,m+tpn,m+1
可以得到运算结果:
那么[0,t]区间的控制系数可以表示为p0,0,p1,1,p2,2,p3,3,p4,4,[t,1]区间的控制系数可以表示为p4,4,p3,4,p2,4,p1,4,p0,4。可以把一维的情况直接推广到二维,对二维控制系数每列每行分别做de Casteljau插入算法。对于[u1,u2]、[v1,v2]区间,首先对每一行做插值运算,u1作为分割点,选取[u1,1]区间的控制系数,再把(u2-u1)/(1-u1)作为分割点,选取[u1,u2]区间的控制系数,可以得到每一行插值后的结果;然后对每一列都要做类似的插值运算。
由上述步骤可以得到[u1,u2]、[v1,v2]区间转化的控制系数。
本步骤中,检测该区域是否满足正则条件,包括步骤:
检测Bernstein多项式的控制系数在x和y方向上的改变次数:
若x和y方向系数改变次数都为0,即所有的系数同号,区域内没有曲线,直接跳出;
若x和y方向系数改变次数不全为0,但改变的次数都小于2,则对Bernstein多项式控制系数进行差分检测以判断是否满足正则条件;
若存在x或y方向系数改变次数大于1,则不满足正则条件。
对Bernstein多项式控制系数进行差分检测以判断是否满足正则条件,包括步骤:
将该Bernstein多项式在x或y方向上相邻的控制系数相减,检测所得到的差分结果是否同号:
若得到的所有差分结果同号,说明该区域满足正则化条件。
若得到的所有差分结果不同号,说明该区域不满足正则化条件。
上述检测过程对于不满足条件“x和y方向系数改变次数都为0”以及“存在x或y方向系数改变次数大于1”的区域直接排除,避免了差分检测的步骤;对于其他的条件,才对控制系数做差分处理,检测x和y方向上的差分是否不变号。该检测过程可以快速排除大部分区域,大大减少计算时间。
(5)对满足正则条件或虽不满足正则条件但区域面积小于一个像素的子区域,绘制该子区域的曲线并在屏幕显示。
本步骤中,绘制该子区域的曲线,包括步骤:
对于满足正则条件且有曲线的子区域,用扫描线对曲线进行采样优化,求出扫描线与该区域代数Bézier多项式曲线的交点;
对于不满足正则化条件且区域面积小于一个像素的区域,计算该区域代数Bézier曲线边界点;
求出上述采样点后,即上述步骤中的交点以及边界点;结合反走样技术,绘制曲线,具体包括步骤:以预先设定半径的圆表示所述的交点以及边界点,计算该圆覆盖像素面积的百分比,得到像素的灰度值。
对曲线的优化,由于在区域内都是单根的求根问题,Bernstein多项式在正则化区域是关于x和y单调变化的,牛顿迭代的收敛速度相当快。并且由于区域满足正则化条件,能够保证牛顿迭代最后收敛对应的曲线上。除了可以使用牛顿迭代求根以外,还可以用Bernstein多项式方程求根。
对于的满足正则化条件的区域,如果Bernstein多项式控制系数只在x方向上符号有改变,则只选用很扫描线对曲线进行采样优化即可。类似的,如果只有y方向上有符号变化,则选用垂直扫描线。当两个方向上都有符号改变,则同时在两个方向上采样优化。
在横扫描线和区域求交过程中,对于给定的纵坐标,把y的坐标代入原来的Bernstein多项式,可以得到关于x的单变量Bernstein多项式方程:
式a4中,n为方程次数,Pi为单变量Bernstein多项式方程的控制系数,Bi,n(x)为Bernstein基函数。
理论上,Bernstein多项式方程的求根算法比幂基多项式方程求根算法更为鲁棒。Rockwood针对Bernstein多项式方程给出了Bézier点插入算法(具体可参见文献“ROCKWOOD A,HEATON K and DAVIS T.Real-Timerendering of trimmed surfaces.Computer Graphics,1989,23(3):107~116和REIMERS M and SELAND J.Ray casting algebraic surfaces using thefrustum form[J].Computer Graphics Forum,2008,27(2):361~370”),该算法是一种无条件二次收敛于Bernstein多项式方程的最小根的方法,Reimers把该求根算法移植到了GPU上,从而提高了曲线绘制的速度。本实现实施例选取了Bernstein多项式方程求解曲线上的采样点。
曲线在理论上是没有宽度的,在绘制过程中,曲线本身不会覆盖像素的任何面积,只会经过像素。为了增强绘制曲线的效果,一般都把曲线理解为带有一定宽度。通过用圆形采样点覆盖像素的方法得到最后的光栅化效果。
图2~图4为本实施例方法应用于几类m-n次代数B-样条曲线的具体应用情况,其中m-n次能够分别对应x和y方向上的次数。图中所显示的数字为原始的代数B-样条曲线控制系数,有区别地显示曲线上控制系数能够更好的理解曲线的走向(符号不同的控制系数分别用两种颜色显示),采用均匀节点向量。基于正则化条件的代数B-样条曲线光栅化方法能够很好的处理具有奇异点的曲线。通过改变对应的控制系数达到实时编辑曲线的目标。具体地,
图2所示的4-4次代数B-样条曲线图中,原始图中具有多重的自相交点,通过改变中间单一的控制系数编辑曲线。
图2中a部分表示原始图,b、c两部分为改变后控制系数的示意图。
图3所示的3-4次代数B-样条曲线图中,原始图中具有二重的自相交点,通过改变中间单一/多个的控制系数编辑曲线。
图3中a部分表示原始图,b、c、d三部分为改变后控制系数的示意图。
图4所示的3-3次代数B-样条曲线图中,隐藏了曲线的控制系数。
图4中a部分表示原始图,b部分为隐藏控制系数后的示意图。
Claims (7)
1.一种基于正则化条件的代数B-样条曲线的光栅化方法,包括如下步骤:
(1)输入待绘制的代数B-条样曲线及其相关信息;曲线的相关信息包括该曲线的节点向量以及控制系数;
(2)将该曲线分片处理,转化为分段代数Bézier曲线,即用代数Bernstein多项式表示输入曲线分片处理后的每个曲线段;
(3)根据屏幕空间参数,确定需显示的曲线段;
(4)对需显示的曲线段,以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数;检测每个子区域是否满足正则条件:
检测Bernstein多项式的控制系数在x和y方向上的改变次数:
若存在x或y方向系数改变次数大于1,则不满足正则条件;
若x和y方向系数改变次数都为0,即所有的系数同号,区域内没有曲线,直接跳出;
若x和y方向系数改变次数不全为0,但改变的次数都小于2,则对Bernstein多项式控制系数进行差分检测以判断是否满足正则条件:
将该Bernstein多项式在x或y方向上相邻的控制系数相减,检测所得到的差分结果是否同号:
若得到的所有差分结果同号,说明该区域满足正则化条件;
若得到的所有差分结果不同号,说明该区域不满足正则化条件;
对检测出的不满足正则条件的子区域,继续以细分的方式剖分,直到剖分后的子区域满足正则条件或者区域面积小于一个像素;
(5)对满足正则条件或虽不满足正则条件但区域面积小于一个像素的子区域,绘制该子区域的曲线并在屏幕显示。
2.如权利要求1所述的代数B-样条曲线的光栅化方法,其特征在于,步骤(2)中,假设所述的曲线为x和y方向上双n次代数B-样条曲线;所述的将该曲线分片处理,包括步骤:
对于处在该曲线x或y方向上两端的节点向量进行节点插入,使其重节点数为n+1,
对于处在该曲线x或y方向上两端之间的节点向量进行节点插入,使其重节点数为n;
将每个非零的节点向量区间的曲线段分别转化为一个独立的代数Bézier曲线。
4.如权利要求1所述的代数B-样条曲线的光栅化方法,其特征在于,步骤(4)中,所述的以细分的方式剖分该曲线段所对应的区域,得到每个子区域曲线的控制系数,包括步骤:
将该曲线段所对应的区域细分为8*8的均匀子区域,通过插值计算的方法得到每个子区域的控制系数。
5.如权利要求4所述的代数B-样条曲线的光栅化方法,其特征在于,所述的插值计算的方法为de Casteljau算法。
6.如权利要求1所述的代数B-样条曲线的光栅化方法,其特征在于,步骤(5)中,所述的绘制该子区域的曲线,包括步骤:
对于满足正则条件的子区域,用扫描线对曲线进行采样;求出扫描线与该区域代数Bézier多项式曲线的交点,用Bézier点插入算法计算曲线上交点的坐标信息;
对于不满足正则化条件且区域面积小于一个像素的子区域,计算该区域代数Bézier多项式曲线的边界点;
结合反走样技术,绘制曲线。
7.如权利要求6所述的代数B-样条曲线的光栅化方法,其特征在于,所述的结合反走样技术,绘制曲线,包括步骤:
以预先设定半径的圆表示所述的交点以及边界点,计算该圆所覆盖像素面积的百分比,得到像素的灰度值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210097403.3A CN102663184B (zh) | 2012-04-01 | 2012-04-01 | 基于正则化条件的代数b-样条曲线的光栅化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210097403.3A CN102663184B (zh) | 2012-04-01 | 2012-04-01 | 基于正则化条件的代数b-样条曲线的光栅化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102663184A CN102663184A (zh) | 2012-09-12 |
CN102663184B true CN102663184B (zh) | 2014-05-14 |
Family
ID=46772675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210097403.3A Expired - Fee Related CN102663184B (zh) | 2012-04-01 | 2012-04-01 | 基于正则化条件的代数b-样条曲线的光栅化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102663184B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106683057A (zh) * | 2016-12-23 | 2017-05-17 | 中国计量大学 | 任意连续曲面幕多投影显示墙的自动几何校正方法 |
CN110694828B (zh) * | 2019-09-03 | 2021-02-09 | 天津大学 | 一种基于大型复杂曲面模型的机器人喷涂轨迹规划方法 |
CN112541158B (zh) * | 2020-12-17 | 2023-10-03 | 中国科学院数学与系统科学研究院 | 由电子设备执行的空间曲面求交的方法和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082994A (zh) * | 2007-06-27 | 2007-12-05 | 永凯软件技术(上海)有限公司 | 工程图空间曲线线框模型重建方法 |
CN101599181A (zh) * | 2009-07-01 | 2009-12-09 | 浙江大学 | 一种代数b样条曲面的实时绘制方法 |
-
2012
- 2012-04-01 CN CN201210097403.3A patent/CN102663184B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082994A (zh) * | 2007-06-27 | 2007-12-05 | 永凯软件技术(上海)有限公司 | 工程图空间曲线线框模型重建方法 |
CN101599181A (zh) * | 2009-07-01 | 2009-12-09 | 浙江大学 | 一种代数b样条曲面的实时绘制方法 |
Non-Patent Citations (4)
Title |
---|
一种三次非均匀B样条曲线的细分算法;杨恢先 等;《计算机工程与应用》;20081231;第44卷(第29期);全文 * |
冯结青 等.基于插值的Bernstein多项式复合及其曲线曲面应用.《软件学报》.2002,第13卷(第10期),全文. |
基于插值的Bernstein多项式复合及其曲线曲面应用;冯结青 等;《软件学报》;20021231;第13卷(第10期);全文 * |
杨恢先 等.一种三次非均匀B样条曲线的细分算法.《计算机工程与应用》.2008,第44卷(第29期),全文. |
Also Published As
Publication number | Publication date |
---|---|
CN102663184A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lyche et al. | Spline methods draft | |
CN107704801B (zh) | 基于分段直线加分段贝塞尔曲线的曲线车道线检测方法 | |
CN103810739B (zh) | 一种图像文字变形动画的生成方法 | |
CN102157001A (zh) | 一种电子地图绘制的方法及系统 | |
CN102937896B (zh) | 在svg中利用颜色映射技术动态展示二维空间数据的方法 | |
CN102663184B (zh) | 基于正则化条件的代数b-样条曲线的光栅化方法 | |
US20200279415A1 (en) | Efficiently Computed Distance Fields | |
Kineri et al. | Surface design based on direct curvature editing | |
CN101739718B (zh) | 一种基于参数模板的玉米叶片虚拟仿真建模方法 | |
CN102651137B (zh) | 一种基于像素精度的代数曲线光栅化方法 | |
EP2372659B1 (en) | Method and system for rapidly vectorizing image by gradient meshes based on parameterization | |
Rahim et al. | Evaluation of adaptive subdivision method on mobile device | |
CN101764935B (zh) | 一种基于像素空间掩码矩阵的形态渐变径向色彩填充方法 | |
CN110765583B (zh) | 基于三次Bezier的分段曲线拟合方法 | |
Burch et al. | Partial link drawings for nodes, links, and regions of interest | |
Huang et al. | Incorporating improved refinement techniques for a grid-based geometrically-adaptive hexahedral mesh generation algorithm | |
CN110232723B (zh) | 一种基于穿越分析的曲线生成方法和装置 | |
Ribó et al. | Some algorithms to correct a geometry in order to create a finite element mesh | |
Singh et al. | Accurate contour plotting using 6-node triangular elements in 2D | |
Nuntawisuttiwong et al. | An Approach to Bézier Curve Approximation by Circular Arcs | |
Lin et al. | Affine arithmetic-based B-Spline surface intersection with gpu acceleration | |
CN106373190B (zh) | 基于稀疏散点数据的三维航道与切面显示方法 | |
Svatý et al. | Automated detection and vectorization of road elements in high resolution orthographic images | |
CN104751177B (zh) | 一种用于标识数字图像中给定模糊数字直线段的方法 | |
CN111260723A (zh) | 棒材的质心定位方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140514 Termination date: 20210401 |
|
CF01 | Termination of patent right due to non-payment of annual fee |