1. 引言
数据拟合是处理科学和工程问题中大量采样和实验数据的常用方法。它通过将离散的数据拟合为连续的代数表示来反映数据的基本趋势。渐进迭代逼近(Progressive Iterative Approximation, PIA)是一种有效的数据拟合方法,它使用几何迭代法动态求解,具有明显的几何意义。渐进迭代逼近方法被广泛应用于几何设计、数据拟合、网格和样条体的生成、逆向工程以及图像处理等领域。它的优点包括直观操作、简单算法和强适应性。
曲线曲面渐进迭代逼近性质的研究自上世纪70年代开始。齐东旭等 [1] 提出了均匀三次B样条曲线盈亏修正算法,并发现这种曲线具有PIA性质。Lin等 [2] 证明非均的三次B样条曲线曲面也具有PIA特性。2005年,Lin等 [3] 证明了在非退化配置矩阵的情况下,曲线(包括张量积曲面)具有渐进迭代逼近性质。张莉 [4] 将PIA的适用范围推广到三角域上,给出了三角片面Bézier曲面具有PIA性质的条件。胡倩倩 [5] 等人对PIA算法进行了改进实现了三角B-B曲面加速逼近的算法,使算法更加高效。Liu [6] 等人研究了张量积Bézier曲面的PIA性质。近年来PIA算法在各种曲线曲面逼近上得到了广泛的应用。季康松 [7] 等给PIA加入了法相约束,使隐式曲线能够更好地拟合散乱数据点及其几何特征。吴硕琳 [8] 等在PIA算法的基础上提出了非均匀三次B样条曲线Hermite插值算法,并证明了该算法是收敛的。周晨 [9] 等实现了用非均匀3次B样条拟合曲线的PIA性质实现了一种矢量地图曲线化简方法,展现出PIA算法在实际生活中有广泛的应用。
Toric曲面是张量积Bézier曲面和三角Bézier曲面片的推广,具有许多与Bézier曲面相类似的良好性质。2002年Ktasauskas [10] 基于Toric簇和Torie理想,定义了一类与整数点集下的有理多边形参数曲面Toric曲面。Toric曲面与Bézier曲面相比,在曲面拼接 [11] 、曲面补洞 [12] 、过渡曲面 [13] 等应用中,Toric方法需要更少的曲面片,整体性更好。汪涵 [14] 等在Toric-Bézier曲线上加入了伸缩因子实现曲线的自由变形,提高了曲线的可调性和预见性。孙兰银等 [15] 利用最小二乘法实现了Toric曲面拟合数据点。2020年,Li [16] 等定义了一种特殊的Toric曲线并将其命名为GT-Bézier曲线,这种曲线是Bézier曲线的拓展。Yu [17] 发现了一种特殊的Toric曲线,并证明了这种曲线具有PIA性。
本文在现有渐进迭代逼近方法的研究基础上,研究Toric曲面的渐进迭代逼近算法。得出当普半径小于1时,Toric曲面同样可以渐进迭代逼近数据点。定义了一种字典排序的方法,将选取的参数点按字典排序,将Toric曲面做渐进迭代逼近使其逐渐靠近这些数据点,最终得到了拟合这些数据点的Toric曲面。本文的第一章介绍了Toric曲面的定义和字典排序方法为下文做准备。第二章讲解了Toric曲面做渐进迭代逼近的过程。第三章给出了数值实例可以直观地看出拟合效果。相较于别的曲面渐进迭代逼近,Toric曲面的参数域选取更加灵活,可以是任意凸多边形。对于不规则形状的参数域,可以直接用Toric曲面做整体拟合,无需考虑曲面的重构与拼接。
2. 预备知识
定义1. (Toric-Bernstein基函数):设在平面中,坐标为整数的有限个点构成的集合为
。设该点集A的凸包
为
。令n边形
的第r条边的边界方程为
,
。这里的
互素且向量
指向
的内部。那么对于集合A中的每一个整数格点
,定义Toric-Bernstein基函数为:
(1)
其中
为自定义系数。
定义2. (Toric曲面):对于有限整数点集A,定义在
上的Toric Bézier曲面为
为:
(2)
其中
是Toric-Bernstein基函数,
为对应整数格点
的控制顶点,
为控制顶点的权因子。
因为Toric曲面定义在
上,
可能是一个不规则图形。为了描述方便需要给这些整数点集进行排序,下面给出字典排序的定义:
定义3. (字典排序):设平面
中有两个坐标为整数的点
和
,若
成立,当且仅当
或(
且
)。
设点集A有n个坐标为整数的点,可以用字典排序的方法从小到大将点集A重新排列为
。那么Toric-Bernstein基函数可以写成,
其中
为自定义系数。同理,Toric曲面可以写成,
3. Toric曲面渐进迭代逼近
已知空间
中有n个数据点的集合
,每一个数据点
对应的参数值为
,它们组成平面有限点集A。将点集A中的点进行从小到大的字典排序可以将A写成点列
,这样集合
可以按照角标的字典排序变为
。同样的也对点集A中的每一顶点的参数值进行字典排序,设排序后的参数值为集合
。通过点集A可以得到凸包
,并得到
对应的边界方程以及A中任意一点对应的Toric-Bernstein 基函数。通过预先自定义好的Toric-Bernstein基系数
,以及每个参数点对应的权因子
。设定迭代的初始控制顶点为
。这样我们可以得出初始迭代Toric曲面:
之后计算每个控制顶点需要调整的向量
我们可以得到第二次迭代Toric曲面的控制顶点
最终得到新的曲面
同理,我们可以通过曲面
得到曲面
如果
成立。我们可以称初始曲面
有PIA性。下面我们分析一下渐进迭代逼近收敛的条件。
上式写成矩阵的形式为
这里的I是指
的单位矩阵,矩阵B定义为
(3)
当矩阵
的普半径
时渐进迭代收敛,当我们要使用Toric Bézier曲面做渐进迭代逼近时,需要提前计算出
以确保收敛。
Toric曲面的渐进迭代逼近算法:
输入:空间
中的n个数据点
,每个数据点对应的权因子
和迭代次数
。
输出:对数据点
的m次渐进迭代逼近后的Toric Bézier曲面。
Step 1:根据数据点集
的确定点集A以及
,并由此得出Toric-Bernstein基函数
,代入到矩阵(3)中求出普半径
Step 2:当普半径
时:
Step 2.1:令迭代次数
并计算初始Toric Bézier曲面控制顶点
Step 2.2:计算误差
,和新的控制顶点
Step 2.3:若
,令
回到第Step 2.2;若
,输出Toric Bézier曲面
Step 3:当普半径
时:重新调整权因子
或取样点
4. 数值实例
例1:设空间
中有8个数据点按词典顺序为
,
,
,
,
,
,
,
,视每一点的权因子都为1。可得
。
如图1所示。计算出toric-Bernstein基函数
,并求出普半径
证明在此基函数下Toric Bézier曲面渐进迭代逼近收敛。逼近效果如图2~4所示:

