Bas*_*ele 4 distribution mesh meshlab
作为我硕士论文的一部分,我需要检查不同 3D 扫描对象的曲率,我对网格实验室和网格总体来说是新手,所以我发现它很难理解。
我的网格是不规则的,因为它们是 3D 扫描的。因此,顶点的“分布”也是不规则的。这会影响我的曲率计算吗?我认为确实如此,因为所有曲率计算方法都使用邻居顶点,但我不确定。当不同网格的顶点不以相同方式均匀分布时,我可以公平地比较不同网格的曲率吗?
我的解决方案是以相同的方式对所有网格重新采样,然后进行表面重建并计算曲率?
或者我是否看到了不存在的问题,我可以只使用曲率计算吗?(我想我会选择伪逆)
我使用的是meshlab 2016.12
感谢您的帮助!
巴斯
我不知道您是否已经熟悉曲面上的曲率,因此在谈论 meshlab-2016 上的曲率以及如何比较两个网格之间的曲率之前,我将解释一些基本概念。
第一:曲面上一点的曲率测量曲面偏离该点切平面的程度。该偏差在该点周围的每个方向上可能不相等。例如,圆柱体一侧的任何点在一个方向(平行于轴)上的曲率为零,因为该表面在该方向上不偏离平面,但在任何其他方向上具有正曲率。
因此,“点上的曲率”所取的值通常在该点周围的每个方向上都不相等。一般来说,存在一种曲率最大的方向和曲率最小的另一种方向(垂直)。这些称为主曲率
Meshlab 可以使用以下命令计算和渲染主曲率方向:
Filters-> Normals, curvatures and orientations-> Compute Curvature Principal Directions。这对于理解表示表面曲率的概念和复杂性很有用,但不足以比较两个网格之间的“曲率差异”。但这是回答您的主要问题的一个很好的起点:Meshlab 可以计算不规则网格上的曲率,并且将为网格的每个顶点给出一个曲率值。尽管您可能不知道“如何比较主曲率”,但您可能会预料到您的第一个问题将是两个网格的顶点数量和位置不同,因此您会知道曲率,但它们将位于不同的位置表面。
下一个。为了避免使用那些复杂的“每个方向上不同的曲率值”,人们通常使用两个不依赖于方向的标量值:
您可以使用Filters-> Normals, curvatures and orientations->Discrete Curvature对话框在 meshlab-2016 中计算这两个值:
曲率的标量值作为质量值存储在顶点中,因此您可以使用Render->对其进行分析Show Quality Histogram,或将这些值保存到 .ply 文件中,以便您可以在自己的程序中使用它们。
因此,我们现在几乎准备好设计“计算两个不规则网格之间的曲率差异”算法,因为现在曲率只是存储为“每顶点质量”的标量值。所以你可以:

Sampling->Vertex Attribute Transfer将质量从网格 A 转移到网格 B。如图所示


现在,您可以比较两个文件中存储的质量、绘制差异等...