Merge pull request #5320 from berak:lda_fix

This commit is contained in:
Vadim Pisarevsky 2015-09-22 10:38:46 +00:00
commit 9f697510ca
2 changed files with 11 additions and 11 deletions

View File

@ -2381,8 +2381,7 @@ class CV_EXPORTS LDA
{
public:
/** @brief constructor
Initializes a LDA with num_components (default 0) and specifies how
samples are aligned (default dataAsRow=true).
Initializes a LDA with num_components (default 0).
*/
explicit LDA(int num_components = 0);
@ -2413,15 +2412,17 @@ public:
*/
~LDA();
/** Compute the discriminants for data in src and labels.
/** Compute the discriminants for data in src (row aligned) and labels.
*/
void compute(InputArrayOfArrays src, InputArray labels);
/** Projects samples into the LDA subspace.
src may be one or more row aligned samples.
*/
Mat project(InputArray src);
/** Reconstructs projections from the LDA subspace.
src may be one or more row aligned projections.
*/
Mat reconstruct(InputArray src);
@ -2437,11 +2438,10 @@ public:
static Mat subspaceReconstruct(InputArray W, InputArray mean, InputArray src);
protected:
bool _dataAsRow;
bool _dataAsRow; // unused, but needed for 3.0 ABI compatibility.
int _num_components;
Mat _eigenvectors;
Mat _eigenvalues;
void lda(InputArrayOfArrays src, InputArray labels);
};

View File

@ -937,9 +937,9 @@ public:
// Linear Discriminant Analysis implementation
//------------------------------------------------------------------------------
LDA::LDA(int num_components) : _num_components(num_components) { }
LDA::LDA(int num_components) : _dataAsRow(true), _num_components(num_components) { }
LDA::LDA(InputArrayOfArrays src, InputArray labels, int num_components) : _num_components(num_components)
LDA::LDA(InputArrayOfArrays src, InputArray labels, int num_components) : _dataAsRow(true), _num_components(num_components)
{
this->compute(src, labels); //! compute eigenvectors and eigenvalues
}
@ -1106,14 +1106,14 @@ void LDA::compute(InputArrayOfArrays _src, InputArray _lbls) {
}
}
// Projects samples into the LDA subspace.
// Projects one or more row aligned samples into the LDA subspace.
Mat LDA::project(InputArray src) {
return subspaceProject(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t());
return subspaceProject(_eigenvectors, Mat(), src);
}
// Reconstructs projections from the LDA subspace.
// Reconstructs projections from the LDA subspace from one or more row aligned samples.
Mat LDA::reconstruct(InputArray src) {
return subspaceReconstruct(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t());
return subspaceReconstruct(_eigenvectors, Mat(), src);
}
}