// This file is part of SVO - Semi-direct Visual Odometry. // // Copyright (C) 2014 Christian Forster // (Robotics and Perception Group, University of Zurich, Switzerland). // // SVO is free software: you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the Free Software // Foundation, either version 3 of the License, or any later version. // // SVO is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #ifndef SVO_FEATURE_ALIGNMENT_H_ #define SVO_FEATURE_ALIGNMENT_H_ #include namespace svo { /// Subpixel refinement of a reference feature patch with the current image. /// Implements the inverse-compositional approach (see "Lucas-Kanade 20 Years on" /// paper by Baker. namespace feature_alignment { bool align1D( const cv::Mat& cur_img, const Vector2f& dir, // direction in which the patch is allowed to move uint8_t* ref_patch_with_border, uint8_t* ref_patch, const int n_iter, Vector2d& cur_px_estimate, double& h_inv); bool align2D( const cv::Mat& cur_img, uint8_t* ref_patch_with_border, uint8_t* ref_patch, const int n_iter, Vector2d& cur_px_estimate, bool no_simd = false); bool align2D_SSE2( const cv::Mat& cur_img, uint8_t* ref_patch_with_border, uint8_t* ref_patch, const int n_iter, Vector2d& cur_px_estimate); bool align2D_NEON( const cv::Mat& cur_img, uint8_t* ref_patch_with_border, uint8_t* ref_patch, const int n_iter, Vector2d& cur_px_estimate); } // namespace feature_alignment } // namespace svo #endif // SVO_FEATURE_ALIGNMENT_H_