00001 #include <iostream> 00002 #include <pcl/point_types.h> 00003 #include <pcl/filters/radius_outlier_removal.h> 00004 00005 int 00006 main (int argc, char** argv) 00007 { 00008 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); 00009 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>); 00010 00011 // Fill in the cloud data 00012 cloud->width = 5; 00013 cloud->height = 1; 00014 cloud->points.resize (cloud->width * cloud->height); 00015 00016 for (size_t i = 0; i < cloud->points.size (); ++i) 00017 { 00018 cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f); 00019 cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f); 00020 cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f); 00021 } 00022 00023 std::cerr << "Cloud before filtering: " << std::endl; 00024 for (size_t i = 0; i < cloud->points.size (); ++i) 00025 std::cerr << " " << cloud->points[i].x << " " 00026 << cloud->points[i].y << " " 00027 << cloud->points[i].z << std::endl; 00028 // build the filter 00029 pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem; 00030 outrem.setInputCloud(cloud); 00031 outrem.setRadiusSearch(0.8); 00032 outrem.setMinNeighborsInRadius (2); 00033 00034 // apply filter 00035 outrem.filter (*cloud_filtered); 00036 00037 // display pointcloud after filtering 00038 std::cerr << "Cloud after filtering: " << std::endl; 00039 for (size_t i = 0; i < cloud_filtered->points.size (); ++i) 00040 std::cerr << " " << cloud_filtered->points[i].x << " " 00041 << cloud_filtered->points[i].y << " " 00042 << cloud_filtered->points[i].z << std::endl; 00043 return (0); 00044 }