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

TransformationEstimationPointToPlaneWeighted uses Levenberg Marquardt optimization to find the transformation that minimizes the point-to-plane distance between the given correspondences. More...

#include <pcl/registration/transformation_estimation_point_to_plane_weighted.h>

+ Inheritance diagram for pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >:
+ Collaboration diagram for pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >:

Classes

struct  Functor
 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) depending on the chosen _Scalar. More...
 
struct  OptimizationFunctor
 
struct  OptimizationFunctorWithIndices
 

Public Types

using Ptr = shared_ptr< TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > >
 
using ConstPtr = shared_ptr< const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > >
 
using VectorX = Eigen::Matrix< MatScalar, Eigen::Dynamic, 1 >
 
using Vector4 = Eigen::Matrix< MatScalar, 4, 1 >
 
using Matrix4 = typename TransformationEstimation< PointSource, PointTarget, MatScalar >::Matrix4
 
- Public Types inherited from pcl::registration::TransformationEstimationPointToPlane< PointSource, PointTarget, float >
using Ptr = shared_ptr< TransformationEstimationPointToPlane< PointSource, PointTarget, float > >
 
using ConstPtr = shared_ptr< const TransformationEstimationPointToPlane< PointSource, PointTarget, float > >
 
using PointCloudSource = pcl::PointCloud< PointSource >
 
using PointCloudSourcePtr = typename PointCloudSource::Ptr
 
using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
 
using PointCloudTarget = pcl::PointCloud< PointTarget >
 
using PointIndicesPtr = PointIndices::Ptr
 
using PointIndicesConstPtr = PointIndices::ConstPtr
 
using Vector4 = Eigen::Matrix< float, 4, 1 >
 
- Public Types inherited from pcl::registration::TransformationEstimationLM< PointSource, PointTarget, float >
using Ptr = shared_ptr< TransformationEstimationLM< PointSource, PointTarget, float > >
 
using ConstPtr = shared_ptr< const TransformationEstimationLM< PointSource, PointTarget, float > >
 
using VectorX = Eigen::Matrix< float, Eigen::Dynamic, 1 >
 
using Vector4 = Eigen::Matrix< float, 4, 1 >
 
using Matrix4 = typename TransformationEstimation< PointSource, PointTarget, float >::Matrix4
 
- 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

 TransformationEstimationPointToPlaneWeighted ()
 Constructor. More...
 
 TransformationEstimationPointToPlaneWeighted (const TransformationEstimationPointToPlaneWeighted &src)
 Copy constructor. More...
 
TransformationEstimationPointToPlaneWeightedoperator= (const TransformationEstimationPointToPlaneWeighted &src)
 Copy operator. More...
 
virtual ~TransformationEstimationPointToPlaneWeighted ()=default
 Destructor. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const
 Estimate a rigid rotation transformation between a source and a target point cloud using LM. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const
 Estimate a rigid rotation transformation between a source and a target point cloud using LM. 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
 Estimate a rigid rotation transformation between a source and a target point cloud using LM. More...
 
void estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Correspondences &correspondences, Matrix4 &transformation_matrix) const
 Estimate a rigid rotation transformation between a source and a target point cloud using LM. More...
 
void setWeights (const std::vector< double > &weights)
 
void setUseCorrespondenceWeights (bool use_correspondence_weights)
 use the weights given in the pcl::CorrespondencesPtr for one of the estimateTransformation (...) methods More...
 
void setWarpFunction (const typename WarpPointRigid< PointSource, PointTarget, MatScalar >::Ptr &warp_fcn)
 Set the function we use to warp points. More...
 
- Public Member Functions inherited from pcl::registration::TransformationEstimationPointToPlane< PointSource, PointTarget, float >
 TransformationEstimationPointToPlane ()=default
 
 ~TransformationEstimationPointToPlane () override=default
 
- Public Member Functions inherited from pcl::registration::TransformationEstimationLM< PointSource, PointTarget, float >
 TransformationEstimationLM ()
 Constructor. More...
 
 TransformationEstimationLM (const TransformationEstimationLM &src)
 Copy constructor. More...
 
