Open_Vins学习(一)前端tracking

简介

open_vins的前端主要有三种方式:(1)光流KLT,描述子和Aruco跟踪。在MSCKF中默认使用的是光流跟踪。open_vins的前端可以参考ov_core中的test_tracking文件。

1.Feature类

    class Feature {
    public:
        /// 特征点的ID
        size_t featid;
        /// 是否从数据库中删除的标志位
        bool to_delete;
        
        /// 特征点在每一次被观测到时的像素坐标
        std::unordered_map<size_t, std::vector<Eigen::VectorXf>> uvs;
        /// 特征点在每一次被观测到时的去畸变像素坐标
        std::unordered_map<size_t, std::vector<Eigen::VectorXf>> uvs_norm;
        /// 特征点在每一次被观测到时的时间戳信息,后面MSCKF过程中计算特征点的生命周期只需要计算vector的size就可以。
        std::unordered_map<size_t, std::vector<double>> timestamps;

        /// 特征点坐标相对于哪一个局部坐标系,默认是第一帧
        int anchor_cam_id = -1;
        /// Timestamp of anchor clone
        double anchor_clone_timestamp;

        /// 在局部坐标系anchor frame 的三维坐标,三角化之后的
        Eigen::Vector3d p_FinA;
        /// 在全局坐标的三角化Pose
        Eigen::Vector3d p_FinG;
    };

2.光流KLT跟踪

/**
// 此函数为前端主体函数
// KLT跟踪分为以下步骤:
1.对图像直方图均衡化
2.构建图像金字塔
3.对当前图像补充新的特征点保障KLT有足够多的点
4.KLT光流追踪
5.更新database中的一些变量,对于一直跟踪的点,记录被观测到的局部坐标和当前帧时间戳,用于统计特征点的生命周期;新提取到的点则加入到数据库中
***/
void TrackKLT::feed_monocular(double timestamp, cv::Mat &img, size_t cam_id)
{
    // 1. 直方图均衡化用来增强图像质量
    cv::equalizeHist(img, img);
    // 2. 构建3层图像金字塔
    std::vector<cv::Mat> imgpyr;
    cv::b
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值