ekf_cal  0.4.0
A Kalman filter-based sensor calibration package
FeatureTracker Class Reference

FeatureTracker Class. More...

#include <feature_tracker.hpp>

Inheritance diagram for FeatureTracker:
[legend]
Collaboration diagram for FeatureTracker:
[legend]

Classes

struct  Parameters
 Feature Tracker Initialization parameters structure. More...
 

Public Types

typedef FeatureTracker::Parameters Parameters
 Feature Tracker Initialization parameters structure.
 
- Public Types inherited from Tracker
typedef struct Tracker::Parameters Parameters
 Tracker Initialization parameters structure.
 

Public Member Functions

 FeatureTracker (FeatureTracker::Parameters params)
 FeatureTracker sensor constructor. More...
 
std::vector< cv::KeyPoint > GridFeatures (std::vector< cv::KeyPoint > key_points, unsigned int rows, unsigned int cols)
 Down sample features to grid. More...
 
void Track (double time, int frame_id, const cv::Mat &img_in, cv::Mat &img_out)
 Perform track on new image frame. More...
 
void RatioTest (std::vector< std::vector< cv::DMatch >> &matches)
 Perform ratio test on a set of matches. More...
 
void SymmetryTest (std::vector< std::vector< cv::DMatch >> &matches_forward, std::vector< std::vector< cv::DMatch >> &matches_backward, std::vector< cv::DMatch > &matches_out)
 Perform symmetry test given forward and backward matches. More...
 
void RANSAC (std::vector< cv::DMatch > &matches_in, std::vector< cv::KeyPoint > &curr_key_points, std::vector< cv::DMatch > &matches_out)
 Perform RANSAC filtering test given matches and key points. More...
 
void DistanceTest (std::vector< cv::DMatch > &matches_in, std::vector< cv::KeyPoint > &curr_key_points, std::vector< cv::DMatch > &matches_out)
 Perform distance test given matches and key points. More...
 
- Public Member Functions inherited from Tracker
 Tracker (Parameters params)
 Tracker Initialization parameters structure. More...
 
unsigned int GetID ()
 Tracker ID getter method. More...
 

Protected Attributes

MsckfUpdater m_msckf_updater
 MSCKF updater object.
 
- Protected Attributes inherited from Tracker
unsigned int m_id
 Tracker ID.
 
int m_camera_id
 Associated camera ID of tracker.
 
unsigned int m_min_track_length {2}
 Minimum track length to consider.
 
unsigned int m_max_track_length {20}
 Maximum track length before forced output.
 
std::shared_ptr< EKFm_ekf
 EKF.
 
std::shared_ptr< DebugLoggerm_logger
 Debug logger.
 

Detailed Description

Constructor & Destructor Documentation

◆ FeatureTracker()

FeatureTracker::FeatureTracker ( FeatureTracker::Parameters  params)
explicit

FeatureTracker sensor constructor.

Parameters
paramsParameter struct for feature tracker
Todo:
add detector/extractor parameters to input

Member Function Documentation

◆ DistanceTest()

void FeatureTracker::DistanceTest ( std::vector< cv::DMatch > &  matches_in,
std::vector< cv::KeyPoint > &  curr_key_points,
std::vector< cv::DMatch > &  matches_out 
)

Perform distance test given matches and key points.

Parameters
matches_inCurrent matches
curr_key_pointsCurrent detected key points
matches_outPassing matches

◆ GridFeatures()

std::vector< cv::KeyPoint > FeatureTracker::GridFeatures ( std::vector< cv::KeyPoint >  key_points,
unsigned int  rows,
unsigned int  cols 
)

Down sample features to grid.

Parameters
key_pointsKey points to down sample
rowsNumber of final rows to consider
colsNumber of final columns to consider
Returns
Down sampled key points
Todo:
Do keypoint vector editing in place
Todo:
replace this with some kind of boolean array. Eigen?
Todo:
Implement non-maximal suppression instead

◆ RANSAC()

void FeatureTracker::RANSAC ( std::vector< cv::DMatch > &  matches_in,
std::vector< cv::KeyPoint > &  curr_key_points,
std::vector< cv::DMatch > &  matches_out 
)

Perform RANSAC filtering test given matches and key points.

Parameters
matches_inCurrent matches
curr_key_pointsCurrent detected key points
matches_outPassing matches
Todo:
: Undistort?

◆ RatioTest()

void FeatureTracker::RatioTest ( std::vector< std::vector< cv::DMatch >> &  matches)

Perform ratio test on a set of matches.

Parameters
matchesList of matches to perform test over

◆ SymmetryTest()

void FeatureTracker::SymmetryTest ( std::vector< std::vector< cv::DMatch >> &  matches_forward,
std::vector< std::vector< cv::DMatch >> &  matches_backward,
std::vector< cv::DMatch > &  matches_out 
)

Perform symmetry test given forward and backward matches.

Parameters
matches_forwardForward matches
matches_backwardBackward matches
matches_outPassing matches

◆ Track()

void FeatureTracker::Track ( double  time,
int  frame_id,
const cv::Mat &  img_in,
cv::Mat &  img_out 
)

Perform track on new image frame.

Parameters
timeFrame time
frame_idFrame ID
img_inInput frame
img_outOutput frame with drawn track lines
Todo:
: Get down-sample parameters from input
Todo:
create occupancy grid of key_points using minimal pixel distance
Todo:
Mask using maximum distance from predicted IMU rotations

The documentation for this class was generated from the following files: