annotate c/test_graph.cpp @ 1208:a07e455baaa6

merged
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 26 Apr 2023 18:33:46 -0400
parents 05ccd8ef150c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
1 #include "Motion.hpp"
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
2 #include "testutils.hpp"
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
3
1093
05ccd8ef150c updated to OpenCV4
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 391
diff changeset
4 #include "opencv2/core.hpp"
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
5
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
6 #include "catch.hpp"
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
7
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
8 #include <iostream>
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
9
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
10 using namespace std;
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
11 using namespace cv;
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
12
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
13 TEST_CASE("graph/connected_components", "test graph connected components") {
362
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
14 float connectionDistance = 5.;
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
15 float segmentationDistance = 1.;
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
16 unsigned int minFeatureTime = 5;
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
17 float minNFeaturesPerGroup = 0.99;
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
18 FeatureGraph featureGraph(connectionDistance, segmentationDistance, minFeatureTime, minNFeaturesPerGroup);
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
19 unsigned int firstInstant = 10, lastInstant = 20;
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
20 FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, firstInstant, lastInstant, Point2f(1,1), Point2f(0.5, 0.));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
21 FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, firstInstant, lastInstant, Point2f(1.1,1), Point2f(0.5, 0.));
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
22
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
23 featureGraph.addFeature(ft1);
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
24 REQUIRE(featureGraph.getNVertices() == 1);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
25 REQUIRE(featureGraph.getNEdges() == 0);
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
26
200
0a27fa343257 added one test and cleaned the first and last instant mess
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 196
diff changeset
27 featureGraph.addFeature(ft2);
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
28 REQUIRE(featureGraph.getNVertices() == 2);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
29 REQUIRE(featureGraph.getNEdges() == 1);
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
30
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
31 featureGraph.connectedComponents(lastInstant);
391
03dbecd3a887 modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 362
diff changeset
32 vector<vector<FeatureTrajectoryPtr> > components;
03dbecd3a887 modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 362
diff changeset
33 featureGraph.getFeatureGroups(components);
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
34 REQUIRE(components.size() == 0);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
35 REQUIRE(featureGraph.getNVertices() == 2);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
36 REQUIRE(featureGraph.getNEdges() == 1);
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
37
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
38 featureGraph.connectedComponents(lastInstant+1);
391
03dbecd3a887 modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 362
diff changeset
39 featureGraph.getFeatureGroups(components);
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
40 REQUIRE(components.size() == 1);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
41 REQUIRE(components[0].size() == 2);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
42 REQUIRE(featureGraph.getNVertices() == 0);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
43 REQUIRE(featureGraph.getNEdges() == 0);
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
44
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
45 // test connection distance
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
46 featureGraph.addFeature(ft1);
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
47 featureGraph.addFeature(ft2);
362
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
48 FeatureTrajectoryPtr ft3 = createFeatureTrajectory(3, firstInstant, lastInstant, Point2f(6.05,1), Point2f(0.5, 0.)); // connected to ft2 only
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
49 featureGraph.addFeature(ft3);
362
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
50 FeatureTrajectoryPtr ft4 = createFeatureTrajectory(4, firstInstant, lastInstant, Point2f(11.1,1), Point2f(0.5, 0.)); // not connected
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
51 featureGraph.addFeature(ft4);
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
52
362
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
53 REQUIRE(ft1->minMaxSimilarity(*ft2, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
54 REQUIRE(ft2->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
55 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft3, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
56 REQUIRE_FALSE(ft1->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
57 REQUIRE_FALSE(ft2->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
58 REQUIRE_FALSE(ft3->minMaxSimilarity(*ft4, firstInstant, lastInstant, connectionDistance, segmentationDistance));
cc8e54997d4c corrected error in tests and changed sstream to ostream for FeatureTrajectory operator<<
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 231
diff changeset
59
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
60 REQUIRE(featureGraph.getNVertices() == 4);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
61 REQUIRE(featureGraph.getNEdges() == 2);
201
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
62
f7ddfc4aeb1e added tests for graphs
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 200
diff changeset
63 featureGraph.connectedComponents(lastInstant+1);
391
03dbecd3a887 modified feature grouping to return vectors of pointers to feature trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 362
diff changeset
64 featureGraph.getFeatureGroups(components);
220
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
65 REQUIRE(components.size() == 2);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
66 REQUIRE(components[0].size() == 3);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
67 REQUIRE(components[1].size() == 1);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
68 REQUIRE(featureGraph.getNVertices() == 0);
f0f800b95765 switched to Catch for the tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 201
diff changeset
69 REQUIRE(featureGraph.getNEdges() == 0);
196
aeab0b88c9b6 began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
70 }