CAVAPA-GUI  30.5.2014
 All Classes Namespaces Functions Variables Typedefs Enumerations Pages
cavapa.h
1 #ifndef CAVAPA_H
2 #define CAVAPA_H
3 
4 #include <vector>
5 #include <opencv2/opencv.hpp>
6 
7 namespace cavapa {
8 using namespace std;
9 using namespace cv;
10 
11 struct sighting {
12  int id; // Seurantakohde
13  //<Petri>
14  // These should be integers instead
15  /*Point2f topleft;
16  Point2f bottomright;*/
17  Point2i topleft;
18  Point2i bottomright;
19  //</Petri>
20  Point2f world; // Kalibroinnin pohjalta tehty arvaus sijainnista
21  // maailmassa, ei vielä käytössä
22  float certainty; // Arvioitu havainnon luotettavuus, ei vielä käytössä
23 };
24 
25 struct camera {
26  Size res; // Resoluutio
27  Point3f pos; // Sijainti sisältäen korkeuden, ei vielä käytössä
28  Point3f dir; // Tuijotussuunta, toivottavasti alaviistoon, ei vielä käytössä
29  float fov; // Näkökentän leveys, ei vielä käytössä
30  float barrel; // Tynnyrivääristymän voimakkuus , ei vielä käytössä
31 
32  //<Petri>
33  // This needs to be here
34  unsigned int camera;
35  //</Petri>
36 };
37 
38 
39 // Useamman kameran suhteellisen tarkka sijainnin arvaaminen suhteessa
40 // toisiinsa onnistuu sillä, että merkitään kameroiden kuvista yhteisiä
41 // pisteitä: liikuntasalista vaikkapa lattian maalauksia ja ulkosalta
42 // esimerkiksi lyhtypylväiden juuria. Kolmella pisteellä pääsee jo vauhtiin.
43 // Ei vielä käytössä.
44 
45 struct calibration_point {
46  int id;
47  unsigned int camera;
48 
49  //<Petri>
50  // This should be integer instead
51  /*float pos[2];*/
52  Point2i pos;
53  //</Petri>
54 };
55 
56 
57 typedef vector<sighting> sightings;
58 
59 
60 // Tästä luokasta ei tarvitse välittää, eläviä sisuskaluja.
61 class tracker {
62  Mat gray, prevGray, image;
63  vector<Point2f> points[2];
64  vector<Point2f> momentum;
65  vector<int> age;
66 
67  Size res;
68 
69  Mat mask;
70  Mat mask2;
71 
72  ORB orb;
73  BackgroundSubtractorMOG2 mog;
74 
75  TermCriteria termcrit;
76  Size subPixWinSize, winSize;
77 
78  public:
79  tracker(Size dim);
80  sightings analyze(const Mat& frame);
81 };
82 
83 // Varsinainen tunnistin, hallinnoi kaikkea mahdollista useammalla
84 // kameralla toteutettavan kohteenseurannan vaatimaa tilaa ja tarjoaa
85 // rajapinnan havaintojen tekemiseksi.
86 
87 class detector {
88  vector<camera> cameras;
89  vector<tracker> trackers;
90 
91  public:
92  // Alustus. Montako kameraa, millaista, mihin suuntaan katsovia ja missä
93  // päin avaruutta. Kalibrointipisteet useamman kameran tarkemmaksi
94  // suhteuttamiseksi toisiinsa.
95  detector(const vector<camera>& cameras,
96  const vector<calibration_point>& cps);
97 
98  // Laskenta. Toivoo vektorillisen kuvia jokaista määritettyä kameraa kohden.
99  // Ulos pullahtaa havaintoja kameroittain.
100  vector<sightings> compute(const vector<Mat>& images);
101 };
102 }
103 
104 #endif // CAVAPA_H