W3cubDocs

/PointCloudLibrary

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

#include <pcl/common/pca.h>

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 ()=default
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...
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 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] input point from original dataset
[out] projection the 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] projection cloud from eigenvector space
[out] input reconstructed 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] projection point from eigenvector space
[out] input reconstructed 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] 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 )
inlineoverridevirtual

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 )
inlineoverride

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
)
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_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 )
inlineoverride

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 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:

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_p_c_a.html