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

Principal Component analysis (PCA) class. More...

#include <pcl/common/pca.h>

+ Inheritance diagram for pcl::PCA< PointT >:
+ Collaboration diagram for pcl::PCA< PointT >:

Public Types

enum  FLAG { increase , preserve }
 Updating method flag. More...
 
using Base = pcl::PCLBase< PointT >
 
using PointCloud = typename Base::PointCloud
 
using PointCloudPtr = typename Base::PointCloudPtr
 
using PointCloudConstPtr = typename Base::PointCloudConstPtr
 
using PointIndicesPtr = typename Base::PointIndicesPtr
 
using PointIndicesConstPtr = typename Base::PointIndicesConstPtr
 
- Public Types inherited from pcl::PCLBase< PointT >
using PointCloud = pcl::PointCloud< PointT >
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
using PointIndicesPtr = PointIndices::Ptr
 
using PointIndicesConstPtr = PointIndices::ConstPtr
 

Public Member Functions

 PCA (bool basis_only=false)
 Default Constructor. More...
 
 PCA (PCA const &pca)
 Copy Constructor. More...
 
PCAoperator= (PCA const &pca)
 Assignment operator. More...
 
void setInputCloud (const PointCloudConstPtr &cloud) override
 Provide a pointer to the input dataset. More...
 
void setIndices (const IndicesPtr &indices) override
 Provide a pointer to the vector of indices that represents the input data. More...
 
void setIndices (const IndicesConstPtr &indices) override
 Provide a pointer to the vector of indices that represents the input data. More...
 
void setIndices (const PointIndicesConstPtr &indices) override
 Provide a pointer to the vector of indices that represents the input data. More...
 
void setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols) override
 Set the indices for the points laying within an interest region of the point cloud. More...
 
Eigen::Vector4f & getMean ()
 Mean accessor. More...
 
Eigen::Matrix3f & getEigenVectors ()
 Eigen Vectors accessor. More...
 
Eigen::Vector3f & getEigenValues ()
 Eigen Values accessor. More...
 
Eigen::MatrixXf & getCoefficients ()
 Coefficients accessor. More...
 
void update (const PointT &input, FLAG flag=preserve)
 update PCA with a new point More...
 
void project (const PointT &input, PointT &projection)
 Project point on the eigenspace. More...
 
void project (const PointCloud &input, PointCloud &projection)
 Project cloud on the eigenspace. More...
 
void reconstruct (const PointT &projection, PointT &input)
 Reconstruct point from its projection. More...
 
void reconstruct (const PointCloud &projection, PointCloud &input)
 Reconstruct cloud from its projection. More...
 
bool initCompute ()
 This method should get called before starting the actual computation. More...
 
virtual void setInputCloud (const PointCloudConstPtr &cloud)
 Provide a pointer to the input dataset. More...
 
- Public Member Functions inherited from pcl::PCLBase< PointT >
 PCLBase ()
 Empty constructor. More...
 
 PCLBase (const PCLBase &base)
 Copy constructor. More...
 
virtual ~PCLBase ()=default
 Destructor. More...
 
PointCloudConstPtr const getInputCloud () const
 Get a pointer to the input point cloud dataset. More...
 
IndicesPtr getIndices ()
 Get a pointer to the vector of indices used. More...
 
IndicesConstPtr const getIndices () const
 Get a pointer to the vector of indices used. More...
 
const PointToperator[] (std::size_t pos) const
 Override PointCloud operator[] to shorten code. More...
 

Public Attributes

PointCloudConstPtr input_
 The input point cloud dataset. More...
 
IndicesPtr indices_
 A pointer to the vector of point indices to use. More...
 

Additional Inherited Members

- Protected Member Functions inherited from pcl::PCLBase< PointT >
bool initCompute ()
 This method should get called before starting the actual computation. More...
 
bool deinitCompute ()
 This method should get called after finishing the actual computation. More...
 
- Protected Attributes inherited from pcl::PCLBase< PointT >
PointCloudConstPtr input_
 The input point cloud dataset. More...
 
IndicesPtr indices_
 A pointer to the vector of point indices to use. More...
 
bool use_indices_
 Set to true if point indices are used. More...
 
bool fake_indices_
 If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More...
 

Detailed Description

template<typename PointT>
class pcl::PCA< PointT >

Principal Component analysis (PCA) class.


