📄 cvvidsurv.hpp.svn-base
字号:
if(CV_BLOB_ID(pB) == BlobID) return i-1; } return -1; }; /* return pinter to blob by its unique ID */ virtual CvBlob* GetBlobByID(int BlobID){return GetBlob(GetBlobIndexByID(BlobID));}; /* delete blob by its ID */ virtual void DelBlobByID(int BlobID){DelBlob(GetBlobIndexByID(BlobID));}; /* Set new parameters for specified (by index) blob */ virtual void SetBlob(int /*BlobIndex*/, CvBlob* /*pBlob*/){}; /* Set new parameters for specified (by ID) blob */ virtual void SetBlobByID(int BlobID, CvBlob* pBlob) { SetBlob(GetBlobIndexByID(BlobID),pBlob); }; /* =============== MULTI HYPOTHESIS INTERFACE ================== */ /* return number of position hyposetis of currently tracked blob */ virtual int GetBlobHypNum(int /*BlobIdx*/){return 1;}; /* return pointer to specified blob hypothesis by index blob */ virtual CvBlob* GetBlobHyp(int BlobIndex, int /*hypothesis*/){return GetBlob(BlobIndex);}; /* Set new parameters for specified (by index) blob hyp (can be called several times for each hyp )*/ virtual void SetBlobHyp(int /*BlobIndex*/, CvBlob* /*pBlob*/){};};inline void cvReleaseBlobTracker(CvBlobTracker**ppT ){ ppT[0]->Release(); ppT[0] = 0;}/* BLOB TRACKER INTERFACE *//*BLOB TRACKER ONE INTERFACE */class CV_EXPORTS CvBlobTrackerOne:public CvVSModule{public: virtual void Init(CvBlob* pBlobInit, IplImage* pImg, IplImage* pImgFG = NULL) = 0; virtual CvBlob* Process(CvBlob* pBlobPrev, IplImage* pImg, IplImage* pImgFG = NULL) = 0; virtual void Release() = 0; /*not required methods */ virtual void SkipProcess(CvBlob* /*pBlobPrev*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL){}; virtual void Update(CvBlob* /*pBlob*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL){}; virtual void SetCollision(int /*CollisionFlag*/){}; /* call in case of blob collision situation*/ virtual double GetConfidence(CvBlob* /*pBlob*/, IplImage* /*pImg*/, IplImage* /*pImgFG*/ = NULL, IplImage* /*pImgUnusedReg*/ = NULL) { return 1; };};inline void cvReleaseBlobTrackerOne(CvBlobTrackerOne **ppT ){ ppT[0]->Release(); ppT[0] = 0;}CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerList(CvBlobTrackerOne* (*create)());/*BLOB TRACKER ONE INTERFACE *//* declaration of constructors of implemented modules *//* some declaration for specific MeanShift tracker */#define PROFILE_EPANECHNIKOV 0#define PROFILE_DOG 1struct CvBlobTrackerParamMS{ int noOfSigBits; int appearance_profile; int meanshift_profile; float sigma;};CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS1(CvBlobTrackerParamMS* param);CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS2(CvBlobTrackerParamMS* param);CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS1ByList();/* some declaration for specific Liklyhood tracker */struct CvBlobTrackerParamLH{ int HistType; /* see Prob.h */ int ScaleAfter;};/* no scale optimization */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerLHR(CvBlobTrackerParamLH* /*param*/ = NULL);/* scale optimization */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerLHRS(CvBlobTrackerParamLH* /*param*/ = NULL);/* simple blob tracker based on connected component tracking */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerCC();/* connected component tracking and MSPF resolver for collision */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerCCMSPF();/* blob tracker that integrate MS and CC */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSFG();CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSFGS();/* MS without CC */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMS();/* particle filtering using bahata... coefficient */CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerMSPF();/* =========== tracker integrators trackers =============*//* integrator based on Partical Filtering method *///CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIPF();/* rule based integrator *///CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIRB();/* integrator based on data fusion used particle filtering *///CV_EXPORTS CvBlobTracker* cvCreateBlobTrackerIPFDF();/* Trajectory postprocessing module */class CV_EXPORTS CvBlobTrackPostProc: public CvVSModule{public: virtual void AddBlob(CvBlob* pBlob) = 0; virtual void Process() = 0; virtual int GetBlobNum() = 0; virtual CvBlob* GetBlob(int index) = 0; virtual void Release() = 0; /* additional functionality */ virtual CvBlob* GetBlobByID(int BlobID) { int i; for(i=GetBlobNum();i>0;i--) { CvBlob* pB=GetBlob(i-1); if(pB->ID==BlobID) return pB; } return NULL; };};inline void cvReleaseBlobTrackPostProc(CvBlobTrackPostProc** pBTPP){ if(pBTPP == NULL) return; if(*pBTPP)(*pBTPP)->Release(); *pBTPP = 0;}/* Trajectory generation module */class CV_EXPORTS CvBlobTrackPostProcOne: public CvVSModule{public: virtual CvBlob* Process(CvBlob* pBlob) = 0; virtual void Release() = 0;};/* create blob traking post processing module based on simle module */CV_EXPORTS CvBlobTrackPostProc* cvCreateBlobTrackPostProcList(CvBlobTrackPostProcOne* (*create)());/* declaration of constructors of implemented modules */CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcKalman();CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcTimeAverRect();CV_EXPORTS CvBlobTrackPostProc* cvCreateModuleBlobTrackPostProcTimeAverExp();/* PREDICTORS *//* blob PREDICTOR */class CvBlobTrackPredictor: public CvVSModule{public: virtual CvBlob* Predict() = 0; virtual void Update(CvBlob* pBlob) = 0; virtual void Release() = 0;};CV_EXPORTS CvBlobTrackPredictor* cvCreateModuleBlobTrackPredictKalman();/* Trajectory analyser module */class CV_EXPORTS CvBlobTrackAnalysis: public CvVSModule{public: virtual void AddBlob(CvBlob* pBlob) = 0; virtual void Process(IplImage* pImg, IplImage* pFG) = 0; virtual float GetState(int BlobID) = 0; /* return 0 if trajectory is normal return >0 if trajectory abnormal */ virtual char* GetStateDesc(int /*BlobID*/){return NULL;}; virtual void SetFileName(char* /*DataBaseName*/){}; virtual void Release() = 0;};inline void cvReleaseBlobTrackAnalysis(CvBlobTrackAnalysis** pBTPP){ if(pBTPP == NULL) return; if(*pBTPP)(*pBTPP)->Release(); *pBTPP = 0;}/* feature vector generation module */class CV_EXPORTS CvBlobTrackFVGen : public CvVSModule{public: virtual void AddBlob(CvBlob* pBlob) = 0; virtual void Process(IplImage* pImg, IplImage* pFG) = 0; virtual void Release() = 0; virtual int GetFVSize() = 0; virtual int GetFVNum() = 0; virtual float* GetFV(int index, int* pFVID) = 0; /* pointer to FV, if return 0 then FV does not created */ virtual float* GetFVVar(){return NULL;}; /* returned pointer to array of variation of values of FV, if return 0 then FVVar is not exist */ virtual float* GetFVMin() = 0; /* returned pointer to array of minimal values of FV, if return 0 then FVrange is not exist */ virtual float* GetFVMax() = 0; /* returned pointer to array of maximal values of FV, if return 0 then FVrange is not exist */};/* Trajectory Analyser module */class CV_EXPORTS CvBlobTrackAnalysisOne{public: virtual ~CvBlobTrackAnalysisOne() {}; virtual int Process(CvBlob* pBlob, IplImage* pImg, IplImage* pFG) = 0; /* return 0 if trajectory is normal return >0 if trajectory abnormal */ virtual void Release() = 0;};/* create blob traking post processing module based on simle module */CV_EXPORTS CvBlobTrackAnalysis* cvCreateBlobTrackAnalysisList(CvBlobTrackAnalysisOne* (*create)());/* declaration of constructors of implemented modules *//* based on histogramm analysis of 2D FV (x,y)*/CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistP();/* based on histogramm analysis of 4D FV (x,y,vx,vy)*/CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistPV();/* based on histogramm analysis of 5D FV (x,y,vx,vy,state)*/CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistPVS();/* based on histogramm analysis of 4D FV (startpos,stoppos)*/CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisHistSS();/* based on SVM classifier analysis of 2D FV (x,y)*///CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMP();/* based on SVM classifier analysis of 4D FV (x,y,vx,vy)*///CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMPV();/* based on SVM classifier analysis of 5D FV (x,y,vx,vy,state)*///CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMPVS();/* based on SVM classifier analysis of 4D FV (startpos,stoppos)*///CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisSVMSS();/* track analysis based on distance between tracks */CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisTrackDist();/* analizer based on reation Road and height map*///CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysis3DRoadMap();/* analizer that make OR desicion using set of analizers */CV_EXPORTS CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisIOR();/* estimator of human height */class CV_EXPORTS CvBlobTrackAnalysisHeight: public CvBlobTrackAnalysis{public: virtual double GetHeight(CvBlob* pB) = 0;}; //CV_EXPORTS CvBlobTrackAnalysisHeight* cvCreateModuleBlobTrackAnalysisHeightScale();/* AUTO BLOB TRACKER INTERFACE - pipeline of 3 modules */class CV_EXPORTS CvBlobTrackerAuto: public CvVSModule{public: virtual void Process(IplImage* pImg, IplImage* pMask = NULL) = 0; virtual CvBlob* GetBlob(int index) = 0; virtual CvBlob* GetBlobByID(int ID) = 0; virtual int GetBlobNum() = 0; virtual IplImage* GetFGMask(){return NULL;}; virtual float GetState(int BlobID) = 0; virtual char* GetStateDesc(int BlobID) = 0; /* return 0 if trajectory is normal return >0 if trajectory abnormal */ virtual void Release() = 0;};inline void cvReleaseBlobTrackerAuto(CvBlobTrackerAuto** ppT){ ppT[0]->Release(); ppT[0] = 0;}/* END AUTO BLOB TRACKER INTERFACE *//* creation function and data for specific BlobTRackerAuto modules *//* parameters of blobtracker auto ver1 */struct CvBlobTrackerAutoParam1{ int FGTrainFrames; /* number of frames are needed for FG detector to train */ CvFGDetector* pFG; /* FGDetector module, if this filed is NULL the Process FG mask is used */ CvBlobDetector* pBD; /* existed blob detector module if this filed is NULL default blobdetector module will be created */ CvBlobTracker* pBT; /* existed blob tracking module if this filed is NULL default blobtracker module will be created */ CvBlobTrackGen* pBTGen; /* existed blob trajectory generator, if this filed is NULL no any generator is used */ CvBlobTrackPostProc* pBTPP; /* existed blob trajectory postprocessing module if this filed is NULL no any postprocessing is used */ int UsePPData; CvBlobTrackAnalysis* pBTA; /* existed blob trajectory analysis module */ /* if this filed is NULL no any analysis is made */};/* create blob tracker auto ver1 */CV_EXPORTS CvBlobTrackerAuto* cvCreateBlobTrackerAuto1(CvBlobTrackerAutoParam1* param = NULL);/* simple loader for many auto trackers by its type */inline CvBlobTrackerAuto* cvCreateBlobTrackerAuto(int type, void* param){ if(type == 0) return cvCreateBlobTrackerAuto1((CvBlobTrackerAutoParam1*)param); return 0;}struct CvTracksTimePos{ int len1,len2; int beg1,beg2; int end1,end2; int comLen; //common length for two tracks int shift1,shift2;};/*CV_EXPORTS int cvCompareTracks( CvBlobTrackSeq *groundTruth, CvBlobTrackSeq *result, FILE *file);*//* Create functions */CV_EXPORTS void cvCreateTracks_One(CvBlobTrackSeq *TS);CV_EXPORTS void cvCreateTracks_Same(CvBlobTrackSeq *TS1, CvBlobTrackSeq *TS2);CV_EXPORTS void cvCreateTracks_AreaErr(CvBlobTrackSeq *TS1, CvBlobTrackSeq *TS2, int addW, int addH);/* HIST API */class CV_EXPORTS CvProb{public: virtual ~CvProb() {}; /* calculate probability value */ virtual double Value(int* /*comp*/, int /*x*/ = 0, int /*y*/ = 0){return -1;}; /* update histograpp Pnew = (1-W)*Pold + W*Padd*/ /* W weight of new added prob */ /* comps - matrix of new fetature vectors used to update prob */ virtual void AddFeature(float W, int* comps, int x =0, int y = 0) = 0; virtual void Scale(float factor = 0, int x = -1, int y = -1) = 0; virtual void Release() = 0;};inline void cvReleaseProb(CvProb** ppProb){ppProb[0]->Release();ppProb[0]=NULL;}/* HIST API *//* some Prob */CV_EXPORTS CvProb* cvCreateProbS(int dim, CvSize size, int sample_num);CV_EXPORTS CvProb* cvCreateProbMG(int dim, CvSize size, int sample_num);CV_EXPORTS CvProb* cvCreateProbMG2(int dim, CvSize size, int sample_num);CV_EXPORTS CvProb* cvCreateProbHist(int dim, CvSize size);#define CV_BT_HIST_TYPE_S 0#define CV_BT_HIST_TYPE_MG 1#define CV_BT_HIST_TYPE_MG2 2#define CV_BT_HIST_TYPE_H 3inline CvProb* cvCreateProb(int type, int dim, CvSize size = cvSize(1,1), void* /*param*/ = NULL){ if(type == CV_BT_HIST_TYPE_S) return cvCreateProbS(dim, size, -1); if(type == CV_BT_HIST_TYPE_MG) return cvCreateProbMG(dim, size, -1); if(type == CV_BT_HIST_TYPE_MG2) return cvCreateProbMG2(dim, size, -1); if(type == CV_BT_HIST_TYPE_H) return cvCreateProbHist(dim, size); return NULL;}/* noise types defenition */#define CV_NOISE_NONE 0#define CV_NOISE_GAUSSIAN 1#define CV_NOISE_UNIFORM 2#define CV_NOISE_SPECKLE 3#define CV_NOISE_SALT_AND_PEPPER 4/* Add some noise to image *//* pImg - (input) image without noise *//* pImg - (output) image with noise *//* noise_type - type of added noise *//* CV_NOISE_GAUSSIAN - pImg += n , n - is gaussian noise with Ampl standart deviation *//* CV_NOISE_UNIFORM - pImg += n , n - is uniform noise with Ampl standart deviation *//* CV_NOISE_SPECKLE - pImg += n*pImg , n - is gaussian noise with Ampl standart deviation *//* CV_NOISE_SALT_AND_PAPPER - pImg = pImg with blacked and whited pixels, Ampl is density of brocken pixels (0-there are not broken pixels, 1 - all pixels are broken)*//* Ampl - "amplitude" of noise */ CV_EXPORTS void cvAddNoise(IplImage* pImg, int noise_type, double Ampl, CvRandState* rnd_state = NULL);/*================== GENERATOR OF TEST VIDEO SEQUENCE ===================== */typedef void CvTestSeq;/* pConfigfile - name of file (yml or xml) with description of test sequence *//* videos - array of names of test videos described in "pConfigfile" file *//* numvideos - size of "videos" array */CV_EXPORTS CvTestSeq* cvCreateTestSeq(char* pConfigfile, char** videos, int numvideo, float Scale = 1, int noise_type = CV_NOISE_NONE, double noise_ampl = 0);CV_EXPORTS void cvReleaseTestSeq(CvTestSeq** ppTestSeq);/* generete next frame from test video seq and return pointer to it */CV_EXPORTS IplImage* cvTestSeqQueryFrame(CvTestSeq* pTestSeq);/* return pointer to current foreground mask */CV_EXPORTS IplImage* cvTestSeqGetFGMask(CvTestSeq* pTestSeq);/* return pointer to current image */CV_EXPORTS IplImage* cvTestSeqGetImage(CvTestSeq* pTestSeq);/* return frame size of result test video */CV_EXPORTS CvSize cvTestSeqGetImageSize(CvTestSeq* pTestSeq);/* return number of frames result test video */CV_EXPORTS int cvTestSeqFrameNum(CvTestSeq* pTestSeq);/* return number of existed objects this is general number of any objects. for example number of trajectories may be equal or less than returned value*/CV_EXPORTS int cvTestSeqGetObjectNum(CvTestSeq* pTestSeq);/* return 0 if there is not position for current defined on current frame *//* return 1 if there is object position and pPos was filled */CV_EXPORTS int cvTestSeqGetObjectPos(CvTestSeq* pTestSeq, int ObjIndex, CvPoint2D32f* pPos);CV_EXPORTS int cvTestSeqGetObjectSize(CvTestSeq* pTestSeq, int ObjIndex, CvPoint2D32f* pSize);/* add noise to finile image */CV_EXPORTS void cvTestSeqAddNoise(CvTestSeq* pTestSeq, int noise_type = CV_NOISE_NONE, double noise_ampl = 0);/* add Intensity variation */CV_EXPORTS void cvTestSeqAddIntensityVariation(CvTestSeq* pTestSeq, float DI_per_frame, float MinI, float MaxI);CV_EXPORTS void cvTestSeqSetFrame(CvTestSeq* pTestSeq, int n);#endif/* End of file. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -