changeset 362:cc8e54997d4c

corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 12 Jul 2013 00:22:09 -0400
parents 9d486af42e49
children 68861b52a319
files c/test_graph.cpp include/Motion.hpp
diffstat 2 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/c/test_graph.cpp	Thu Jul 11 15:21:13 2013 -0400
+++ b/c/test_graph.cpp	Fri Jul 12 00:22:09 2013 -0400
@@ -11,10 +11,14 @@
 using namespace cv;
 
 TEST_CASE("graph/connected_components", "test graph connected components") {
-  FeatureGraph featureGraph(5, 1, 5 , 1.); // (float _connectionDistance, float _segmentationDistance, unsigned int _minFeatureTime, float _minNFeaturesPerGroup)
-  unsigned int lastInstant = 20;
-  FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, 10, lastInstant, Point2f(1,1), Point2f(0.5, 0.));
-  FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, 10, lastInstant, Point2f(1.1,1), Point2f(0.5, 0.));
+  float connectionDistance = 5.;
+  float segmentationDistance = 1.;
+  unsigned int minFeatureTime = 5;
+  float minNFeaturesPerGroup = 0.99;
+  FeatureGraph featureGraph(connectionDistance, segmentationDistance, minFeatureTime, minNFeaturesPerGroup);
+  unsigned int firstInstant = 10, lastInstant = 20;
+  FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, firstInstant, lastInstant, Point2f(1,1), Point2f(0.5, 0.));
+  FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, firstInstant, lastInstant, Point2f(1.1,1), Point2f(0.5, 0.));
 
   featureGraph.addFeature(ft1);
   REQUIRE(featureGraph.getNVertices() == 1);
@@ -40,11 +44,18 @@
   // test connection distance
   featureGraph.addFeature(ft1);
   featureGraph.addFeature(ft2);
-  FeatureTrajectoryPtr ft3 = createFeatureTrajectory(3, 10, lastInstant, Point2f(6.05,1), Point2f(0.5, 0.)); // connected to ft2 only
+  FeatureTrajectoryPtr ft3 = createFeatureTrajectory(3, firstInstant, lastInstant, Point2f(6.05,1), Point2f(0.5, 0.)); // connected to ft2 only
   featureGraph.addFeature(ft3);
-  FeatureTrajectoryPtr ft4 = createFeatureTrajectory(4, 10, lastInstant, Point2f(11.1,1), Point2f(0.5, 0.)); // not connected
+  FeatureTrajectoryPtr ft4 = createFeatureTrajectory(4, firstInstant, lastInstant, Point2f(11.1,1), Point2f(0.5, 0.)); // not connected
   featureGraph.addFeature(ft4);
 
+  REQUIRE(ft1->minMaxSimilarity(*ft2, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  REQUIRE(ft2->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  REQUIRE_FALSE(ft1->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  REQUIRE_FALSE(ft1->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  REQUIRE_FALSE(ft2->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  REQUIRE_FALSE(ft3->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
+  
   REQUIRE(featureGraph.getNVertices() == 4);
   REQUIRE(featureGraph.getNEdges() == 2);
 
--- a/include/Motion.hpp	Thu Jul 11 15:21:13 2013 -0400
+++ b/include/Motion.hpp	Fri Jul 12 00:22:09 2013 -0400
@@ -53,7 +53,7 @@
   void draw(cv::Mat& img, const cv::Mat& homography, const cv::Scalar& color) const;
 #endif
 
-  friend std::stringstream& operator<<(std::stringstream& out, const FeatureTrajectory& ft);
+  friend std::ostream& operator<<(std::ostream& out, const FeatureTrajectory& ft);
 
 protected:
   /// first frame number
@@ -63,7 +63,7 @@
 
   TrajectoryPoint2fPtr positions;
   /** one fewer velocity than position
-      v_n = p_n+1 - p_n*/
+      v_n = p_n - p_n-1*/
   TrajectoryPoint2fPtr velocities;
   
   /// norms of velocities for feature constraints, one fewer positions than positions
@@ -75,7 +75,7 @@
 typedef boost::shared_ptr<FeatureTrajectory> FeatureTrajectoryPtr;
 
 // inlined
-inline std::stringstream& operator<<(std::stringstream& out, const FeatureTrajectory& ft) {
+inline std::ostream& operator<<(std::ostream& out, const FeatureTrajectory& ft) {
   out << *(ft.positions);
   out << "\n";
   out << *(ft.velocities);