PedestrainCounting
RGIFeature.h
1 
6 #ifndef RGIFEATURE_HEADER
7 #define RGIFEATURE_HEADER
8 
9 #include "EstimatedGaussianDistribution.h"
10 #include "IntegralImage.h"
11 #include "Feature.h"
12 
13 #define NUM_RGI_BINS 9
14 
15 class RGIFeature {
16 public:
17  RGIFeature(const Size &patchSize);
18  virtual ~RGIFeature();
19 
20  void GetInitialDistribution(EstimatedGaussianDistribution<NUM_RGI_BINS> *distribution) const;
21  bool Extract(const IntegralImage *intImage, const Rect &roi, Feature *feature);
22 
26  void Reset(const Size &patchSize);
27 
28 private:
29 
30  Rect patch, scaledPatch;
31 
32  // size of initial patch.
33  Size initSize;
34 
35  // current size under investigation.
36  Size curSize;
37 
38  // scale factor in vertical direction.
39  float scaledHeight;
40 
41  // scale factor in horizontal direction.
42  float scaledWidth;
43 
44  void GeneratreRandomFeature(const Size &imgSize);
45 
46  inline void NormalizeHistogram(float *histogram, int N) const {
47  float sum = 0.0f;
48  for (int i = 0; i < N; i++) {
49 
50  // Some tests.
51  assert(histogram[i] >= 0.0f);
52 
53  sum += histogram[i];
54  }
55  float invSum = 1.0f / sum;
56  for (int i = 0; i < N; i++) {
57  histogram[i] *= invSum;
58  }
59  }
60 
61  // Minimum size.
62  static const Size minimumSize;
63  static const int minimumArea;
64 
65  const static float initMean[NUM_RGI_BINS];
66  const static float initSigma[NUM_RGI_BINS];
67 };
68 
69 #endif
Definition: RGIFeature.h:15
Definition: Geometry.h:34
Definition: EstimatedGaussianDistribution.h:10
Definition: Geometry.h:14
Definition: Feature.h:12
void Reset(const Size &patchSize)
Definition: RGIFeature.cpp:35
Definition: IntegralImage.h:11