内で定義された3Dボックスの外側の点を削除し、私はすべてx
、y
とz
方向ためmax
よりmin
未満と大きいすべてのポイントを削除します。以下はサンプルコードです所与のポイントクラウドでPCLビジュアライザ
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/passthrough.h>
#include <pcl/visualization/pcl_visualizer.h>
// Define min and max for X, Y and Z
float minX = -0.1, minY = -0.5, minZ = -2.5;
float maxX = +0.1, maxY = +0.5, maxZ = +2.5;
int main (int argc, char** argv)
{
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr body (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("body.pcd", *body);
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr bodyFiltered (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::PassThrough<pcl::PointXYZRGBA> filter;
filter.setInputCloud (body);
filter.setFilterFieldName ("x");
filter.setFilterLimits (minX, maxX);
filter.setFilterFieldName ("y");
filter.setFilterLimits (minY, maxY);
filter.setFilterFieldName ("z");
filter.setFilterLimits (minZ, maxZ);
filter.filter (*bodyFiltered);
viewer.addPointCloud (bodyFiltered,"body");
viewer.spin();
return 0;
}
最後のフィルタが適用されているようです。どんな解決策ですか?
はあなたには、いくつかのサンプルデータ、サンプル出力を示し、あなたが唯一の最後のフィルタが適用されると結論どのように説明できますか? – Yunnosch
@Yunnosch:データはセンサーから取得され、非常に騒々しいです。現在、私は最高の境界を見つけようとしているので、ほとんどのノイズを取り除くことができます。ちなみに、上記の方法はあなたに正しい見ていますか? –
クラウドからポイントを削除するのではなく、有効なポイントのインデックスを取得したい場合は、 'pcl :: Clipper3D :: clipPointCloud3D'を使用することができます。 –