用PCL填充空白区域

时间:2018-03-22 07:34:44

标签: computer-vision point-cloud-library image-preprocessing

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

我的管道看起来像这样:

  

获取XYZ浊点→通过→体素网格→统计   轮廓移除→欧几里德聚类→惯性矩   估计→获得长度,宽度和高度的一些琐碎的数学。

但是我遇到了问题:

enter image description here

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

所以,我的问题是:如何“重建”此表面以在我的对象周围创建合适的AABB?就像它站在地面上而不是飞行?我是PCL的新手,可能是我错过了一些微不足道的东西?

1 个答案:

答案 0 :(得分:1)

假设您的物体始终站在平坦的地面上,我建议以下列方式解决问题。首先,找到地平面的系数。其次,项目对象指向此平面以获取对象的“足迹”。最后,扩展您的边界框以包含投影点。

您需要的算法在PCL中可用。对于平面拟合,请检查this教程。对于点投影,请使用以下代码段:

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