point_cloud_library / 1.12.1 / classpcl_1_1registration_1_1_transformation_estimation_symmetric_point_to_plane_l_l_s.html /

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>

Public Types

using Ptr = shared_ptr< TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > >
using ConstPtr = 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, float >
using Matrix4 = Eigen::Matrix< float, 4, 4 >
using Ptr = shared_ptr< TransformationEstimation< PointSource, PointTarget, float > >
using ConstPtr = shared_ptr< const TransformationEstimation< PointSource, PointTarget, float > >

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 pcl::Indices &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 pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Indices &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, float >
TransformationEstimation ()
virtual ~TransformationEstimation ()
virtual void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const=0
Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const=0
Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Indices &indices_tgt, Matrix4 &transformation_matrix) const=0
Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Correspondences &correspondences, Matrix4 &transformation_matrix) const=0
Estimate a rigid rotation transformation between a source and a target point cloud. More...

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 59 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 = 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 = 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] parameters (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_matrix the resultant transformation matrix

Definition at line 131 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

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::Indices & indices_src,
const pcl::PointCloud< PointTarget > & cloud_tgt,
const pcl::Indices & indices_tgt,
Matrix4 & transformation_matrix
) const
inlineoverride

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

Parameters
[in] cloud_src the source point cloud dataset
[in] indices_src the vector of indices describing the points of interest in cloud_src
[in] cloud_tgt the target point cloud dataset
[in] indices_tgt the vector of indices describing the correspondences of the interest points from indices_src
[out] transformation_matrix the resultant transformation matrix

Definition at line 94 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

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 pcl::Indices & indices_src,
const pcl::PointCloud< PointTarget > & cloud_tgt,
Matrix4 & transformation_matrix
) const
inlineoverride

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

Parameters
[in] cloud_src the source point cloud dataset
[in] indices_src the vector of indices describing the points of interest in cloud_src
[in] cloud_tgt the target point cloud dataset
[out] transformation_matrix the resultant transformation matrix

Definition at line 71 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::PointCloud< PointT >::size().

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 pcl::PointCloud< PointTarget > & cloud_tgt,
const pcl::Correspondences & correspondences,
Matrix4 & transformation_matrix
) const
inlineoverride

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

Parameters
[in] cloud_src the source point cloud dataset
[in] cloud_tgt the target point cloud dataset
[in] correspondences the vector of correspondences between source and target point cloud
[out] transformation_matrix the resultant transformation matrix

Definition at line 118 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

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,
Matrix4 & transformation_matrix
) const
inlineoverride

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

Parameters
[in] cloud_src the source point cloud dataset
[in] cloud_tgt the target point cloud dataset
[out] transformation_matrix the resultant transformation matrix

Definition at line 49 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::PointCloud< PointT >::size().

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_it an iterator over the source point cloud dataset
[in] target_it an iterator over the target point cloud dataset
[out] transformation_matrix the resultant transformation matrix

Definition at line 152 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::ConstCloudIterator< PointT >::isValid(), and pcl::ConstCloudIterator< PointT >::reset().

getEnforceSameDirectionNormals()

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

Obtain whether source or target normals are negated on a per-point basis such that they point in the same direction or not.

Definition at line 214 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

setEnforceSameDirectionNormals()

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

Set whether or not to negate source or target normals on a per-point basis such that they point in the same direction.

Parameters
[in] enforce_same_direction_normals whether to negate source or target normals on a per-point basis such that they point in the same direction.

Definition at line 206 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

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 164 of file transformation_estimation_symmetric_point_to_plane_lls.h.


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1registration_1_1_transformation_estimation_symmetric_point_to_plane_l_l_s.html