作为我的硕士论文的一部分,我需要检查不同三维扫描物体的曲率,我在网格和一般网格中都是新的,所以我觉得很难理解。
我的网格是不规则的,因为它们被三维扫描。因此,顶点的“分布”也是不规则的。这会影响我的曲率计算吗?我认为是这样的,因为所有的曲率计算方法都使用相邻的顶点,但我不确定。当网格的顶点不是以相同的方式均匀分布时,我能公平地比较不同网格的曲率吗?
我的解决办法是用同样的方法重绘所有的网格,然后进行曲面重建并计算曲率?
或者我看到了不存在的问题,我可以只使用曲率计算。(我想我要用伪逆)
我正在使用meshlab 2016.12
谢谢你的帮助!
Bas
发布于 2019-12-10 12:11:57
我不知道你是否已经对曲面上的曲率熟悉了,所以在谈论2016年网格上的曲率之前,我将解释一些基本概念,以及如何比较两个网格之间的曲率。
首先,曲面点上的曲率测量曲面在这一点上偏离切平面的程度。在这个点周围的每个方向上,这一偏差可能并不相等。例如,圆柱边的任何一点在一个方向上都有零曲率(平行于轴),因为表面在该方向上不偏离平面,而是在任何其他方向上有一个正曲率。

因此,“点上的曲率”取的值通常在点周围的每个方向上都不相等。在一般情况下,有一个方向的曲率是最大的,而另一个方向(垂直)的曲率是最小的。这些被称为主曲率
Meshlab可以使用以下命令计算和呈现主曲率方向:
Filters -> Normals, curvatures and orientations -> ->显示曲率。

这有助于理解表示曲面曲率的概念和复杂性,不足以比较两个网格之间的“曲率差异”。但这是一个很好的起点来回答你的主要问题: Meshlab可以计算不规则网格上的曲率,并给出每个网格顶点的曲率值。尽管你可能不知道“如何比较主曲率”,但你可能会预料到你的第一个问题是,两个网格对于顶点都有不同的数目和位置,所以你会知道曲率,但它们在曲面上的位置不同。
下一首。为了避免处理那些复杂的“每个方向上的不同曲率值”,人们通常使用两个不依赖于方向的标量值:
。
您可以使用Filters -> Normals, curvatures and orientations -> Discrete Curvature对话框在meshlab-2016中计算这两个值:


曲率的标量值作为质量值存储在顶点中,因此您可以使用Render->Show Quality Histogram对其进行分析,或者将这些值保存到.ply文件中,以便在自己的程序中使用。

因此,我们现在几乎准备好设计一个“两个不规则网格之间的计算曲率差异”算法,因为现在曲率只是作为每个顶点质量存储的标量值。所以你可以:

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

的顶点上。


现在,您可以比较存储在两个文件上的质量,绘制差异等。
https://stackoverflow.com/questions/59194552
复制相似问题