曲率定义与三维Mesh曲率估计

曲率定义与三维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} α=x0f′′(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]23f′′(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(pipj)(pipj)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 个随机三次多项式的误差。


先到这儿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9470.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Dinky控制台:利用SSE技术实现实时日志监控与操作

1、前置知识 1.1 Dinky介绍 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开…

无人机声学侦测算法详解!

一、算法原理 无人机在飞行过程中,其电机工作、旋翼震动以及气流扰动等都会产生一定程度的噪声。这些噪声具有独特的声学特征,如频率范围、时域和频域特性等,可以用于无人机的检测与识别。声学侦测算法利用这些特征,通过一系列步…

ABAP开发-12、Dialog屏幕开发_1

系列文章目录 文章目录 系列文章目录[TOC](文章目录) 前言一、Dialog屏幕概览二、界面1、界面-界面中的事件块2、界面-创建界面3、界面- 属性4、界面-元素清单5、界面-Screen Layout Designer6、界面- 参照创建7、界面- 常用关键字8、界面- 数据处理逻辑9、界面- Module执行顺序…

vue搭建项目之后的步骤操作

1.创建router文件夹(里面创建index.js),创建views文件夹(创建index页面) 2.删除assets文件夹里面的内容,删除components文件夹 3.安装路由 npm install vue-router 4.router路由下面的index.js书写内容 …

w029基于springboot的网上购物商城系统研发

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

底层视角看C语言

文章目录 main函数很普通main函数之前调用了什么main函数和自定义函数的对比 变量名只为人而存在goto是循环的本质指针变量指针是一个特殊的数字汇编层面看指针 数组和指针数组越界问题低端地址越界高端地址越界 引用就是指针 main函数很普通 main函数是第一个被调用的函数吗&…

Linux内核USB2.0驱动框架分析--USB设备枚举过程

一 USB特点 1.1 USB协议版本介绍: USB1.0/1.1(low/fullspeed):传输速率最大为12Mbps,是较早的USB协议版本。 USB2.0(highspeed):传输速率最大为480Mbps,相比USB1.0/1.1…

bert-base-uncased处理文档

1.安装必要的库 确保安装 transformers 和 torch 库: pip install transformers torch 2.加载本地 BERT 模型和分词器 由于已将模型和分词器下载到本地,可以指定文件路径加载。确保路径与本地文件结构一致。 from transformers import BertTokenizer…

【快速入门】Kafka的安装部署

目录 一、我的集群环境介绍 二、集群部署 1、解压安装包 2、修改解压后的文件名称 3、进入到/opt/installs/kafka3 目录,修改配置文件 4、分发安装包 5、分别在 bigdata02 和 bigdata03上修改配置文件 6、配置环境变量 7、启动集群 8、停止集群 三、本文用…

Windows安装tensorflow的GPU版本

前言 首先本文讨论的是windows系统,显卡是英伟达(invida)如何安装tensorflow-gpu。一共需要安装tensorflow-gpu、cuDNN、CUDA三个东西。其中CUDA是显卡的驱动库,cuDNN是深度学习加速库。 安装开始前,首先需要安装好c…

深度学习(神经网络)中模型的评估与性能度量

深度学习(神经网络)中模型的评估与性能度量 1.在现实任务中,我们往往有多种学习算法可供选择,那么我们如何评判一个模型的好坏呢?理想的解决方案是对模型的泛化误差进行评估,选择泛化误差最小的&#xff1…

mysql做数据统计图表常用的sql语句 部门人数 工龄 学历 年龄 性别 在职人员 兴趣分析查询

做统计有时候挺头疼的,sql改来改去还是达不到想要的效果,这里分享一下最近写的sql,感兴趣的朋友可以看看了解一下,sql语句代码都有注释。 这里只分享sql查询语句,前端图表用的是Echarts。 首先看一下统计的效果图 1、…

无人机之姿态融合算法篇

无人机的姿态融合算法是无人机飞行控制中的核心技术之一,它通过将来自不同传感器的数据进行融合,以实现更加精确、可靠的姿态检测。 一、传感器选择与数据预处理 无人机姿态融合算法通常依赖于多种传感器,包括加速度计、陀螺仪、磁力计等。这…

phpstudy 使用php8.2.9版本报错问题

phpstudy 使用php8.2.9版本报错问题 1、如果php8的扩展控制面板开启无效的话,可以手动开启试试 2、php有报错日志: Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0 在切换php版本到更高版本时在终端查…

SpringBoot开发——SpringBoot3.3 中实现多端口监听

文章目录 1、项目环境与依赖配置2、配置多端口监听3、编写配置类实现多端口监听4、为每个端口创建独立的配置类4.1 8081 端口配置类4.2 8082 端口配置类 5、控制器类定义5.1 8080 端口的控制器(保持原有配置)5.2 8081 端口的控制器5.3 8082 端口的控制器…

Git分支

目录​​​​​​​ 一、分支是什么 二、查看、创建分⽀(git branch) 查看分支 创建分支 三、切换分支(git checkout,git checkout -b) 四、合并分支(git merge、git log查看合并情况) 五、删除分支(git branch -d []) 六、合并冲突&…

sigmoid和softmax有什么区别,softmax的本质是最大熵?

本文理论依据王木头的视频: softmax是为了解决归一问题凑出来的吗?和最大熵是什么关系?最大熵对机器学习为什么非常重要?_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cP4y1t7cP/?spm_id_from333.999.0.0&vd_sourc…

stm32 挂死定位(死循环)

1,调式程序时先看初始化和轮询点灯流程,如果灯没有闪烁则表明程序进入了死循环。 2,程序调式进入调式debug接口; 3,打断点依次运行; 4,查看寄存器; LR在异常后通常为0xFFFFFFFx&am…

ZFC in Lean 之 前集及其成员关系(S, ∈)是良创的(Well-founded)

基于前文,对前集(S,pre-set)、其成员关系(∈,membership),以及良创(Well-Founded)的定义,此文,分析(S, ∈)是良…

【暴刷力扣】59. 螺旋矩阵 II

题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 题解 leetcode 大部分题解写的不知道都是什么——代码非常杂乱。 还是直接放上紫书(《算法竞赛入门指南》)…