source: flair-dev/trunk/include/FlairVisionFilter/OpticalFlowData.h@ 50

Last change on this file since 50 was 44, checked in by Sanahuja Guillaume, 8 years ago

m

File size: 3.6 KB
Line 
1/*!
2 * \file OpticalFlowData.h
3 * \brief Class defining pptical flow datas
4 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
5 * \date 2012/04/12
6 * \version 4.0
7 */
8
9#ifndef OPTICALFLOWDATA_H
10#define OPTICALFLOWDATA_H
11
12#include <cxcore.h>
13#include <io_data.h>
14
15namespace flair { namespace filter {
16 /*! \class OpticalFlowData
17 *
18 * \brief Class defining optical flow datas
19 *
20 * Optical flow datas are composed of the following: \n
21 * PointsA: tracked points on first image
22 * PointsB: tracked points on second image
23 * FoundFeature: array representing if a point on first image is found on second image
24 * FeatureError: array representing correlation error for each point (confidence)
25 */
26 class OpticalFlowData: public core::io_data {
27 public:
28 class Type: public core::DataType {
29 size_t GetSize() const {return 0;} //TODO
30 std::string GetDescription() const {return "optical flow";}
31 };
32
33 /*!
34 * \brief Constructor
35 *
36 * Construct OpticalFlowData.
37 *
38 * \param parent parent
39 * \param max_features maximum number of features to track
40 * \param name name
41 * \param n number of samples for the io_data
42 */
43 OpticalFlowData(const core::Object* parent,uint32_t max_features,std::string name="",uint32_t n=1);
44
45 /*!
46 * \brief Destructor
47 *
48 */
49 ~OpticalFlowData();
50
51 /*!
52 * \brief Points on first image
53 *
54 */
55 CvPoint* PointsA(void) const;
56
57 /*!
58 * \brief Points on second image
59 *
60 */
61 CvPoint2D32f* PointsB(void) const;
62
63 /*!
64 * \brief Features found
65 *
66 * value of the array is one if feature is found
67 */
68 char *FoundFeature(void) const;
69
70 /*!
71 * \brief Correlation error
72 *
73 */
74 uint32_t *FeatureError(void) const;
75
76 /*!
77 * \brief Set points of interest of frst image
78 *
79 * \param points points
80 */
81 void SetPointsA(const CvPoint *points);
82
83 /*!
84 * \brief Set points of interest of second image
85 *
86 * \param points points
87 */
88 void SetPointsB(const CvPoint2D32f *points);
89
90 /*!
91 * \brief Set found features
92 *
93 * \param found_features found features
94 */
95 void SetFoundFeature(const char *found_features);
96
97 /*!
98 * \brief Set features error
99 *
100 * \param features_error features error
101 */
102 void SetFeatureError(const unsigned int *features_error);
103
104 /*!
105 * \brief Number of maximum features
106 *
107 */
108 uint32_t MaxFeatures(void) const;
109
110 /*!
111 * \brief Number of tracked features
112 *
113 */
114 uint32_t NbFeatures(void) const;
115
116 /*!
117 * \brief Set number of tracked features
118 *
119 * \param value number of tracked features
120 */
121 void SetNbFeatures(uint32_t value);
122
123 /*!
124 * \brief Change number of maximum features
125 *
126 * \param value new number of maximum tracked features
127 */
128 void Resize(uint32_t value);
129
130 OpticalFlowData::Type const &GetDataType() const {return dataType;}
131
132 private:
133 uint32_t max_features;
134 uint32_t nb_features;
135 CvPoint* pointsA;
136 CvPoint2D32f* pointsB;
137 char *found_features;
138 uint32_t *features_error;
139 void CopyDatas(char* dst) const;
140 Type dataType;
141 };
142} // end namespace filter
143} // end namespace flair
144#endif // OPTICALFLOWDATA_H
Note: See TracBrowser for help on using the repository browser.