Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef MULTIMARKERFILTERED_H
00025 #define MULTIMARKERFILTERED_H
00026
00034 #include "MultiMarker.h"
00035
00036 namespace alvar {
00037
00045 class ALVAR_EXPORT MultiMarkerFiltered : public MultiMarker
00046 {
00047 protected:
00048 static const int filter_buffer_max=15;
00049 FilterMedian *pointcloud_filtered;
00050
00051 double _Update(MarkerIterator &begin, MarkerIterator &end,
00052 Camera* cam, Pose& pose, IplImage* image);
00053
00054 public:
00058 MultiMarkerFiltered(std::vector<int>& indices);
00059
00061 ~MultiMarkerFiltered();
00062
00068 void PointCloudAverage(int marker_id, double edge_length, Pose &pose);
00069
00076 template <class M>
00077 double Update(const std::vector<M>* markers, Camera* cam, Pose& pose, IplImage* image = 0)
00078 {
00079 if(markers->size() < 1) return false;
00080 MarkerIteratorImpl<M> begin(markers->begin());
00081 MarkerIteratorImpl<M> end(markers->end());
00082 return _Update(begin, end,
00083 cam, pose, image);
00084 }
00085
00089 void MeasurementsReset() {
00090 pointcloud_filtered->reset();
00091 }
00092 };
00093
00094 }
00095
00096 #endif