GAMES102_note

GAMES102-几何建模与处理 Geometry Modeling and Processing 这个笔记的主要内容分为两部分,一部分是对于课程内容脉络的梳理,整理我最后记住的每个章节的内容;另一部分是我觉得更重要的,是关于一些零散知识点的整理,这里涉及到的知识点结合了自己过往的学习内容,纳入了自己的思考。

数据拟合

基函数的选取与秦九韶算法

在考虑数值逼近(插值或拟合)问题的时候,合适的基函数是非常重要的,按Weierstrass定理,任意闭区间上的连续函数都可以用多项式级数一致逼近。但是在进行插值的过程中,选取什么形式的多项式函数作为基函数值得考虑。

显然,由{ $1, x, x^2, \cdots, x^n$ }是可以张成一个维数为 $n+1$ 的多项式函数空间的,但是为什么我们不用这种方法来计算插值呢?主要原因以下几点

  • 计算开销上的困难:虽然求解系数的线性方程组的系数矩阵是Vandermonde矩阵,其本身是非退化的,但是Vandermonde矩阵的条件数增长速度非常快, $n$ 阶的Vandermonde矩阵的条件数至少是 $2^{n-2}$ ,带来的计算开销过大了;
  • 高阶多项式插值带来的Runge现象,这其实从根源上限制了 $n$ 必须非常小。

因为这些原因,我们放弃了直接以幂函数作为基函数进行多项式插值的方法,寻求其他办法(Lagrange插值或Newton插值)。

此外,怎么通过计算机计算 $a_0 + a_1x + a_2x^2 + \dots + a_nx^n$ ,答案是秦九韶算法:

\[sum = (((a_nx + a_{n - 1})x + a_{n - 2})x + \dots + a_1)x + a_0\]

相比于直接计算,秦九韶算法需要更少的计算次数,用常规方法计算出结果最多需要 $n$ 次加法和 $\frac{n^2+n}{2}$ 次乘法,而秦九韶算法最多只需 $n$ 次加法和 $n$ 次乘法。

从基函数到RBF函数到神经网络

在人工神经网络的数学理论中,通用近似定理(万能近似定理)意味着神经网络可以用来近似任意的复杂函数,并且可以达到任意近似精准度。但它并没有说明要如何选择神经网络参数(权重、神经元数量、神经层层数等)来达到想近似的目标函数。这其实可以看做是Weierstrass定理的一个推广。

常用的用来搭建神经网络的底层函数包括了径向基函数,其中最常用的是Gauss函数。由于其具有可线性组合及局部支撑的性质,因此通过调参可以很好地拟合高维函数。

虽然神经网络是一个比较新颖的领域,但是它的本质就是处理优化问题,和传统的数值逼近在思想上是一致的,但神经网络进行优化的目标与传统逼近的目标是不同的(二者对于精度的要求和保证强度不一样),由此产生了差异。

参数曲线拟合:利用参数化拟合二维空间中的曲线

多元函数拟合

利用在不同维度的基函数,通过张量积的形式就可以拟合在高维空间中的多元函数。

  • 优点:定义简单,仅需要表示成多个一元基函数的乘积形式,且每个维度上的一元基函数可以是相同形式的;
  • 不足:随着维数的增加,基函数个数急剧增加,导致变量数急剧增加,求解的代价随之增加。

除去一维的基函数作张量积以外,仍然可以通过神经网络的方法来拟合多元函数。

参数曲线拟合

目标是极小化误差:$\min E = \sum_{i = 1}^n |\mathbf{p}(t_i) - \mathbf{p}_i|^2$

重点在于如何进行参数化:

  • Equidistant parameterization 均匀参数化
  • Chordal parameterization 弦长参数化:比均匀参数化更合理
  • Centripetal parameterization 中心参数化:基于物理的观点考虑了归一化

(具体在《计算机辅助几何设计与非均匀有理B样条》一书中有说明)

结论:好的曲线拟合需要好的参数化设计,因为这其实保持了原本形状的某些几何特征。在曲面参数化中,需要利用的就是局部面积或局部角度等,也是从保持局部几何特征这个想法出发的。

三次样条函数

样条函数

构建线性系统可以通过三弯矩方程,也可以通过三转角方程。其优点在于:

  • 三对角矩阵使得其为稀疏矩阵
  • 对角占优保证其必然有解
  • 可以通过追赶法来求解(计算效率?)

几何连续性

引入几何连续性的原因:参数连续性 依赖于参数 的选择,同一条曲线,参数不同,连续阶可能是不同的。

Bezier曲线 B样条曲线

建模的两种形式

  • 重建(Reconstruction):
    • 逆向工程:形状已有,要将其“猜”出来;
    • 采样->拟合:需要函数空间足够丰富(表达能力够);
    • 代数观点:${a, b, c}$ 作为基函数的组合权系数。
  • 设计(Design)
    • 自由设计:凭空产生,或从一个简单的形状编辑得到;
    • 交互式编辑:几何直观性要好
    • 几何观点:基函数 ${t^2, t, 1}$ 作为控制点的组合权系数。

