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
dataInputArrayinput samples stored as matrix rows or matrix columns.
meanInputArrayoptional mean value; if the matrix is empty (noArray()), the mean is computed from the data.
flagsPCA.Flagsoperation flags; currently the parameter is only used to specify the data layout (PCA::Flags)
retainedVariancedoublePercentage 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
dataInputArrayinput samples stored as matrix rows or matrix columns.
meanInputArrayoptional mean value; if the matrix is empty (@c noArray()), the mean is computed from the data.
flagsPCA.Flagsoperation flags; currently the parameter is only used to specify the data layout (PCA::Flags)
maxComponentsintmaximum 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
Eigenvectors
eigenvalues of the covariation matrix
public Mat Eigenvectors { get; }
Property Value
Mean
mean value subtracted before the projection and added after the back projection
public Mat Mean { get; }
Property Value
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
vecInputArraycoordinates of the vectors in the principal component subspace, the layout and size are the same as of PCA::project output vectors.
Returns
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
vecInputArraycoordinates of the vectors in the principal component subspace, the layout and size are the same as of PCA::project output vectors.
resultOutputArrayreconstructed 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
dataInputArrayinput samples stored as the matrix rows or as the matrix columns.
meanInputArrayoptional mean value; if the matrix is empty (noArray()), the mean is computed from the data.
flagsPCA.Flagsoperation flags; currently the parameter is only used to specify the data layout. (Flags)
maxComponentsintmaximum number of components that PCA should retain; by default, all the components are retained.
Returns
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
dataInputArrayinput samples stored as the matrix rows or as the matrix columns.
meanInputArrayoptional mean value; if the matrix is empty (noArray()), the mean is computed from the data.
flagsPCA.Flagsoperation flags; currently the parameter is only used to specify the data layout. (PCA::Flags)
retainedVariancedoublePercentage 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
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
vecInputArrayinput 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) andvec.rowsis the number of vectors to project, and the same is true for the PCA::DATA_AS_COL case.
Returns
Project(InputArray, OutputArray)
Projects vector(s) to the principal component subspace.
public void Project(InputArray vec, OutputArray result)
Parameters
vecInputArrayinput 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) andvec.rowsis the number of vectors to project, and the same is true for the PCA::DATA_AS_COL case.resultOutputArrayoutput 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.colsand the number of rows match the number of principal components (for example,maxComponentsparameter 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
fnFileNode
Write(FileStorage)
Write PCA objects. Writes @ref eigenvalues @ref eigenvectors and @ref mean to specified FileStorage
public void Write(FileStorage fs)
Parameters
fsFileStorage