Point Cloud Library (PCL)  1.8.0-dev
Classes | Enumerations | 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

Requirements

Classes

class  pcl::registration::ConvergenceCriteria
 ConvergenceCriteria represents an abstract base class for different convergence criteria used in registration loops. More...
 
class  pcl::registration::CorrespondenceEstimationBase< PointSource, PointTarget, Scalar >
 Abstract CorrespondenceEstimationBase class. More...
 
class  pcl::registration::CorrespondenceEstimation< PointSource, PointTarget, Scalar >
 CorrespondenceEstimation represents the base class for determining correspondences between target and query point sets/features. More...
 
class  pcl::registration::CorrespondenceEstimationBackProjection< PointSource, PointTarget, NormalT, Scalar >
 CorrespondenceEstimationBackprojection computes correspondences as points in the target cloud which have minimum More...
 
class  pcl::registration::CorrespondenceEstimationNormalShooting< PointSource, PointTarget, NormalT, Scalar >
 CorrespondenceEstimationNormalShooting computes correspondences as points in the target cloud which have minimum distance to normals computed on the input cloud More...
 
class  pcl::registration::CorrespondenceRejector
 CorrespondenceRejector represents the base class for correspondence rejection methods More...
 
class  pcl::registration::DataContainerInterface
 DataContainerInterface provides a generic interface for computing correspondence scores between correspondent points in the input and target clouds More...
 
class  pcl::registration::DataContainer< PointT, NormalT >
 DataContainer is a container for the input and target point clouds and implements the interface to compute correspondence scores between correspondent points in the input and target clouds More...
 
class  pcl::registration::CorrespondenceRejectorDistance
 CorrespondenceRejectorDistance implements a simple correspondence rejection method based on thresholding the distances between the correspondences. More...
 
class  pcl::registration::CorrespondenceRejectorFeatures
 CorrespondenceRejectorFeatures implements a correspondence rejection method based on a set of feature descriptors. More...
 
class  pcl::registration::CorrespondenceRejectorFeatures::FeatureContainerInterface
 
class  pcl::registration::CorrespondenceRejectorFeatures::FeatureContainer< FeatureT >
 An inner class containing pointers to the source and target feature clouds and the parameters needed to perform the correspondence search. More...
 
class  pcl::registration::CorrespondenceRejectorMedianDistance
 CorrespondenceRejectorMedianDistance implements a simple correspondence rejection method based on thresholding based on the median distance 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::CorrespondenceRejectionOrganizedBoundary
 The CorrespondenceRejectionOrganizedBoundary class implements a simple correspondence rejection measure. More...
 
class  pcl::registration::CorrespondenceRejectorPoly< SourceT, TargetT >
 CorrespondenceRejectorPoly implements a correspondence rejection method that exploits low-level and pose-invariant geometric constraints between two point sets by forming virtual polygons of a user-specifiable cardinality on each model using the input correspondences. More...
 
class  pcl::registration::CorrespondenceRejectorSampleConsensus< PointT >
 CorrespondenceRejectorSampleConsensus implements a correspondence rejection using Random Sample Consensus to identify inliers (and reject outliers) More...
 
class  pcl::registration::CorrespondenceRejectorSampleConsensus2D< PointT >
 CorrespondenceRejectorSampleConsensus2D implements a pixel-based correspondence rejection using Random Sample Consensus to identify inliers (and reject outliers) More...
 
class  pcl::registration::CorrespondenceRejectorSurfaceNormal
 CorrespondenceRejectorSurfaceNormal implements a simple correspondence rejection method based on the angle between the normals at correspondent points. 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...
 
class  pcl::registration::CorrespondenceRejectorVarTrimmed
 CorrespondenceRejectoVarTrimmed implements a simple correspondence rejection method by considering as inliers a certain percentage of correspondences with the least distances. 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::registration::DefaultConvergenceCriteria< Scalar >
 DefaultConvergenceCriteria represents an instantiation of ConvergenceCriteria, and implements the following criteria for registration loop evaluation: More...
 