也就是说对于重建数据点是给定的,关键在于选择合适的拟合方案;而对于设计来说,基函数是固定的,关键在于控制点的选取,及设计出什么图案,此时基函数应该尽可能更好地表达几何特性。

NURBS曲线 细分曲线 隐式曲线 NURBS曲面

细分曲线

两个步骤:

  • 拓扑规则:加入新点,组成新多边形;
  • 几何规则:移动顶点,局部加权平均(加权平均的变换矩阵特征值决定了细分方法能否收敛、结果曲线是否光滑)

  • 逼近型细分方法(Chaikin割角法)
    • 每条边取中点,生成新点
    • 每个点与其相邻点平均
    • 迭代生成曲线
  • 插值型细分方法(补角法)
    • 保留原有定点
    • 对每条边,增加一个新顶点
    • 不断迭代,生成一条曲线

隐式曲线

  • 隐式曲线绘制:Marching Cube,想法是通过计算格点隐式函数值之后作插值,连接插值为0的点
  • 隐式曲线拟合:
    • 估计法向:利用邻近点来估计切平面;
    • 借助各点及其法向,拟合一个二元函数:在型值点上值为0,外部(法向方向的点)为正,内部为负。

NURBS曲面

利用两组NURBS曲线作张量积就可以得到NURBS曲面,其继承了NURBS曲线的性质,“曲线的曲线”。

曲线光顺 离散曲线 三角网格

曲线光顺(fairness)

与曲线各点处曲率有关。工业设计不希望曲线上存在过多拐点(曲率大小为0的点),减少磨损或消耗。但是曲线的光顺性没有一个统一的定义,通过减少曲率的单调区间数量,可以一定程度上提高曲线的光顺性。

离散曲线

曲线的不同表达方法:

  • 显示函数曲线
  • 参数曲线
  • 隐式曲线
  • 细分曲线

图形变形

通过改变控制顶点,借助三角形各点的重心坐标(Barycentric)表示进行相应变换,就可以实现图形的变形。

曲面离散(三角网格)

曲面网格的数据结构:

半边数据结构(half-edge data structure)

  • 只能表示流形网格
  • 数据结构:
    • 顶点:包含顶点坐标和出半边的索引;
    • 半边:包含起始点、邻接面、下一条半边、上一条半边的索引;
    • 面片:包含一条起始边的索引。

考察三角网格曲面的观点:

  • 曲面你的离散逼近
    • 采样:顶点为从曲面上的采样点
    • 本质:分片线性逼近
  • 平面图的嵌入
    • 平面图的顶点提升至三维空间
    • 本质:二维流形

离散微分几何

估计网格上的微分属性的两类方法

  • 连续估计(Continuous approximation)
    • 先利用网格信息拟合曲面,然后计算拟合曲面上的微分属性
  • 离散估计
    • 直接近似估计网格上的微分属性

微分坐标(Laplace坐标)

离散形式的Laplacian算子:

$\delta_i = v_i - \sum_{j \in N(i)} \omega_jv_j$

其中权重的选取方案(之后要做归一化处理):

  • 单位权重:$\omega_j = 1$
  • 余切权重:$\omega_j = (\cot \alpha + \cot \beta)$

应用:光滑曲面、曲面重建

所谓的能量最小化:顶点到周围点距离的平方和最小

曲面参数化

参数化:将曲面展开成平面,每个3维顶点 $(x, y, z)$ 对应一个2维点 $(u, v)$。

参数化是几何处理中的基本问题:

  • 提供了三维曲面每个点的一个二位参数(本征维数参数);
  • 在低维空间处理高维问题,减少复杂度;
  • 三维曲面之间的相关问题可以通过参数化空间来处理。

Laplacian Editing

用户通过修改一个点的位置,改变网格的姿态

曲面去噪 采样与剖分

去噪

What is noise? 没有一个严格的数学定义,而且如何区分噪声和特征也值得讨论

  • High-frequent tiny parts
  • Small bumps on the surface
  • High curvature parts
  • High fairing energy parts

网格光滑

  • 假定:网格顶点的数据及连接关系不变
  • 问题转化为:求新顶点的位置,使得“噪声”减少
    • 顶点进行适当的扰动或偏移
  • 可以基于Laplacian曲率进行光顺,但是涉及到主观的具体的参数设置

滤波

  • 卷积:利用权函数,借助原函数各点周边的值对原函数进行加权
  • 往往人们会选取高斯函数作为加权函数
  • 滤波对象:
    • 顶点
    • 法向
    • 曲率
    • 颜色
    • 其他物理特征(纹理、反射率等)

保特征的顶点滤波:双边滤波,加权的时候除了点的位置关系还考虑值的大小,如果值差距过大,则权重会变小。

对法向进行滤波:通过求解一套新的法向后,重建网格顶点

采样与剖分

Delaunay三角剖分与Voronoi图

网格生成

  • DT只能保证当前采样点的网格是好的,但是修改采样点的位置可以提高网格质量
  • Centroidal Voronoi Tessellation(CVT) 使得voronoi图的顶点和每个区域重心重合(迭代)
    • Lloyd Algorithm
  • ODT