Mercurial Hosting > traffic-intelligence
comparison include/Motion.hpp @ 191:0e60a306d324
added basic code to identify features and save them (crash)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 08 Dec 2011 18:32:35 -0500 |
parents | 36968a63efe1 |
children | 38974d27dd2d |
comparison
equal
deleted
inserted
replaced
190:36968a63efe1 | 191:0e60a306d324 |
---|---|
24 can be made generic for different list and blob */ | 24 can be made generic for different list and blob */ |
25 FeatureTrajectory(const int& id, TrajectoryDBAccessList<cv::Point2f>& trajectoryDB, const std::string& positionsTableName, const std::string& velocitiesTableName); | 25 FeatureTrajectory(const int& id, TrajectoryDBAccessList<cv::Point2f>& trajectoryDB, const std::string& positionsTableName, const std::string& velocitiesTableName); |
26 | 26 |
27 unsigned int length(void) const { return positions->size();} // cautious if not continuous: max-min+1 | 27 unsigned int length(void) const { return positions->size();} // cautious if not continuous: max-min+1 |
28 | 28 |
29 unsigned int getId(void) const { return positions->getId();} | |
29 void setId(const unsigned int& id) { positions->setId(id);velocities->setId(id);} | 30 void setId(const unsigned int& id) { positions->setId(id);velocities->setId(id);} |
30 | 31 |
31 void setLost(void) { lost = true;} | 32 void setLost(void) { lost = true;} |
32 bool isLost(void) { return lost;} | 33 bool isLost(void) { return lost;} |
33 | 34 |
90 // roadUserType, group of features | 91 // roadUserType, group of features |
91 | 92 |
92 /** Class to group features: Beymer et al. 99/Saunier and Sayed 06 | 93 /** Class to group features: Beymer et al. 99/Saunier and Sayed 06 |
93 \todo create various graph types with different parameters, that accept different feature distances or ways to connect and segment features */ | 94 \todo create various graph types with different parameters, that accept different feature distances or ways to connect and segment features */ |
94 class FeatureGraph { | 95 class FeatureGraph { |
95 public: | |
96 //FeatureGraph(float _minDistance, float _maxDistance) : minDistance (_minDistance), maxDistance(_maxDistance) {} | |
97 FeatureGraph(float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime) : connectionDistance (_connectionDistance), segmentationDistance(_segmentationDistance), minFeatureTime(_minFeatureTime) {} | |
98 | |
99 void addFeature(const FeatureTrajectoryPtr& ft); | |
100 | |
101 // add vertex, includes adding links to current vertices | |
102 // find connected components, check if old enough, if so, remove | |
103 | |
104 /// Computes the connected components: features have to be older than lastInstant | |
105 void connectedComponents(const int& lastInstant); | |
106 | |
107 std::string informationString(void); | |
108 | |
109 protected: | 96 protected: |
110 struct FeatureConnection { | 97 struct FeatureConnection { |
111 float minDistance; | 98 float minDistance; |
112 float maxDistance; | 99 float maxDistance; |
113 }; | 100 }; |
116 FeatureTrajectoryPtr feature; | 103 FeatureTrajectoryPtr feature; |
117 }; | 104 }; |
118 | 105 |
119 typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, VertexInformation, FeatureConnection> UndirectedGraph; | 106 typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, VertexInformation, FeatureConnection> UndirectedGraph; |
120 | 107 |
108 public: | |
109 typedef UndirectedGraph::vertex_descriptor vertex_descriptor; | |
110 | |
111 //FeatureGraph(float _minDistance, float _maxDistance) : minDistance (_minDistance), maxDistance(_maxDistance) {} | |
112 FeatureGraph(float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime, float _minNFeaturesPerGroup) : connectionDistance (_connectionDistance), segmentationDistance(_segmentationDistance), minFeatureTime(_minFeatureTime), minNFeaturesPerGroup(_minNFeaturesPerGroup) {} | |
113 | |
114 void addFeature(const FeatureTrajectoryPtr& ft); | |
115 | |
116 // add vertex, includes adding links to current vertices | |
117 // find connected components, check if old enough, if so, remove | |
118 | |
119 /// Computes the connected components: features have to be older than lastInstant | |
120 std::vector<std::vector<vertex_descriptor> > connectedComponents(const int& lastInstant); | |
121 | |
122 /** Performs some checks on groups of features and return their lists of ids if correct | |
123 Removes the vertices from the graph | |
124 */ | |
125 std::vector<std::vector<unsigned int> > getFeatureGroups(const std::vector<std::vector<vertex_descriptor> >& objectHypotheses); | |
126 | |
127 std::string informationString(void); | |
128 | |
129 protected: | |
121 float connectionDistance; | 130 float connectionDistance; |
122 float segmentationDistance; | 131 float segmentationDistance; |
123 unsigned int minFeatureTime; | 132 unsigned int minFeatureTime; |
133 float minNFeaturesPerGroup; | |
124 // float minDistance; | 134 // float minDistance; |
125 // float maxDistance; | 135 // float maxDistance; |
126 | 136 |
127 UndirectedGraph graph; | 137 UndirectedGraph graph; |
128 | 138 |