最近在做基于点云的物体识别,现将调试的过程分享给大家,所有程序均在vs2015+pcl1.81运行通过。
内容介绍:
我的内容与教材还是有些差别。主要在于:
1.只需要识别出是物体的类别即可,并不需要估计位姿
2. 我的点云数据是PointXYZ
整个过程包括三个阶段,我将分三次博文进行介绍:
1.准备阶段:从不同视角采集物体的点云数据,并计算VFH描述子
2.训练阶段:基于所计算的多组VFH描述子建立kd-tree
3.测试阶段:计算带识别物体点云的VFH描述子,利用VFH描述子在上面建立的kd-tree进行搜索,查找候选集
第一阶段VFH描述子的计算:
1.首先将模型文件命名为“model_*.pcd”的格式,并放入Data文件夹
2.估计vfh特征,并保存为.pcd文件
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/io.h>
#include <pcl/features/normal_3d.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/console/time.h>
#include <pcl/features/vfh.h> //vFH
#include <pcl/visualization/pcl_plotter.h>//显示描述子
using namespace pcl;
//vfh全局特性
int main(int argc, char **argv)
{
for (int i = 0; i < 33;i++)
{
std::stringstream ss;
ss<< "Data\\model_" << i << ".pcd";
//读取点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ>(ss.str(), *cloud) == -1)
{
PCL_ERROR("Cloudn't read file!");
system("pause");
return -1;
}
//估计法线
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(0.6); //使用半径在查询点周围0.6范围内的所有邻元素
ne.compute(*cloud_normals); //计算法线
//VFH
pcl::VFHEstimation<pcl::PointXYZ,pcl::Normal,pcl::VFHSignature308> vfh;
vfh.setInputCloud(cloud);
vfh.setInputNormals(cloud_normals);
//创建一个空的kd树表示法
pcl::search::KdTree<PointXYZ>::Ptr tree1(new pcl::search::KdTree<pcl::PointXYZ>);
vfh.setSearchMethod(tree1);
//输出的数据集
pcl::PointCloud<pcl::VFHSignature308>::Ptr vfhs(new pcl::PointCloud<pcl::VFHSignature308>());
vfh.setRadiusSearch(15);
vfh.compute(*vfhs);
std::stringstream ss1;
ss1<< "Data\\model_vfh_" << i << ".pcd";
pcl::io::savePCDFileASCII(ss1.str(), *vfhs);
}
cout<<"ok"<< endl;
system("pause");
return 0;
}
3.得到的vfh描述子文件
附完整程序连接:
https://download.csdn.net/download/qinqinxiansheng/12339862