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...
typedef pcl::PCLBase< PointT > | Base
typedef Base::PointCloud | PointCloud
typedef Base::PointCloudPtr | PointCloudPtr
typedef Base::PointCloudConstPtr | PointCloudConstPtr
typedef Base::PointIndicesPtr | PointIndicesPtr
typedef Base::PointIndicesConstPtr | PointIndicesConstPtr
Public Types inherited from pcl::PCLBase< PointT >
typedef pcl::PointCloud< PointT > | PointCloud
typedef PointCloud::Ptr | PointCloudPtr
typedef PointCloud::ConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< PointIndices > | PointIndicesPtr
typedef boost::shared_ptr< PointIndices const > | PointIndicesConstPtr

## Public Member Functions

| PCA (bool basis_only=false)
| Default Constructor. More...
| PCA (const pcl::PointCloud< PointT > &X, bool basis_only=false)
| Constructor with direct computation X input m*n matrix (ie n vectors of R(m)) basis_only flag to compute only the PCA basis. More...
| PCA (PCA const &pca)
| Copy Constructor. More...
PCA & | operator= (PCA const &pca)
| Assignment operator. More...
void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. 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...
Public Member Functions inherited from pcl::PCLBase< PointT >
| PCLBase ()
| Empty constructor. More...
| PCLBase (const PCLBase &base)
| Copy constructor. More...
virtual | ~PCLBase ()
| Destructor. More...
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)
| Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr const | 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 PointT & | operator[] (size_t pos) const
| Override PointCloud operator[] to shorten code. 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 eigenvalues (in descending order) and corresponding eigenvectors.
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 60 of file pca.h.

## Member Typedef Documentation

template<typename PointT >

typedef pcl::PCLBase<PointT> pcl::PCA< PointT >::Base

Definition at line 63 of file pca.h.

template<typename PointT >

typedef Base::PointCloud pcl::PCA< PointT >::PointCloud

Definition at line 64 of file pca.h.

template<typename PointT >

typedef Base::PointCloudConstPtr pcl::PCA< PointT >::PointCloudConstPtr

Definition at line 66 of file pca.h.

template<typename PointT >

typedef Base::PointCloudPtr pcl::PCA< PointT >::PointCloudPtr

Definition at line 65 of file pca.h.

template<typename PointT >

typedef Base::PointIndicesConstPtr pcl::PCA< PointT >::PointIndicesConstPtr

Definition at line 68 of file pca.h.

template<typename PointT >

typedef Base::PointIndicesPtr pcl::PCA< PointT >::PointIndicesPtr

Definition at line 67 of file pca.h.

## Member Enumeration Documentation

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 76 of file pca.h.

## Constructor & Destructor Documentation

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 87 of file pca.h.

template<typename PointT >

pcl::PCA< PointT >::PCA | ( | const pcl::PointCloud< PointT > & | cloud,
|  | bool | basis_only = `false`
| ) |  |

Constructor with direct computation X input m*n matrix (ie n vectors of R(m)) basis_only flag to compute only the PCA basis.

Constructor with direct computation.

Parameters

  [in] | cloud | input m*n matrix (ie n vectors of R(m))
  [in] | basis_only | flag to compute only the PCA basis

Definition at line 54 of file pca.hpp.

References pcl::compute3DCentroid(), pcl::demeanPointCloud(), and pcl::PointCloud< PointT >::makeShared().

template<typename PointT >

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

inline

Copy Constructor.

Parameters

  [in] | pca | PCA object

Definition at line 107 of file pca.h.

## Member Function Documentation

template<typename PointT >

Eigen::MatrixXf& pcl::PCA< PointT >::getCoefficients | ( |  | ) |

inline

Coefficients accessor.

Exceptions

  InitFailedException |

Definition at line 186 of file pca.h.

References pcl::PCA< PointT >::preserve, pcl::PCA< PointT >::project(), pcl::PCA< PointT >::reconstruct(), and pcl::PCA< PointT >::update().

template<typename PointT >

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

inline

Eigen Values accessor.

Exceptions

  InitFailedException |

Definition at line 172 of file pca.h.

template<typename PointT >

Eigen::Matrix3f& pcl::PCA< PointT >::getEigenVectors | ( |  | ) |

inline

Eigen Vectors accessor.

Exceptions

  InitFailedException |

Definition at line 158 of file pca.h.

template<typename PointT >

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

inline

Mean accessor.

Exceptions

  InitFailedException |

Definition at line 144 of file pca.h.

template<typename PointT >

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

inline

Assignment operator.

Parameters

  [in] | pca | PCA object

Definition at line 121 of file pca.h.

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 175 of file pca.hpp.

Referenced by pcl::PCA< PointT >::getCoefficients().

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 188 of file pca.hpp.

References pcl::PointCloud< PointT >::is_dense, pcl::PointCloud< PointT >::push_back(), pcl::PointCloud< PointT >::resize(), and pcl::PointCloud< PointT >::size().

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 217 of file pca.hpp.

Referenced by pcl::PCA< PointT >::getCoefficients().

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 230 of file pca.hpp.

References pcl::PointCloud< PointT >::is_dense, pcl::PointCloud< PointT >::push_back(), pcl::PointCloud< PointT >::resize(), and pcl::PointCloud< PointT >::size().

template<typename PointT >

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

inline virtual

Provide a pointer to the input dataset.

Parameters

  cloud | the const boost shared pointer to a PointCloud message

Reimplemented from pcl::PCLBase< PointT >.

Definition at line 134 of file pca.h.

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

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

Referenced by pcl::PCA< PointT >::getCoefficients().

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

- /build/pcl-0nnAvv/pcl-1.7.2/common/include/pcl/common/pca.h
- /build/pcl-0nnAvv/pcl-1.7.2/common/include/pcl/common/impl/pca.hpp