struct  pcl::registration::NullMeasurement
 NullMeasurement struct More...
 
struct  pcl::registration::PoseMeasurement< VertexT, InformationT >
 PoseMeasurement struct More...
 
class  pcl::registration::ELCH< PointT >
 ELCH (Explicit Loop Closing Heuristic) class More...
 
struct  pcl::registration::ELCH< PointT >::Vertex
 
class  pcl::GeneralizedIterativeClosestPoint< PointSource, PointTarget >
 GeneralizedIterativeClosestPoint is an ICP variant that implements the generalized iterative closest point algorithm as described by Alex Segal et al. More...
 
struct  pcl::GeneralizedIterativeClosestPoint< PointSource, PointTarget >::OptimizationFunctorWithIndices
 optimization functor structure More...
 
class  pcl::registration::GraphHandler< GraphT >
 GraphHandler class is a wrapper for a general SLAM graph The actual graph class must fulfil the following boost::graph concepts: More...
 
class  pcl::registration::GraphOptimizer< GraphT >
 GraphOptimizer class; derive and specialize for each graph type More...
 
class  pcl::GraphRegistration< GraphT >
 GraphRegistration class is the base class for graph-based registration methods More...
 
class  pcl::registration::FPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >
 FPCSInitialAlignment computes corresponding four point congruent sets as described in: "4-points congruent sets for robust pairwise surface registration", Dror Aiger, Niloy Mitra, Daniel Cohen-Or. More...
 
class  pcl::registration::KFPCSInitialAlignment< PointSource, PointTarget, NormalT, Scalar >
 KFPCSInitialAlignment computes corresponding four point congruent sets based on keypoints as described in: "Markerless point cloud registration with keypoint-based 4-points congruent sets", Pascal Theiler, Jan Dirk Wegner, Konrad Schindler. 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::SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT >::ErrorFunctor
 
class  pcl::SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT >::HuberPenalty
 
class  pcl::SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT >::TruncatedError
 
class  pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar >
 IterativeClosestPoint provides a base implementation of the Iterative Closest Point algorithm. More...
 
class  pcl::IterativeClosestPointWithNormals< PointSource, PointTarget, Scalar >
 IterativeClosestPointWithNormals is a special case of IterativeClosestPoint, that uses a transformation estimated based on Point to Plane distances by default. More...
 
class  pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >
 IterativeClosestPointNonLinear is an ICP variant that uses Levenberg-Marquardt optimization backend. More...
 
class  pcl::registration::IncrementalRegistration< PointT, Scalar >
 Incremental IterativeClosestPoint class. More...
 
class  pcl::JointIterativeClosestPoint< PointSource, PointTarget, Scalar >
 JointIterativeClosestPoint extends ICP to multiple frames which share the same transform. More...
 
class  pcl::registration::LUM< PointT >
 Globally Consistent Scan Matching based on an algorithm by Lu and Milios. More...
 
struct  pcl::registration::LUM< PointT >::VertexProperties
 
struct  pcl::registration::LUM< PointT >::EdgeProperties
 
class  pcl::registration::MetaRegistration< PointT, Scalar >
 Meta Registration class. More...
 
class  pcl::PairwiseGraphRegistration< GraphT, PointT >
 PairwiseGraphRegistration class aligns the clouds two by two More...
 
class  pcl::Registration< PointSource, PointTarget, Scalar >
 Registration represents the base registration class for general purpose, ICP-like methods. More...
 
class  pcl::SampleConsensusPrerejective< PointSource, PointTarget, FeatureT >
 Pose estimation and alignment class using a prerejective RANSAC routine. More...
 
class  pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >
 TransformationEstimation represents the base class for methods for transformation estimation based on: More...
 
class  pcl::registration::TransformationEstimation2D< PointSource, PointTarget, Scalar >
 TransformationEstimation2D implements a simple 2D rigid transformation estimation (x, y, theta) for a given pair of datasets. More...
 
class  pcl::registration::TransformationEstimation3Point< PointSource, PointTarget, Scalar >
 TransformationEstimation3Points represents the class for transformation estimation based on: More...
 
