ProjectedTextures
Prototype software for spacial augmented reality applications.
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
Tracker.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QMatrix4x4>
4 #include <QThread>
5 #include <QTime>
6 #include <QQueue>
7 #include <opencv2/opencv.hpp>
8 #include "Similarity.h"
9 
10 using cv::Mat;
11 
16 struct FilterConfig{
17  bool kalman;
19  double processNoise;
24  float maxRotation;
25 };
26 
27 
28 class Tracker :
29  public QThread
30 {
31  Q_OBJECT
32 
33 public:
39  virtual ~Tracker(void){}
40 
41  void stop();
42  void stopAndDelete();
44  virtual Similarity getPose(int trackableId) = 0;
45  virtual Similarity getOrigin() = 0;
46  virtual bool isTracked(int trackableId) = 0;
48 protected:
49  virtual void update() = 0;
50  void run();
54  //calculate fps
55  QTime t;
57  static const int fpsQueueLength = 32;
58  QQueue<int> fpsQueue;
59  int avgFPS;
60  void updateFPS(int timeElapsed);
61 
62  QMutex stopMutex;
63  volatile bool doStop;
70  //Kalman Filter
71  int nStates;
73  int nInputs;
75  void initKalmanFilter(cv::KalmanFilter &KF);
76  void fillMeasurements( cv::Mat &measurements, Similarity pose);
77  void updateKalmanFilter( cv::KalmanFilter &KF, cv::Mat &measurement, Similarity &pose);
78 
79 signals:
80  void newOrigin(QMatrix4x4 origin);
81  void newFps(int fps);
83 };