曲率定义与三维Mesh曲率估计
- 二维
- 圆的曲率
- 线的曲率
- 三维
- Patch fitting methods
- Normal curvature-based methods
- Tensor averaging methods
- Estimating Curvatures and Their Derivatives on Triangle Meshes
- 1. Per-Face Curvature Computation
- 2. Coordinate System Transformation
- 3. Weighting
- 4. Algorithm and Extension to Third Derivatives
- Results
二维
参考马同学:微积分(上)/曲率/曲率。
圆的曲率
对于半径为 r r r的圆, K = 1 / r K={1}/{r} K=1/r 称为该圆的 曲率 (Curvature)。
圆的曲率是对圆的弯曲程度的描述。圆的半径越小的圆的弧越弯曲,圆的曲率越大。
线的曲率
已知函数 y = f ( x ) y=f(x) y=f(x) 在 x 0 x_0 x0 点有二阶导数 f ′ ′ ( x 0 ) f''(x_0) f′′(x0),且 f ′ ′ ( x 0 ) ≠ 0 f''(x_0)\ne 0 f′′(x0)=0,则此点有 曲率圆 (Osculating circle),也称为 密切圆 。
若用 ( α , β ) (\alpha,\beta) (α,β) 表示该曲率圆的圆心,则 α \alpha α 和 β \beta β 值为:
{ α = x 0 − f ′ ( x 0 ) [ 1 + ( f ′ ( x 0 ) ) 2 ] f ′ ′ ( x 0 ) β = f ( x 0 ) + 1 + ( f ′ ( x 0 ) ) 2 f ′ ′ ( x 0 ) \begin{cases} \alpha=x_0-\frac{f'(x_0)\left[1+\big(f'(x_0)\big)^2\right]}{f''(x_0)}\\ \\ \beta=f(x_0)+\frac{1+\big(f'(x_0)\big)^2}{f''(x_0)} \end{cases} ⎩ ⎨ ⎧α=x0−f′′(x0)f′(x0)[1+(f′(x0))2]β=f(x0)+f′′(x0)1+(f′(x0))2
该曲率圆的半径 r r r 称为 曲率半径 ,其值为:
r = [ 1 + ( f ′ ( x 0 ) ) 2 ] 3 2 ∣ f ′ ′ ( x 0 ) ∣ r=\frac{\left[1+\Big(f'(x_0)\Big)^2\right]^\frac{3}{2}}{\left|f''(x_0)\right|} r=∣f′′(x0)∣[1+(f′(x0))2]23
函数 y = f ( x ) y=f(x) y=f(x) 在 x 0 x_0 x0 点的 曲率 K K K 定义为该曲率圆的曲率,即:
K = 1 r = ∣ f ′ ′ ( x 0 ) ∣ [ 1 + ( f ′ ( x 0 ) ) 2 ] 3 2 K=\frac{1}{r}=\frac{\left|f''(x_0)\right|}{\left[1+\Big(f'(x_0)\Big)^2\right]^\frac{3}{2}} K=r1=[1+(f′(x0))2]23∣f′′(x0)∣
证明见马同学:微积分(上)/曲率/曲率。
上述定理给出了曲率圆的定义,以及如何求出。所谓曲率圆就是可以逼近函数 y = f ( x ) 在 x 0 y=f(x)在x_0 y=f(x)在x0点附近曲线的圆,如下图所示。曲率圆的曲率也就是函数 y = f ( x y=f(x y=f(x)在 x 0 x_0 x0点的曲率,描述了函数 y = f ( x ) y=f(x) y=f(x)在 x 0 x_0 x0点弯曲程度。
三维
主曲率:过曲面上某个点上具有无穷个正交曲率,其中存在一条曲线使得该曲线的曲率为极大,这个曲率为极大值Kmax,垂直于极大曲率面的曲率为极小值Kmin。这两个曲率属性为主曲率。他们代表着法曲率的极值。
平均曲率:是空间上曲面上某一点任意两个相互垂直的正交曲率的平均值。如果一组相互垂直的正交曲率可表示为 K 1 , K 2 K1,K2 K1,K2,那么平均曲率则为: K = ( K 1 + K 2 ) / 2 K = (K1 +K2 ) / 2 K=(K1+K2)/2。
高斯曲率:两个主曲率的乘积即为高斯曲率,又称总曲率,反映某点上总的弯曲程度。
结合Estimating Curvatures and Their Derivatives on Triangle Meshes一文学习网格上曲率的计算方法。
某个方向上表面的法向曲率 κ n κn κn 是最接近该方向上表面法向切片的圆半径的倒数。法向曲率随方向变化,在光滑表面,对于局部切平面中的任何单位长度向量 ( s , t ) (s,t) (s,t)(用以该点为中心的正交坐标系表示),它满足
这里出现的对称矩阵 I I II II,称为 Weingarten 矩阵或第二基本张量,可以通过局部坐标系的旋转对角化得到
其中 κ 1 κ1 κ1 和 κ 2 κ2 κ2 是主曲率, ( s ′ , t ′ ) (s',t') (s′,t′) 为主方向,即法向曲率达到最小值和最大值的方向。
我们可以将估计主曲率和方向的现有方法(与仅估计平均曲率 H = ( κ 1 + κ 2 ) / 2 H =(κ1 + κ2)/2 H=(κ1+κ2)/2 或高斯曲率 K = κ 1 κ 2 K = κ1κ2 K=κ1κ2 的方法相反)分为三个一般类别:
Patch fitting methods
将解析曲面(通常是多项式)拟合到局部区域中的点,然后解析计算拟合曲面的曲率。
如果顶点位于要拟合的类的表面上,这些方法显然会产生精确的结果,并且 Cazals 和 Pouget [2003] 已经表明,在一般光滑表面的情况下,估计曲率会收敛到真实曲率,至少在非退化中案例。仅考虑顶点位置的补丁拟合方法的弱点在于,它们在简并配置附近变得不稳定,尤其是当点位于一对相交线附近时(图 2)。 Goldfeather 和 Interrante [2004] 已经表明,通过在拟合中不仅包含点,还包含估计的每个顶点法线,可以避免退化情况,并且总体上可以提高准确性。
Normal curvature-based methods
首先估计离开顶点的每条边方向的法向曲率,然后使用 κ n κn κn 估计值找到第二个基本张量。
上式用于求 pi 点在某个相邻点 pj 方向上的法向曲率。
然后可以根据 Σ j κ i j ( p i − p j ) ( p i − p j ) T Σ_j κ_{ij}(p_i − p_j)(p_i − p_j)^T Σjκij(pi−pj)(pi−pj)T 的特征值的函数找到主曲率,只有当到相邻点的方向分布均匀时,该函数才是准确的。
或者,更一般地, κ n κn κn 样本可以使用最小二乘法拟合 (1)
法向曲率方法和面片拟合方法非常相似,实际上的区别在于它们是将圆还是抛物线拟合到表面样本,也有同样的缺点:当顶点的邻居靠近一对相交线时,它们是不稳定的。
Tensor averaging methods
计算多边形网格小区域上曲率张量的平均值。多面体的曲率在面内为零,沿边缘无限大,但其在非零测量区域(例如顶点的 Voronoi 区域)上的平均值是有限且明确定义的。网格上曲率的张量平均定义非常优雅且没有不稳定的配置,但对于某些顶点排列会产生较大的误差(图 3)。
图 3:许多“张量平均”算法在估计曲率时会产生明显的误差,即使对于密集间隔的样本和球体等简单几何形状也是如此。在这里,展示了通过 Cohen-Steiner 和 Morvan [2003] 的算法计算的主曲率估计,对于半径为 1 的棋盘格球体(其曲率应处处为 1)。请注意中心顶点处曲率估计的误差:随着采样变得更加密集,该误差不会减小。
Estimating Curvatures and Their Derivatives on Triangle Meshes
提出了一种用于估计不规则三角形网格上的曲率的有限差分方法,该方法可以被认为是估计每个顶点法线的常用方法的扩展。该技术在空间和时间上都很高效,并且可以显着减少异常值估计,同时更广泛地提供与现有方法相当的准确性。它自然地推广到计算曲率导数和高阶表面微分。
本文提出的计算曲率和曲率导数的方法基于通过平均相邻面片法线来查找顶点法线的通用算法。为了将其扩展到曲率的情况,首先定义如何在面上计算曲率,然后展示如何组合以不同坐标系表示的曲率估计。最后,我们描述该算法如何推广到高阶表面微分。
1. Per-Face Curvature Computation
第二个基本张量 I I II II,已在方程 1 中看到,是根据表面法线的方向导数定义的:
其中 ( u , v ) (u,v) (u,v) 是正切坐标系中正交坐标系的方向(此处使用的符号约定对于法线朝外的凸曲面产生正曲率)。将此张量乘以切平面中的任何向量即可得出该方向上法线的导数:
请注意,法线的导数本身就是切平面中的向量:它通常具有 s s s 方向上的分量,但也可以具有垂直方向上的分量(由表面中的“扭曲”引起)。
尽管这个定义仅适用于光滑表面,但我们可以在离散情况下通过使用有限差分来近似它。例如,对于三角形,我们具有三个明确定义的方向(边缘)以及这些方向上法线的差异(根据每个顶点法线计算)。因此,我们有
这提供了对第二基本张量的元素的一组线性约束,然后可以使用最小二乘法来确定该约束。请注意,此估计始终是明确定义的,除非三角形本身具有三个共线顶点。
尽管这种有限差分近似引入了离散化误差,但我们发现它在许多常见情况下具有很高的准确性。例如,当三角形的顶点位于球体的表面上并且顶点法线是球体的法线时,无论三角形的形状如何,通过该技术产生的曲率都是精确的。
2. Coordinate System Transformation
一旦我们有了用面的 ( u f , v f ) (u_f , v_f) (uf,vf) 坐标系表示的曲率张量,我们必须将其与相邻三角形的贡献进行平均。为此,我们假设每个顶点 p p p 都有自己的正交坐标系 ( u p , v p ) (u_p, v_p) (up,vp),定义在垂直于其法线的平面中,并导出用于将曲率张量转换为顶点的坐标变化公式坐标系。
我们首先考虑面法线和顶点法线相等的情况,因此 ( u f , v f ) (u_f , v_f) (uf,vf) 和 ( u p , v p ) (u_p, v_p) (up,vp) 共面。 I I II II 的第一个分量,以 ( u p , v p ) (u_p, v_p) (up,vp) 坐标系表示,可表示为
因此,我们可以根据旧 ( u f , v f ) (u_f , v_f) (uf,vf) 坐标系中表示的 u p u_p up 坐标来找到 e p e_p ep:
Similarly, we find that f p f_p fp = u p T I I v p u^T_p II v_p upTIIvp and g p = v p T I I v p g_p = v^T_p II v_p gp=vpTIIvp.
类似地,我们发现 f p f_p fp = u p T I I v p u^T_p II v_p upTIIvp 和 g p = v p T I I v p g_p = v^T_p II v_p gp=vpTIIvp。
当新旧坐标系不共面时,我们不能简单地将新的 u p u_p up 和 v p v_p vp 轴投影到旧的 ( u f , v f ) (u_f , v_f) (uf,vf) 坐标系中。一般来说,投影不会是单位长度的,这将导致每次坐标变化时的曲率 “损失”(具体来说,平均曲率将乘以法线间夹角余弦的平方)。相反,我们首先旋转其中一个坐标系,使其与另一个坐标系共面,并围绕其法线的交叉积旋转。这样就避免了曲率损失,提高了对粗细分曲面的估计精度。
3. Weighting
先前的工作已经解决了加权问题,即每个顶点应累积多少面部曲率。我们将 w f , p w_{f,p} wf,p 视为 f f f 区域中最接近顶点 p p p 的部分。我们发现,这种“Voronoi 面积”权重可以对不同大小和形状的三角形的曲率进行最佳估计。这与用于估计法线的权重形成对比,我们将 w f , p w_{f,p} wf,p 视为 f f f 的面积除以接触顶点 p p p 的两条边的长度的平方。正如 Max [1999] 所示,与其他加权方法相比,这会产生更准确的法线估计,并且对于位于球体上的顶点来说是准确的。
4. Algorithm and Extension to Third Derivatives
计算每个顶点的曲率张量的最终算法:
- 计算每个顶点的法线
- 在每个顶点的切平面构建一个初始 ( u p , v p ) (u_p, v_p) (up,vp)坐标系
- 对于每个面:
- 计算边缘向量 e 和法线差 Δ n Δn Δn
- 使用最小二乘法求解 I I II II
- 对于接触面的每个顶点 p p p:
- 用 ( u p , v p ) (u_p, v_p) (up,vp) 重新表达 I I II II
- 将这个由 w f , p w_{f,p} wf,p 加权的张量添加到顶点曲率
- 对于每个顶点:
- 将累积的 I I II II 除以权重总和
- 如果需要,通过计算 I I II II 的特征值和特征向量找到主曲率和方向
该算法最重要的特征之一是它可以推广到高阶微分属性。正如曲率张量给出了法线随沿表面运动的变化一样,我们可以定义一个“曲率导数”张量,它给出沿表面的曲率变化。这是一个 2 × 2 × 2 2 × 2 × 2 2×2×2 3 级张量或“数字立方体”,由于对称性,它只有四个唯一的条目。将其写为矩阵向量,曲率导数张量 C C C 的形式为
C C C 张量具有以下属性:
• 将 C C C 乘以方向向量三倍(我们将其表示为 C ( s , s , s ) C(s, s, s) C(s,s,s)),得到一个标量:该方向上曲率的导数。
• 将 C C C 乘以方向向量一次即可得到 2 × 2 2× 2 2×2 张量(或对称矩阵),等于 I I II II 在该方向上的方向导数。
• C C C 可用于涉及表面三阶微分特性的其他计算。例如,如图 1 和 5 所示的暗示轮廓应用程序需要计算径向曲率的方向导数,这是视图方向(的切平面投影)中的法向曲率。这个导数可以写成
其中 w w w 是视图方向到局部切平面的标准化投影。 “额外”项的出现是因为在计算导数 D w ( w T I I w ) D_w(w^T II w) Dw(wTIIw) 时应用了乘积规则。
我们的曲率估计算法的一个简单扩展可用于估计曲率导数,以及在需要时估计任何高阶导数。正如通过考虑沿边缘法线的差异来估计每个面的曲率一样,我们使用最小二乘法拟合沿边缘的曲率张量的差异来估计 C C C。该算法使用坐标系变化公式将曲率从顶点坐标转换为面坐标,并使用类似的公式将 C C C 转换回顶点坐标。
Results
图 7:使用我们的方法计算出的不规则网格模型曲率的彩色编码可视化(见图 4,底部),并与三种替代方法进行比较。请注意,在使用其他方法计算的估计值中存在异常值–第 2 节中的讨论指出了其中一些错误估计值的来源。
图 8:左、中:环面模型的估计误差,将我们的曲率估计算法与基于张量平均的当代替代算法进行比较 [Alliez 等人。 2003],拟合法线曲率估计,以及对点和法线进行补丁拟合[Goldfeather and Interrante 2004]。随着噪声量的增加,我们显示了规则(顶部)和不规则(底部)镶嵌的结果。我们报告估计法向曲率和精确法向曲率之间的 RMS 差异,对所有方向进行积分并对网格上的所有点进行平均。结果是 1000 次试验的平均值,并且结果通过模型的精确 RMS 曲率进行标准化。右图:系数在 [ − 0.1 , 0.1 ] [−0.1, 0.1] [−0.1,0.1] 范围内的 1000 个随机三次多项式的误差。
先到这儿。