TransformationEstimationLMoperator= (const TransformationEstimationLM &src)
 Copy operator. More...
 
 ~TransformationEstimationLM () override=default
 Destructor. More...
 
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 LM. 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 LM. 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 LM. 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 LM. More...
 
void setWarpFunction (const typename WarpPointRigid< PointSource, PointTarget, float >::Ptr &warp_fcn)
 Set the function we use to warp points. More...
 
- Public Member Functions inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, float >
 TransformationEstimation ()=default
 
virtual ~TransformationEstimation ()=default
 
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 Attributes

bool use_correspondence_weights_ {true}
 
std::vector< double > correspondence_weights_ {}
 
const PointCloudSourcetmp_src_ {nullptr}
 Temporary pointer to the source dataset. More...
 
const PointCloudTargettmp_tgt_ {nullptr}
 Temporary pointer to the target dataset. More...
 
const pcl::Indicestmp_idx_src_ {nullptr}
 Temporary pointer to the source dataset indices. More...
 
const pcl::Indicestmp_idx_tgt_ {nullptr}
 Temporary pointer to the target dataset indices. More...
 
pcl::registration::WarpPointRigid< PointSource, PointTarget, MatScalar >::Ptr warp_point_
 The parameterized function used to warp the source to the target. More...
 
- Protected Attributes inherited from pcl::registration::TransformationEstimationLM< PointSource, PointTarget, float >
const PointCloudSourcetmp_src_
 Temporary pointer to the source dataset. More...
 
const PointCloudTargettmp_tgt_
 Temporary pointer to the target dataset. More...
 
const pcl::Indicestmp_idx_src_
 Temporary pointer to the source dataset indices. More...
 
const pcl::Indicestmp_idx_tgt_
 Temporary pointer to the target dataset indices. More...
 
pcl::registration::WarpPointRigid< PointSource, PointTarget, float >::Ptr warp_point_
 The parameterized function used to warp the source to the target. More...
 

Additional Inherited Members

- Protected Member Functions inherited from pcl::registration::TransformationEstimationPointToPlane< PointSource, PointTarget, float >
float computeDistance (const PointSource &p_src, const PointTarget &p_tgt) const override
 Compute the distance between a source point and its corresponding target point. More...
 
float computeDistance (const Vector4 &p_src, const PointTarget &p_tgt) const override
 

Detailed Description

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

In addition to the TransformationEstimationPointToPlane class, this version takes per-correspondence weights and optimizes accordingly.

Author
Alexandru-Eugen Ichim

Definition at line 59 of file transformation_estimation_point_to_plane_weighted.h.

Member Typedef Documentation

◆ ConstPtr

template<typename PointSource , typename PointTarget , typename MatScalar = float>
using pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::ConstPtr = shared_ptr<const TransformationEstimationPointToPlaneWeighted<PointSource, PointTarget, MatScalar> >

◆ Matrix4

template<typename PointSource , typename PointTarget , typename MatScalar = float>
using pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::Matrix4 = typename TransformationEstimation<PointSource, PointTarget, MatScalar>::Matrix4

◆ Ptr

template<typename PointSource , typename PointTarget , typename MatScalar = float>
using pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::Ptr = shared_ptr<TransformationEstimationPointToPlaneWeighted<PointSource, PointTarget, MatScalar> >

◆ Vector4

template<typename PointSource , typename PointTarget , typename MatScalar = float>
using pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::Vector4 = Eigen::Matrix<MatScalar, 4, 1>

◆ VectorX

template<typename PointSource , typename PointTarget , typename MatScalar = float>
using pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::VectorX = Eigen::Matrix<MatScalar, Eigen::Dynamic, 1>

Constructor & Destructor Documentation

◆ TransformationEstimationPointToPlaneWeighted() [1/2]

template<typename PointSource , typename PointTarget , typename MatScalar >
pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::TransformationEstimationPointToPlaneWeighted

Constructor.

Definition at line 53 of file transformation_estimation_point_to_plane_weighted.hpp.

◆ TransformationEstimationPointToPlaneWeighted() [2/2]

template<typename PointSource , typename PointTarget , typename MatScalar = float>
pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::TransformationEstimationPointToPlaneWeighted ( const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > &  src)
inline

