Merged lda fix from 2.4 branch (Fixed reconstruction, so that the mean is correctly added to the reconstructed image.)
This commit is contained in:
@@ -185,21 +185,16 @@ Mat subspaceReconstruct(InputArray _W, InputArray _mean, InputArray _src)
|
|||||||
Mat W = _W.getMat();
|
Mat W = _W.getMat();
|
||||||
Mat mean = _mean.getMat();
|
Mat mean = _mean.getMat();
|
||||||
Mat src = _src.getMat();
|
Mat src = _src.getMat();
|
||||||
// get number of samples and dimension
|
// get number of samples
|
||||||
int n = src.rows;
|
int n = src.rows;
|
||||||
int d = src.cols;
|
|
||||||
// initalize temporary matrices
|
// initalize temporary matrices
|
||||||
Mat X, Y;
|
Mat X, Y;
|
||||||
// copy data & make sure we are using the correct type
|
// copy data & make sure we are using the correct type
|
||||||
src.convertTo(Y, W.type());
|
src.convertTo(Y, W.type());
|
||||||
// calculate the reconstruction
|
// calculate the reconstruction
|
||||||
gemm(Y,
|
gemm(Y, W, 1.0, Mat(), 0.0, X, GEMM_2_T);
|
||||||
W,
|
if(mean.total() == (size_t) X.cols)
|
||||||
1.0,
|
add(X, repeat(mean.reshape(1,1), n, 1), X);
|
||||||
((size_t)d == mean.total()) ? repeat(mean.reshape(1,1), n, 1) : Mat(),
|
|
||||||
((size_t)d == mean.total()) ? 1.0 : 0.0,
|
|
||||||
X,
|
|
||||||
GEMM_2_T);
|
|
||||||
return X;
|
return X;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user