确定3D坐标是否在点云内

问题描述 投票:1回答:1

我有一堆3D坐标(我相信这被称为点云,但是我不是该领域的专家,所以我可能是错的),它们共同定义了大致球形的形状。最重要的是,我有一堆可能会也可能不在此点云中的坐标。我需要一种方法来确定这些坐标是否在点云内。

到目前为止,我试图用点云定义多边形网格,然后从那里确定我的其他点是否在网格内。不幸的是,当我创建网格时(我正在用meshlab的gui测试它,并计划切换到命令行),它创建了一个有孔的网格,这可能是因为我的点云的某些区域稀疏了。其他。

有人对如何执行此操作有任何想法吗?也许比我正在尝试的方法更简单,或者可以尝试一些程序和模块?

谢谢

3d point-clouds meshlab
1个回答
0
投票

我需要一种方法来确定这些坐标是否在点云内。

恕我直言,这取决于您在[within中的意思。也就是说,您需要这种关系的(正式)定义:点在点云内


例如,您可以使用convex combination定义within

给出3D点q和点云Q = {q1,q2,...,qn}] >>,qQ内,当且仅当q{{q1,q2,...,qn}的凸组合。

如果是这种情况,给定点q

和点云Q,您可以首先找到Q中点的convex hull,然后确定是否< [q是否在凸包内。关于此任务,您可以参考this SO question
或者您可以像对待点云一样针对点云形成的网格定义

inwith

。然后定义可能像:

给出3D点q

和点云Q = {q1,q2,...,qn}] >>,可以从Q]生成watertight mesh S >。如果且仅当qS内时,我们说qQ内。此定义相当草率。从点云生成的各种水密网格都可能存在。例如,使用Poisson surface reconstruction或使用某些使用Delaunay triangulation的方法重建表面。但是,对于您的应用程序,

Q

中的任何一个水密网格都可以。 如果是这种情况,您的问题是从给定的点云中提取

水密表面网格

。有很多方法可以从点云中提取三角形网格。在您的情况下,您需要那些可以产生防水性能的产品。
MeshLab提供了许多从点云重构曲面的方法,您使用的似乎不能保证水密性。您可能需要切换到

泊松表面重建

,它也包含在MeshLab中,并且可以保证水密性。 FYI,泊松曲面重构为open sourced,可在CLI中使用。
© www.soinside.com 2019 - 2024. All rights reserved.