Mercurial Hosting > traffic-intelligence
annotate include/Parameters.hpp @ 1156:f7fbe624fff7
added helper functions for categorical variables
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 25 Sep 2020 11:56:59 -0400 |
parents | 9fb82fe0156f |
children |
rev | line source |
---|---|
119
45a426552aaa
compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
118
diff
changeset
|
1 #ifndef PARAMETERS_HPP |
45a426552aaa
compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
118
diff
changeset
|
2 #define PARAMETERS_HPP |
5 | 3 |
4 /// \todo Class for parameters, with utilities to save and load from configuration files | |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
5 |
124
1e68e18b1aa5
renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
119
diff
changeset
|
6 #include <string> |
506
13d4eb96a751
added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
7 #include <vector> |
124
1e68e18b1aa5
renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
119
diff
changeset
|
8 |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
9 namespace boost{ |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
10 namespace program_options { |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
11 class options_description; |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
12 class variables_map; |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
13 } |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
14 } |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
15 |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
16 struct KLTFeatureTrackingParameters { |
164
76610dcf3b8d
added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
137
diff
changeset
|
17 bool trackFeatures; |
76610dcf3b8d
added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
137
diff
changeset
|
18 bool groupFeatures; |
654
045d05cef9d0
updating to c++11 capabilities
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
509
diff
changeset
|
19 bool loadingTime; |
1020
9fb82fe0156f
added quiet tracking mode
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1002
diff
changeset
|
20 bool quiet; |
164
76610dcf3b8d
added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
137
diff
changeset
|
21 |
1002
6c5ce3ec497e
improved handling of path for feature based tracking
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
654
diff
changeset
|
22 std::string parentDirname; |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
23 std::string videoFilename; |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
24 std::string databaseFilename; |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
25 std::string homographyFilename; |
506
13d4eb96a751
added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
26 std::string intrinsicCameraFilename; |
13d4eb96a751
added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
27 std::vector<float> distortionCoefficients; |
13d4eb96a751
added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
28 float undistortedImageMultiplication; |
509
935430b1d408
corrected mask bug in feature tracking, updated display-trajectories to display on undistorted image
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
507
diff
changeset
|
29 int interpolationMethod; |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
30 std::string maskFilename; |
507
081a9da6f85b
first version with undistort implemented in the feature tracking process
Nicolas Saunier <nicolas.saunier@polymtl.ca>
diff
changeset
|
31 bool undistort; |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
32 bool loadFeatures; |
134
a617d0808bbc
added test on feature length and display control
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
127
diff
changeset
|
33 bool display; |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
34 float videoFPS; |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
35 // int measurementPrecision; |
228
23da16442433
minor modifications for unsigned int (nframes is now 0 to process all frames)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
191
diff
changeset
|
36 unsigned int frame1; |
278
f21ef87f98f1
resolved issue 2 and problem with negative nframes parameter
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
228
diff
changeset
|
37 int nFrames; |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
38 // feature tracking |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
39 /// "Maximum number of corners to return" (OpenCV goodFeaturesToTrack) (should be large enough not to limit the potential number of features) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
40 int maxNFeatures; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
41 /// "Parameter characterizing the minimal accepted quality of image corners" (OpenCV goodFeaturesToTrack ) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
42 float featureQuality; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
43 /// "Minimum possible Euclidean distance between the returned corners" (OpenCV goodFeaturesToTrack) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
44 float minFeatureDistanceKLT; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
45 /// "Size of an average block for computing a derivative covariation matrix over each pixel neighborhood" (OpenCV goodFeaturesToTrack) |
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
46 int blockSize; |
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
47 /// "Parameter indicating whether to use a Harris detector" (OpenCV goodFeaturesToTrack) |
127
d19d6e63dd77
simple feature tracking and drawing working
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
124
diff
changeset
|
48 bool useHarrisDetector; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
49 /// "Free parameter of the Harris detector" (OpenCV goodFeaturesToTrack) |
127
d19d6e63dd77
simple feature tracking and drawing working
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
124
diff
changeset
|
50 float k; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
51 /// "size of the search window at each pyramid level" (OpenCV calcOpticalFlowPyrLK) |
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
52 int windowSize; |
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
53 /// "0-based maximal pyramid level number" (OpenCV calcOpticalFlowPyrLK) higher is higher quality |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
54 int pyramidLevel; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
55 /// Number of displacements (number of frames-1) over which minimum motion is computed |
136
0f790de9437e
renamed Feature to Motion files and added code to test blob db
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
135
diff
changeset
|
56 unsigned int nDisplacements; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
57 /// Minimum displacement per frame (in world space) to keep features |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
58 float minFeatureDisplacement; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
59 /// Maximum feature acceleration |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
60 float accelerationBound; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
61 /// Maximum feature deviation |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
62 float deviationBound; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
63 /// Number of frames to smooth positions (half window) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
64 int nFramesSmoothing; |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
65 //int nFramesVelocity; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
66 /// Maximum number of iterations to stop optical flow (OpenCV calcOpticalFlowPyrLK) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
67 int maxNumberTrackingIterations; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
68 /// Minimum error to reach to stop optical flow (OpenCV calcOpticalFlowPyrLK) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
69 float minTrackingError; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
70 /// Minimum eigen value of a 2x2 normal matrix of optical flow equations (OpenCV calcOpticalFlowPyrLK) |
418
ca5784652d57
updated use of calcOpticalFlowPyrLK for new signature, added minEigThreshold parameter in configuration file
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
399
diff
changeset
|
71 float minFeatureEigThreshold; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
72 /// Minimum length of a feature (number of frames) to consider a feature for grouping |
135
32d2722d4028
added constraint on minimum displacement
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
134
diff
changeset
|
73 unsigned int minFeatureTime; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
74 /// Connection distance in feature grouping (in world space) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
75 float mmConnectionDistance; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
76 /// Segmentation distance in feature grouping (in world space) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
77 float mmSegmentationDistance; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
78 /// Maximum distance between features for grouping (in world space) (unused) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
79 float maxDistance; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
80 /// Minimum cosine of the angle between the velocity vectors for grouping (unused) |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
81 float minVelocityCosine; |
495
82c06ad62254
added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
419
diff
changeset
|
82 /// Minimum average number of features per frame to create a vehicle hypothesis |
191
0e60a306d324
added basic code to identify features and save them (crash)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
164
diff
changeset
|
83 float minNFeaturesPerGroup; |
348
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
278
diff
changeset
|
84 // safety analysis |
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
278
diff
changeset
|
85 float maxPredictedSpeed; |
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
278
diff
changeset
|
86 float predictionTimeHorizon; |
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
278
diff
changeset
|
87 float collisionDistance; |
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
278
diff
changeset
|
88 bool crossingZones; |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
89 std::string predictionMethod; |
349
e3f910c26fae
added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
348
diff
changeset
|
90 int nPredictedTrajectories; |
e3f910c26fae
added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
348
diff
changeset
|
91 float minAcceleration; |
e3f910c26fae
added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
348
diff
changeset
|
92 float maxAcceleration; |
e3f910c26fae
added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
348
diff
changeset
|
93 float maxSteering; |
353
8672c101bfec
corrected minor type issue
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
94 bool useFeaturesForPrediction; |
124
1e68e18b1aa5
renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
119
diff
changeset
|
95 |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
96 std::string parameterDescription; |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
97 |
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
98 KLTFeatureTrackingParameters(const int argc, char* argv[]); |
124
1e68e18b1aa5
renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
119
diff
changeset
|
99 |
135
32d2722d4028
added constraint on minimum displacement
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
134
diff
changeset
|
100 //KLTFeatureTrackingParameters(bool loadFeatures, std::string videoFilename, int videoFPS, int measurementPrecision, int frame1, int nFrames, int maxNFeatures, float featureQuality, float minFeatureDistanceKLT, int windowSize, int pyramidLevel, int nDisplacements, float minFeatureDisplacement, float accelerationBound, float deviationBound, int nFramesSmoothing, int nFramesVelocity, int maxNumberTrackingIterations, float minTrackingError, int minFeatureTime, float mmConnectionDistance, float mmSegmentationDistance, float maxDistance, float minVelocityCosine, int minNFeaturesPerGroup); |
124
1e68e18b1aa5
renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
119
diff
changeset
|
101 |
137
445e773c9be3
created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
136
diff
changeset
|
102 std::string getParameterDescription(boost::program_options::options_description& options, const boost::program_options::variables_map& vm, const std::string& separator = " ") const; |
118
b3e3d9f80a6a
added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
5
diff
changeset
|
103 }; |
119
45a426552aaa
compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
118
diff
changeset
|
104 |
45a426552aaa
compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
118
diff
changeset
|
105 #endif |