计算点与点之间的距离的平局距离
doublecomputeCloudResolution (const pcl::PointCloud::ConstPtr &cloud){ double res = 0.0; int n_points = 0; int nres; std::vector indices (2); std::vector sqr_distances (2); pcl::search::KdTree tree; tree.setInputCloud (cloud); for (size_t i = 0; i < cloud->size (); ++i) { if (! pcl_isfinite ((*cloud)[i].x)) { continue; } //Considering the second neighbor since the first is the point itself. nres = tree.nearestKSearch (i, 2, indices, sqr_distances); if (nres == 2) { res += sqrt (sqr_distances[1]); ++n_points; } } if (n_points != 0) { res /= n_points; } return res;}
PCL中
对于 pcl::UniformSampling函数在PCL1.7版本里 该函数放在keypoints 用法如下: pcl::PointCloud keypointIndices; filter.compute(keypointIndices); pcl::copyPointCloud(*cloud,, *filteredCloud); 之后在PCL1.8版本里就将该函数放在filters模块里。并在keypoints模块里也包含了这个头文件 #warning UniformSampling is not a Keypoint anymore, useinstead. 这是keypoints模块下的说明 用法是: PointCloud output_; (output_);