Classes | Functions

Module registration


Detailed Description

Overview

Combining several datasets into a global consistent model is usually performed using a technique called registration. The key idea is to identify corresponding points between the data sets and find a transformation that minimizes the distance (alignment error) between corresponding points. This process is repeated, since correspondence search is affected by the relative position and orientation of the data sets. Once the alignment errors fall below a given threshold, the registration is said to be complete.

The pcl_registration library implements a plethora of point cloud registration algorithms for both organized an unorganized (general purpose) datasets.

registration_outdoor.png
registration_closeup.png

History

Requirements

Classes

class  pcl::registration::CorrespondenceEstimation< PointSource, PointTarget >
 CorrespondenceEstimation represents the base class for determining correspondences between target and query point sets/features. More...
class  pcl::registration::CorrespondenceRejector
 CorrespondenceRejector represents the base class for correspondence rejection methods More...
class  pcl::registration::CorrespondenceRejectorDistance
 CorrespondenceRejectorDistance implements a simple correspondence rejection method based on thresholding the distances between the correspondences. More...
class  pcl::registration::CorrespondenceRejectorOneToOne
 CorrespondenceRejectorOneToOne implements a correspondence rejection method based on eliminating duplicate match indices in the correspondences. More...
class  pcl::registration::CorrespondenceRejectorReciprocal
 CorrespondenceRejectorReciprocal implements a reciprocal correspondence rejection method for ICP-like registration algorithms. More...
class  pcl::registration::CorrespondenceRejectorTrimmed
 CorrespondenceRejectorTrimmed implements a correspondence rejection for ICP-like registration algorithms that uses only the best 'k' correspondences where 'k' is some estimate of the overlap between the two point clouds being registered. More...
struct  pcl::registration::sortCorrespondencesByQueryIndex
 sortCorrespondencesByQueryIndex : a functor for sorting correspondences by query index More...
struct  pcl::registration::sortCorrespondencesByMatchIndex
 sortCorrespondencesByMatchIndex : a functor for sorting correspondences by match index More...
struct  pcl::registration::sortCorrespondencesByDistance
 sortCorrespondencesByDistance : a functor for sorting correspondences by distance More...
struct  pcl::registration::sortCorrespondencesByQueryIndexAndDistance
 sortCorrespondencesByQueryIndexAndDistance : a functor for sorting correspondences by query index _and_ distance More...
struct  pcl::registration::sortCorrespondencesByMatchIndexAndDistance
 sortCorrespondencesByMatchIndexAndDistance : a functor for sorting correspondences by match index _and_ distance More...
class  pcl::SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT >
 SampleConsensusInitialAlignment is an implementation of the initial alignment algorithm described in section IV of "Fast Point Feature Histograms (FPFH) for 3D Registration," Rusu et al. More...
class  pcl::IterativeClosestPoint< PointSource, PointTarget >
 IterativeClosestPoint is an implementation of the Iterative Closest Point algorithm based on Singular Value Decomposition (SVD). More...
class  pcl::IterativeClosestPointNonLinear< PointSource, PointTarget >
 IterativeClosestPointNonLinear is an ICP variant that uses Levenberg-Marquardt optimization backend. More...
class  pcl::Registration< PointSource, PointTarget >
 Registration represents the base registration class. More...
class  pcl::registration::TransformationEstimation< PointSource, PointTarget >
 TransformationEstimation represents the base class for methods for transformation estimation based on given a correspondence vector More...
class  pcl::registration::TransformationEstimationSVD< PointSource, PointTarget >
 TransformationEstimationSVD implements SVD-based estimation of the transformation aligning the given correspondences in target and input point cloud More...

Functions

template<typename PointT >
void pcl::transformPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Affine3f &transform)
 Apply an affine transform defined by an Eigen Transform.
template<typename PointT >
void pcl::transformPointCloud (const pcl::PointCloud< PointT > &cloud_in, const std::vector< int > &indices, pcl::PointCloud< PointT > &cloud_out, const Eigen::Affine3f &transform)
 Apply an affine transform defined by an Eigen Transform.
