MTF
GridTracker.h
1 #ifndef MTF_GRID_TRACKER2_H
2 #define MTF_GRID_TRACKER2_H
3 
4 #include "GridBase.h"
5 
6 #include <vector>
7 
8 #define GT_GRID_SIZE_X 10
9 #define GT_GRID_SIZE_Y 10
10 #define GT_PATCH_SIZE_X 10
11 #define GT_PATCH_SIZE_Y 10
12 #define GT_RESET_AT_EACH_FRAME 1
13 #define GT_DYN_PATCH_SIZE 0
14 #define GT_PATCH_CENTROID_INSIDE true
15 #define GT_FB_ERR_THRESH 0
16 #define GT_FB_REINIT true
17 #define GT_USE_TBB true
18 #define GT_MAX_ITERS 1
19 #define GT_EPSILON 0.01
20 #define GT_ENABLE_PYR 0
21 #define GT_SHOW_TRACKERS 0
22 #define GT_SHOW_TRACKER_EDGES 0
23 #define GT_DEBUG_MODE 0
24 
25 _MTF_BEGIN_NAMESPACE
26 
28 
29  int grid_size_x, grid_size_y;
30  int patch_size_x, patch_size_y;
31 
32  int reset_at_each_frame;
33  bool dyn_patch_size;
34 
35  bool patch_centroid_inside;
36 
37  double fb_err_thresh;
38  bool fb_reinit;
39 
40  bool use_tbb;
41 
42  int max_iters;
43  double epsilon;
44  bool enable_pyr;
45 
46  bool show_trackers;// show the locations of individual patch trackers
47  bool show_tracker_edges;
48 
49  bool debug_mode;
50 
53  int _grid_size_x, int _grid_size_y,
54  int _patch_size_x, int _patch_size_y,
55  int _reset_at_each_frame, bool _dyn_patch_size,
56  bool _patch_centroid_inside, double fb_err_thresh,
57  bool _fb_reinit, bool _use_tbb, int _max_iters, double _epsilon,
58  bool _enable_pyr,bool _show_trackers,
59  bool _show_tracker_edges,bool _debug_mode);
60  GridTrackerParams(const GridTrackerParams *params = nullptr);
61 
62  int getResX() const{ return resx; }
63  int getResY() const{ return resy; }
64 
65 private:
66  int resx, resy;
67  void updateRes();
68 };
69 
70 template<class SSM>
71 class GridTracker : public GridBase{
72 
73 public:
74 
75  typedef typename SSM::ParamType SSMParams;
76  typedef typename SSM::EstimatorParams EstimatorParams;
77 
79 
80  GridTracker(const vector<TrackerBase*> _trackers, const ParamType *grid_params,
81  const EstimatorParams *_est_params, const SSMParams *ssm_params);
82  void initialize(const cv::Mat &corners) override;
83  void update() override;
84  void setImage(const cv::Mat &img) override;
85  void setRegion(const cv::Mat& corners) override;
86  const cv::Mat& getRegion() override{ return cv_corners_mat; }
87  const uchar* getPixMask() override{ return pix_mask.data(); }
88  int getResX() override{ return params.grid_size_x; }
89  int getResY() override{ return params.grid_size_y; }
90  SSM& getSSM() { return ssm; }
91 
92  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
93 
94 private:
95 
96  SSM ssm;
97  ParamType params;
98  EstimatorParams est_params;
99 
100  double centrod_dist_x, centrod_dist_y;
101 
102  std::vector<cv::Point2f> prev_pts;
103  std::vector<cv::Point2f> curr_pts;
104 
105  cv::Mat patch_corners;
106  std::vector<uchar> pix_mask;
107  VectorXd ssm_update;
108 
109  cv::Mat curr_img, prev_img;
110  cv::Mat curr_img_disp;
111 
112  Matrix2Xd centroid_offset;
113 
114  char* patch_win_name;
116  MatrixXi _linear_idx;
117  int pause_seq;
118  bool reinit_at_each_frame;
119 
120  std::vector<cv::Point2f> fb_prev_pts;
121  VectorXb fb_err_mask;
122  bool enable_fb_err_est;
123 
124  ~GridTracker(){}
125  void resetTrackers(bool reinit=true);
126  void backwardEstimation();
127  void showTrackers();
128 
129 };
130 
131 _MTF_END_NAMESPACE
132 
133 #endif
134 
Definition: StateSpaceModel.h:35
Definition: GridTracker.h:71
Definition: GridTracker.h:27
Definition: GridBase.h:8
double epsilon
maximum iterations of the GridTracker algorithm to run for each frame
Definition: GridTracker.h:43
GridTrackerParams(int _grid_size_x, int _grid_size_y, int _patch_size_x, int _patch_size_y, int _reset_at_each_frame, bool _dyn_patch_size, bool _patch_centroid_inside, double fb_err_thresh, bool _fb_reinit, bool _use_tbb, int _max_iters, double _epsilon, bool _enable_pyr, bool _show_trackers, bool _show_tracker_edges, bool _debug_mode)
decides whether logging data will be printed for debugging purposes;