virtual void    AddBlob(CvBlob* pBlob)
    {
        DefBlobFilter* pF = (DefBlobFilter*)m_BlobFilterList.GetBlobByID(CV_BLOB_ID(pBlob));
        if(pF == NULL)
        {   /* Create new filter: */
            DefBlobFilter F;
            F.blob = pBlob[0];
            F.m_LastFrame = m_Frame;
            F.pFilter = m_CreatePostProc();
            TransferParamsToChild(F.pFilter,NULL);
            m_BlobFilterList.AddBlob((CvBlob*)&F);
            pF = (DefBlobFilter*)m_BlobFilterList.GetBlobByID(CV_BLOB_ID(pBlob));
        }

        assert(pF);
        pF->blob = pBlob[0];
        pF->m_LastFrame = m_Frame;
    };
 /* Return pointer to new added blob: */
 virtual CvBlob* AddBlob(CvBlob* pB, IplImage* pImg, IplImage* pImgFG = NULL )
 {
     DefBlobTrackerCR NewB;
     NewB.blob = pB[0];
     NewB.pBlobHyp = new CvBlobSeq;
     NewB.pPredictor = cvCreateModuleBlobTrackPredictKalman(); /* module for predict position */
     NewB.pPredictor->SetParam("DataNoisePos",0.001); 
     NewB.pPredictor->ParamUpdate(); 
     NewB.pResolver = NULL;
     if(m_CreateCR)
     {
         NewB.pResolver = m_CreateCR();
         TransferParamsToChild(NewB.pResolver,NULL);
         NewB.pResolver->Init(pB, pImg, pImgFG);
     }
     m_BlobList.AddBlob((CvBlob*)&NewB);
     return m_BlobList.GetBlob(m_BlobList.GetBlobNum()-1);
 };