VAT  3.0
Video Analysis Tool
RMAlternativeSolution.h
1 #ifndef RMALTERNATIVE_SOLUTION_H
2 #define RMALTERNATIVE_SOLUTION_H
3 
4 #include "blob.h"
5 #include "MobileObject.h"
6 #include <iostream>
7 #include <map>
8 #include <deque>
9 
10 
12  public:
13  int *blobsCombo;
14  double score;
15 
16  mobilePossibility(int blobsNumber);
18 };
19 
21 
22 typedef QSharedPointer<RMAlternativeSolution> SpRMAlternativeSolution;
23 
25  bool operator()(SpRMAlternativeSolution a1, SpRMAlternativeSolution a2);
26 };
27 
28 
30 
31  private:
32  std::deque<SpMobileObject> solution;
33  double alternativeProbability;
34 
35 
36  public:
37  static int m_currentTrackingBlobsNumber;
38 
39  //Blobs used in "follow mobiles" phase.
40  bool *usedBlobs;
41  bool *involvedBlobs;
42  Blob **blobsVector;
43  int blobsNumber;
44  int numUsed;
45  int numCurrentlyLost;
46  bool incompleteAlternative;
47  bool toEliminate;
48  bool comparedAlternative;
49  bool justFirstFrames;
50 
51  int alternativeNumber;
52 
53  std::map<long int, std::set<SpMobileObject, orderedByBestCoherenceOperator> > newObjectsList;
54  std::set<SpRMAlternativeSolution, alternativesOrderedByBestProbabilityOperator> newAlternatives;
55 
56  bool survivedToComparison;
57  int numSurvived;
58 
60  RMAlternativeSolution(SpRMAlternativeSolution altSolutionToReplicate);
62 
63  std::deque<SpMobileObject>::iterator begin();
64  std::deque<SpMobileObject>::iterator end();
65  bool empty();
66  unsigned int size();
67  void clear();
68  std::deque<SpMobileObject>::iterator erase(std::deque<SpMobileObject>::iterator element);
69  std::deque<SpMobileObject>::iterator erase(std::deque<SpMobileObject>::iterator first, std::deque<SpMobileObject>::iterator last);
70 
71  SpMobileObject operator[](int index);
72 
73  //Init Functions
74  void initUsedBlobsList();
75  void initInvolvedBlobs();
76 
77  //Inserting Functions
78  void insertNewMobileObject(SpMobileObject newMobileObject);
79  void insert(std::deque<SpMobileObject>::iterator pos, std::deque<SpMobileObject>::iterator f, std::deque<SpMobileObject>::iterator l);
80 
81  //Getting Functions
82  double getProbability();
83  std::deque<SpMobileObject> *getSolution();
84  //Setting Functions
85  void setProbability(double p);
86  void setAlternativeProbability();
87 
88  friend std::ostream& operator<<(std::ostream&, SpRMAlternativeSolution);
89 };
90 
92 
93 #endif
Definition: RMAlternativeSolution.h:11
Definition: RMAlternativeSolution.h:29
Definition: RMAlternativeSolution.h:24
Definition: blob.h:79