Mercurial Hosting > traffic-intelligence
diff 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 |
line wrap: on
line diff
--- a/include/Motion.hpp Wed Dec 07 18:51:32 2011 -0500 +++ b/include/Motion.hpp Thu Dec 08 18:32:35 2011 -0500 @@ -26,6 +26,7 @@ unsigned int length(void) const { return positions->size();} // cautious if not continuous: max-min+1 + unsigned int getId(void) const { return positions->getId();} void setId(const unsigned int& id) { positions->setId(id);velocities->setId(id);} void setLost(void) { lost = true;} @@ -92,20 +93,6 @@ /** Class to group features: Beymer et al. 99/Saunier and Sayed 06 \todo create various graph types with different parameters, that accept different feature distances or ways to connect and segment features */ class FeatureGraph { -public: - //FeatureGraph(float _minDistance, float _maxDistance) : minDistance (_minDistance), maxDistance(_maxDistance) {} - FeatureGraph(float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime) : connectionDistance (_connectionDistance), segmentationDistance(_segmentationDistance), minFeatureTime(_minFeatureTime) {} - - void addFeature(const FeatureTrajectoryPtr& ft); - - // add vertex, includes adding links to current vertices - // find connected components, check if old enough, if so, remove - - /// Computes the connected components: features have to be older than lastInstant - void connectedComponents(const int& lastInstant); - - std::string informationString(void); - protected: struct FeatureConnection { float minDistance; @@ -118,9 +105,32 @@ typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS, VertexInformation, FeatureConnection> UndirectedGraph; +public: + typedef UndirectedGraph::vertex_descriptor vertex_descriptor; + + //FeatureGraph(float _minDistance, float _maxDistance) : minDistance (_minDistance), maxDistance(_maxDistance) {} + FeatureGraph(float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime, float _minNFeaturesPerGroup) : connectionDistance (_connectionDistance), segmentationDistance(_segmentationDistance), minFeatureTime(_minFeatureTime), minNFeaturesPerGroup(_minNFeaturesPerGroup) {} + + void addFeature(const FeatureTrajectoryPtr& ft); + + // add vertex, includes adding links to current vertices + // find connected components, check if old enough, if so, remove + + /// Computes the connected components: features have to be older than lastInstant + std::vector<std::vector<vertex_descriptor> > connectedComponents(const int& lastInstant); + + /** Performs some checks on groups of features and return their lists of ids if correct + Removes the vertices from the graph + */ + std::vector<std::vector<unsigned int> > getFeatureGroups(const std::vector<std::vector<vertex_descriptor> >& objectHypotheses); + + std::string informationString(void); + +protected: float connectionDistance; float segmentationDistance; unsigned int minFeatureTime; + float minNFeaturesPerGroup; // float minDistance; // float maxDistance;