4

我正在使用PCL 分割模块中的 SACSegmentation来过滤掉地平面。

该方法是拟合 3D 对象的前表面,而不是拟合地平面,如下面的第二个 pcd 文件所示。

任何建议我应该怎么做才能适合和过滤地平面点。

提前致谢。

pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);

pcl::SACSegmentation<pcl::PointXYZ> segmentation;

segmentation.setInputCloud(cloudAll);

segmentation.setOptimizeCoefficients(true);

segmentation.setModelType(pcl::SACMODEL_PLANE );

segmentation.setMethodType(pcl::SAC_RANSAC );

segmentation.setDistanceThreshold(20.20);

场景*.PCD

地平面分割后

afterApplyingPassthrough

4

1 回答 1

4

问题是Ransac找到了适合更多点的平面,在您的点云中对应于前表面。

如果您对表示点云的场景和坐标系有一些了解,您可以轻松解决问题,如下所示:

  1. 使用 PCL 的PassThrough 过滤器仅选择点云中高于y您选择的某个值的点。

在这里,我假设它y代表给定点云坐标系中的垂直轴。

此阈值应基于您对场景尺寸的了解。

根据您的点云,您应该选择带有 的点y > 200

你的点云:

在此处输入图像描述

仅选择具有 的点y > 200

在此处输入图像描述

  1. 像你一样执行分割,但这次只使用选定的点子集。

这是使用选定点正确拟合平面的可视化:

在此处输入图像描述

于 2017-03-07T19:00:20.863 回答