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