comparison include/Motion.hpp @ 614:5e09583275a4

Merged Nicolas/trafficintelligence into default
author Mohamed Gomaa <eng.m.gom3a@gmail.com>
date Fri, 05 Dec 2014 12:13:53 -0500
parents b6ad86ee7033
children 045d05cef9d0
comparison
equal deleted inserted replaced
598:11f96bd08552 614:5e09583275a4
2 #define MOTION_HPP 2 #define MOTION_HPP
3 3
4 #include "src/Trajectory.h" 4 #include "src/Trajectory.h"
5 #include <boost/shared_ptr.hpp> 5 #include <boost/shared_ptr.hpp>
6 #include <boost/graph/adjacency_list.hpp> 6 #include <boost/graph/adjacency_list.hpp>
7
7 8
8 template<typename T> class TrajectoryDBAccess; 9 template<typename T> class TrajectoryDBAccess;
9 template<typename T> class TrajectoryDBAccessList; 10 template<typename T> class TrajectoryDBAccessList;
10 11
11 typedef boost::shared_ptr<TrajectoryPoint2f> TrajectoryPoint2fPtr; 12 typedef boost::shared_ptr<TrajectoryPoint2f> TrajectoryPoint2fPtr;
12 13
13 /** Class for feature data 14 /** Class for feature data
14 positions, velocities and other statistics to evaluate their quality 15 positions, velocities and other statistics to evaluate their quality
15 before saving. */ 16 before saving. */
16 class FeatureTrajectory { 17 class FeatureTrajectory
18 {
17 public: 19 public:
18 FeatureTrajectory(const unsigned int& frameNum, const cv::Point2f& p, const cv::Mat& homography); 20 FeatureTrajectory(const unsigned int& frameNum, const cv::Point2f& p, const cv::Mat& homography);
19 21
20 FeatureTrajectory(TrajectoryPoint2fPtr& _positions, TrajectoryPoint2fPtr& _velocities); 22 FeatureTrajectory(TrajectoryPoint2fPtr& _positions, TrajectoryPoint2fPtr& _velocities);
21 23
45 47
46 void addPoint(const unsigned int& frameNum, const cv::Point2f& p, const cv::Mat& homography); 48 void addPoint(const unsigned int& frameNum, const cv::Point2f& p, const cv::Mat& homography);
47 49
48 void shorten(void); 50 void shorten(void);
49 51
52 void movingAverage(const unsigned int& nFramesSmoothing);
53
50 void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB, const std::string& positionsTableName, const std::string& velocitiesTableName) const; 54 void write(TrajectoryDBAccess<cv::Point2f>& trajectoryDB, const std::string& positionsTableName, const std::string& velocitiesTableName) const;
51 55
52 #ifdef USE_OPENCV 56 #ifdef USE_OPENCV
53 void draw(cv::Mat& img, const cv::Mat& homography, const cv::Scalar& color) const; 57 void draw(cv::Mat& img, const cv::Mat& homography, const cv::Scalar& color) const;
54 #endif 58 #endif
55 59
56 friend std::stringstream& operator<<(std::stringstream& out, const FeatureTrajectory& ft); 60 friend std::ostream& operator<<(std::ostream& out, const FeatureTrajectory& ft);
57 61
58 protected: 62 protected:
59 /// first frame number 63 /// first frame number
60 unsigned int firstInstant; 64 unsigned int firstInstant;
61 /// last frame number 65 /// last frame number
62 unsigned int lastInstant; 66 unsigned int lastInstant;
63 67
64 TrajectoryPoint2fPtr positions; 68 TrajectoryPoint2fPtr positions;
65 /** one fewer velocity than position 69 /** one fewer velocity than position
66 v_n = p_n+1 - p_n*/ 70 v_n = p_n - p_n-1*/
67 TrajectoryPoint2fPtr velocities; 71 TrajectoryPoint2fPtr velocities;
68 72
69 /// norms of velocities for feature constraints, one fewer positions than positions 73 /// norms of velocities for feature constraints, one fewer positions than positions
70 std::vector<float> displacementDistances; 74 std::vector<float> displacementDistances;
71 75
73 }; 77 };
74 78
75 typedef boost::shared_ptr<FeatureTrajectory> FeatureTrajectoryPtr; 79 typedef boost::shared_ptr<FeatureTrajectory> FeatureTrajectoryPtr;
76 80
77 // inlined 81 // inlined
78 inline std::stringstream& operator<<(std::stringstream& out, const FeatureTrajectory& ft) { 82 inline std::ostream& operator<<(std::ostream& out, const FeatureTrajectory& ft)
83 {
79 out << *(ft.positions); 84 out << *(ft.positions);
80 out << "\n"; 85 out << "\n";
81 out << *(ft.velocities); 86 out << *(ft.velocities);
87
82 return out; 88 return out;
83 } 89 }
84 90
85 // class MovingObject {} 91 // class MovingObject {}
86 // roadUserType, group of features 92 // roadUserType, group of features
114 /// Computes the connected components: features have to be older than lastInstant 120 /// Computes the connected components: features have to be older than lastInstant
115 void connectedComponents(const unsigned int& lastInstant); 121 void connectedComponents(const unsigned int& lastInstant);
116 122
117 /** Performs some checks on groups of features and return their lists of ids if correct 123 /** Performs some checks on groups of features and return their lists of ids if correct
118 Removes the vertices from the graph */ 124 Removes the vertices from the graph */
119 std::vector<std::vector<unsigned int> > getFeatureGroups(void); 125 void getFeatureGroups(std::vector<std::vector<FeatureTrajectoryPtr> >& featureGroups);
120 126
121 std::string informationString(void) const; 127 std::string informationString(void) const;
122 128
123 int getNVertices(void) const; 129 int getNVertices(void) const;
124 int getNEdges(void) const; 130 int getNEdges(void) const;