From 586d5a60245b6f4ce9ac2fd4a536341bda584160 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Fri, 1 Jun 2012 08:48:38 +0000 Subject: [PATCH] Merged lda fix from 2.4 branch (Fixed reconstruction, so that the mean is correctly added to the reconstructed image.) --- modules/contrib/src/lda.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/contrib/src/lda.cpp b/modules/contrib/src/lda.cpp index f37346f..5983530 100644 --- a/modules/contrib/src/lda.cpp +++ b/modules/contrib/src/lda.cpp @@ -185,21 +185,16 @@ Mat subspaceReconstruct(InputArray _W, InputArray _mean, InputArray _src) Mat W = _W.getMat(); Mat mean = _mean.getMat(); Mat src = _src.getMat(); - // get number of samples and dimension + // get number of samples int n = src.rows; - int d = src.cols; // initalize temporary matrices Mat X, Y; // copy data & make sure we are using the correct type src.convertTo(Y, W.type()); // calculate the reconstruction - gemm(Y, - W, - 1.0, - ((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); + gemm(Y, W, 1.0, Mat(), 0.0, X, GEMM_2_T); + if(mean.total() == (size_t) X.cols) + add(X, repeat(mean.reshape(1,1), n, 1), X); return X; } -- 2.7.4