class  pcl::registration::TransformationEstimationDQ< PointSource, PointTarget, Scalar >
 TransformationEstimationDQ implements dual quaternion based estimation of the transformation aligning the given correspondences. More...
 
class  pcl::registration::TransformationEstimationDualQuaternion< PointSource, PointTarget, Scalar >
 TransformationEstimationDualQuaternion implements dual quaternion based estimation of the transformation aligning the given correspondences. More...
 
class  pcl::registration::TransformationEstimationLM< PointSource, PointTarget, MatScalar >
 TransformationEstimationLM implements Levenberg Marquardt-based estimation of the transformation aligning the given correspondences. More...
 
struct  pcl::registration::TransformationEstimationLM< PointSource, PointTarget, MatScalar >::Functor< _Scalar, NX, NY >
 Base functor all the models that need non linear optimization must define their own one and implement operator() (const Eigen::VectorXd& x, Eigen::VectorXd& fvec) or operator() (const Eigen::VectorXf& x, Eigen::VectorXf& fvec) dependening on the choosen _Scalar. More...
 
struct  pcl::registration::TransformationEstimationLM< PointSource, PointTarget, MatScalar >::OptimizationFunctor
 
class  pcl::registration::TransformationEstimationPointToPlane< PointSource, PointTarget, Scalar >
 TransformationEstimationPointToPlane uses Levenberg Marquardt optimization to find the transformation that minimizes the point-to-plane distance between the given correspondences. More...
 
class  pcl::registration::TransformationEstimationPointToPlaneLLS< PointSource, PointTarget, Scalar >
 TransformationEstimationPointToPlaneLLS implements a Linear Least Squares (LLS) approximation for minimizing the point-to-plane distance between two clouds of corresponding points with normals. More...
 
class  pcl::registration::TransformationEstimationPointToPlaneLLSWeighted< PointSource, PointTarget, Scalar >
 TransformationEstimationPointToPlaneLLSWeighted implements a Linear Least Squares (LLS) approximation for minimizing the point-to-plane distance between two clouds of corresponding points with normals, with the possibility of assigning weights to the correspondences. More...
 
class  pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >
 TransformationEstimationPointToPlaneWeighted uses Levenberg Marquardt optimization to find the transformation that minimizes the point-to-plane distance between the given correspondences. More...
 
class  pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >
 TransformationEstimationSVD implements SVD-based estimation of the transformation aligning the given correspondences. More...
 
class  pcl::registration::TransformationEstimationSVDScale< PointSource, PointTarget, Scalar >
 TransformationEstimationSVD implements SVD-based estimation of the transformation aligning the given correspondences. More...
 
class  pcl::registration::TransformationValidation< PointSource, PointTarget, Scalar >
 TransformationValidation represents the base class for methods that validate the correctness of a transformation found through TransformationEstimation. More...
 
class  pcl::registration::TransformationValidationEuclidean< PointSource, PointTarget, Scalar >
 TransformationValidationEuclidean computes an L2SQR norm between a source and target dataset. More...
 
class  pcl::registration::TransformationValidationEuclidean< PointSource, PointTarget, Scalar >::MyPointRepresentation
 Internal point representation uses only 3D coordinates for L2. More...
 
struct  pcl::registration::NullEstimate
 NullEstimate struct More...
 
struct  pcl::registration::PoseEstimate< PointT >
 PoseEstimate struct More...
 
class  pcl::registration::WarpPointRigid< PointSourceT, PointTargetT, Scalar >
 Base warp point class. More...
 
class  pcl::registration::WarpPointRigid3D< PointSourceT, PointTargetT, Scalar >
 WarpPointRigid3D enables 3D (1D rotation + 2D translation) transformations for points. More...
 
class  pcl::registration::WarpPointRigid6D< PointSourceT, PointTargetT, Scalar >
 WarpPointRigid3D enables 6D (3D rotation + 3D translation) transformations for points. More...
 

Enumerations

