Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

void Impala::Core::Tracking::Classifier::UpdateClassifiers (  )  [inline, private]

Definition at line 169 of file Classifier.h.

References AddLambdaDiagonal(), Impala::Core::Array::Array2dTem< StorT, elemSize, ArithT >::CH(), CrossProduct(), GetNormalisedObjectVector(), Impala::Core::Matrix::MatInverse(), Impala::Core::Matrix::MatMul(), mDimensionality, mMatCovariance, mObjectVectors, and SetClassifier().

Referenced by SetBackground(), and Update().

00170     {
00171         // update classifiers (eq.13)
00172         // first compute [lambda*I + B]^-1
00173         Array::Array2dScalarReal64* temp = new Array::Array2dScalarReal64(mDimensionality, mDimensionality, 0, 0);
00174         AddLambdaDiagonal(temp, mMatCovariance);
00175         Array::Array2dScalarReal64* Binverse = Matrix::MatInverse(temp);
00176         if(Binverse)
00177         {
00178             for(int i=0 ; i<mObjectVectors->CH() ; i++)
00179             {
00180                 // the term [f_o_i - f_b_avrg] occures multiple times we'll call it vector
00181                 Array::Array2dScalarReal64* vector = new Array::Array2dScalarReal64(1, mDimensionality, 0, 0);
00182                 GetNormalisedObjectVector(vector,i);
00183                 // the term [lambda*I + B]^-1 * [f_o_i - f_b_avrg] also reoccures, we'll call it correlatedVector
00184                 Array::Array2dScalarReal64* correlatedVector = Matrix::MatMul(Binverse, vector);
00185                 double k_i = CrossProduct(vector, correlatedVector);
00186                 k_i = 2. / (2.+k_i);
00187                 SetClassifier(i, k_i, correlatedVector);
00188                 delete correlatedVector;
00189                 delete vector;
00190             }
00191             delete Binverse;
00192         }
00193         delete temp;
00194     }

Here is the call graph for this function:


Generated on Fri Mar 19 11:22:08 2010 for ImpalaSrc by  doxygen 1.5.1