VAT  3.0
Video Analysis Tool
RMMHypothesis.h
1 #ifndef RMMHYPOTHESIS_H
2 #define RMMHYPOTHESIS_H
3 
4 #include "src/blob.h"
5 
6 class RMMHypothesis;
7 typedef QSharedPointer<RMMHypothesis> SpRMMHypothesis;
8 
9 //struct hypothesesOrderedByBestProbabilityOperator {
10 // bool operator()(SpRMMHypothesis a1, SpRMMHypothesis a2);
11 //};
12 
13 
14 #include "RMMMobileObject.h"
15 #include <iostream>
16 #include <map>
17 #include <deque>
18 
19 class RMMMobileObject;
20 
21 typedef QSharedPointer<RMMMobileObject> SpRMMMobileObject;
22 
23 
25  public:
26  std::deque<SpRMMMobileObject> mobiles;
27  double hypothesisProbability;
28  static int m_currentTrackingBlobsNumber;
29  static int m_minArea;
30  static int m_minHeight;
31  static int m_minWidth;
32 
33  //Blobs used in "follow mobiles" phase.
34  bool *usedBlobs;
35  bool *involvedBlobs;
36  Blob **blobsVector;
37  int blobsNumber;
38 
39  int numUsed;
40  int numInvolved;
41  bool incompleteHypothesis;
42  std::deque< BoundingBox > freeEvidence; //Evidence involved but not associated to any blob
43  bool toEliminate;
44  bool comparedHypothesis;
45  bool justFirstFrames;
46 
47  int hypothesisNumber;
48 
49  bool survivedToComparison;
50  int numSurvived;
51 
52  RMMHypothesis();
53  RMMHypothesis(SpRMMHypothesis hypothesisToReplicate);
54  ~RMMHypothesis();
55 
56  std::deque<SpRMMMobileObject>::iterator begin();
57  std::deque<SpRMMMobileObject>::iterator end();
58  bool empty();
59  unsigned int size();
60  void clear();
61  std::deque<SpRMMMobileObject>::iterator erase(std::deque<SpRMMMobileObject>::iterator element);
62  std::deque<SpRMMMobileObject>::iterator erase(std::deque<SpRMMMobileObject>::iterator first, std::deque<SpRMMMobileObject>::iterator last);
63 
64  SpRMMMobileObject operator[](int index);
65 
66  //Init Functions
67  void initUsedBlobsList();
68  void initInvolvedBlobs();
69 
70  //Inserting Functions
71  void insertNewMobileObject(SpRMMMobileObject newMobileObject);
72  void insert(std::deque<SpRMMMobileObject>::iterator pos, std::deque<SpRMMMobileObject>::iterator f, std::deque<SpRMMMobileObject>::iterator l);
73 
74  //Getting Functions
75  double getProbability();
76  std::deque<SpRMMMobileObject> *getMobiles();
77  //Setting Functions
78  void setProbability(double p);
79  void setHypothesisProbability();
80 
81  bool lowSegmentationSupport(BoundingBox &b, double minSupportRate, QImage *im);
82  void cleanEvidence(double minSupportRate, QImage *im);
83 
84  friend std::ostream& operator<<(std::ostream&, SpRMMHypothesis);
85 };
86 
88 
89 #endif
Definition: RMMHypothesis.h:24
Definition: RMMMobileObject.h:36
Definition: blob.h:79