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.

# Requirements

- common
- kdtree
- sample_consensus
- features

## 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::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...
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...
class | pcl::registration::GraphHandler< GraphT >
| GraphHandler class is a wrapper for a general SLAM graph The actual graph class must fulfill 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::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...
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...
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::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >
| TransformationEstimationSymmetricPointToPlaneLLS implements a Linear Least Squares (LLS) approximation for minimizing the symmetric point-to-plane distance between two clouds of corresponding points with normals. 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...
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...

## 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

## Function Documentation

## POINT_CLOUD_REGISTER_POINT_STRUCT()

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_weight | the color weight

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

Parameters

  [in] | cloud | the 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] | cloud | the input point cloud target

Rigid transformation computation method with initial guess.

Parameters

  output | the transformed input point cloud dataset using the rigid transformation found
  guess | the initial guess of the transformation to compute

Search for the closest nearest neighbor of a given point.

Parameters

  query | the point to search a nearest neighbour for
  index | vector of size 1 to store the index of the nearest neighbour found
  distance | vector 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.

References pcl::geometry::distance(), pcl::PointRepresentation< PointT >::nr_dimensions_, PCL_EXPORTS, and pcl::PointRepresentation< PointT >::trivial_.