点云库PCL学习:全局描述子CVFH的提取

介绍:

CVFH是一种基于区域描述的特征点,也是基于VHF扩展的方法(VFH在物体局部遮挡的情况下识别效果并不好)。
输入格式:
(1)由一组定向点P组成的点云。定向意味着所有点都具有正常的法向量n。
(2)此功能不使用颜色信息。
工作原理:
(1)由于遮挡和传感器限制,我们使用传感器获取的是物体的2.5D点云数据,一旦缺失部分点云,计算整个点云的点和正常质心的结果可能完全不同。这就是为什么一旦点云中缺少必要点,VFH描述符也就会完全不同。
(2)CVFH创建稳定的集群区域。从点云P开始,新的簇Ci从尚未分配给任何簇的随机点Pr开始。如果Ci中存在点Pj,则P中的每个点Pi被分配给该簇,使得它们的法线类似并且它们处于直接邻域中(比较角度和距离阈值)。聚类簇群太少的集群被拒绝或忽略。
(3)计算每个群集上的VFH。
(4)为每个直方图添加形状分布,表示点如何围绕质心分布。
(5)有关特征计算的更多详细信息,请参阅原始论文:http://ieeexplore.ieee.org/xpl/articleDetails.jsp?numumber = 6130296
在这里插入图片描述

CVFH描述子的提取

提取CVFH描述子的过程与VFH差不多,具体可参考如下程序:

void calcuate_cvfh(const string name, pcl::PointCloud<pcl::VFHSignature308> &vfhs,float normal_r=0.6)
{     
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);       
if (pcl::io::loadPCDFile<pcl::PointXYZ>(name, *cloud) == -1)      
{
              PCL_ERROR("Cloudn't read file!");
              return;      
} 
      
//估计法线      
pcl::NormalEstimation<pcl::PointXYZ,pcl::Normal> ne;      
ne.setInputCloud(cloud);      
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new
pcl::search::KdTree<pcl::PointXYZ>());      
ne.setSearchMethod(tree);      
pcl::PointCloud<pcl::Normal>::Ptr cloud_normals(new pcl::PointCloud<pcl::Normal>);     
ne.setRadiusSearch(normal_r);   
//使用半径在查询点周围范围内的所有邻元素      
ne.compute(*cloud_normals);           
//CVFH    
pcl::CVFHEstimation<pcl::PointXYZ,pcl::Normal, pcl::VFHSignature308> cvfh;      
cvfh.setInputCloud(cloud);     
cvfh.setInputNormals(cloud_normals);

      
//创建一个空的kd树表示法      
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree1(new
pcl::search::KdTree<pcl::PointXYZ>);      
cvfh.setSearchMethod(tree1);
      
//输出的数据集     
 //pcl::PointCloud<pcl::VFHSignature308>::Ptr vfhs(new pcl::PointCloud<pcl::VFHSignature308>()); 
 //vfh.setRadiusSearch(15);     
cvfh.compute(vfhs);

}

显示CVFH特征与可视化VFH特征的过程是差不多的,大概是这个代码(还没进行测试):

pcl::visualization::PCLPlotter plotter;
plotter.addFeatureHistogram<pcl::VFHSignature308>(cvfhs, "vfh", 0);
plotter.plot();//显示cvfh特征
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值