参数曲线拟合
一、多元函数
- 多个变量的函数
f : R n → R 1 f:R^n \rightarrow R^1 f:Rn→R1
( x 1 x 2 ⋮ x n ) → y \left( \begin{matrix} x_1\\ x_2\\ \vdots \\ x_n \end{matrix} \right) \rightarrow y ⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞→y
1、二元函数的基函数构造
方法:张量积形式,即用两个一元函数的基函数的相互乘积来定义
2、多元函数的张量积定义
优点:定义简单,多个一元基函数的乘积形式
不足 随着维数增加,基函数个数急剧增加,导致变量急剧增加(求解系统规模急
剧增加,求解代价大)。
3、多元函数的神经网络表达
- 用一个单变量函数 (称为激活函数)的不同仿射变换来构造 “基函数”:基函数数目可控。
二、向量值函数
- 看出单向量
f : R 1 → R m f:R^1 \rightarrow R^m f:R1→Rm
x → ( y 1 y 2 ⋮ y m ) x \rightarrow \left( \begin{matrix} y_1\\ y_2\\ \vdots \\ y_m \end{matrix} \right) x→⎝⎜⎜⎜⎛y1y2⋮ym⎠⎟⎟⎟⎞ - 看成多个单变量函数,各个函数独立无关
- 一般会用同样的基函数(共享基函数)
- 几何解释:
一个实数 𝑥 ∈ 𝑅 1 𝑥∈𝑅^1 x∈R1映射到𝑚维空间 𝑅 m 𝑅^m Rm的一个点,轨迹构成 𝑅 m 𝑅^m Rm的一条“曲线”
本质维度为1
1、空间参数曲线
f
:
R
1
∈
R
3
f:R^1\in R^3
f:R1∈R3
{
x
=
x
(
t
)
y
=
y
(
t
)
z
=
z
(
t
)
(
t
∈
[
0
,
1
]
)
\begin{cases} x=x(t)\\ y=y(t)\\ z=z(t) \end{cases} \tag{$t\in[0,1]$}
⎩⎪⎨⎪⎧x=x(t)y=y(t)z=z(t)(t∈[0,1])
几何解释:
- 一条曲线由一个变量参数𝑡决定,也称为单参数曲线
- 参数𝑡可看成该曲线的“时间”变量
- 可灵活表达非函数型的曲线(任意曲线)
2、二维映射
f
:
R
3
∈
R
3
f:R^3\in R^3
f:R3∈R3
{
x
=
x
(
u
,
v
,
w
)
y
=
y
(
u
,
v
,
w
)
z
=
z
(
u
,
v
,
w
)
(
(
u
,
v
,
w
)
∈
[
0
,
1
]
3
)
\begin{cases} x=x(u,v,w)\\ y=y(u,v,w)\\ z=z(u,v,w) \end{cases} \tag{$(u,v,w)\in[0,1]^3$}
⎩⎪⎨⎪⎧x=x(u,v,w)y=y(u,v,w)z=z(u,v,w)((u,v,w)∈[0,1]3)
几何解释:
- 三维区域之间的映射
- 可看成特殊的曲面
- 应用:体变形,体参数化
二维映射的应用(第三个维度始终为0):图像变形
3、降维映射(低维投影)
- 降维映射一般有信息丢失
- 丢失的信息大部分情况下不可逆,即无法恢复
4、映射总结
f : R n → R m f:R^n \rightarrow R^m f:Rn→Rm
- 如果 n < m n<m n<m,为低维到高维的映射(高维的超曲面, 维流形曲面),本征维度为n。
- 如果
n
>
m
n>m
n>m,为降维映射
- 一般信息有损失
- 如果 𝑅 n 𝑅^n Rn中的点集刚好位于一个𝑚 维(或小于𝑚 )的流形上,则映射可能是无损的,即可以被恢复的
5、 低维空间的函数
三、曲线拟合
1、问题
输入:给定平面上系列点
(
x
i
,
y
i
)
,
i
=
1
,
2
,
⋯
,
n
(x_i,y_i),i=1,2,\cdots,n
(xi,yi),i=1,2,⋯,n
输出:一条参数曲线,拟合这些点
1、问题:对数据点 ( x i , y i ) (x_i,y_i) (xi,yi),对应哪个参数 t i t_i ti
p
=
p
(
t
)
=
(
x
(
t
)
y
(
t
)
)
p=p(t)= \left( \begin{matrix} x(t)\\ y(t) \end{matrix} \right)
p=p(t)=(x(t)y(t))
误差度量:
E
=
∑
i
=
1
n
∥
(
x
(
t
i
)
y
(
t
i
)
)
−
(
x
(
t
)
y
(
t
)
)
∥
2
=
∑
i
=
1
n
∥
p
(
t
i
)
−
p
i
∥
2
E=\sum^n_{i=1} \lVert \left ( \begin{matrix} x(t_i)\\ y(t_i) \end{matrix} \right) - \left ( \begin{matrix} x(t)\\ y(t) \end{matrix} \right) \lVert^2=\sum^n_{i=1} \lVert p(t_i)-p_i \lVert^2
E=∑i=1n∥(x(ti)y(ti))−(x(t)y(t))∥2=∑i=1n∥p(ti)−pi∥2
求数据点所对应的参数:一个降维的问题。
然后极小化误差度量:E
2、点列的参数化
1、均值参数化
t
i
+
1
−
t
i
=
t_{i+1}-t_i=
ti+1−ti=常数
不考虑数据点的几何形状
2、弦长参数化
t
i
+
1
−
t
i
=
∣
∣
k
i
+
1
−
k
i
∣
∣
t_{i+1}-t_i=|| k_{i+1}-k_i||
ti+1−ti=∣∣ki+1−ki∣∣
参数间隔与相邻控制点的距离成正比
3、向心参数化
t i + 1 − t i = ∣ ∣ k i + 1 − k i ∣ ∣ t_{i+1}-t_{i}=\sqrt{||k_{i+1}-k_i||} ti+1−ti=∣∣ki+1−ki∣∣
4、Foley参数化
t
i
+
1
−
t
i
=
∣
∣
k
i
+
1
−
k
i
∣
∣
⋅
(
1
+
3
2
α
i
^
∣
∣
k
i
−
k
i
−
1
∣
∣
∣
∣
k
i
−
k
i
−
1
∣
∣
+
∣
∣
k
i
+
1
−
k
i
∣
∣
+
3
2
α
i
+
1
^
∣
∣
k
i
+
1
−
k
i
∣
∣
∣
∣
k
i
+
1
−
k
i
∣
∣
+
∣
∣
k
i
+
2
−
k
i
+
1
∣
∣
)
t_{i+1}-t_{i}= ||k_{i+1}-k_i|| \cdot (1+\frac{3}{2}\frac{\hat{\alpha_i}||k_{i}-k_{i-1}||}{||k_{i}-k_{i-1}||+||k_{i+1}-k_{i}||}+\frac{3}{2}\frac{\hat{\alpha_{i+1}}||k_{i+1}-k_{i}||}{||k_{i+1}-k_{i}||+||k_{i+2}-k_{i+1}||})
ti+1−ti=∣∣ki+1−ki∣∣⋅(1+23∣∣ki−ki−1∣∣+∣∣ki+1−ki∣∣αi^∣∣ki−ki−1∣∣+23∣∣ki+1−ki∣∣+∣∣ki+2−ki+1∣∣αi+1^∣∣ki+1−ki∣∣)
控制多边形中角的变化
α
i
^
=
m
i
n
(
π
−
α
i
,
π
2
)
\hat{\alpha_i}=min(\pi-\alpha_i,\frac{\pi}{2})
αi^=min(π−αi,2π)
α
i
=
∠
(
k
i
−
1
,
k
i
,
k
i
+
1
)
\alpha_i=\angle(k_{i-1},k_i,k_{i+1})
αi=∠(ki−1,ki,ki+1)
四、曲面参数化
- 三维的点找二维的参数:一个降维的问题!
应用:纹理映射
五、参考和引用
[1] bilibili:GAMES102:几何建模与处理
[2] 参数曲线拟合.pdf