ICP算法是现阶段最普遍、应用最广泛的点云配准方法。采用PCL点云库可以很方便地实现ICP算法。本文在ICP中实现PCL算法,并将配准结果显示和保存。
代码如下:
#include <iostream>
#include <pcl/io/ply_io.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/transforms.h>
int main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source(new pcl::PointCloud<pcl::PointXYZ>());
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_target(new pcl::PointCloud<pcl::PointXYZ>());
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source_trans(new pcl::PointCloud<pcl::PointXYZ>());
pcl::io::loadPLYFile("b000.ply", *cloud_target); //读入目标点云
pcl::io::loadPLYFile("b045.ply", *cloud_source); //源点云
//去除源点云和目标点云中的无效点
std::vector<int> index;
pcl::removeNaNFromPointCloud(*cloud_source, *cloud