Definition at line 199 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(). 00200 { 00201 // update classifiers (eq.13) 00202 // first compute [lambda*I + B]^-1 00203 Array::Array2dScalarReal64* temp = 00204 new Array::Array2dScalarReal64(mDimensionality, mDimensionality, 0, 0); 00205 AddLambdaDiagonal(temp, mMatCovariance); 00206 Array::Array2dScalarReal64* Binverse = Matrix::MatInverse(temp); 00207 if(Binverse) 00208 { 00209 for(int i=0 ; i<mObjectVectors->CH() ; i++) 00210 { 00211 // the term [f_o_i - f_b_avrg] occures multiple times we'll call it vector 00212 Array::Array2dScalarReal64* vector = 00213 new Array::Array2dScalarReal64(1, mDimensionality, 0, 0); 00214 GetNormalisedObjectVector(vector,i); 00215 // the term [lambda*I + B]^-1 * [f_o_i - f_b_avrg] also 00216 // reoccures, we'll call it correlatedVector 00217 Array::Array2dScalarReal64* correlatedVector = 00218 Matrix::MatMul(Binverse, vector); 00219 double k_i = CrossProduct(vector, correlatedVector); 00220 k_i = 2. / (2.+k_i); 00221 SetClassifier(i, k_i, correlatedVector); 00222 delete correlatedVector; 00223 delete vector; 00224 } 00225 delete Binverse; 00226 } 00227 delete temp; 00228 }
Here is the call graph for this function:
|