原始点云如下:
1.depth_clustering(2016、2017)
github地址:https://github.com/supengufo/depth_clustering_ros
depth_clustering能够快速且鲁棒地将点云分割成不同的物体。它通过将3D点云数据转换成2D深度图像,然后使用广度优先搜索来提取点云聚类。算法还包含了去除地面点云的功能。
障碍物:
分割地面点云:
可以看到地面以上的点分割效果不错,但是缺失了很多地面的点。所以这个算法更适合用来做雷达点云的实时障碍物检测,用来分割地面点云的话,只能说有这个功能。
2.linefit_ground_segmentation(2010)
代码:GitHub - lorenwel/linefit_ground_segmentation: Ground Segmentation from Lidar Point Clouds
inefit_ground_segmentation算法通过将点云数据转换到极坐标系并使用直线拟合在每个扇区内识别地面点,实现快速且鲁棒的地面与非地面点分割。
分割地面点云:
这效果...只能说体谅一下老人家吧。
3.plane_fit_ground_filter(2017)
plane_fit_ground_filter
算法原理是通过从点云中选择种子点进行初始平面拟合,然后迭代优化平面模型,最终通过点到平面的距离来识别和分割地面点。
运行代码可能会出现,不过不影响使用。
Failed to find match for field 'ring'.
分割的地面点云:
效果比前两位可以说是好多了。
4.Patchwork++(2022)
代码:https://github.com/url-kaist/patchwork-plusplus
Patchwork++ 算法通过局部区域的地面平面拟合和地面似然估计,结合自适应参数调整和时间信息融合,实现对3D点云中地面和非地面点的鲁棒且精确的分割。
地面点云分割:
非地面点云分割:
对比可以看出还是patchwork++的分割精细程度高一点。
总结
用patchwork++就完了