https://blog.youkuaiyun.com/xuezhisdc/article/details/51012300
1、PCL系列——读入PCD格式文件操作
2、PCL系列——将点云数据写入PCD格式文件
3、PCL系列——拼接两个点云
4、PCL系列——从深度图像(RangeImage)中提取NARF关键点
5、PCL系列——如何可视化深度图像
6、PCL系列——如何使用迭代最近点法(ICP)配准
7、PCL系列——如何逐渐地配准一对点云
8、PCL系列——三维重构之泊松重构
9、PCL系列——三维重构之贪婪三角投影算法
10、PCL系列——三维重构之移动立方体算法
------------------------------------------------------------------------------------------------------------------------------------------
1、pcl::io::loadPCDFile<pcl::PointXYZ> ("test_pcd.pcd", *cloud) //读取点云到cloud
其通过调用 pcl::PCDReader() 函数来实现。
2、pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud); //将点云保存到PCD文件中
3、
* 如何拼接两个不同的点云的点,约束条件是两个数据集中的域的数量和类型必须相等。
* 如何拼接两个不同点云的域,约束条件是连个数据集中的点的数量必须相等。
4、模块RangeImage相关概念以及算法的介绍:
深度图像(Depth Images)也被称为距离影像(Range Image),即 距离值。
NARF(Normal Aligned Radial Feature)关键点是为了从深度图像中识别物体而提出的.
5、
6、创建ICP对象,设置该对象的输入点云和目标点云,然后进行配准 ipc.align() ,并显示ICP配准信息和变换矩阵。
//*********************************
// ICP配准
//*********************************
pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp; //创建ICP对象,用于ICP配准
icp.setInputSource(cloud_in); //设置输入点云
icp.setInputTarget(cloud_out); //设置目标点云(输入点云进行仿射变换,得到目标点云)
pcl::PointCloud<pcl::PointXYZ> Final; //存储结果
//进行配准,结果存储在Final中
icp.align(Final);
//输出ICP配准的信息(是否收敛,拟合度)
cout << "has converged:"<<icp.hasConverged()<<" score: " <<icp.getFitnessScore() << endl;
//输出最终的变换矩阵(4x4)
std::cout << icp.getFinalTransformation() << std::endl;
7、