template<typename PointT >
void pcl::transformPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Matrix4f &transform)
 Apply an affine transform defined by an Eigen Transform.
template<typename PointT >
void pcl::transformPointCloudWithNormals (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Matrix4f &transform)
 Transform a point cloud and rotate its normals using an Eigen transform.
template<typename PointT >
void pcl::transformPointCloud (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Vector3f &offset, const Eigen::Quaternionf &rotation)
 Apply a rigid transform defined by a 3D offset and a quaternion.
template<typename PointT >
void pcl::transformPointCloudWithNormals (const pcl::PointCloud< PointT > &cloud_in, pcl::PointCloud< PointT > &cloud_out, const Eigen::Vector3f &offset, const Eigen::Quaternionf &rotation)
 Transform a point cloud and rotate its normals using an Eigen transform.

Function Documentation

template<typename PointT >
void pcl::transformPointCloud ( const pcl::PointCloud< PointT > &  cloud_in,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Affine3f &  transform 
)

Apply an affine transform defined by an Eigen Transform.

Parameters:
cloud_in the input point cloud
cloud_out the resultant output point cloud
transform an affine transformation (typically a rigid transformation)
Note:
The density of the point cloud is lost, since density implies that the origin is the point of view
Can be used with cloud_in equal to cloud_out

Definition at line 39 of file transforms.hpp.

template<typename PointT >
void pcl::transformPointCloud ( const pcl::PointCloud< PointT > &  cloud_in,
const std::vector< int > &  indices,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Affine3f &  transform 
)

Apply an affine transform defined by an Eigen Transform.

Parameters:
cloud_in the input point cloud
indices the set of point indices to use from the input point cloud
cloud_out the resultant output point cloud
transform an affine transformation (typically a rigid transformation)
Note:
The density of the point cloud is lost, since density implies that the origin is the point of view
Can be used with cloud_in equal to cloud_out

Definition at line 79 of file transforms.hpp.

template<typename PointT >
void pcl::transformPointCloud ( const pcl::PointCloud< PointT > &  cloud_in,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Vector3f &  offset,
const Eigen::Quaternionf &  rotation 
) [inline]

Apply a rigid transform defined by a 3D offset and a quaternion.

Parameters:
cloud_in the input point cloud
cloud_out the resultant output point cloud
offset the translation component of the rigid transformation
rotation the rotation component of the rigid transformation
Note:
density of the point cloud is lost, since density implies that the origin is the point of view

Definition at line 259 of file transforms.hpp.

template<typename PointT >
void pcl::transformPointCloud ( const pcl::PointCloud< PointT > &  cloud_in,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Matrix4f &  transform 
)

Apply an affine transform defined by an Eigen Transform.

Parameters:
cloud_in the input point cloud
cloud_out the resultant output point cloud
transform an affine transformation (typically a rigid transformation)
Note:
The density of the point cloud is lost, since density implies that the origin is the point of view
Can be used with cloud_in equal to cloud_out

Definition at line 166 of file transforms.hpp.

template<typename PointT >
void pcl::transformPointCloudWithNormals ( const pcl::PointCloud< PointT > &  cloud_in,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Matrix4f &  transform 
)

Transform a point cloud and rotate its normals using an Eigen transform.

Parameters:
cloud_in the input point cloud
cloud_out the resultant output point cloud
transform an affine transformation (typically a rigid transformation)
Note:
The density of the point cloud is lost, since density implies that the origin is the point of view
Can be used with cloud_in equal to cloud_out

Definition at line 207 of file transforms.hpp.

template<typename PointT >
void pcl::transformPointCloudWithNormals ( const pcl::PointCloud< PointT > &  cloud_in,
pcl::PointCloud< PointT > &  cloud_out,
const Eigen::Vector3f &  offset,
const Eigen::Quaternionf &  rotation 
) [inline]

Transform a point cloud and rotate its normals using an Eigen transform.

Parameters:
cloud_in the input point cloud
cloud_out the resultant output point cloud
offset the translation component of the rigid transformation
rotation the rotation component of the rigid transformation
Note:
density of the point cloud is lost, since density implies that the origin is the point of view

Definition at line 273 of file transforms.hpp.