マップ生成には 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 with Plane Model を使用しており、この方法ではデータにインライアは必要ないと思います。クラウドからすべてのポイントを取得し、次の反復でそれらをすべて削除して、新しいポイントのみで作業したいと思います。
このプロセスを実行する最善の方法は何でしょうか? 以下のコードを使用するのが方法だと思いますが、RANSAC やその他のセグメンテーション手法を使用せずに、ポイント クラウド内のすべてのインデックスを選択する方法がわかりません。
pcl::ExtractIndices<pcl::PointXYZRGB> extract;
extract.setInputCloud (cloud);
extract.setIndices (fInliers);
extract.setNegative(false);
extract.filter(*cloud);
前もって感謝します。