My Project
MultiMarkerFiltered.h
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #ifndef MULTIMARKERFILTERED_H
25 #define MULTIMARKERFILTERED_H
26 
34 #include "MultiMarker.h"
35 
36 namespace alvar {
37 
45 class ALVAR_EXPORT MultiMarkerFiltered : public MultiMarker
46 {
47 protected:
48  static const int filter_buffer_max = 15;
49  FilterMedian * pointcloud_filtered;
50 
51  double
52  _Update(MarkerIterator &begin, MarkerIterator &end, Camera *cam, Pose &pose, cv::Mat &image);
53 
54 public:
58  MultiMarkerFiltered(std::vector<int> &indices);
59 
62 
68  void PointCloudAverage(int marker_id, double edge_length, Pose &pose);
69 
76  template <class M>
77  double
78  Update(const std::vector<M> *markers, Camera *cam, Pose &pose, cv::Mat &image)
79  {
80  if (markers->size() < 1)
81  return false;
82  MarkerIteratorImpl<M> begin(markers->begin());
83  MarkerIteratorImpl<M> end(markers->end());
84  return _Update(begin, end, cam, pose, image);
85  }
86 
90  void
92  {
93  pointcloud_filtered->reset();
94  }
95 };
96 
97 } // namespace alvar
98 
99 #endif
This file implements a multi-marker.
Simple Camera class for calculating distortions, orientation or projections with pre-calibrated camer...
Definition: Camera.h:82
virtual void reset()
Reset the filter state.
FilterMedian provides an median filter
Definition: Filter.h:166
Iterator type for traversing templated Marker vector without the template.
Definition: Marker.h:365
Iterator implementation for traversing templated Marker vector without the template.
Definition: Marker.h:383
Multi marker that is constructed by first calculating the marker poses directly relative to base mark...
double Update(const std::vector< M > *markers, Camera *cam, Pose &pose, cv::Mat &image)
Updates the marker field and camera pose.
~MultiMarkerFiltered()
Destructor.
void PointCloudAverage(int marker_id, double edge_length, Pose &pose)
Updates the 3D point cloud by averaging the calculated results.
void MeasurementsReset()
Reset the measurements.
MultiMarkerFiltered(std::vector< int > &indices)
Constructor.
Base class for using MultiMarker.
Definition: MultiMarker.h:48
Pose representation derived from the Rotation class
Definition: Pose.h:53
Main ALVAR namespace.
Definition: Alvar.h:174