本发明涉及计算机图形绘制领域,尤其是一种利用概率计算方法生成b样条曲线的方法和系统。
背景技术:
b样条曲线曲面具有几何不变性、凸包性、保凸性、变差减小性、局部支撑性等许多优良性质,是计算机图形学中相当重要的参数曲线。b样条曲线的绘制效率,直接影响到计算机图像绘制效率。
在已知n+1个控制点pi(i=1、2、3……n)以及节点t的情况下,n次b样条曲线的通用表达式如下:
若采用直接计算的方法生成,计算复杂度比较高,尤其在计算生成高阶b样条曲线时,复杂度太高,速度慢。目前直接计算的方法的关键路径由乘法器、加法器等组成。3次b样条曲线时间复杂度为o(t3),4次b样条曲线时间复杂度为o(t4),n次b样条曲线时间复杂度为o(tn)。可见,随着b样条曲线次数的不断增大,传统计算方法的时间复杂度呈o(tn)增长。
概率计算[1]是一种数值表征和计算方法,在概率计算中,利用序列中含1的个数占整个序列长度的比例来表征值,通过构造简单的门级电路来完成乘、加等运算来实现。概率计算的方法近年来已经被应用于数字滤波器、fft、turbo译码器、多码率ldpc译码器[2-4]等研究领域。使用概率计算能大幅减小计算量。
本发明涉及的参考文献如下:
[1]w.qianandm.riedel,“thesynthesisofrobustpolynomialarithmeticwithstochasticlogic,”indac’08:proceedingsofthe45thdesignautomationconference,anaheim,ca,usa,jun.2008,pp.648–653.
[2]吴思励,周焰,乐艳丽,李加庆.基于实测数据的雷达探测概率计算方法[j].微计算机信息,2008,7-3.
[3]陈杰男,胡剑浩.基于概率计算的数字滤波器的实现[j].中国集成电路,2010,11.
[4]胡剑浩,陈杰男.概率计算在通信信号处理系统实现中的应用[j].无线电通信技术,2015,41(2):01-06.
技术实现要素:
本发明的发明目的在于:针对上述存在的问题,提供一种将概率计算运用到b样条曲线的绘制中的方法和系统。以利用概率计算的简单结构,通过低复杂度的结构和较小运算量,快速绘制出较为准确的b样条曲线。
本发明采用的技术方案如下:
一种基于概率计算的b样条曲线生成方法,其特征在于,包括以下步骤:
对输入的控制点组进行坐标变换,得到对应的控制点坐标组的步骤;
对控制点坐标组进行归一化处理,得到对应的映射值组的步骤;
对各所述映射值组和输入的节点组的值分别进行二值化处理,得到对应的第一二进制串组和第二二进制串组的步骤;
基于第二二进制串组对第一二进制串组进行多路选通,以得到概率值组的步骤;
对概率值组进行随机解码,并对解码结果进行归一化逆运算,得到对应的点坐标组的步骤。
上述方案基于概率计算方法生成b样条曲线,计算过程仅涉及加法、比较和多路选通,属于复杂度随b样条曲线次数增加而呈线性增长的方法,较直接计算中,复杂处为o(t4)的方法,大幅减小了计算量,降低了计算复杂度,缩减了计算耗时,在生成高阶b样条曲线时,效果尤为突出。
进一步的,上述二值化处理的过程为将待二值化处理的数据与预设长度伪随机码进行移位比较以得到比较结果的过程。
进一步的,上述基于第二二进制串组对第一二进制串组进行多路选通具体为:以第二二进制串组对应位相加的结果作为多路选通控制端,以对第一二进制串组进行多路选通。
进一步的,上述对控制点坐标组进行归一化处理中,归一化方法为:gpi=(ai-min(a0,a1,a2.....an))/(max(a0,a1,a2....an)-min(a0,a1,a2.....an)),(i=0,1,2,...n);其中,min(.)是求最小值函数,max(.)是求最大值函数,n为控制点组数量,a0,a1,a2.....an为控制点坐标组,gpi为归一化得到的映射值。
一种基于概率计算的b样条曲线绘制系统,其包括依次连接的坐标变换模块、归一化模块、二值化模块、概率计算模块和数据解码模块;其中:
坐标变换模块用于对输入的控制点组进行坐标变换,输出对应的控制点坐标组;
归一化模块用于对接收的控制点坐标组进行归一化处理,输出对应的映射值组;
二值化模块用于接收归一化模块输出的映射值组,还接收输入的节点组,二值化模块用于对接收的数据进行二值化处理,输出对应的二进制串,对于接收的概率值组,则对应输出第一二进制串组,对于接收的节点组,则对应输出第二二进制串;
概率计算模块基于第二二进制串对第一二进制串进行多路选通,以输出概率值组;
数据解码模块对接收的概率值组进行随机解码和归一化逆运算,得到绘制点的位置坐标。
进一步的,上述二值化模块用于对接收的数据基于伪随机码进行二值化处理。
进一步的,上述二值化模块包括一伪随机码生成单元和一比较器;所述伪随机码生成单元用于生成预设长度的伪随机码,所述伪随机码生成单元的输出端连接所述比较器的第一输入端,所述比较器的第二输入端用于接收归一化模块的输出值,比较器的输出端输出对应于其第二输入端所接收的数据的二进制串。即当比较器的第二输入端输入为映射值组时,其输出端输出第一二进制串,当比较器的第二输入端输入为节点组是,其输出端输出第二二进制串。
进一步的,上述概率计算模块基于第二二进制串组对第一二进制串组进行多路选通具体为:概率计算模块基于第二二进制串组对应位相加的结果对第一二进制串组进行多路选通。
进一步的,上述概率计算模块包括一加法器和一多路选通器,加法器输入端用于接收第二二进制串组,加法器输出端连接多路选通器的控制端,多路选通器的系数输入端用于接收第一二进制串组,多路选通器的输出端输出概率值组。
进一步的,上述归一化模块的归一化方法为:
gpi=(ai-min(a0,a1,a2.....an))/(max(a0,a1,a2....an)-min(a0,a1,a2.....an)),(i=0,1,2,...n);其中,min(.)是求最小值函数,max(.)是求最大值函数,n为控制点组数量,a0,a1,a2.....an为控制点坐标组,gpi为归一化得到的映射值。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
现有方案采用直接计算的方式,其计算的关键路径主要由乘法构成,对于n次b样条曲线,其绘图的复杂度为o(tn),可见,其呈o(tn)增长,计算量较大,计算耗时长。而本发明采用概率计算的方式绘制b样条曲线,其计算的关键路径由加法、比较和多路选通组成,对于n次b样条曲线,需要进行2n次比较、1次n位加法和1次n+1选一的多路选通,显然,绘图的计算量随着b样条曲线次数的不断增加,计算(或系统结构)的复杂度呈线性增加,较直接计算的方式,大幅降低了计算复杂度,计算量小,计算速度快(尤其对于高阶b样条曲线的绘制),便于在fpga等硬件上的实现。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是基于概率计算的b样条曲线生成方法流程的一个实施例。
图2是基于概率计算的b样条曲线绘制方法的结构图。
图3是二值化模块结构的一个实施例。
图4是概率计算模块结构的一个实施例。
图5是通过本发明方案和通过直接计算方式所绘制出的三次b样条曲线。
图6是通过本发明方案所绘制出的若干中三次b样条曲线。
其中,在图5和图6中,虚线曲线为通过本发明方案所绘制出的三次b样条曲线,实线曲线为通过直接计算的方式所绘制出的三次b样条曲线;图6中,(a)为取256位伪随机码的结果,(b)为取取512位伪随机码的结果,(c)为取取1024位伪随机码的结果,(d)为取取2048位伪随机码的结果。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
实施例一
本实施例公开了一种基于概率计算的b样条曲线生成方法,包括以下步骤:
基于b样条曲线的通用表达,对输入的控制点pi(i=1、2、3……n)进行坐标变换,得到对应的控制点坐标ai(i=1、2、3……n)的步骤。
将控制点坐标进行归一化处理,得到对应的映射值gpi(i=1、2、3……n)的步骤,其中,归一化方法为:
gpi=(ai-min(a0,a1,a2.....an))/(max(a0,a1,a2....an)-min(a0,a1,a2.....an)),(i=0,1,2,...n);其中,min(.)是求最小值函数,max(.)是求最大值函数。
基于n位伪随机码ri(i=1,2,3……n),将各映射值gpi(i=1,2,3……n)和输入的节点tk(k=1,2...n)分别进行二值化处理,得到对应的二进制串bi(i=1,2...n)和xi(i=1,2...n)的步骤。
以xi(i=1,2...n)逐位相加的结果s(i)=x1(i)+x2(i)+...+xn(i),(i=1,2...n)作为多路选通控制端,以bi(i=1,2...n)作为多路选通系数输入端,得到概率值y(i)=bs(i)(i=0,1,2...n)的步骤。
对概率值进行随机解码,并对解码结果进行归一化逆运算,得到对应的点坐标的步骤。通过各点坐标上的点,即可绘制出对应的b样条曲线。
实施例二
如图1所示,本实施例一公开了一种基于概率计算的b样条曲线生成方法,包括以下步骤:
1、基于b样条曲线的通用表达,对输入的控制点组pi(i=1、2、3……n)进行坐标变换,得到对应的控制点坐标组ai(i=1、2、3……n)的步骤。
b样条曲线的表达式为:
其中,p0,p1,…pn为曲线的控制点组;n为b样条曲线的次数,如三次b样条曲线,n为3;t为0到1之间的小数值;k为其中的第k个点,k的取值范围为0,1,2,…n。将式(1)变换整理得到下式(概率计算多项式):
以三次b样条曲线为例,将b样条曲线表达式进行展开得到:
p(t)=1/6(p0(-t3+3t2-3t+1)+p1(3t3-6t2+4)+p2(-3t3+3t2+3t+1)+p3t3)(2)
由式(2)整理得到式(3):
p(t)=1/6((p0+4p1+p2)+(-3p0+3p2)t+(3p0-6p1+3p2)t2+(-p0+3p1-3p2+p3)t3)
(3),对应到控制点坐标,变换得到:
a0=1/6(p0+4p1+p2)(5),
a1=1/6(4p1+2p2)(6),
a2=1/6(2p1+4p2)(7),
a3=1/6(p1+4p2+p3)(8)。
通过输入的控制点组p0-p3,即得到控制点坐标组a0-a3。
2、将控制点坐标组a0a1,a2....an进行归一化处理,得到对应的映射值组gpi(i=1、2、3……n)的步骤。
归一化处理是将各控制点坐标组a0a1,a2....an的值分别映射到[0,1]之间,归一化映射转换方法如下:
gpi=(ai-min(a0,a1,a2.....an))/(max(a0,a1,a2....an)-min(a0,a1,a2.....an)),(i=0,1,2,...n)(9),min(.)是求最小值函数,max(.)是求最大值函数。
3、基于n位伪随机码组ri(i=1,2,3……n),将映射值组gpi(i=1,2,3……n)和输入的节点组tk(k=1,2,3…n)分别进行二值化处理,得到对应的二进制串组bi(i=1,2,3…n)和xi(i=1,2,3…n)的步骤。
二值化处理分别将tk和gpi对应转变成二进制串组xi和bi。转变输入tk,输出得到xi,输入gpi,输出得到bi。转变过程基于伪随机码组完成,文献“伪随机码及计算机的产生”(吴明捷、杜天苍,辽宁工程技术大学学报,第21卷第2期)中提到将本原多项式作为反馈移位寄存器的特征多项式,可以产生伪随机码序列。
伪随机码组由本原多项式移位产生。将本原多项式作为反馈移位寄存器的特征多项式,即可产生伪随机码组。本原多项式如下:
在本实施例中,本原多项式取10阶,即n取10,用110000101反馈移位产生n位随机码ri,n分别取256位、512位、1024位和2048位进行实验。对应的三次b样条曲线的绘制结果如图6中的(a)、(b)、(c)、(d)所示。
在将gpi与ri(i=0,1,2…,n)进行移位比较时,若gpi大于等于ri,输出为“1”,小于则输出为“0”。实验证明,得到的bi的二进制串中(i取1,2,…n),“1”所占的比例与gpi表示的值相同。这就为概率计算应用到b样条曲线绘制中提供了基础。假如gpi的的值为0.4,n为128位,则bi中“1”的个数为128*0.4个,虽然bi中“1”所占的比例相同,但由于ri中“1”的位置是随机的,所以bi中的二进制串中“1”的位置也是随机的。同样,tk与ri进行移位比较(i=0,1,2…,n),得到随机的二进制串组xi。
4、以xi(i=1,2,3...n)对应位相加的结果s(i)=x1(i)+x2(i)+...+xn(i),(i=1,2...n)作为多路选通控制端,以bi(i=1,2...n)作为多路选通系数输入端,得到概率值组y(i)=bs(i)(i=0,1,2...n)的步骤。
如图4所示,概率计算中,使用到一加法器和一多路选通器,以xi(i=1,2,3...n)作为加法器的输入端,各位对应相加得到s(1)s(2)...s(n),其中,s(i)=x1(i)+x2(i)+...+xn(i)(i=1,2...n)。加法器输出端si(i=1,2,3...n)作为多路选通器的控制端,bi(i=1,2...n)作为多路选通器的系数输入端(数据输入端),多路选通器输出端输出y(i)=bs(i)(i=0,1,2...n),得到输出值y(1)y(2)…y(n)。bs(i)计算的真值表如下表所示:
5、对概率值组进行随机解码,并对解码结果进行归一化逆运算,得到曲线的点坐标的步骤。通过各点坐标上的点,即可绘制出对应的b样条曲线。
随机解码方法为:
其统计y(1)y(2)…y(n)中“1”的个数在二进制串的比例,随机解码过程即为概率计算过程。再经过式(12)进行归一化逆运算,得到绘制点的位置坐标。
dy=y(max(a0,a1,a2....an)-min(a0,a1,a2.....an))+min(a0,a1,a2....an)(12),
dy为通过概率计算得到的与输入值tk和控制点组p0,p1,…pn对应的输出坐标值。由dy的值可以直接绘制出b样条曲线。如图5所示,为本实施例方法所绘制的三次b样条曲线,所选用的伪随机码长度为512位。
实施例三
如图2所示,本实施例公开了一种基于概率计算的b样条曲线生成系统,其包括依次连接的坐标变换模块、归一化模块、二值化模块、概率计算模块和数据解码模块;其中:
坐标变换模块用于对输入的控制点pi(i=1、2、3……n)进行坐标变换,输出对应的控制点坐标ai(i=1、2、3……n);
归一化模块用于对接收的控制点坐标进行归一化处理,输出对应的映射值gpi(i=1、2、3……n);
二值化模块用于接收归一化模块输出的数据,还接收输入的节点tk(k=1,2,3…n),二值化模块用于对接收的数据基于n位伪随机码进行二值化处理,输出对应的二进制串,对于接收的概率值gpi,则对应输出二进制串bi(i=1、2、3……n),对于接收的节点tk,则对应输出二进制串xi(i=1、2、3……n);
概率计算模块以xi(i=1,2,3......n)对应位相加的结果s(i)=x1(i)+x2(i)+...+xn(i),(i=1,2......n)作为多路选通控制端,以bi(i=、1、2……3)作n为多路选通系数输入端,输出概率值y(i)=bs(i)(i=0,1,2...n);
数据解码模块对接收的数据(概率计算模块输出的y(i)(i=0,1,2...n))进行依次进行随机解码和归一化逆运算,得到绘制点的位置坐标。将计算出的各绘制点在图上标记出即达到b样条曲线。如图5所示,其中的虚线为依据本实施例的绘图系统在伪随机码长度取512位情况下所绘制出的三次b样条曲线。
实施例四
本实施例公开了一种基于概率计算的b样条曲线生成系统,如图2所示,其包括依次连接的坐标变换模块、归一化模块、二值化模块、概率计算模块和数据解码模块。
坐标变换模块包括一控制点输入口,用于对从控制点输入口输入的控制点组pi(i=1、2、3……n)进行坐标变换,输出对应的控制点坐标组ai(i=1、2、3……n)。坐标变换方法为:
b样条曲线的表达式为:
其中,p0,p1,…pn为曲线的控制点组;n为b样条曲线的次数,如三次b样条曲线,n为3;t为0到1之间的小数值;k为其中的第k个点,k的取值范围为0,1,2,…n。将式(1)变换整理得到:
以三次b样条曲线为例,将b样条曲线表达式进行展开得到:
p(t)=1/6(p0(-t3+3t2-3t+1)+p1(3t3-6t2+4)+p2(-3t3+3t2+3t+1)+p3t3)(2)
由式(2)整理得到式(3):
p(t)=1/6((p0+4p1+p2)+(-3p0+3p2)t+(3p0-6p1+3p2)t2+(-p0+3p1-3p2+p3)t3)
(3),对应到控制点坐标,变换得到:
a0=1/6(p0+4p1+p2)(5),
a1=1/6(4p1+2p2)(6),
a2=1/6(2p1+4p2)(7),
a3=1/6(p1+4p2+p3)(8)。
通过输入的控制点组p0-p3,即得到控制点坐标组a0-a3。
归一化模块用于对接收的控制点坐标组进行归一化处理,输出对应的映射值组gpi(i=1、2、3……n)。
归一化处理是将各控制点坐标组a0a1,a2....an的值分别映射到[0,1]之间,归一化映射转换方法如下:
gpi=(ai-min(a0,a1,a2.....an))/(max(a0,a1,a2....an)-min(a0,a1,a2.....an)),(i=0,1,2,...n)(9),
min(.)是求最小值函数,max(.)是求最大值函数,n为控制点坐标组数。
二值化模块还包括一节点输入口,二值化模块用于对接收的数据基于n位伪随机码组ri(i=1,2,3...n)进行二值化处理,得到对应的二进制串。对于接收的概率值组gpi,则对应输出二进制串组bi,对于接收的节点组tk,则对应输出二进制串组xi,其中,i=1,2,3...n,k=1,2,3...n。
如图3所示,二值化模块包括一伪随机码生成单元和一比较器,伪随机码生成模块的输出端连接比较器的一输入端。在二值化处理时,待处理数据输入到比较器的另一输入端,比较器输出端输出对应的二进制串。
在一个实施例中,伪随机码生成单元为移位寄存器,该移位寄存器的特征多项式为本原多项式:
本实施例中,本原多项式取10阶,即n取10,用110000101反馈移位产生n位随机码ri,n分别取256位、512位、1024位和2048位进行实验。对应的绘制结果依次对应图6中的(a)、(b)、(c)、(d)。
概率计算模块以xi(i=1,2,3…n)对应位相加的结果s(i)=x1(i)+x2(i)+...+xn(i),(i=1,2…,n)作为多路选通控制端,以bi(i=1、2、3……n)作为多路选通系数输入端,输出概率值组y(i)=bs(i)(i=0,1,2,...n)。
如图4所示,概率计算模块在一个实施例中,包括一加法器和一多路选通器,加法器输入端用于接收xi(i=1,2,3…n),加法器输出端连接多路选通器的控制端,多路选通器的系数输入端用于接收bi(i=1、2、3……n),多路选通器的输出端输出y(i)=bs(i)(i=0,1,2,...n)。bs(i)计算的真值表如下表所示:
数据解码模块对接收的数据(概率计算模块输出的y(i)(i=0,1,2,...n))依次进行随机解码和归一化逆运算,得到绘制点的位置坐标。
随机解码方法为:
其统计y(1)y(2)…y(n)中“1”的个数在二进制串的比例。再经过式(12)进行归一化逆运算,得到绘制点的位置坐标。
dy=y(max(a0,a1,a2....an)-min(a0,a1,a2.....an))+min(a0,a1,a2....an)(12),
dy为通过概率计算得到的与输入值tk和控制点组p0,p1,…pn对应的输出坐标值。由dy的值可以直接绘制出b样条曲线。如图5所示,为根据本实施例系统输出的位置坐标所绘制的三次b样条曲线,所选用的伪随机码长度为512位。其结果误差如下表:
如图6所示,为根据本实施例系统输出的位置坐标所绘制的三次b样条曲线(其他多次b样条曲线绘制结果类似),曲线(a)、(b)、(c)、(d)依次对应于256位伪随机码、512位伪随机码、1024位伪随机码和2048位伪随机码。不同长度伪随机码所绘制的b样条曲线的误差如下表:
由上表可以看出,随着伪随机码长度的不断增大,差值不断缩小,其结果会越来越精确。
本实施例系统的关键路径由加法器、比较器、多路选通器等组成。由图3可知,3次b样条曲线需要6个比较器,1个加法器和1个四选一多路选通器,4次b样条曲线需要8个比较器,1个加法器和1个五选一多路选通器,n次b样条曲线需要2n比较器,1个加法和1个n+1选一多路选通器。因此,随着b样条曲线次数的不断增加,概率计算方法所需硬件呈线性增加,计算复杂度低。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。