1

我正在使用 PCL 库和 RTAB-Map 来生成地图。视频过长的时候,地图后期处理的时间比较长,所以我想把这个过程做的更轻一些。为此,我想从传入的地图中删除已经处理过的点(或更旧的点),只取新的点,这样我可以更快地处理它们。

我在一些帖子中看到人们使用这个(或其他分割技术来获取内点或索引):

vector<int> inliers;
// Plane model
pcl::SampleConsensusModelPlane<pcl::PointXYZRGB>::Ptr model_p (new pcl::SampleConsensusModelPlane<pcl::PointXYZRGB> (cloud_buffer));

pcl::RandomSampleConsensus<pcl::PointXYZRGB> ransac (model_p);
ransac.getInliers(inliers);

pcl::PointIndices::Ptr fInliers (new pcl::PointIndices);
fInliers->indices = inliers;

pcl::ExtractIndices<pcl::PointXYZRGB> extract;
extract.setInputCloud (cloud);
extract.setIndices (fInliers);
extract.setNegative(false);
extract.filter(*cloud);

但就我而言,它对我不起作用。它使用带有平面模型的 RANSAC,我认为这种方式不会对我的数据产生任何影响。我想从云中取出所有点并在下一次迭代中删除所有点,以便仅使用新点。

这怎么可能是执行此过程的最佳方法?我认为使用下面的代码是一种方式,但我不知道如何在不使用 RANSAC 或任何其他分割技术的情况下选择我的点云中的所有索引。

pcl::ExtractIndices<pcl::PointXYZRGB> extract;
extract.setInputCloud (cloud);
extract.setIndices (fInliers);
extract.setNegative(false);
extract.filter(*cloud);

提前致谢。

4

0 回答 0