enum  pcl::registration::DefaultConvergenceCriteria< Scalar >::ConvergenceState {
  pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_NOT_CONVERGED, pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_ITERATIONS, pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_TRANSFORM, pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_ABS_MSE,
  pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_REL_MSE, pcl::registration::DefaultConvergenceCriteria< Scalar >::CONVERGENCE_CRITERIA_NO_CORRESPONDENCES
}
 
enum  { pcl::registration::TransformationEstimationLM< PointSource, PointTarget, MatScalar >::Functor< _Scalar, NX, NY >::InputsAtCompileTime = NX, pcl::registration::TransformationEstimationLM< PointSource, PointTarget, MatScalar >::Functor< _Scalar, NX, NY >::ValuesAtCompileTime = NY }
 
enum  { pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::Functor< _Scalar, NX, NY >::InputsAtCompileTime = NX, pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::Functor< _Scalar, NX, NY >::ValuesAtCompileTime = NY }
 

Functions

 POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::_PointXYZLAB,(float, x, x)(float, y, y)(float, z, z)(float, L, L)(float, a, a)(float, b, b)) namespace pcl
 

Enumeration Type Documentation

template<typename PointSource, typename PointTarget, typename MatScalar = float>
template<typename _Scalar, int NX = Eigen::Dynamic, int NY = Eigen::Dynamic>
anonymous enum
Enumerator
InputsAtCompileTime 
ValuesAtCompileTime 

Definition at line 228 of file transformation_estimation_lm.h.

template<typename PointSource, typename PointTarget, typename MatScalar = float>
template<typename _Scalar, int NX = Eigen::Dynamic, int NY = Eigen::Dynamic>
anonymous enum
Enumerator
InputsAtCompileTime 
ValuesAtCompileTime 

Definition at line 213 of file transformation_estimation_point_to_plane_weighted.h.

Enumerator
CONVERGENCE_CRITERIA_NOT_CONVERGED 
CONVERGENCE_CRITERIA_ITERATIONS 
CONVERGENCE_CRITERIA_TRANSFORM 
CONVERGENCE_CRITERIA_ABS_MSE 
CONVERGENCE_CRITERIA_REL_MSE 
CONVERGENCE_CRITERIA_NO_CORRESPONDENCES 

Definition at line 73 of file default_convergence_criteria.h.

Function Documentation

POINT_CLOUD_REGISTER_POINT_STRUCT ( pcl::_PointXYZLAB  ,
(float, x, x)(float, y, y)(float, z, z)(float, L, L)(float, a, a)(float, b, b)   
)

GeneralizedIterativeClosestPoint6D integrates L*a*b* color space information into the Generalized Iterative Closest Point (GICP) algorithm.

The suggested input is PointXYZRGBA.

Note
If you use this code in any academic work, please cite:
  • M. Korn, M. Holzkothen, J. Pauli Color Supported Generalized-ICP. In Proceedings of VISAPP 2014 - International Conference on Computer Vision Theory and Applications, Lisbon, Portugal, January 2014.
Author
Martin Holzkothen, Michael Korn

constructor.

Parameters
[in]lab_weightthe color weight

Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)

Parameters
[in]cloudthe input point cloud source

Provide a pointer to the input target (e.g., the point cloud that we want to align the input source to)

Parameters
[in]cloudthe input point cloud target

Rigid transformation computation method with initial guess.

Parameters
outputthe transformed input point cloud dataset using the rigid transformation found
guessthe initial guess of the transformation to compute

Search for the closest nearest neighbor of a given point.

Parameters
querythe point to search a nearest neighbour for
indexvector of size 1 to store the index of the nearest neighbour found
distancevector of size 1 to store the distance to nearest neighbour found

Holds the converted (LAB) data cloud.

Holds the converted (LAB) model cloud.

6d-tree to search in model cloud.

The color weight.

Custom point representation to perform kdtree searches in more than 3 (i.e. in all 6) dimensions.

Enables 6d searches with kd-tree class using the color weight.

Definition at line 78 of file gicp6d.h.