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

TransformationEstimationSVD implements SVD-based estimation of the transformation aligning the given correspondences. More...

#include <pcl/registration/transformation_estimation_svd.h>

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

Public Types

typedef boost::shared_ptr
< TransformationEstimationSVD
< PointSource, PointTarget,
Scalar > > 
Ptr
 
typedef boost::shared_ptr
< const
TransformationEstimationSVD
< PointSource, PointTarget,
Scalar > > 
ConstPtr
 
typedef
TransformationEstimation
< PointSource, PointTarget,
Scalar >::Matrix4 
Matrix4
 
- Public Types inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >
typedef Eigen::Matrix< Scalar, 4, 4 > Matrix4
 
typedef boost::shared_ptr
< TransformationEstimation
< PointSource, PointTarget,
Scalar > > 
Ptr
 
typedef boost::shared_ptr
< const
TransformationEstimation
< PointSource, PointTarget,
Scalar > > 
ConstPtr
 

Public Member Functions

 TransformationEstimationSVD (bool use_umeyama=true)
 Constructor. More...
 
virtual ~TransformationEstimationSVD ()
 
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 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
 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
 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
 Estimate a rigid rotation transformation between a source and a target point cloud using SVD. 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...
 
virtual void getTransformationFromCorrelation (const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &cloud_src_demean, const Eigen::Matrix< Scalar, 4, 1 > &centroid_src, const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &cloud_tgt_demean, const Eigen::Matrix< Scalar, 4, 1 > &centroid_tgt, Matrix4 &transformation_matrix) const
 Obtain a 4x4 rigid transformation matrix from a correlation matrix H = src * tgt'. More...
 

Protected Attributes

bool use_umeyama_
 

Detailed Description

template<typename PointSource, typename PointTarget, typename Scalar = float>
class pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >

TransformationEstimationSVD implements SVD-based estimation of the transformation aligning the given correspondences.

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
Dirk Holz, Radu B. Rusu

Definition at line 58 of file transformation_estimation_svd.h.

Member Typedef Documentation

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

Definition at line 62 of file transformation_estimation_svd.h.

template<typename PointSource, typename PointTarget, typename Scalar = float>
typedef TransformationEstimation<PointSource, PointTarget, Scalar>::Matrix4 pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >::Matrix4

Definition at line 64 of file transformation_estimation_svd.h.

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

Definition at line 61 of file transformation_estimation_svd.h.

Constructor & Destructor Documentation

template<typename PointSource, typename PointTarget, typename Scalar = float>
pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >::TransformationEstimationSVD ( bool  use_umeyama = true)
inline

Constructor.

Parameters
[in]use_umeyamaToggles whether or not to use 3rd party software

Definition at line 68 of file transformation_estimation_svd.h.

template<typename PointSource, typename PointTarget, typename Scalar = float>
virtual pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >::~TransformationEstimationSVD ( )
inlinevirtual

Definition at line 72 of file transformation_estimation_svd.h.

Member Function Documentation

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

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
[out]transformation_matrixthe resultant transformation matrix

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

Definition at line 47 of file transformation_estimation_svd.hpp.

References pcl::PointCloud< T >::points.

template<typename PointSource, typename PointTarget, typename Scalar >
void pcl::registration::TransformationEstimationSVD< 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
inlinevirtual

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 66 of file transformation_estimation_svd.hpp.

References pcl::PointCloud< T >::points.

template<typename PointSource, typename PointTarget, typename Scalar >
void pcl::registration::TransformationEstimationSVD< 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
inlinevirtual

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 interst 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_svd.hpp.

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

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 105 of file transformation_estimation_svd.hpp.

template<typename PointSource, typename PointTarget, typename Scalar >
void pcl::registration::TransformationEstimationSVD< 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 118 of file transformation_estimation_svd.hpp.

References pcl::compute3DCentroid(), pcl::demeanPointCloud(), pcl::ConstCloudIterator< PointT >::reset(), pcl::ConstCloudIterator< PointT >::size(), and pcl::umeyama().

template<typename PointSource , typename PointTarget , typename Scalar>
void pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >::getTransformationFromCorrelation ( const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &  cloud_src_demean,
const Eigen::Matrix< Scalar, 4, 1 > &  centroid_src,
const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &  cloud_tgt_demean,
const Eigen::Matrix< Scalar, 4, 1 > &  centroid_tgt,
Matrix4 transformation_matrix 
) const
protectedvirtual

Obtain a 4x4 rigid transformation matrix from a correlation matrix H = src * tgt'.

Parameters
[in]cloud_src_demeanthe input source cloud, demeaned, in Eigen format
[in]centroid_srcthe input source centroid, in Eigen format
[in]cloud_tgt_demeanthe input target cloud, demeaned, in Eigen format
[in]centroid_tgtthe input target cloud, in Eigen format
[out]transformation_matrixthe resultant 4x4 rigid transformation matrix

Reimplemented in pcl::registration::TransformationEstimationSVDScale< PointSource, PointTarget, Scalar >.

Definition at line 172 of file transformation_estimation_svd.hpp.

Member Data Documentation

template<typename PointSource, typename PointTarget, typename Scalar = float>
bool pcl::registration::TransformationEstimationSVD< PointSource, PointTarget, Scalar >::use_umeyama_
protected

Definition at line 153 of file transformation_estimation_svd.h.


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