From ba994f4404b6eadcab4e0ead46ef4d3ffeceb024 Mon Sep 17 00:00:00 2001 From: Antoine Villeret Date: Thu, 10 Jul 2014 14:39:22 +0000 Subject: lots of changes ! 1. switch to a new build system based on automake (because we need to check for some lib on ./configure before make) 2. sort files in different directory 3. add some new features (some of them need OpenCV >= 2.4.5) svn path=/trunk/externals/pix_opencv/; revision=17324 --- src/blobtrack.h | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 src/blobtrack.h (limited to 'src/blobtrack.h') diff --git a/src/blobtrack.h b/src/blobtrack.h new file mode 100644 index 0000000..e95feed --- /dev/null +++ b/src/blobtrack.h @@ -0,0 +1,121 @@ +#include "opencv2/video/background_segm.hpp" +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/blobtrack.hpp" +#include +#include + +/* Select appropriate case insensitive string comparison function: */ +#if defined WIN32 || defined _MSC_VER + #define MY_STRNICMP strnicmp + #define MY_STRICMP stricmp +#else + #define MY_STRNICMP strncasecmp + #define MY_STRICMP strcasecmp +#endif + +/* List of foreground (FG) DETECTION modules: */ +static CvFGDetector* cvCreateFGDetector0 () { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD, NULL); } +static CvFGDetector* cvCreateFGDetector0Simple() { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD_SIMPLE, NULL); } +static CvFGDetector* cvCreateFGDetector1 () { return cvCreateFGDetectorBase(CV_BG_MODEL_MOG, NULL); } + +typedef struct DefModule_FGDetector +{ + CvFGDetector* (*create)(); + const char* nickname; + const char* description; +} DefModule_FGDetector; + +DefModule_FGDetector FGDetector_Modules[] = +{ + {cvCreateFGDetector0,"FG_0","Foreground Object Detection from Videos Containing Complex Background. ACM MM2003."}, + {cvCreateFGDetector0Simple,"FG_0S","Simplified version of FG_0"}, + {cvCreateFGDetector1,"FG_1","Adaptive background mixture models for real-time tracking. CVPR1999"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB DETECTION modules: */ +typedef struct DefModule_BlobDetector +{ + CvBlobDetector* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobDetector; + +DefModule_BlobDetector BlobDetector_Modules[] = +{ + {cvCreateBlobDetectorCC,"BD_CC","Detect new blob by tracking CC of FG mask"}, + {cvCreateBlobDetectorSimple,"BD_Simple","Detect new blob by uniform moving of connected components of FG mask"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRACKING modules: */ +typedef struct DefModule_BlobTracker +{ + CvBlobTracker* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTracker; + +DefModule_BlobTracker BlobTracker_Modules[] = +{ + {cvCreateBlobTrackerCCMSPF,"CCMSPF","connected component tracking and MSPF resolver for collision"}, + {cvCreateBlobTrackerCC,"CC","Simple connected component tracking"}, + {cvCreateBlobTrackerMS,"MS","Mean shift algorithm "}, + {cvCreateBlobTrackerMSFG,"MSFG","Mean shift algorithm with FG mask using"}, + {cvCreateBlobTrackerMSPF,"MSPF","Particle filtering based on MS weight"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY GENERATION modules: */ +typedef struct DefModule_BlobTrackGen +{ + CvBlobTrackGen* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackGen; + +DefModule_BlobTrackGen BlobTrackGen_Modules[] = +{ + {cvCreateModuleBlobTrackGenYML,"YML","Generate track record in YML format as synthetic video data"}, + {cvCreateModuleBlobTrackGen1,"RawTracks","Generate raw track record (x,y,sx,sy),()... in each line"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY POST PROCESSING modules: */ +typedef struct DefModule_BlobTrackPostProc +{ + CvBlobTrackPostProc* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackPostProc; + +DefModule_BlobTrackPostProc BlobTrackPostProc_Modules[] = +{ + {cvCreateModuleBlobTrackPostProcKalman,"Kalman","Kalman filtering of blob position and size"}, + {NULL,"None","No post processing filter"}, +// {cvCreateModuleBlobTrackPostProcTimeAverRect,"TimeAverRect","Average by time using rectangle window"}, +// {cvCreateModuleBlobTrackPostProcTimeAverExp,"TimeAverExp","Average by time using exponential window"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY ANALYSIS modules: */ +CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisDetector(); + +typedef struct DefModule_BlobTrackAnalysis +{ + CvBlobTrackAnalysis* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackAnalysis; + +DefModule_BlobTrackAnalysis BlobTrackAnalysis_Modules[] = +{ + {cvCreateModuleBlobTrackAnalysisHistPVS,"HistPVS","Histogram of 5D feature vector analysis (x,y,vx,vy,state)"}, + {NULL,"None","No trajectory analiser"}, + {cvCreateModuleBlobTrackAnalysisHistP,"HistP","Histogram of 2D feature vector analysis (x,y)"}, + {cvCreateModuleBlobTrackAnalysisHistPV,"HistPV","Histogram of 4D feature vector analysis (x,y,vx,vy)"}, + {cvCreateModuleBlobTrackAnalysisHistSS,"HistSS","Histogram of 4D feature vector analysis (startpos,endpos)"}, + {cvCreateModuleBlobTrackAnalysisTrackDist,"TrackDist","Compare tracks directly"}, + {cvCreateModuleBlobTrackAnalysisIOR,"IOR","Integrator (by OR operation) of several analysers "}, + {NULL,NULL,NULL} +}; -- cgit v1.2.1