# enum cv::CovarFlags

## Overview

Covariation flags. More…

#include <core.hpp>

enum CovarFlags
{
COVAR_SCRAMBLED = 0,
COVAR_NORMAL    = 1,
COVAR_USE_AVG   = 2,
COVAR_SCALE     = 4,
COVAR_ROWS      = 8,
COVAR_COLS      = 16,
};


## Detailed Documentation

Covariation flags.

### Enum Values

COVAR_SCRAMBLED


The output covariance matrix is calculated as:

$\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...],$

The covariance matrix will be nsamples x nsamples. Such an unusual covariance matrix is used for fast PCA of a set of very large vectors (see, for example, the EigenFaces technique for face recognition). Eigenvalues of this “scrambled” matrix match the eigenvalues of the true covariance matrix. The “true” eigenvectors can be easily calculated from the eigenvectors of the “scrambled” covariance matrix.

COVAR_NORMAL


The output covariance matrix is calculated as:

$\texttt{scale} \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...] \cdot [ \texttt{vects} [0]- \texttt{mean} , \texttt{vects} [1]- \texttt{mean} ,...]^T,$

covar will be a square matrix of the same size as the total number of elements in each input vector. One and only one of COVAR_SCRAMBLED and COVAR_NORMAL must be specified.

COVAR_USE_AVG


If the flag is specified, the function does not calculate mean from the input vectors but, instead, uses the passed mean vector. This is useful if mean has been pre-calculated or known in advance, or if the covariance matrix is calculated by parts. In this case, mean is not a mean vector of the input sub-set of vectors but rather the mean vector of the whole set.

COVAR_SCALE


If the flag is specified, the covariance matrix is scaled. In the “normal” mode, scale is 1./nsamples . In the “scrambled” mode, scale is the reciprocal of the total number of elements in each input vector. By default (if the flag is not specified), the covariance matrix is not scaled ( scale=1 ).

COVAR_ROWS


If the flag is specified, all the input vectors are stored as rows of the samples matrix. mean should be a single-row vector in this case.

COVAR_COLS


If the flag is specified, all the input vectors are stored as columns of the samples matrix. mean should be a single-column vector in this case.