annotate include/Parameters.hpp @ 803:f7cf43b5ad3b dev

work in progress on stabilization
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 01 Jun 2016 01:55:45 -0400
parents 045d05cef9d0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
824c35230b73 idea for parameters class
Nicolas Saunier <nico@confins.net>
parents:
diff changeset
3
824c35230b73 idea for parameters class
Nicolas Saunier <nico@confins.net>
parents:
diff changeset
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;
164
76610dcf3b8d added test code to read trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 137
diff changeset
20
118
b3e3d9f80a6a added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 5
diff changeset
21 std::string videoFilename;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
22 std::string databaseFilename;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
23 std::string homographyFilename;
506
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
24 std::string intrinsicCameraFilename;
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
25 std::vector<float> distortionCoefficients;
13d4eb96a751 added needed parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
26 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
27 int interpolationMethod;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
28 std::string maskFilename;
507
081a9da6f85b first version with undistort implemented in the feature tracking process
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 506 495
diff changeset
29 bool undistort;
803
f7cf43b5ad3b work in progress on stabilization
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
30 float stabilizeRansacReprojThreshold;
f7cf43b5ad3b work in progress on stabilization
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
31 std::string frameHomographyFilename;
f7cf43b5ad3b work in progress on stabilization
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
32 bool stabilize;
f7cf43b5ad3b work in progress on stabilization
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 654
diff changeset
33 //bool loadFeatures;
134
a617d0808bbc added test on feature length and display control
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 127
diff changeset
34 bool display;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
35 float videoFPS;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
36 // 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
37 unsigned int frame1;
278
f21ef87f98f1 resolved issue 2 and problem with negative nframes parameter
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 228
diff changeset
38 int nFrames;
118
b3e3d9f80a6a added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 5
diff changeset
39 // feature tracking
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
40 /// "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
41 int maxNFeatures;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
42 /// "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
43 float featureQuality;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
44 /// "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
45 float minFeatureDistanceKLT;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
46 /// "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
47 int blockSize;
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
48 /// "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
49 bool useHarrisDetector;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
50 /// "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
51 float k;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
52 /// "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
53 int windowSize;
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
54 /// "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
55 int pyramidLevel;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
56 /// 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
57 unsigned int nDisplacements;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
58 /// 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
59 float minFeatureDisplacement;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
60 /// Maximum feature acceleration
118
b3e3d9f80a6a added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 5
diff changeset
61 float accelerationBound;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
62 /// Maximum feature deviation
118
b3e3d9f80a6a added configuration file and parameter structure
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 5
diff changeset
63 float deviationBound;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
64 /// 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
65 int nFramesSmoothing;
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
66 //int nFramesVelocity;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
67 /// 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
68 int maxNumberTrackingIterations;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
69 /// 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
70 float minTrackingError;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
71 /// 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
72 float minFeatureEigThreshold;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
73 /// 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
74 unsigned int minFeatureTime;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
75 /// 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
76 float mmConnectionDistance;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
77 /// 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
78 float mmSegmentationDistance;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
79 /// 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
80 float maxDistance;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
81 /// 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
82 float minVelocityCosine;
495
82c06ad62254 added parameter description with ranges
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 419
diff changeset
83 /// 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
84 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
85 // 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
86 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
87 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
88 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
89 bool crossingZones;
352
72aa44072093 safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 351
diff changeset
90 std::string predictionMethod;
349
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
91 int nPredictedTrajectories;
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
92 float minAcceleration;
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
93 float maxAcceleration;
e3f910c26fae added other safety analysis parameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 348
diff changeset
94 float maxSteering;
353
8672c101bfec corrected minor type issue
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 352
diff changeset
95 bool useFeaturesForPrediction;
124
1e68e18b1aa5 renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 119
diff changeset
96
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
97 std::string parameterDescription;
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
98
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
99 KLTFeatureTrackingParameters(const int argc, char* argv[]);
124
1e68e18b1aa5 renaming and working on klt
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 119
diff changeset
100
135
32d2722d4028 added constraint on minimum displacement
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 134
diff changeset
101 //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
102
137
445e773c9be3 created the parameter structure to parse parameters (bug remaining)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 136
diff changeset
103 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
104 };
119
45a426552aaa compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 118
diff changeset
105
45a426552aaa compilation of very simple feature class with trajectory
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 118
diff changeset
106 #endif