Principal components are extracted by singular values decomposition on the covariance matrix of the centered input cloud. Available data after pca computation are:

Author
Nizar Sallem

Definition at line 61 of file pca.h.

Member Typedef Documentation

◆ Base

template<typename PointT >
using pcl::PCA< PointT >::Base = pcl::PCLBase<PointT>

Definition at line 64 of file pca.h.

◆ PointCloud

template<typename PointT >
using pcl::PCA< PointT >::PointCloud = typename Base::PointCloud

Definition at line 65 of file pca.h.

◆ PointCloudConstPtr

template<typename PointT >
using pcl::PCA< PointT >::PointCloudConstPtr = typename Base::PointCloudConstPtr

Definition at line 67 of file pca.h.

◆ PointCloudPtr

template<typename PointT >
using pcl::PCA< PointT >::PointCloudPtr = typename Base::PointCloudPtr

Definition at line 66 of file pca.h.

◆ PointIndicesConstPtr

template<typename PointT >
using pcl::PCA< PointT >::PointIndicesConstPtr = typename Base::PointIndicesConstPtr

Definition at line 69 of file pca.h.

◆ PointIndicesPtr

template<typename PointT >
using pcl::PCA< PointT >::PointIndicesPtr = typename Base::PointIndicesPtr

Definition at line 68 of file pca.h.

Member Enumeration Documentation

◆ FLAG

template<typename PointT >
enum pcl::PCA::FLAG

Updating method flag.

Enumerator
increase 

keep the new basis vectors if possible

preserve 

preserve subspace dimension

Definition at line 77 of file pca.h.

Constructor & Destructor Documentation

◆ PCA() [1/2]

template<typename PointT >
pcl::PCA< PointT >::PCA ( bool  basis_only = false)
inline

Default Constructor.

Parameters
basis_onlyflag to compute only the PCA basis

Definition at line 88 of file pca.h.

◆ PCA() [2/2]

template<typename PointT >
pcl::PCA< PointT >::PCA ( PCA< PointT > const &  pca)
inline

Copy Constructor.

Parameters
[in]pcaPCA object

Definition at line 96 of file pca.h.

Member Function Documentation

◆ getCoefficients()

template<typename PointT >
Eigen::MatrixXf& pcl::PCA< PointT >::getCoefficients ( )
inline

Coefficients accessor.

Exceptions
InitFailedException

Definition at line 221 of file pca.h.

◆ getEigenValues()

template<typename PointT >
Eigen::Vector3f& pcl::PCA< PointT >::getEigenValues ( )
inline

Eigen Values accessor.

Exceptions
InitFailedException

Definition at line 207 of file pca.h.

◆ getEigenVectors()

template<typename PointT >
Eigen::Matrix3f& pcl::PCA< PointT >::getEigenVectors ( )
inline

Eigen Vectors accessor.

Returns
Column ordered eigenvectors, representing the eigenspace cartesian basis (right-handed coordinate system).
Exceptions
InitFailedException

Definition at line 193 of file pca.h.

◆ getMean()

template<typename PointT >
Eigen::Vector4f& pcl::PCA< PointT >::getMean ( )
inline

Mean accessor.

Exceptions
InitFailedException

Definition at line 178 of file pca.h.

◆ initCompute()

template<typename PointT >
bool pcl::PCLBase< PointT >::initCompute

This method should get called before starting the actual computation.

Internally, initCompute() does the following:

  • checks if an input dataset is given, and returns false otherwise
  • checks whether a set of input indices has been given. Returns true if yes.
  • if no input indices have been given, a fake set is created, which will be used until:
    • either a new set is given via setIndices(), or
    • a new cloud is given that has a different set of points. This will trigger an update on the set of fake indices

Definition at line 168 of file pcl_base.hpp.

◆ operator=()

template<typename PointT >
PCA& pcl::PCA< PointT >::operator= ( PCA< PointT > const &  pca)
inline

Assignment operator.

Parameters
[in]pcaPCA object

Definition at line 110 of file pca.h.

◆ project() [1/2]

template<typename PointT >
void pcl::PCA< PointT >::project ( const PointCloud input,
PointCloud projection 
)
inline

Project cloud on the eigenspace.

Parameters
[in]inputcloud from original dataset
[out]projectionthe cloud in eigen vectors space
Exceptions
InitFailedException

