Mercurial Hosting > traffic-intelligence
diff include/Motion.hpp @ 179:4f10e97cb677
added getting first and last instant for each feature
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 31 Oct 2011 19:17:42 -0400 |
parents | d7df8ecf5ccd |
children | 3a4eef37384f |
line wrap: on
line diff
--- a/include/Motion.hpp Mon Oct 31 00:35:34 2011 -0400 +++ b/include/Motion.hpp Mon Oct 31 19:17:42 2011 -0400 @@ -24,13 +24,16 @@ can be made generic for different list and blob */ FeatureTrajectory(const int& id, TrajectoryDBAccessList<cv::Point2f>& trajectoryDB, const std::string& positionsTableName, const std::string& velocitiesTableName); - unsigned int length(void) const { return positions->size();} + unsigned int length(void) const { return positions->size();} // cautious if not continuous: max-min+1 void setId(const unsigned int& id) { positions->setId(id);velocities->setId(id);} void setLost(void) { lost = true;} bool isLost(void) { return lost;} + unsigned int getFirstInstant(void) {return firstInstant;} + unsigned int getLastInstant(void) {return lastInstant;} + /// indicates whether the sum of the last nDisplacements displacements has been inferior to minFeatureDisplacement bool isDisplacementSmall(const unsigned int& nDisplacements, const float& minTotalFeatureDisplacement) const; @@ -50,7 +53,12 @@ friend std::stringstream& operator<<(std::stringstream& out, const FeatureTrajectory& ft); protected: - bool lost; + bool lost; /// \todo remove + /// first frame number + unsigned int firstInstant; + /// last frame number + unsigned int lastInstant; + TrajectoryPoint2fPtr positions; /** one fewer velocity than position v_n = p_n+1 - p_n*/ @@ -75,10 +83,14 @@ // class MovingObject {} // roadUserType, group of features -/// Class to group features +/** 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 _minDistance, float _maxDistance) : minDistance (_minDistance), maxDistance(_maxDistance) {} + FeatureGraph(float _connectionDistance, float _segmentationDistance) : connectionDistance (_connectionDistance), segmentationDistance(_segmentationDistance) {} + + void addFeature(const FeatureTrajectoryPtr& ft); // add vertex, includes adding links to current vertices // find connected components, check if old enough, if so, remove @@ -90,17 +102,19 @@ }; struct VertexInformation { - boost::shared_ptr<FeatureTrajectory> feature; + FeatureTrajectoryPtr feature; }; typedef boost::adjacency_list <boost::listS, boost::listS, boost::undirectedS, VertexInformation, FeatureConnection> UndirectedGraph; - float minDistance; - float maxDistance; + float connectionDistance; + float segmentationDistance; + // float minDistance; + // float maxDistance; UndirectedGraph graph; - std::vector<UndirectedGraph::vertex_descriptor> currentVertices, lostVertices; + //std::vector<UndirectedGraph::vertex_descriptor> currentVertices, lostVertices; }; // inlined implementations