Figure 3. The surface after 1 iteration
图3. 迭代1次后的曲面

Figure 4. The surface after 50 iteration
图4. 迭代50次后的曲面
例2:如图5所示的凸图形
中取19个数据采集点,并在函数上
上找到每个数据采集点对应的数值大小如图6,并将他们按照字典排序,不失一般性可设每个拟合点对应的权因子都为1。求出普半径
证明迭代是收敛的。迭代次数与渐进逼近效果如图7所示。

Figure 6.
and data point
图6.
和数据点
例3:如(图8)所示的凸图形中取72个数据点以及每个点所对应权重大小,适当的调节对应点权重的
大小可以有更好的拟合效果。并用这些点来拟合平面
(如图9)中的一部分,其拟合效
果如图10所示。

Figure 8. Sampling points and weight distribution
图8. 取样点和权重分布

Figure 9.
and data point
图9.
和数据点
5. 总结与展望
本篇文章定义了一种新的对凸多边形上的参数点进行字典排序的方法,方便对不规则凸多边形上的点进行排序与编号。并实现了一种用Toric曲面做渐进迭代逼近的算法。该方法可以直接逼近不规则的凸多边形域上的数据点,而无需考虑曲面的重构与拼接。相较于张量积Bézier曲面 [6] 和三角片面Bézier [4] [5] 曲面的渐进迭代逼近算法,本文的算法更加灵活,可以为任意凸多边形,所以适用场景更多。
总结研究成果,发现仍有以下问题可以进一步探讨:
1) Toric曲面的渐进迭代逼近收敛性是受toric-Bernstein基函数(公式1)中的自定义系数
和Toric Bézier曲面(公式2)的权因子
影响的。给出Toric曲面渐进迭代逼近收敛的约束条件是我们进一步考虑的问题。
2) 矩阵B (矩阵3)为全正矩阵是渐进迭代收敛充分条件。如何在一定约束条件下证明(矩阵3)为完全正矩阵也是之后值得研究的问题之一。
NOTES
*通讯作者。