pcl::PCA< PointT > Class Template Reference
Module common

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

`#include <pcl/common/pca.h>`

Inheritance 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...
PCA & | operator= (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 ()
| Destructor. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. More...
const PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
const IndicesPtr | getIndices ()
| Get a pointer to the vector of indices used. More...
const IndicesConstPtr | getIndices () const
| Get a pointer to the vector of indices used. More...
const PointT & | operator[] (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:

- The Mean of the input data
- The Eigenvectors: Ordered set of vectors representing the resultant principal components and the eigenspace cartesian basis (right-handed coordinate system).
- The Eigenvalues: Eigenvectors correspondent loadings ordered in descending order.
  Other methods allow projection in the eigenspace, reconstruction from eigenspace and update of the eigenspace with a new datum (according Matej Artec, Matjaz Jogan and Ales Leonardis: "Incremental PCA for On-line Visual Learning and Recognition").

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_only | flag 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] | pca | PCA object

Definition at line 97 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 222 of file pca.h.

## getEigenValues()

template<typename PointT >

Eigen::Vector3f& pcl::PCA< PointT >::getEigenValues | ( |  | ) |

inline

Eigen Values accessor.

Exceptions

  InitFailedException |

Definition at line 208 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 194 of file pca.h.

## getMean()

template<typename PointT >

Eigen::Vector4f& pcl::PCA< PointT >::getMean | ( |  | ) |

inline

Mean accessor.

Exceptions

  InitFailedException |

Definition at line 179 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 138 of file pcl_base.hpp.

## operator=()

template<typename PointT >

PCA& pcl::PCA< PointT >::operator= | ( | PCA< PointT > const & | pca | ) |

inline

Assignment operator.

Parameters

  [in] | pca | PCA object

Definition at line 111 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] | input | cloud from original dataset
  [out] | projection | the cloud in eigen vectors space

Exceptions

  InitFailedException |

Definition at line 174 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] | input | point from original dataset
  [out] | projection | the point in eigen vectors space

Exceptions

  InitFailedException |

Definition at line 161 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] | projection | cloud from eigenvector space
  [out] | input | reconstructed cloud

Exceptions

  InitFailedException |

Definition at line 216 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] | projection | point from eigenvector space
  [out] | input | reconstructed point

Exceptions

  InitFailedException |

Definition at line 203 of file pca.hpp.

## setIndices() [1/4]

template<typename PointT >

void pcl::PCA< PointT >::setIndices | ( | const IndicesConstPtr & | indices | ) |

inline override virtual

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

Parameters

  [in] | indices | a pointer to the indices that represent the input data.

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 144 of file pca.h.

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

## setIndices() [2/4]

template<typename PointT >

void pcl::PCA< PointT >::setIndices | ( | const IndicesPtr & | indices | ) |

inline override virtual

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

Parameters

  [in] | indices | a pointer to the indices that represent the input data.

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 134 of file pca.h.

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

## setIndices() [3/4]

template<typename PointT >

void pcl::PCA< PointT >::setIndices | ( | const PointIndicesConstPtr & | indices | ) |

inline override

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

Parameters

  [in] | indices | a pointer to the indices that represent the input data.

Definition at line 154 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
| ) |  |

inline override virtual

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_start | the offset on rows
  [in] | col_start | the offset on columns
  [in] | nb_rows | the number of rows to be considered row_start included
  [in] | nb_cols | the number of columns to be considered col_start included

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 169 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] | cloud | the const boost shared pointer to a PointCloud message

Definition at line 65 of file pcl_base.hpp.

## setInputCloud() [2/2]

template<typename PointT >

void pcl::PCA< PointT >::setInputCloud | ( | const PointCloudConstPtr & | cloud | ) |

inline override

Provide a pointer to the input dataset.

Parameters

  cloud | the const boost shared pointer to a PointCloud message

Definition at line 124 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] | input | input point
  [in] | flag | update flag

Exceptions

  InitFailedException |

Definition at line 91 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 154 of file pcl_base.h.

## input_

template<typename PointT >

PointCloudConstPtr pcl::PCLBase< PointT >::input_

The input point cloud dataset.

Definition at line 151 of file pcl_base.h.

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

- pcl/common/pca.h
- pcl/common/impl/pca.hpp