代码之家  ›  专栏  ›  技术社区  ›  user4636876

用PCL填充空白

  •  0
  • user4636876  · 技术社区  · 7 年前

    我正在尝试使用PCL在非地面对象周围创建边界框,并测量其尺寸。

    我的管道如下所示:

    通过体素网格统计获取XYZ云点 轮廓去除-欧氏聚类-惯性矩 估算长度、宽度和高度的一些琐碎数学。

    但我被问题缠住了:

    enter image description here

    正如您所看到的,地面和对象之间有一个空的空间,因为没有关于内部点的信息。这就是为什么我不能在对象周围创建适当的AABB。

    所以,我的问题是: 如何重建此曲面以在对象周围创建适当的AABB?就像它站在地面飞机上而不是飞行?我是PCL的新手,也许我遗漏了一些琐碎的东西?

    1 回复  |  直到 7 年前
        1
  •  0
  •   taketwo    7 年前

    假设您的对象始终位于平面地面上,我建议按以下方式处理该问题。首先,求地平面的系数。其次,将对象点投影到此平面上,以获取对象的“足迹”。最后,扩展边界框以包括投影点。

    您需要的算法在PCL中可用。对于平面配件,请检查 this 辅导的对于点投影,请使用以下代码段:

    pcl::ProjectInliers<pcl::PointXYZ> proj;
    proj.setModelType (pcl::SACMODEL_PLANE);
    proj.setInputCloud (cloud_object);
    proj.setModelCoefficients (plane_coefficients);
    proj.filter (*cloud_projected);