VAT  3.0
Video Analysis Tool
footballConstants.h
1 #ifndef FOOTBALLCONSTANTS_H
2 #define FOOTBALLCONSTANTS_H
3 
4 #include <vector>
5 #include <map>
6 #include <QString>
7 #include <opencv2/core.hpp>
8 #include <src/common.h>
9 
10 //Vectors Structures for Apparience Model Clusters based on Bag of Features
11 typedef std::vector< std::vector <cv::Vec2d > > clusters2D_BOF;
12 typedef std::vector< std::vector <cv::Vec3d > > clusters3D_BOF;
13 typedef std::vector< std::vector < double > > clusters1D_BOF;
14 
15 
16 //Apparience Color Model Features Type
17 enum typeCluster
18 {
19  Chroma,
20  Luma,
21  Luv,
22  All
23 };
24 
25 //Defnied Classes for Soccer Match Player Tracking
26 enum soccerClass
27 {
28  UNK,
29  FIELD,
30  TEAMA,
31  TEAMB,
32  GKTA,
33  GKTB,
34  REF,
35  LINES,
36  BALL
37 };
38 
39 
40 typedef std::map< soccerClass , std::map< typeCluster, double *> > appHistType;
41 
42 //Fraction of Clothing Types
43 enum playerPart
44 {
45  SOCKS,
46  SHORT,
47  SHIRT
48 };
49 
50 //For Template of Detection Players Module
51 enum mapClass
52 {
53  TEAM_A_MAP,
54  TEAM_B_MAP,
55  COMPACT,
56  HGT
57 };
58 
59 //Color models types for all possible classes
60 enum ColorModelType
61 {
62  //SHIRTS
63  TEAMA_SHIRT,
64  TEAMB_SHIRT,
65  REFEREE_SHIRT,
66  GKPTA_SHIRT,
67  GKPTB_SHIRT,
68 
69  //SHORTS
70  TEAMA_SHORT,
71  TEAMB_SHORT,
72  REFEREE_SHORT,
73  GKPTA_SHORT,
74  GKPTB_SHORT,
75 
76  //SOCKS
77  TEAMA_SOCKS,
78  TEAMB_SOCKS,
79  REFEREE_SOCKS,
80  GKPTA_SOCKS,
81  GKPTB_SOCKS,
82 
83  //STADIUM
84  FIELD_MODELTYPE,
85  LINES_MODELTYPE,
86 
87  //UNDEFINED
88  UNDEFINED
89 };
90 
91 typedef struct playerCandidate playerCandidate;
93 {
94  playerCandidate( cv::Point _center, float _prob, float reliab , ObjectType _type, cv::Rect _model, int _blob_id) :
95  center(_center), prob(_prob),reliab(reliab),type(_type),model(_model),blob_id(_blob_id){}
96 
97  playerCandidate() : center(cv::Point(0,0)), prob(0.0),reliab(0.0),type(UNKNOWN),model(cv::Rect(0,0,0,0)),blob_id(-1){}
98 
99  cv::Point center; //Centro del jugador
100  float prob; //Probabilidad de Centro
101  float reliab; //Confiabilidad
102  ObjectType type; //Clase desde la que se obtuvo
103  cv::Rect model; //Modelo de Tamaño
104  int blob_id;//Id del Blob del que se obtuvo
105  bool used; //Señala si fue ocupado por un objeto
106  double distanceToObject; //Distancia al Objeto que detecto el Candidato
107 
108  bool operator < (const playerCandidate& str) const
109  {
110  return (distanceToObject < str.distanceToObject);
111  }
112 };
113 
114 template< int Unused > std::vector< ColorModelType > colorModelToCMType_(soccerClass m)
115 {
116 
117  switch(m)
118  {
119  case TEAMA:
120  {
121  std::vector<ColorModelType> retVec;
122  retVec.push_back(TEAMA_SHIRT);
123  retVec.push_back(TEAMA_SHORT);
124  retVec.push_back(TEAMA_SOCKS);
125  return retVec;
126  }
127  case TEAMB:
128  {
129  std::vector<ColorModelType> retVec;
130  retVec.push_back(TEAMB_SHIRT);
131  retVec.push_back(TEAMB_SHORT);
132  retVec.push_back(TEAMB_SOCKS);
133  return retVec;
134  }
135  case REF:
136  {
137  std::vector<ColorModelType> retVec;
138  retVec.push_back(REFEREE_SHIRT);
139  retVec.push_back(REFEREE_SHORT);
140  retVec.push_back(REFEREE_SOCKS);
141  return retVec;
142  }
143  case GKTA:
144  {
145  std::vector<ColorModelType> retVec;
146  retVec.push_back(GKPTA_SHIRT);
147  retVec.push_back(GKPTA_SHORT);
148  retVec.push_back(GKPTA_SOCKS);
149  return retVec;
150  }
151  case GKTB:
152  {
153  std::vector<ColorModelType> retVec;
154  retVec.push_back(GKPTB_SHIRT);
155  retVec.push_back(GKPTB_SHORT);
156  retVec.push_back(GKPTB_SOCKS);
157  return retVec;
158  }
159  default:
160  {
161  std::vector<ColorModelType> retVec;
162  return retVec;
163  }
164  }
165 }
166 
167 template< int Unused > QString modelTypeToQString_(soccerClass m) {
168  // definition
169  switch (m)
170  {
171  case TEAMA:
172  return "T_A";
173  case TEAMB:
174  return "T_B";
175  case REF:
176  return "REF";
177  case GKTA:
178  return "GKT_A";
179  case GKTB:
180  return "GKT_B";
181  case FIELD:
182  return "FIELD";
183  case LINES:
184  return "LINES";
185  case UNK:
186  return "UNK";
187  default:
188  return "UNK";
189 
190  }
191 }
192 
193 template< int Unused > ObjectType soccerClassToObjectType_(soccerClass sc)
194 {
195  switch (sc)
196  {
197  case TEAMA:
198  return TEAM_A;
199  case TEAMB:
200  return TEAM_B;
201  case GKTA:
202  return GKEEPER_A;
203  case GKTB:
204  return GKEEPER_B;
205  case REF:
206  return REFEREE;
207  default :
208  return FOOTBALL;
209  }
210 }
211 
212 namespace { QString (&modelTypeToQString)(soccerClass m) = modelTypeToQString_<0>; }
213 namespace { std::vector< ColorModelType > (&colorModelToCMType)(soccerClass m) = colorModelToCMType_<0>; }
214 namespace { ObjectType (&soccerClassToObjectType)(soccerClass sc) = soccerClassToObjectType_<0>; }
215 
216 
217 #endif // FOOTBALLCONSTANTS_H
Definition: footballConstants.h:92