#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_;
};

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