|
libfovis
|
quick and dirty profiling tool.inspired by the matlab tic/toc command More...
Classes | |
| struct | CameraIntrinsicsParameters |
| Intrinsic parameters for a pinhole camera with plumb-bob distortion model. More... | |
| class | DepthImage |
| Depth source where a fully dense, metric depth image is available. More... | |
| class | DepthSource |
| Provides depth estimates for input image pixels. More... | |
| class | FeatureMatch |
| Represents a single image feature matched between two camera images taken at different times. More... | |
| class | FeatureMatcher |
| Matches features between a reference and a target image. More... | |
| class | GridKeyPointFilter |
| Places features into grid cells and discards the weakest features in each cell. More... | |
| class | InitialHomographyEstimator |
| Estimates a rough 2D homography registering two images. More... | |
| class | IntensityDescriptorExtractor |
| Extracts mean-normalized intensity patch around a pixel. More... | |
| class | KeyPoint |
| An interesting point in an image. More... | |
| class | KeypointData |
| Image feature used for motion estimation. More... | |
| class | MotionEstimator |
| Does the heavy lifting for frame-to-frame motion estimation. More... | |
| class | OdometryFrame |
| Stores data specific to an input frame. More... | |
| class | PrimeSenseCalibration |
| Computes useful information from a PrimeSenseCalibrationParameters object. More... | |
| struct | PrimeSenseCalibrationParameters |
| Calibration data structure for Kinect / PrimeSense sensors. More... | |
| class | PrimeSenseDepth |
| Stores depth data for a Kinect / PrimeSense camera. More... | |
| class | PyramidLevel |
| One level of a Gaussian image pyramid. More... | |
| class | Rectification |
| Maps image coordinates from an input image to image coordinates on a rectified camera. More... | |
| class | SAD |
| Calculates the Sum of Absolute Deviations (SAD) score between two vectors of length descriptor_len. More... | |
| class | StereoCalibration |
| Computes useful information from a StereoCalibrationParameters object. More... | |
| struct | StereoCalibrationParameters |
| Calibration data structure for stereo cameras. More... | |
| class | StereoDepth |
| Stores image data for a stereo camera pair. More... | |
| class | StereoDisparity |
| Depth source for a calibrated stereo camera pair where a dense disparity map has been precomputed. More... | |
| class | StereoFrame |
| Stores the right-hand image for a stereo pair. More... | |
| struct | tictoc_t |
| class | VisualOdometry |
| Main visual odometry class. More... | |
| class | VisualOdometryPriv |
Typedefs | |
| typedef std::map< std::string, std::string > | VisualOdometryOptions |
| Options. More... | |
Enumerations | |
| enum | MatchStatusCode { MATCH_NEEDS_DEPTH_REFINEMENT, MATCH_REFINEMENT_FAILED, MATCH_OK } |
| enum | MotionEstimateStatusCode { NO_DATA, SUCCESS, INSUFFICIENT_INLIERS, OPTIMIZATION_FAILURE, REPROJECTION_ERROR } |
| enum | tictoc_sort_type_t { TICTOC_AVG, TICTOC_TOTAL, TICTOC_MIN, TICTOC_MAX, TICTOC_EMA, TICTOC_ALPHABETICAL } |
Functions | |
| static Eigen::Vector3d | _quat_to_roll_pitch_yaw (const Eigen::Quaterniond &q) |
| static Eigen::Quaterniond | _rpy_to_quat (const Eigen::Vector3d rpy) |
| void | FAST (const uint8_t *img, int width, int height, int row_stride, std::vector< KeyPoint > *keypoints, int threshold, bool nonmax_suppression) |
| void | normalize_image (uint8_t *buf, int stride, int width, int height) |
| Normalize image intensities in place to approximately have mean 128 and sd 74. | |
| bool | optionsGetBool (const VisualOdometryOptions &options, std::string name, bool *result) |
| bool | optionsGetBoolOrFromDefault (const VisualOdometryOptions &options, std::string name, const VisualOdometryOptions &defaults) |
| bool | optionsGetDouble (const VisualOdometryOptions &options, std::string name, double *result) |
| double | optionsGetDoubleOrFromDefault (const VisualOdometryOptions &options, std::string name, const VisualOdometryOptions &defaults) |
| bool | optionsGetInt (const VisualOdometryOptions &options, std::string name, int *result) |
| int | optionsGetIntOrFromDefault (const VisualOdometryOptions &options, std::string name, const VisualOdometryOptions &defaults) |
| static void | print_isometry (const Eigen::Isometry3d &iso) |
| void | refineFeatureMatch (PyramidLevel *ref_level, PyramidLevel *target_level, Eigen::Vector2d ref_uv, Eigen::Vector2d init_target_uv, Eigen::Vector2d *final_target_uv, float *delta_sse) |
| Eigen::Isometry3d | refineMotionEstimate (const Eigen::Matrix< double, 4, Eigen::Dynamic > &points, const Eigen::Matrix< double, 2, Eigen::Dynamic > &ref_projections, double fx, double cx, double cy, const Eigen::Isometry3d &initial_estimate, int max_iterations) |
| void | refineMotionEstimateBidirectional (const Eigen::Matrix< double, 4, Eigen::Dynamic > &ref_points, const Eigen::Matrix< double, 2, Eigen::Dynamic > &ref_projections, const Eigen::Matrix< double, 4, Eigen::Dynamic > &target_points, const Eigen::Matrix< double, 2, Eigen::Dynamic > &target_projections, double fx, double cx, double cy, const Eigen::Isometry3d &initial_estimate, int max_iterations, Eigen::Isometry3d *result, Eigen::MatrixXd *result_covariance) |
| static int | round_up_to_multiple (int x, int a) |
| void | stereo_rectify (const CameraIntrinsicsParameters &left_params, const CameraIntrinsicsParameters &right_params, const Eigen::Quaterniond &rotation_quat, const Eigen::Vector3d &translation, Eigen::Matrix3d *left_rotation, Eigen::Matrix3d *right_rotation, CameraIntrinsicsParameters *rectified_params) |
| int64_t | tictoc (const char *description) |
| int64_t | tictoc_full (const char *description, double ema_alpha, int64_t *ema) |
| void | tictoc_get_stats (std::vector< tictoc_t > *stats) |
| void | tictoc_print_stats (tictoc_sort_type_t sortType) |
Variables | |
| const char * | MotionEstimateStatusCodeStrings [] |
quick and dirty profiling tool.
inspired by the matlab tic/toc command
call tictoc("description") to set the timer going call it again with the same description to stop the timer
Note: To get output, set the "FOVIS_TICTOC" environment variable to something
| enum MatchStatusCode |
| enum tictoc_sort_type_t |
tictoc_sort_type_t:
Different Options for sorting the printed results
| Eigen::Isometry3d fovis::refineMotionEstimate | ( | const Eigen::Matrix< double, 4, Eigen::Dynamic > & | points, |
| const Eigen::Matrix< double, 2, Eigen::Dynamic > & | ref_projections, | ||
| double | fx, | ||
| double | cx, | ||
| double | cy, | ||
| const Eigen::Isometry3d & | initial_estimate, | ||
| int | max_iterations | ||
| ) |
Given an initial motion estimate M_0, iteratively refines the motion estimate to minimize reprojection error.
M = argmin_{M} {i} || ref_projections[i] - p(K * M * points[i]) ||^2
where K is the camera projection matrix formed by fx, cx, and cy:
K = [ fx 0 cx 0 0 fx cy 0 0 0 1 0 ]
and p(X) is the normalized form of a homogeneous coordinate.
| void fovis::refineMotionEstimateBidirectional | ( | const Eigen::Matrix< double, 4, Eigen::Dynamic > & | ref_points, |
| const Eigen::Matrix< double, 2, Eigen::Dynamic > & | ref_projections, | ||
| const Eigen::Matrix< double, 4, Eigen::Dynamic > & | target_points, | ||
| const Eigen::Matrix< double, 2, Eigen::Dynamic > & | target_projections, | ||
| double | fx, | ||
| double | cx, | ||
| double | cy, | ||
| const Eigen::Isometry3d & | initial_estimate, | ||
| int | max_iterations, | ||
| Eigen::Isometry3d * | result, | ||
| Eigen::MatrixXd * | result_covariance | ||
| ) |
Given an initial motion estimate M_0, iteratively refines the motion estimate to minimize bidirectional reprojection error.
M = argmin_{M} {i} ref_err(i) + target_err(i)
ref_err(i) = || ref_projections[i] - p(K * M * target_points[i]) ||^2 target_err(i) = || target_projections[i] - p(K * M * ref_points[i]) ||^2
where K is the camera projection matrix formed by fx, fy, cx, and cy:
K = [ fx 0 cx 0 0 fy cy 0 0 0 1 0 ]
and p(X) is the normalized form of a homogeneous coordinate.
| int64_t fovis::tictoc | ( | const char * | description | ) |
tictoc:
basic invocation, the second time its called, it returns the time difference in microseconds
| int64_t fovis::tictoc_full | ( | const char * | description, |
| double | ema_alpha, | ||
| int64_t * | ema | ||
| ) |
tictoc_full:
full invocation, allows you to specify an exponential moving average rate, and the current EMA value is returned in the ema argument
| void fovis::tictoc_print_stats | ( | tictoc_sort_type_t | sortType | ) |
tictoc_print_stats:
Print Out the stats from tictoc
| void fovis::tictoc_get_stats | ( | std::vector< tictoc_t > * | stats | ) |
Get tictoc entries.
1.8.9.1