Definition at line 179 of file pca.hpp.

References pcl::geometry::project().

◆ project() [2/2]

template<typename PointT >
void pcl::PCA< PointT >::project ( const PointT input,
PointT projection 
)
inline

Project point on the eigenspace.

Parameters
[in]inputpoint from original dataset
[out]projectionthe point in eigen vectors space
Exceptions
InitFailedException

Definition at line 166 of file pca.hpp.

◆ reconstruct() [1/2]

template<typename PointT >
void pcl::PCA< PointT >::reconstruct ( const PointCloud projection,
PointCloud input 
)
inline

Reconstruct cloud from its projection.

Parameters
[in]projectioncloud from eigenvector space
[out]inputreconstructed cloud
Exceptions
InitFailedException

Definition at line 221 of file pca.hpp.

◆ reconstruct() [2/2]

template<typename PointT >
void pcl::PCA< PointT >::reconstruct ( const PointT projection,
PointT input 
)
inline

Reconstruct point from its projection.

Parameters
[in]projectionpoint from eigenvector space
[out]inputreconstructed point
Exceptions
InitFailedException

Definition at line 208 of file pca.hpp.

◆ setIndices() [1/4]

template<typename PointT >
void pcl::PCA< PointT >::setIndices ( const IndicesConstPtr indices)
inlineoverridevirtual

Provide a pointer to the vector of indices that represents the input data.

Parameters
[in]indicesa pointer to the indices that represent the input data.

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 143 of file pca.h.

References pcl::PCLBase< PointT >::setIndices().

◆ setIndices() [2/4]

template<typename PointT >
void pcl::PCA< PointT >::setIndices ( const IndicesPtr indices)
inlineoverridevirtual

Provide a pointer to the vector of indices that represents the input data.

Parameters
[in]indicesa pointer to the indices that represent the input data.

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 133 of file pca.h.

References pcl::PCLBase< PointT >::setIndices().

◆ setIndices() [3/4]

template<typename PointT >
void pcl::PCA< PointT >::setIndices ( const PointIndicesConstPtr indices)
inlineoverridevirtual

Provide a pointer to the vector of indices that represents the input data.

Parameters
[in]indicesa pointer to the indices that represent the input data.

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 153 of file pca.h.

References pcl::PCLBase< PointT >::setIndices().

◆ setIndices() [4/4]

template<typename PointT >
void pcl::PCA< PointT >::setIndices ( std::size_t  row_start,
std::size_t  col_start,
std::size_t  nb_rows,
std::size_t  nb_cols 
)
inlineoverridevirtual

Set the indices for the points laying within an interest region of the point cloud.

Note
you shouldn't call this method on unorganized point clouds!
Parameters
[in]row_startthe offset on rows
[in]col_startthe offset on columns
[in]nb_rowsthe number of rows to be considered row_start included
[in]nb_colsthe number of columns to be considered col_start included

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 168 of file pca.h.

References pcl::PCLBase< PointT >::setIndices().

◆ setInputCloud() [1/2]

template<typename PointT >
void pcl::PCLBase< PointT >::setInputCloud

Provide a pointer to the input dataset.

Parameters
[in]cloudthe const boost shared pointer to a PointCloud message

Definition at line 92 of file pcl_base.hpp.

◆ setInputCloud() [2/2]

template<typename PointT >
void pcl::PCA< PointT >::setInputCloud ( const PointCloudConstPtr cloud)
inlineoverridevirtual

Provide a pointer to the input dataset.

Parameters
cloudthe const boost shared pointer to a PointCloud message

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 123 of file pca.h.

References pcl::PCLBase< PointT >::setInputCloud().

◆ update()

template<typename PointT >
void pcl::PCA< PointT >::update ( const PointT input,
FLAG  flag = preserve 
)
inline

update PCA with a new point

Parameters
[in]inputinput point
[in]flagupdate flag
Exceptions
InitFailedException

Definition at line 96 of file pca.hpp.

Member Data Documentation

◆ indices_

template<typename PointT >
IndicesPtr pcl::PCLBase< PointT >::indices_

A pointer to the vector of point indices to use.

Definition at line 150 of file pcl_base.h.

◆ input_

template<typename PointT >
PointCloudConstPtr pcl::PCLBase< PointT >::input_

The input point cloud dataset.

Definition at line 147 of file pcl_base.h.


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