PedestrainCounting
SingleTarget.h
1 
9 #ifndef SINGLE_TARGET_HEADER
10 #define SINGLE_TARGET_HEADER
11 
12 #define ST_DEBUG
13 
14 #include "Options.h"
15 #include "StrongClassifierDirectSelect.h"
16 #include "ParticleFilterConstVelocity.h"
17 #include "MultiSampler.h"
18 #include "SingleSampler.h"
19 
20 #define SINGLE_TARGET_VELOCITY_CONST 10.0f
21 
36 class SingleTarget {
37 public:
38 
42  SingleTarget(const Options &ops);
43  ~SingleTarget();
44 
45  void InitializeTarget(const Rect &target, const Point2D &initVelocity);
46 
51  void Propagate(const Size &imgSize);
52 
61  void Train(const IntegralImage *intImage, const MultiSampler *multiSampler, int id);
62 
66  inline void Train(const IntegralImage *intImage, const SingleSampler *sampler) {
67  for (int i = 0; i < sampler->GetNumPos(); i++) {
68  classifier->Update(intImage, sampler->GetPosSample(i), 1, 1.0f);
69  }
70  for (int i = 0; i < sampler->GetNumNeg(); i++) {
71  classifier->Update(intImage, sampler->GetPosSample(i), -1, 1.0f);
72  }
73  }
74 
82  void CalculateMatchScore(const IntegralImage *intImage,
83  const Pool<Rect> &dets,
84  std::vector<MatchMatrix::MatchScore>::iterator &matchArray) const;
85 
89  bool CheckNearbyTarget(const Rect &det, int distThre) const;
90 
99  inline void Observe(const IntegralImage *intImage, const Rect &detection,
100  float detectionWeight) {
101  particleFilter->Observe(classifier, intImage, detection, detectionWeight);
102  }
103 
107  inline void Observe(const IntegralImage *intImage) {
108  particleFilter->Observe(classifier, intImage);
109  }
110 
114  inline void UpdateSeq(bool isDetected) {
115  detectionSeq >>= 1;
116  if (isDetected)
117  detectionSeq |= 0x08;
118  }
119 
120  inline void ResampleWithBest() {
121  particleFilter->ResampleWithBest();
122  }
123 
124  inline void ResampleWithConfidence() {
125  particleFilter->ResampleWithConfidence();
126  }
127 
128  inline void DrawTarget(cv::Mat &img, const cv::Scalar &color) const {
129  particleFilter->DrawTarget(img, color);
130  }
131 
132  inline void DrawParticles(cv::Mat &img, const cv::Scalar &color) const {
133  particleFilter->DrawParticles(img, color);
134  }
135 
136  inline void DrawParticlesWithConfidence(cv::Mat &img, const cv::Scalar &color) const {
137  particleFilter->DrawParticlesWithConfidence(img, color);
138  }
139 
140  inline const Rect &GetTarget() const {
141  return particleFilter->GetTarget();
142  }
143 
144  inline void SetTarget(const Rect &t) {
145  particleFilter->SetTarget(t);
146  }
147 
148 private:
149 
150  StrongClassifierDirectSelect *classifier;
151  ParticleFilterConstVelocity *particleFilter;
152 
166  uchar detectionSeq;
167 
168  const float velocitySigmaConst;
169 };
170 
171 #endif
Definition: SingleTarget.h:36
Definition: Geometry.h:34
void CalculateMatchScore(const IntegralImage *intImage, const Pool< Rect > &dets, std::vector< MatchMatrix::MatchScore >::iterator &matchArray) const
Definition: SingleTarget.cpp:106
Definition: ParticleFilterConstVelocity.h:15
Definition: MultiSampler.h:18
void ResampleWithBest()
Definition: ParticleFilter.cpp:90
Definition: Geometry.h:14
void Observe(const IntegralImage *intImage, const Rect &detection, float detectionWeight)
Definition: SingleTarget.h:99
SingleTarget(const Options &ops)
Definition: SingleTarget.cpp:3
void Observe(const StrongClassifier *classifier, const IntegralImage *intImage)
Definition: ParticleFilter.cpp:51
bool CheckNearbyTarget(const Rect &det, int distThre) const
Definition: SingleTarget.cpp:113
void Observe(const IntegralImage *intImage)
Definition: SingleTarget.h:107
Definition: IntegralImage.h:11
void Propagate(const Size &imgSize)
Definition: SingleTarget.cpp:36
Definition: SingleSampler.h:13
void ResampleWithConfidence()
Definition: ParticleFilter.cpp:108
void UpdateSeq(bool isDetected)
Definition: SingleTarget.h:114
Definition: StrongClassifierDirectSelect.h:11
Definition: Geometry.h:69
void Train(const IntegralImage *intImage, const MultiSampler *multiSampler, int id)
Definition: SingleTarget.cpp:53
Definition: Options.h:14
void Train(const IntegralImage *intImage, const SingleSampler *sampler)
Definition: SingleTarget.h:66