Table of Contents

Class PCA

Namespace
OpenCvSharp
Assembly
OpenCvSharp.dll

Principal Component Analysis

public class PCA : DisposableCvObject, IDisposable, ICvPtrHolder
Inheritance
PCA
Implements
Inherited Members

Constructors

PCA()

default constructor.

The default constructor initializes an empty PCA structure. The other constructors initialize the structure and call PCA::operator()().

public PCA()

PCA(InputArray, InputArray, Flags, double)

Constructor

public PCA(InputArray data, InputArray mean, PCA.Flags flags, double retainedVariance)

Parameters

data InputArray

input samples stored as matrix rows or matrix columns.

mean InputArray

optional mean value; if the matrix is empty (noArray()), the mean is computed from the data.

flags PCA.Flags

operation flags; currently the parameter is only used to specify the data layout (PCA::Flags)

retainedVariance double

Percentage of variance that PCA should retain. Using this parameter will let the PCA decided how many components to retain but it will always keep at least 2.

PCA(InputArray, InputArray, Flags, int)

Constructor

public PCA(InputArray data, InputArray mean, PCA.Flags flags, int maxComponents = 0)

Parameters

data InputArray

input samples stored as matrix rows or matrix columns.

mean InputArray

optional mean value; if the matrix is empty (@c noArray()), the mean is computed from the data.

flags PCA.Flags

operation flags; currently the parameter is only used to specify the data layout (PCA::Flags)

maxComponents int

maximum number of components that PCA should retain; by default, all the components are retained.

Properties

Eigenvalues

eigenvalues of the covariation matrix

public Mat Eigenvalues { get; }

Property Value

Mat

Eigenvectors

eigenvalues of the covariation matrix

public Mat Eigenvectors { get; }

Property Value

Mat

Mean

mean value subtracted before the projection and added after the back projection

public Mat Mean { get; }

Property Value

Mat

Methods

BackProject(InputArray)

Reconstructs vectors from their PC projections.

The methods are inverse operations to PCA::project. They take PC coordinates of projected vectors and reconstruct the original vectors. Unless all the principal components have been retained, the reconstructed vectors are different from the originals. But typically, the difference is small if the number of components is large enough (but still much smaller than the original vector dimensionality). As a result, PCA is used.

public Mat BackProject(InputArray vec)

Parameters

vec InputArray

coordinates of the vectors in the principal component subspace, the layout and size are the same as of PCA::project output vectors.

Returns

Mat

BackProject(InputArray, OutputArray)

Reconstructs vectors from their PC projections.

The methods are inverse operations to PCA::project. They take PC coordinates of projected vectors and reconstruct the original vectors. Unless all the principal components have been retained, the reconstructed vectors are different from the originals. But typically, the difference is small if the number of components is large enough (but still much smaller than the original vector dimensionality). As a result, PCA is used.

public void BackProject(InputArray vec, OutputArray result)

Parameters

vec InputArray

coordinates of the vectors in the principal component subspace, the layout and size are the same as of PCA::project output vectors.

result OutputArray

reconstructed vectors; the layout and size are the same as of PCA::project input vectors.

Compute(InputArray, InputArray, Flags, int)

Performs PCA.

The operator performs %PCA of the supplied dataset. It is safe to reuse the same PCA structure for multiple datasets. That is, if the structure has been previously used with another dataset, the existing internal data is reclaimed and the new @ref eigenvalues, @ref eigenvectors and @ref mean are allocated and computed.

The computed @ref eigenvalues are sorted from the largest to the smallest and the corresponding @ref eigenvectors are stored as eigenvectors rows.

public PCA Compute(InputArray data, InputArray mean, PCA.Flags flags, int maxComponents = 0)

Parameters

data InputArray

input samples stored as the matrix rows or as the matrix columns.

mean InputArray

optional mean value; if the matrix is empty (noArray()), the mean is computed from the data.

flags PCA.Flags

operation flags; currently the parameter is only used to specify the data layout. (Flags)

maxComponents int

maximum number of components that PCA should retain; by default, all the components are retained.

Returns

PCA

ComputeVar(InputArray, InputArray, Flags, double)

Performs PCA.

The operator performs %PCA of the supplied dataset. It is safe to reuse the same PCA structure for multiple datasets. That is, if the structure has been previously used with another dataset, the existing internal data is reclaimed and the new @ref eigenvalues, @ref eigenvectors and @ref mean are allocated and computed.

The computed @ref eigenvalues are sorted from the largest to the smallest and the corresponding @ref eigenvectors are stored as eigenvectors rows.

public PCA ComputeVar(InputArray data, InputArray mean, PCA.Flags flags, double retainedVariance)

Parameters

data InputArray

input samples stored as the matrix rows or as the matrix columns.

mean InputArray

optional mean value; if the matrix is empty (noArray()), the mean is computed from the data.

flags PCA.Flags

operation flags; currently the parameter is only used to specify the data layout. (PCA::Flags)

retainedVariance double

Percentage of variance that %PCA should retain. Using this parameter will let the %PCA decided how many components to retain but it will always keep at least 2.

Returns

PCA

DisposeUnmanaged()

Releases unmanaged resources

protected override void DisposeUnmanaged()

Project(InputArray)

Projects vector(s) to the principal component subspace.

The methods project one or more vectors to the principal component subspace, where each vector projection is represented by coefficients in the principal component basis. The first form of the method returns the matrix that the second form writes to the result. So the first form can be used as a part of expression while the second form can be more efficient in a processing loop.

public Mat Project(InputArray vec)

Parameters

vec InputArray

input vector(s); must have the same dimensionality and the same layout as the input data used at %PCA phase, that is, if DATA_AS_ROW are specified, then vec.cols==data.cols (vector dimensionality) and vec.rows is the number of vectors to project, and the same is true for the PCA::DATA_AS_COL case.

Returns

Mat

Project(InputArray, OutputArray)

Projects vector(s) to the principal component subspace.

public void Project(InputArray vec, OutputArray result)

Parameters

vec InputArray

input vector(s); must have the same dimensionality and the same layout as the input data used at PCA phase, that is, if DATA_AS_ROW are specified, then vec.cols==data.cols (vector dimensionality) and vec.rows is the number of vectors to project, and the same is true for the PCA::DATA_AS_COL case.

result OutputArray

output vectors; in case of PCA::DATA_AS_COL, the output matrix has as many columns as the number of input vectors, this means that result.cols==vec.cols and the number of rows match the number of principal components (for example, maxComponents parameter passed to the constructor).

Read(FileNode)

Load PCA objects. Loads @ref eigenvalues @ref eigenvectors and @ref mean from specified FileNode

public void Read(FileNode fn)

Parameters

fn FileNode

Write(FileStorage)

Write PCA objects. Writes @ref eigenvalues @ref eigenvectors and @ref mean to specified FileStorage

public void Write(FileStorage fs)

Parameters

fs FileStorage