3d - 3D数据中机器人定位的地平面检测和去除

标签 3d computer-vision point-cloud-library point-clouds ransac

我正在使用 SACSegmentation from PCL segmentation module为了过滤掉地平面。

该方法是拟合 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);

Scene*.PCD

After the ground plane segmentation

afterApplyingPassthrough

最佳答案

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

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

  • 使用 PCL PassThrough filter仅选择点云中高于某个点的点 y您选择的值(value)。

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

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

    根据您的点云,您应该使用 y > 200 选择点.

    您的点云:

    enter image description here

    仅使用 y > 200 选择点:

    enter image description here
  • 像您一样执行分割,但这次仅使用选定的点子集。

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

    enter image description here

    关于3d - 3D数据中机器人定位的地平面检测和去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653077/

    相关文章:

    math - 从给定点垂直于线段

    c++ - 如何从显式方程构造多边形?

    javascript - 三个JS - 如何用Y平面切割3D对象?

    android - Mobile Vision API 的面部跟踪(而不是检测)可以独立于其 CameraSource 使用吗?

    c++ - 复制 PCL 点云,同时保留组织或 Ransac + 曲面法线计算

    javascript - 如何使用按钮触发器在javascript中旋转css 3d立方体

    machine-learning - 标准化和全局对比度标准化之间有什么区别? (图像预处理)

    python - 尝试训练 Keras 模型时出现“资源耗尽”内存错误

    filtering - PCL - 过滤掉密集区域中未找到的点

    c++ - Qt 中的 PCL addLine 使应用程序崩溃