20 #include <gtest/gtest.h> 22 #include <pcl/filters/filter.h> 37 void cubePointCloud(PointCloudRGB::Ptr cloud,
float dim,
int nsamples,
int x)
39 pcl::PointXYZRGB p_rgb;
40 for(
int i=0; i<nsamples; i++)
42 p_rgb.x = x + dim * (double)std::rand() / (double)RAND_MAX;
43 p_rgb.y = x + dim * (double)std::rand() / (double)RAND_MAX;
44 p_rgb.z = x + dim * (double)std::rand() / (double)RAND_MAX;
48 cloud->push_back(p_rgb);
53 pcl::PointXYZRGB p_rgb;
54 for (
float i=0; i<dim; i+=0.1){
55 for (
float j=0; j<dim; j+=0.1){
62 cloud->push_back(p_rgb);
71 float leaf_size = 2*res;
75 Filter cloud_filter(leaf_size);
76 cloud_filter.setLeafSize(leaf_size);
77 cloud_filter.downsampleCloud(
cloudRGB, cloudRGBfiltered);
81 EXPECT_GT(end_res, res);
87 float noise_th = res*5;
92 cloud_filter.setNoiseThreshold(noise_th);
93 cloud_filter.setCloudCenter(Eigen::Vector3f(0,0,0));
94 cloud_filter.filterNoise(
cloudRGB, cloudRGBfiltered);
105 PointCloudRGB::Ptr source_cloud =
cloudRGB;
110 Filter::removeFromCloud(target_cloud, source_cloud, res, cloudRGBDiff);
121 *source_cloud = *
cloudRGB+*floor_cloud;
125 cloud_filter.setFloorThreshold(0.01);
126 cloud_filter.filterFloor(source_cloud, cloudRGBfiltered);
128 EXPECT_GT(source_cloud->size(), cloudRGBfiltered->size());
137 pcl::IndicesPtr indices(
new std::vector<int>);
140 pcl::removeNaNNormalsFromPointCloud(*normals, *normals, *indices);
141 Filter::extractIndices(normals, normals, indices);
149 cloud_filter.outlierRemove(
cloudRGB, cloudRGBfiltered);
150 EXPECT_GT(
cloudRGB->size(), cloudRGBfiltered->size());
153 int main(
int argc,
char **argv){
154 testing::InitGoogleTest(&argc, argv);
156 return RUN_ALL_TESTS();
pcl::PointCloud< pcl::PointXYZRGB > PointCloudRGB
static bool getNormals(PointCloudRGB::Ptr &cloud, double normal_radius, PointCloudNormal::Ptr &normals)
Get the normals for input cloud with specified normal's radius.
pcl::PointCloud< pcl::PointXYZRGB > PointCloudRGB
void cubePointCloud(PointCloudRGB::Ptr cloud, float dim, int nsamples, int x)
pcl::PointCloud< pcl::Normal > PointCloudNormal
static bool isValidCloud(PointCloudXYZ::Ptr cloud)
Check whether cloud contains data and is not empty.
TEST_F(TestFilter, testDownsample)
static double computeCloudResolution(PointCloudXYZ::Ptr cloud)
Obtain the resolution of the cloud.
PointCloudRGB::Ptr cloudRGB
int main(int argc, char **argv)
void floorPointCloud(PointCloudRGB::Ptr cloud, float dim)