The Dirtchamber
A mixed reality testing environment for real-time global illumination algorithms
tracker.h
Go to the documentation of this file.
1 /*
2  * Dune D3D library - Tobias Alexander Franke 2014
3  * For copyright and license see LICENSE
4  * http://www.tobias-franke.eu
5  */
6 
9 #ifndef DUNE_TRACKER
10 #define DUNE_TRACKER
11 
12 #ifdef OPENCV
13 
14 #include "render_target.h"
15 
16 #include <DirectXMath.h>
17 
18 #include <opencv2/core/core.hpp>
19 
20 namespace dune
21 {
28  class pattern
29  {
30  protected:
31  std::vector<cv::Mat> rotated_versions_;
32 
33  public:
41  void load(const tstring& filename);
42 
43  const cv::Mat& operator[](size_t i) const { return rotated_versions_[i]; }
44  };
45 
56  {
57  size_t index;
58  int orientation;
59  double correlation;
60 
61  DirectX::XMMATRIX transformation;
62  };
63 
70  class tracker
71  {
72  public:
73  float time_track_;
74 
75  protected:
76  cv::Mat cam_intrinsic_;
77  cv::Mat cam_distortion_;
78 
79  std::vector<pattern> patterns_;
80  std::vector<detection_info> detected_;
81 
82  public:
83  void create(const tstring& camera_parameters_filename);
84  void destroy();
85 
94  void track_frame(render_target& frame);
95 
97  size_t load_pattern(const tstring& filename);
98 
100  void remove_pattern(size_t id);
101 
115  DirectX::XMFLOAT4X4 model_view_matrix(FLOAT scale, const DirectX::XMFLOAT3& translation, const DirectX::XMFLOAT4X4& rotation, UINT pattern_id = 0) const;
116  };
117 }
118 
119 #endif
120 
121 #endif
A simple pattern tracker written with OpenCV.
Definition: tracker.h:70
DirectX::XMFLOAT4X4 model_view_matrix(FLOAT scale, const DirectX::XMFLOAT3 &translation, const DirectX::XMFLOAT4X4 &rotation, UINT pattern_id=0) const
Retreive a model-view matrix for a pattern id.
Definition: tracker.cpp:356
void remove_pattern(size_t id)
Remove a loaded pattern identified by an ID.
Detected pattern information block.
Definition: tracker.h:55
void track_frame(render_target &frame)
Track loaded patterns in a render_target frame.
Definition: tracker.cpp:375
void load(const tstring &filename)
Load a pattern from disk.
Definition: tracker.cpp:309
A render target wrapper.
Definition: render_target.h:30
A basic pattern.
Definition: tracker.h:28
size_t load_pattern(const tstring &filename)
Load a pattern filename from disk. Returns an ID for the pattern to later identify it...
Definition: tracker.cpp:386