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:
|