Copy constructor.

Parameters
[in]srcthe TransformationEstimationPointToPlaneWeighted object to copy into this

Definition at line 91 of file transformation_estimation_point_to_plane_weighted.h.

◆ ~TransformationEstimationPointToPlaneWeighted()

template<typename PointSource , typename PointTarget , typename MatScalar = float>
virtual pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::~TransformationEstimationPointToPlaneWeighted ( )
virtualdefault

Destructor.

Member Function Documentation

◆ estimateRigidTransformation() [1/4]

template<typename PointSource , typename PointTarget , typename MatScalar >
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::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
inline

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

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
Note
Uses the weights given by setWeights.

Definition at line 175 of file transformation_estimation_point_to_plane_weighted.hpp.

◆ estimateRigidTransformation() [2/4]

template<typename PointSource , typename PointTarget , typename MatScalar >
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const pcl::Indices indices_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
Matrix4 transformation_matrix 
) const
inline

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

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
Note
Uses the weights given by setWeights.

Definition at line 134 of file transformation_estimation_point_to_plane_weighted.hpp.

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

◆ estimateRigidTransformation() [3/4]

template<typename PointSource , typename PointTarget , typename MatScalar >
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
const pcl::Correspondences correspondences,
Matrix4 transformation_matrix 
) const
inline

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

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
Note
Uses the weights given by setWeights.

Definition at line 250 of file transformation_estimation_point_to_plane_weighted.hpp.

◆ estimateRigidTransformation() [4/4]

template<typename PointSource , typename PointTarget , typename MatScalar >
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::estimateRigidTransformation ( const pcl::PointCloud< PointSource > &  cloud_src,
const pcl::PointCloud< PointTarget > &  cloud_tgt,
Matrix4 transformation_matrix 
) const
inline

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

Parameters
[in]cloud_srcthe source point cloud dataset
[in]cloud_tgtthe target point cloud dataset
[out]transformation_matrixthe resultant transformation matrix
Note
Uses the weights given by setWeights.

Definition at line 63 of file transformation_estimation_point_to_plane_weighted.hpp.

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

◆ operator=()

template<typename PointSource , typename PointTarget , typename MatScalar = float>
TransformationEstimationPointToPlaneWeighted& pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::operator= ( const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > &  src)
inline

◆ setUseCorrespondenceWeights()

template<typename PointSource , typename PointTarget , typename MatScalar = float>
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::setUseCorrespondenceWeights ( bool  use_correspondence_weights)
inline

◆ setWarpFunction()

template<typename PointSource , typename PointTarget , typename MatScalar = float>
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::setWarpFunction ( const typename WarpPointRigid< PointSource, PointTarget, MatScalar >::Ptr warp_fcn)
inline

Set the function we use to warp points.

Defaults to rigid 6D warp.

Parameters
[in]warp_fcna shared pointer to an object that warps points

Definition at line 194 of file transformation_estimation_point_to_plane_weighted.h.

References pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::warp_point_.

◆ setWeights()

template<typename PointSource , typename PointTarget , typename MatScalar = float>
void pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::setWeights ( const std::vector< double > &  weights)
inline

Member Data Documentation

◆ correspondence_weights_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
std::vector<double> pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::correspondence_weights_ {}
mutableprotected

◆ tmp_idx_src_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
const pcl::Indices* pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::tmp_idx_src_ {nullptr}
mutableprotected

◆ tmp_idx_tgt_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
const pcl::Indices* pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::tmp_idx_tgt_ {nullptr}
mutableprotected

◆ tmp_src_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
const PointCloudSource* pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::tmp_src_ {nullptr}
mutableprotected

◆ tmp_tgt_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
const PointCloudTarget* pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::tmp_tgt_ {nullptr}
mutableprotected

◆ use_correspondence_weights_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
bool pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::use_correspondence_weights_ {true}
protected

◆ warp_point_

template<typename PointSource , typename PointTarget , typename MatScalar = float>
pcl::registration::WarpPointRigid<PointSource, PointTarget, MatScalar>::Ptr pcl::registration::TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar >::warp_point_
protected

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