|
Point Cloud Library (PCL) 1.15.1-dev
|
TransformationEstimationPointToPointRobust implements SVD-based estimation of the transformation aligning the given correspondences for minimizing the Welsch function instead of L2-norm, For additional details, see "Fast and Robust Iterative Closest Point", Juyong Zhang, Yuxin Yao, Bailin Deng, 2021. More...
#include <pcl/registration/transformation_estimation_point_to_point_robust.h>
Inheritance diagram for pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >:
Collaboration diagram for pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >:Public Types | |
| using | Ptr = shared_ptr< TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar > > |
| using | ConstPtr = shared_ptr< const TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar > > |
| using | Matrix4 = typename TransformationEstimation< PointSource, PointTarget, Scalar >::Matrix4 |
Public Types inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar > | |
| using | Matrix4 = Eigen::Matrix< Scalar, 4, 4 > |
| using | Ptr = shared_ptr< TransformationEstimation< PointSource, PointTarget, Scalar > > |
| using | ConstPtr = shared_ptr< const TransformationEstimation< PointSource, PointTarget, Scalar > > |
Public Member Functions | |
| TransformationEstimationPointToPointRobust ()=default | |
| Constructor. | |
| ~TransformationEstimationPointToPointRobust () override=default | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| void | setSigma (Scalar sigma) |
| Set the Welsch scale parameter used for robust reweighting. | |
Public Member Functions inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar > | |
| TransformationEstimation ()=default | |
| virtual | ~TransformationEstimation ()=default |
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. | |
| virtual void | getTransformationFromCorrelation (const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &cloud_src_demean, const Eigen::Matrix< Scalar, 4, 1 > ¢roid_src, const Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &cloud_tgt_demean, const Eigen::Matrix< Scalar, 4, 1 > ¢roid_tgt, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &weights, Matrix4 &transformation_matrix) const |
| Obtain a 4x4 rigid transformation matrix from a correlation matrix H = src. | |
| template<typename PointT > | |
| unsigned int | computeWeighted3DCentroid (ConstCloudIterator< PointT > &cloud_iterator, const Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &weights, Eigen::Matrix< Scalar, 4, 1 > ¢roid) const |
| Compute the 3D (X-Y-Z) centroid of a set of weighted points and return it as a 3D vector. | |
Protected Attributes | |
| Scalar | sigma_ = -1 |
| parameter for the Welsch function | |
TransformationEstimationPointToPointRobust implements SVD-based estimation of the transformation aligning the given correspondences for minimizing the Welsch function instead of L2-norm, For additional details, see "Fast and Robust Iterative Closest Point", Juyong Zhang, Yuxin Yao, Bailin Deng, 2021.
Definition at line 29 of file transformation_estimation_point_to_point_robust.h.
| using pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >::ConstPtr = shared_ptr<const TransformationEstimationPointToPointRobust<PointSource, PointTarget, Scalar> > |
Definition at line 34 of file transformation_estimation_point_to_point_robust.h.
| using pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >::Matrix4 = typename TransformationEstimation<PointSource, PointTarget, Scalar>::Matrix4 |
Definition at line 39 of file transformation_estimation_point_to_point_robust.h.
| using pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >::Ptr = shared_ptr< TransformationEstimationPointToPointRobust<PointSource, PointTarget, Scalar> > |
Definition at line 32 of file transformation_estimation_point_to_point_robust.h.
|
default |
Constructor.
|
overridedefault |
|
inlineoverridevirtual |
Estimate a rigid rotation transformation between a source and a target point cloud using SVD.
| [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 |
Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.
Definition at line 68 of file transformation_estimation_point_to_point_robust.hpp.
|
inlineoverridevirtual |
Estimate a rigid rotation transformation between a source and a target point cloud using SVD.
| [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 |
Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.
Definition at line 46 of file transformation_estimation_point_to_point_robust.hpp.
References pcl::PointCloud< PointT >::size().
|
overridevirtual |
Estimate a rigid rotation transformation between a source and a target point cloud using SVD.
| [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 |
Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.
Definition at line 91 of file transformation_estimation_point_to_point_robust.hpp.
|
inlineoverridevirtual |
Estimate a rigid rotation transformation between a source and a target point cloud using SVD.
| [in] | cloud_src | the source point cloud dataset |
| [in] | cloud_tgt | the target point cloud dataset |
| [out] | transformation_matrix | the resultant transformation matrix |
Implements pcl::registration::TransformationEstimation< PointSource, PointTarget, Scalar >.
Definition at line 24 of file transformation_estimation_point_to_point_robust.hpp.
References pcl::PointCloud< PointT >::size().
|
inlineprotected |
Estimate a rigid rotation transformation between a source and a target.
| [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 104 of file transformation_estimation_point_to_point_robust.hpp.
References pcl::demeanPointCloud(), pcl::ConstCloudIterator< PointT >::reset(), and pcl::ConstCloudIterator< PointT >::size().
|
protectedvirtual |
Obtain a 4x4 rigid transformation matrix from a correlation matrix H = src.
| [in] | cloud_src_demean | the input source cloud, demeaned, in Eigen format |
| [in] | centroid_src | the input source centroid, in Eigen format |
| [in] | cloud_tgt_demean | the input target cloud, demeaned, in Eigen format |
| [in] | centroid_tgt | the input target cloud, in Eigen format |
| [out] | transformation_matrix | the resultant 4x4 rigid transformation matrix |
Definition at line 175 of file transformation_estimation_point_to_point_robust.hpp.
References pcl::console::isVerbosityLevelEnabled(), and pcl::console::L_DEBUG.
|
inline |
Set the Welsch scale parameter used for robust reweighting.
If set to a positive value, this exact sigma is used. If set to a negative value (default), sigma is estimated automatically from current correspondences. Smaller positive values increase outlier suppression, larger values make the estimator closer to standard least-squares behavior.
Definition at line 106 of file transformation_estimation_point_to_point_robust.h.
References pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >::sigma_.
|
protected |
parameter for the Welsch function
Definition at line 157 of file transformation_estimation_point_to_point_robust.h.
Referenced by pcl::registration::TransformationEstimationPointToPointRobust< PointSource, PointTarget, Scalar >::setSigma().