aboutsummaryrefslogtreecommitdiff
path: root/src/blobtrack.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/blobtrack.h')
-rw-r--r--src/blobtrack.h121
1 files changed, 121 insertions, 0 deletions
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 <opencv2/imgproc/imgproc_c.h>
+#include <stdio.h>
+
+/* 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}
+};