Point Cloud Library (PCL)  1.9.1-dev
List of all members | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > Class Template Reference

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

#include <pcl/registration/transformation_estimation_symmetric_point_to_plane_lls.h>

+ Inheritance diagram for pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >:

Public Types

using Ptr = boost::shared_ptr< TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > >
 
using ConstPtr = boost::shared_ptr< const TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > >
 
using Matrix4 = typename TransformationEstimation< PointSource, PointTarget, Scalar >::Matrix4
 
using Vector6 = Eigen::Matrix< Scalar, 6, 1 >
 
- Public Types inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >
using Matrix4 = Eigen::Matrix< Scalar, 4, 4 >
 
using Ptr = boost::shared_ptr< TransformationEstimation< PointSource, PointTarget, Scalar > >
 
using ConstPtr = boost::shared_ptr< const TransformationEstimation< PointSource, PointTarget, Scalar > >
 

Public Member Functions

 TransformationEstimationSymmetricPointToPlaneLLS ()
 
 ~TransformationEstimationSymmetricPointToPlaneLLS ()
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const override
 Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const std::vector< int > &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const override
 Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const std::vector< int > &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const std::vector< int > &indices_tgt, Matrix4 &transformation_matrix) const override
 Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Correspondences &correspondences, Matrix4 &transformation_matrix) const override
 Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
 
void setEnforceSameDirectionNormals (bool enforce_same_direction_normals)
 Set whether or not to negate source or target normals on a per-point basis such that they point in the same direction. More...
 
bool getEnforceSameDirectionNormals ()
 Obtain whether source or target normals are negated on a per-point basis such that they point in the same direction or not. More...
 
- Public Member Functions inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >
 TransformationEstimation ()
 
virtual ~TransformationEstimation ()
 

Protected Member Functions

void estimateRigidTransformation (ConstCloudIterator< PointSource > &source_it, ConstCloudIterator< PointTarget > &target_it, Matrix4 &transformation_matrix) const
 Estimate a rigid rotation transformation between a source and a target. More...
 
void constructTransformationMatrix (const Vector6 &parameters, Matrix4 &transformation_matrix) const
 Construct a 4 by 4 transformation matrix from the provided rotation and translation. More...
 

Protected Attributes

bool enforce_same_direction_normals_
 Whether or not to negate source and/or target normals such that they point in the same direction. More...
 

Detailed Description

template<typename PointSource, typename PointTarget, typename Scalar = float>
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.

For additional details, see "Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration", Kok-Lim Low, 2004 "A Symmetric Objective Function for ICP", Szymon Rusinkiewicz, 2019

Note
The class is templated on the source and target point types as well as on the output scalar of the transformation matrix (i.e., float or double). Default: float.
Author
Matthew Cong

Definition at line 61 of file transformation_estimation_symmetric_point_to_plane_lls.h.

Member Typedef Documentation

◆ ConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::ConstPtr = boost::shared_ptr<const TransformationEstimationSymmetricPointToPlaneLLS<PointSource, PointTarget, Scalar> >

◆ Matrix4

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Matrix4 = typename TransformationEstimation<PointSource, PointTarget, Scalar>::Matrix4

◆ Ptr

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Ptr = boost::shared_ptr<TransformationEstimationSymmetricPointToPlaneLLS<PointSource, PointTarget, Scalar> >

◆ Vector6

template<typename PointSource , typename PointTarget , typename Scalar = float>
using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Vector6 = Eigen::Matrix<Scalar, 6, 1>

Constructor & Destructor Documentation

◆ TransformationEstimationSymmetricPointToPlaneLLS()

template<typename PointSource , typename PointTarget , typename Scalar = float>
pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::TransformationEstimationSymmetricPointToPlaneLLS ( )
inline

◆ ~TransformationEstimationSymmetricPointToPlaneLLS()

template<typename PointSource , typename PointTarget , typename Scalar = float>
pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::~TransformationEstimationSymmetricPointToPlaneLLS ( )
inline

Member Function Documentation

◆ constructTransformationMatrix()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::constructTransformationMatrix ( const Vector6 parameters,
Matrix4 transformation_matrix 
) const
inlineprotected

Construct a 4 by 4 transformation matrix from the provided rotation and translation.

Parameters
[in](alpha,beta,gamma,tx,ty,tz)specifying rotation about the x, y, and z-axis and translation along the the x, y, and z-axis respectively
[out]transformation_matrixthe resultant transformation matrix

Definition at line 119 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation().

Referenced by pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation(), and pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::~TransformationEstimationSymmetricPointToPlaneLLS().

◆ estimateRigidTransformation() [1/5]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
Matrix4 transformation_matrix 
) const
inlineoverridevirtual

◆ estimateRigidTransformation() [2/5]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const std::vector< int > &  indices_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
Matrix4 transformation_matrix 
) const
inlineoverridevirtual

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters
[in]cloud_srcthe source point cloud dataset
[in]indices_srcthe vector of indices describing the points of interest in cloud_src
[in]cloud_tgtthe target point cloud dataset
[out]transformation_matrixthe resultant transformation matrix

Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.

Definition at line 64 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation(), and pcl::PointCloud< PointT >::points.

◆ estimateRigidTransformation() [3/5]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const std::vector< int > &  indices_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
const std::vector< int > &  indices_tgt,
Matrix4 transformation_matrix 
) const
inlineoverridevirtual

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters
[in]cloud_srcthe source point cloud dataset
[in]indices_srcthe vector of indices describing the points of interest in cloud_src
[in]cloud_tgtthe target point cloud dataset
[in]indices_tgtthe vector of indices describing the correspondences of the interest points from indices_src
[out]transformation_matrixthe resultant transformation matrix

Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.

Definition at line 85 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation().

◆ estimateRigidTransformation() [4/5]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
const pcl::Correspondences correspondences,
Matrix4 transformation_matrix 
) const
inlineoverridevirtual

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters
[in]cloud_srcthe source point cloud dataset
[in]cloud_tgtthe target point cloud dataset
[in]correspondencesthe vector of correspondences between source and target point cloud
[out]transformation_matrixthe resultant transformation matrix

Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.

Definition at line 106 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::constructTransformationMatrix().

◆ estimateRigidTransformation() [5/5]

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation ( ConstCloudIterator< PointSource > &  source_it,
ConstCloudIterator< PointTarget > &  target_it,
Matrix4 transformation_matrix 
) const
inlineprotected

Estimate a rigid rotation transformation between a source and a target.

Parameters
[in]source_itan iterator over the source point cloud dataset
[in]target_itan iterator over the target point cloud dataset
[out]transformation_matrixthe resultant transformation matrix

Definition at line 136 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::ConstCloudIterator< PointT >::isValid(), pcl::ConstCloudIterator< PointT >::reset(), and pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::setEnforceSameDirectionNormals().

◆ getEnforceSameDirectionNormals()

template<typename PointSource , typename PointTarget , typename Scalar >
bool pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::getEnforceSameDirectionNormals ( )
inline

◆ setEnforceSameDirectionNormals()

template<typename PointSource , typename PointTarget , typename Scalar >
void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::setEnforceSameDirectionNormals ( bool  enforce_same_direction_normals)
inline

Member Data Documentation

◆ enforce_same_direction_normals_

template<typename PointSource , typename PointTarget , typename Scalar = float>
bool pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::enforce_same_direction_normals_
protected

Whether or not to negate source and/or target normals such that they point in the same direction.

Definition at line 156 of file transformation_estimation_symmetric_point_to_plane_lls.h.


The documentation for this class was generated from the following files: