(比ORB-SLAM2还厉害的纯视觉SLAM)OV2SLAM代码解析之feature_tracker.hpp
以ORB和VINS为代表的视觉SLAM已经可以满足绝大多数场景,而OV2SLAM在其他VSLAM中脱颖而出,其实时性以及具体的回环性能在测试中都得到了认可。
#pragma once
#include <Eigen/Core>
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
/*
1.构造函数FeatureTracker:带有nmax_iter、fmax_px_precision和pclahe参数,用于设置KLT算法的迭代次数、像素精度和CLAHE指针。
2.fbKltTracking:带有vprevpyr、vcurpyr、nwinsize、nbpyrlvl、ferr、fmax_fbklt_dist、vpts、vpriorkps和vkpstatus参数,用于执行前向-后向KLT跟踪算法。
3.getLineMinSAD:带有iml、imr、pt、nwinsize、xprior、l1err和bgoleft参数,用于计算给定点周围区域内最小SAD误差线。
4.inBorder:带有pt和im参数,用于检查给定点是否在图像边界内。
此外,类还包含klt_convg_crit_和pclahe_成员变量,用于设置KLT算法的优化参数和CLAHE指针。
*/
class FeatureTracker {
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
// FeatureTracker() {}
FeatureTracker(int nmax_iter, float fmax_px_precision, cv::Ptr<cv::CLAHE> pclahe)
: klt_convg_crit_(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, nmax_iter, fmax_px_precision)
, pclahe_(pclahe)
{}
// Forward-Backward KLT Tracking
void fbKltTracking(const std::vector<cv::Mat> &vprevpyr, const std::vector<cv::Mat> &vcurpyr, int nwinsize, int nbpyrlvl, float ferr, float fmax_fbklt_dist,
std::vector<cv::Point2f> &vpts, std::vector<cv::Point2f> &vpriorkps, std::vector<bool> &vkpstatus) const;
void getLineMinSAD(const cv::Mat &iml, const cv::Mat &imr, const cv::Point2f &pt, const int nwinsize, float &xprior, float &l1err, bool bgoleft) const;
bool inBorder(const cv::Point2f &pt, const cv::Mat &im) const;
// KLT optim. parameter
cv::TermCriteria klt_convg_crit_;
cv::Ptr<cv::CLAHE> pclahe_;
};
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)