Point Cloud Library (PCL)  1.14.0-dev
List of all members | Public Member Functions | Protected Attributes
pcl::ndt2d::NormalDist< PointT > Class Template Reference

A normal distribution estimation class. More...

#include <pcl/registration/impl/ndt_2d.hpp>

Public Member Functions

 NormalDist ()=default
 
void addIdx (std::size_t i)
 Store a point index to use later for estimating distribution parameters. More...
 
void estimateParams (const PointCloud &cloud, double min_covar_eigvalue_mult=0.001)
 Estimate the normal distribution parameters given the point indices provided. More...
 
ValueAndDerivatives< 3, double > test (const PointT &transformed_pt, const double &cos_theta, const double &sin_theta) const
 Return the 'score' (denormalised likelihood) and derivatives of score of the point p given this distribution. More...
 

Protected Attributes

const std::size_t min_n_ {3}
 
std::size_t n_ {0}
 
std::vector< std::size_t > pt_indices_
 
Eigen::Vector2d mean_
 
Eigen::Matrix2d covar_inv_
 

Detailed Description

template<typename PointT>
class pcl::ndt2d::NormalDist< PointT >

A normal distribution estimation class.

First the indices of of the points from a point cloud that should be modelled by the distribution are added with addIdx (...).

Then estimateParams (...) uses the stored point indices to estimate the parameters of a normal distribution, and discards the stored indices.

Finally the distriubution, and its derivatives, may be evaluated at any point using test (...).

Definition at line 98 of file ndt_2d.hpp.

Constructor & Destructor Documentation

◆ NormalDist()

template<typename PointT >
pcl::ndt2d::NormalDist< PointT >::NormalDist ( )
default

Member Function Documentation

◆ addIdx()

template<typename PointT >
void pcl::ndt2d::NormalDist< PointT >::addIdx ( std::size_t  i)
inline

Store a point index to use later for estimating distribution parameters.

Parameters
[in]iPoint index to store

Definition at line 108 of file ndt_2d.hpp.

References pcl::ndt2d::NormalDist< PointT >::pt_indices_.

◆ estimateParams()

template<typename PointT >
void pcl::ndt2d::NormalDist< PointT >::estimateParams ( const PointCloud cloud,
double  min_covar_eigvalue_mult = 0.001 
)
inline

Estimate the normal distribution parameters given the point indices provided.

Memory of point indices is cleared.

Parameters
[in]cloudPoint cloud corresponding to indices passed to addIdx.
[in]min_covar_eigvalue_multSet the smallest eigenvalue to this times the largest.

Definition at line 119 of file ndt_2d.hpp.

References pcl::ndt2d::NormalDist< PointT >::covar_inv_, pcl::ndt2d::NormalDist< PointT >::mean_, pcl::ndt2d::NormalDist< PointT >::min_n_, pcl::ndt2d::NormalDist< PointT >::n_, and pcl::ndt2d::NormalDist< PointT >::pt_indices_.

◆ test()

template<typename PointT >
ValueAndDerivatives<3, double> pcl::ndt2d::NormalDist< PointT >::test ( const PointT transformed_pt,
const double &  cos_theta,
const double &  sin_theta 
) const
inline

Return the 'score' (denormalised likelihood) and derivatives of score of the point p given this distribution.

Parameters
[in]transformed_ptLocation to evaluate at.
[in]cos_thetasin(theta) of the current rotation angle of rigid transformation: to avoid repeated evaluation
[in]sin_thetacos(theta) of the current rotation angle of rigid transformation: to avoid repeated evaluation estimateParams must have been called after at least three points were provided, or this will return zero.

Definition at line 166 of file ndt_2d.hpp.

References pcl::ndt2d::NormalDist< PointT >::covar_inv_, pcl::ndt2d::ValueAndDerivatives< N, T >::grad, pcl::ndt2d::ValueAndDerivatives< N, T >::hessian, pcl::ndt2d::NormalDist< PointT >::mean_, pcl::ndt2d::NormalDist< PointT >::min_n_, pcl::ndt2d::NormalDist< PointT >::n_, pcl::ndt2d::ValueAndDerivatives< N, T >::value, and pcl::ndt2d::ValueAndDerivatives< N, T >::Zero().

Referenced by pcl::ndt2d::NDTSingleGrid< PointT >::test().

Member Data Documentation

◆ covar_inv_

template<typename PointT >
Eigen::Matrix2d pcl::ndt2d::NormalDist< PointT >::covar_inv_
protected

◆ mean_

template<typename PointT >
Eigen::Vector2d pcl::ndt2d::NormalDist< PointT >::mean_
protected

◆ min_n_

template<typename PointT >
const std::size_t pcl::ndt2d::NormalDist< PointT >::min_n_ {3}
protected

◆ n_

template<typename PointT >
std::size_t pcl::ndt2d::NormalDist< PointT >::n_ {0}
protected

◆ pt_indices_

template<typename PointT >
std::vector<std::size_t> pcl::ndt2d::NormalDist< PointT >::pt_indices_
protected

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