重叠点 Open3d

Overlapping points Open3d

我正在使用 open3d 进行点云配准。我有两个部分重叠的点云,比如源云和目标云。我已经将它们注册在一个共同的坐标系中。现在,我想删除重叠点以获得统一的单点云。

我们将不胜感激。非常感谢您。

只需使用“voxel_down_sample.your_point_cloud”再次对 2 个云进行体素化。您可能在注册之前就这样做了,特别是如果您使用的是大云。如果没有,那么您可以使用任何示例方法,例如“uniform_down_sample.your_point_cloud”

@Rubens,谢谢你的回复。我已经尝试过基于体素的下采样,但在这种情况下它不起作用,因为它也会从非重叠部分删除数据点。我找到了解决这个问题的方法,但需要很多时间。首先,我找到了点云的每个点与其相邻点之间的最小距离。一旦我知道了最小距离,我就会合并两个点云。下一步是再次找到合并点云的最近邻距离,如果它低于我首先找到的最小距离,那么我将删除该点并将其余点存储在最终点云中.此方法工作正常,但需要大量计算时间,

您可以 运行 registration_icp 将您的最大距离设置为 max_correspondence_distance。 然后根据返回的 o3d.pipelines.registration.RegistrationResult,您将在一个网格中有 correspondence_set 个点,这些点在另一个网格中的点的距离内。 届时,您可以删除任一列中的所有点,或者为每个对应关系随机删除一个或另一个。