this function does reestimation of the sigmas using the residual
Definition at line 158 of file FunctorKalman.h. References ComputeResiduals(), InitialiseSigma(), mBeta, mGamma, mInitialised, mOcclusion, mOutliers, mPixelCount, mResidualAvrg, mResidualThisFrame, mSigmaG, mSigmaI, and mSigmaW. 00159 { 00160 //eq.14 00161 mResidualThisFrame /= mPixelCount; 00162 mResidualThisFrame *= mBeta; 00163 if(mResidualThisFrame == 0) 00164 mResidualThisFrame = 1; 00165 00166 if(mPixelCount * mGamma > mOutliers) // if no occlusion 00167 { 00168 mOcclusion = false; 00169 ComputeResiduals(); 00170 if(!mInitialised) 00171 InitialiseSigma(); 00172 //eq.11 00173 mSigmaG = (mSigmaG*mSigmaI)/(mSigmaG+mSigmaI); 00174 //eq.15 00175 mSigmaW = mResidualAvrg - mSigmaI - mSigmaG; 00176 // following found in Hieus code, makes some sense, but only because the 00177 // assumption about residual and sigmas are incorrect (I can't define them, sorry) 00178 if(mSigmaW<0) 00179 mSigmaW = 0; 00180 //eq.9 (prediction of sigmaG for the next time step) 00181 mSigmaG += mSigmaW; 00182 } 00183 else 00184 { 00185 if(!mOcclusion) 00186 { 00187 //undo prediction of sigmaG (eq.9) (only if the last time sigmaG was predicted) 00188 mSigmaG -= mSigmaW; 00189 } 00190 mOcclusion = true; 00191 } 00192 mPixelCount = 0; 00193 mOutliers = 0; 00194 }
Here is the call graph for this function:
|