曲率是描述点云中每个点局部几何形状的一种度量。高曲率的点通常位于边缘、角点等显著位置。因此,通过检测曲率较高的点,我们可以找到点云中的关键点。
函数实现
下面是一个用于基于曲率检测关键点的函数实现
计算平均曲率
//计算平均曲率
float com_avg_curvature(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud,pcl::PointCloud<pcl::Normal>::Ptr normals,int i, float radius,pcl::search::KdTree<pcl::PointXYZ>::Ptr tree) {float avg_curvature = 0;vector<int> point_ind;vector<float> point_dist;tree->radiusSearch(cloud->points[i], radius, point_ind, point_dist);//tree->nearestKSearch(cloud->points[i], num, point_ind, point_dist);for (int i = 0; i < point_ind.size(); i++) {avg_curvature += normals->points[point_ind[i]].curvature;}avg_curvature = avg_curvature / float(point_ind.size());return avg_c