在3d平面中获取孔的边界

时间:2017-08-25 03:56:11

标签: algorithm 3d geometry

我有一组位于飞机上的三维点。在飞机的某个地方,会有一个洞(用缺点表示),如下图所示:

enter image description here

我试图找到这个洞的轮廓。其他解决方案涉及寻找凸/凹船体,但那些适用于外部边界,而不是内部边界。

是否有算法执行此操作?

2 个答案:

答案 0 :(得分:0)

如果您知道平面(可以通过PCA确定),则可以将所有点投影到此平面中并继续使用2D坐标。因此,您的问题减少到在2D数据集中找到边界点。

您的数据看起来好像可以统一采样(每个轴独立)。然后,一个非常简单的检查可能就足够了:计算一个点的质心 - 比如30 - 最近的一个点的质心。如果质心距离原点非常远,则很可能处于边界上。

第二种方法可能是记录你有邻居的方向。即为离散化的方向保留一些像字段的东西(例如10°步长的角度,这将给你36个条目)。然后,对于每个邻居,计算其方向并将该方向标记为已占用,包括一些相邻方向。例如。如果您的邻居在27.4°方向,您可以将方向位1,2和3标记为已占用。这个额外的周围空间将影响结果的精细程度。您可能还希望使其取决于邻居的距离(即将邻居视为圆圈并找到圆圈所跨越的角度范围)。最后,检查所有方向是否都被占用。如果没有,你就在边界上。

Alpha形状可以为您提供内部和外部边界。

答案 1 :(得分:0)

  1. 通过将点投影到您的平面上来转换为2D

    请参阅相关质量保证处理此问题:

  2. 在2D点集中找到漏洞

    只需应用此相关的质量检查

  3. 项目发现漏洞回到3D

    再次看到#1

  4. 中的链接

    很抱歉几乎只能链接回答,但展位链接在 SO / SE 上,并在合并后完全解决您的问题。我一直在努力将你的问题标记为重复,并将其留在评论中,但这更具可读性。