Mercurial Hosting > traffic-intelligence
annotate c/test_graph.cpp @ 1022:b7689372c0ec
renamed quantile to centile
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 06 Jun 2018 10:35:06 -0400 |
parents | 03dbecd3a887 |
children | 05ccd8ef150c |
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 |
aeab0b88c9b6
began testing of FeatureGraph
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 #include "opencv2/core/core.hpp" |
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 } |