Mercurial Hosting > traffic-intelligence
diff c/Motion.cpp @ 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 | f86f5f25730a |
children | 045d05cef9d0 |
line wrap: on
line diff
--- a/c/Motion.cpp Thu Apr 18 15:29:33 2013 -0400 +++ b/c/Motion.cpp Fri Dec 05 12:13:53 2014 -0500 @@ -51,7 +51,7 @@ float disp = 0; for (unsigned int i=0; i<nDisplacements; i++) disp += displacementDistances[nPositions-2-i]; - result = disp < minTotalFeatureDisplacement; + result = disp <= minTotalFeatureDisplacement; } return result; } @@ -66,9 +66,9 @@ else ratio = displacementDistances[nPositions-3] / displacementDistances[nPositions-2]; - float cosine = scalarProduct((*velocities)[nPositions-3],(*velocities)[nPositions-2]) / (displacementDistances[nPositions-3] * displacementDistances[nPositions-2]); + float cosine = (*velocities)[nPositions-3].dot((*velocities)[nPositions-2]) / (displacementDistances[nPositions-3] * displacementDistances[nPositions-2]); - result &= (ratio < accelerationBound) & (cosine > deviationBound); + result = (ratio < accelerationBound) & (cosine > deviationBound); } return result; } @@ -111,6 +111,11 @@ displacementDistances.pop_back(); } +void FeatureTrajectory::movingAverage(const unsigned int& nFramesSmoothing) { + positions->movingAverage(nFramesSmoothing); + velocities->movingAverage(nFramesSmoothing); +} + void FeatureTrajectory::write(TrajectoryDBAccess<Point2f>& trajectoryDB, const string& positionsTableName, const string& velocitiesTableName) const { trajectoryDB.write(*positions, positionsTableName); trajectoryDB.write(*velocities, velocitiesTableName); @@ -164,7 +169,7 @@ if (ft->minMaxSimilarity(*ft2, firstInstant, lastInstant, connectionDistance, segmentationDistance)) { UndirectedGraph::edge_descriptor e; bool unused; - tie(e, unused) = add_edge(newVertex, *vi, graph); + boost::tuples::tie(e, unused) = add_edge(newVertex, *vi, graph); // no need to add measures to graph[e] (edge properties) } } @@ -185,7 +190,7 @@ vector<vector<vertex_descriptor> > tmpobjects(num), objects; // vector of components (component = vector of vertex descriptors) graph_traits<UndirectedGraph>::vertex_iterator vi, vend; - for(tie(vi,vend) = vertices(graph); vi != vend; ++vi) { + for(boost::tuples::tie(vi,vend) = vertices(graph); vi != vend; ++vi) { unsigned int id = components[*vi]; lastInstants[id] = max(lastInstants[id], graph[*vi].feature->getLastInstant()); tmpobjects[id].push_back(*vi); @@ -201,8 +206,8 @@ } } -vector<vector<unsigned int> > FeatureGraph::getFeatureGroups(void) { - vector<vector<unsigned int> > featureGroups; +void FeatureGraph::getFeatureGroups(vector<vector<FeatureTrajectoryPtr> >& featureGroups) { + featureGroups.clear(); for (unsigned int i=0; i<objectHypotheses.size(); ++i) { // check that there is on average at least minNFeaturesPerGroup features at each frame in the group @@ -218,9 +223,9 @@ #if DEBUG cout << "save group " << i << " of " << objectHypotheses[i].size() << " features " << endl; #endif - featureGroups.push_back(vector<unsigned int>()); + featureGroups.push_back(vector<FeatureTrajectoryPtr>()); for (unsigned int j=0; j<objectHypotheses[i].size(); ++j) { - featureGroups.back().push_back(graph[objectHypotheses[i][j]].feature->getId()); + featureGroups.back().push_back(graph[objectHypotheses[i][j]].feature); #if DEBUG cout << featureGroups.size() << " " << objectHypotheses[i][j] << endl; #endif @@ -229,8 +234,6 @@ } } } - - return featureGroups; } string FeatureGraph::informationString(void) const { @@ -246,6 +249,6 @@ void FeatureGraph::computeVertexIndex(void) { graph_traits<FeatureGraph::UndirectedGraph>::vertex_iterator vi, vend; graph_traits<FeatureGraph::UndirectedGraph>::vertices_size_type cnt = 0; - for(tie(vi,vend) = vertices(graph); vi != vend; ++vi) + for(boost::tuples::tie(vi,vend) = vertices(graph); vi != vend; ++vi) graph[*vi].index = cnt++; }