https://blog.csdn.net/daoer_sofu/article/details/96117273?
Feature
模型边界 BoundaryEstimation,模型
Eigen::Vector4f pcaCentroid;Eigen::Matrix3f covariance;pcl::compute3DCentroid(*scene, pcaCentroid);pcl::computeCovarianceMatrixNormalized(*scene, pcaCentroid, covariance); //协方差矩阵Eigen::SelfAdjointEigenSolver<Eigen::Matrix3f> eigen_solver(covariance, Eigen::ComputeEigenvectors);Eigen::Matrix3f eigenVectorsPCA = eigen_solver.eigenvectors();//viewer.addCoordinateSystem(1,pcaCentroid.x(),pcaCentroid.y(),pcaCentroid.z());viewer.addCube(Eigen::Vector3f(tmpCenter.x,tmpCenter.y,tmpCenter.z),Eigen::Quaternionf(eigenVectorsPCA),width,height,depth,"bbox");
法线估计
pcl::PointCloud<pcl::Normal>::Ptr cloud_normals (new pcl::PointCloud<pcl::Normal>);//创建法线估计估计向量pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;ne.setInputCloud (cloud);//创建一个空的KdTree对象,并把它传递给法线估计向量//基于给出的输入数据集,KdTree将被建立pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ> ());ne.setSearchMethod (tree);//使用半径在查询点周围3厘米范围内的所有临近元素ne.setRadiusSearch (0.03);//计算特征值ne.compute (*cloud_normals);
点特征直方图PFH描述
查找特征点云P,得到P点最临近元素,对领域内的每对点,计算三个角度特征参数,输出直方图,点区域特征和权重
//其他相关操作pcl::PointCloud<pcl::PointXYZ>::Ptrcloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::Normal>::Ptrnormals(new pcl::PointCloud<pcl::Normal>());//打开点云文件估计法线等//创建PFH估计对象pfh,并将输入点云数据集cloud和法线normals传递给它pcl::PFHEstimation<pcl::PointXYZ,pcl::Normal,pcl::PFHSignature125> pfh;pfh.setInputCloud(cloud);pfh.setInputNormals(normals);//如果点云是类型为PointNormal,则执行pfh.setInputNormals (cloud);//创建一个空的kd树表示法,并把它传递给PFH估计对象。//基于已给的输入数据集,建立kdtreepcl::KdTreeFLANN<pcl::PointXYZ>::Ptrtree(new pcl::KdTreeFLANN<pcl::PointXYZ>());pfh.setSearchMethod(tree);//输出数据集pcl::PointCloud<pcl::PFHSignature125>::Ptrpfhs(new pcl::PointCloud<pcl::PFHSignature125>());//使用半径在5厘米范围内的所有邻元素。//注意:此处使用的半径必须要大于估计表面法线时使用的半径!!!pfh.setRadiusSearch(0.05);//计算pfh特征值pfh.compute(*pfhs);
————————————————
版权声明:本文为CSDN博主「怪力左手」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/daoer_sofu/article/details/96117273
