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

void Impala::Core::Array::Trait::FuncKalman::UpdateKalman (  )  [inline]

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:


Generated on Fri Mar 19 11:05:53 2010 for ImpalaSrc by  doxygen 1.5.1