gpt4 book ai didi

c++ - PCL : How to delete deviations from a point cloud?

转载 作者:行者123 更新时间:2023-12-01 17:54:39 25 4
gpt4 key购买 nike

我得到了一个点云,其中大多数点非常接近,代表一个对象。该点云是通过深度传感器对图像进行分割而得出的。由于存在一些不准确性,点云中也有一些点与其余点有一定距离。就像一个自己的小点群。您可以在此处看到这些以红色列出的点:

enter image description here

现在我想删除这些点以进一步处理点云。这样做的最佳方法是什么?我考虑过使用 k-means 等聚类算法进行一些聚类。但这样做时我需要事先知道簇的数量。由于该点云源自传感器,因此我并不总是拥有想要删除的这些点。有时有一个集群,有时有更多。

有没有推荐的方法来解决这个问题?

我希望有任何意见。谢谢。

PS:我正在使用 C++ 和 pcl 库。

最佳答案

我建议尝试 PCL 中内置的统计异常值过滤器:http://pointclouds.org/documentation/tutorials/statistical_outlier.php

您应该能够将该示例逐字复制到您的代码中,它会为您清除这些稀疏点(在更改两个硬编码值以适合您的场景之后)。如果您总是看到相同的场景或相似的场景,那就足够了。但是,如果您需要一个更通用的解决方案来适应不同的噪声或稀疏点云,我建议您事先(在代码中)做最近邻直方图,然后做一些简单的峰值分析来设置过滤器上的标准偏差。

应用此过滤器后,聚类应该变得微不足道,因为稀疏点将被删除,并且聚类之间的任何稀疏桥也将被删除。

尽管有多种聚类解决方案,但在这种情况下,我可能会选择欧几里德聚类提取(您可能不需要将体素网格作为示例中所示的预处理步骤,因为您的云本身间隔良好,因为到您的传感器): http://www.pointclouds.org/documentation/tutorials/cluster_extraction.php

簇容差变量将允许您准确指定相距多远的点可以包含在同一簇中。

关于c++ - PCL : How to delete deviations from a point cloud?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59655142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com