【问题标题】:Fill empty space with PCL用 PCL 填充空白空间
【发布时间】:2018-03-22 07:34:43
【问题描述】:
我正在尝试使用 PCL 在“非地面”对象周围创建边界框并测量其尺寸。
我的管道如下所示:
获取XYZ云点→通过→体素网格→统计
轮廓去除→欧几里得聚类→惯性矩
估计 → 一些用于获取长度、宽度和高度的简单数学。
但我遇到了问题:
如您所见,地面和物体之间有一个“空白”空间,因为没有关于“内部”点的信息。这就是为什么我不能在我的对象周围创建适当的 AABB。
所以,我的问题是:我如何“重建”这个表面以在我的对象周围创建适当的 AABB?就像它站在地面上而不是飞行?我是 PCL 的新手,可能是我遗漏了一些琐碎的事情吗?
【问题讨论】:
标签:
computer-vision
point-cloud-library
image-preprocessing
【解决方案1】:
假设您的对象始终位于平坦的地面上,我建议您通过以下方式解决问题。首先,找出地平面的系数。其次,将对象点投影到该平面上以获得对象的“足迹”。最后,扩展您的边界框以包含投影点。
PCL 中提供了您需要的算法。对于平面拟合,请查看this 教程。对于点投影,请使用以下 sn-p:
pcl::ProjectInliers<pcl::PointXYZ> proj;
proj.setModelType (pcl::SACMODEL_PLANE);
proj.setInputCloud (cloud_object);
proj.setModelCoefficients (plane_coefficients);
proj.filter (*cloud_projected);