本文主要是介绍基于曲率的关键点检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
曲率是描述点云中每个点局部几何形状的一种度量。高曲率的点通常位于边缘、角点等显著位置。因此,通过检测曲率较高的点,我们可以找到点云中的关键点。
函数实现
下面是一个用于基于曲率检测关键点的函数实现
计算平均曲率
//计算平均曲率
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
这篇关于基于曲率的关键点检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!