Defined in File gyro-two-frame-matcher.h
Frame to frame matcher using an interframe rotation matrix to predict the feature positions to constrain the search window.
The initial matcher attempts to match every keypoint of frame k to a keypoint in frame (k+1). This is done by predicting the keypoint location by using an interframe rotation matrix. Then a rectangular search window around that location is searched for the best match greater than a threshold. If the initial search was not successful, the search window is increased once. The initial matcher is allowed to discard a previous match if the new one has a higher score. The discarded matches are called inferior matches and a second matcher tries to match them. The second matcher only tries to match a keypoint of frame k with the queried keypoints of frame (k+1) of the initial matcher. Therefore, it does not compute distances between descriptors anymore because the initial matcher has already done that. The second matcher is executed several times because it is also allowed to discard inferior matches of the current iteration. The matches are exclusive.
GyroTwoFrameMatcher(const Quaternion &q_Ckp1_Ck, const VisualFrame &frame_kp1, const VisualFrame &frame_k, const uint32_t image_height, const Eigen::Matrix2Xd &predicted_keypoint_positions_kp1, const std::vector<unsigned char> &prediction_success, FrameToFrameMatchesWithScore *matches_kp1_k)¶
Constructs the GyroTwoFrameMatcher.
[in] q_Ckp1_Ck: Rotation matrix that describes the camera rotation between the two frames that are matched.
[in] image_height: The image height of the given camera.
[in] predicted_keypoint_positions_kp1: Predicted positions of keypoints in next frame.
[in] prediction_success: Was the prediction successful?
[out] matches_kp1_k: Vector of structs containing the found matches. Indices correspond to the ordering of the keypoint/descriptor vector in the respective frame channels.