orb_slam2源码分析与优化(1)——角点检测与描述子计算

这一部分相对比较简单,主要用到opencv的cv::FAST()函数。文件:ORBextractor.cc初始化过程除了必要的赋值以外,还主要做了3件事,(1)将总的特征数在不同的金字塔曾进行分配,而分配依据是尺度因子(作者默认为1.2,并不知道为什么是这个),然后层数越高特征数越少。所有层加起来就是指定的特征数。(2)将代码里面的sample复制。(3)计算patch里面的v的最大u,这里变量为u
摘要由CSDN通过智能技术生成

这一部分相对比较简单,主要用到opencv的cv::FAST()函数。

文件:ORBextractor.cc

初始化过程除了必要的赋值以外,还主要做了3件事,(1)将总的特征数在不同的金字塔曾进行分配,而分配依据是尺度因子(作者默认为1.2,并不知道为什么是这个),然后层数越高特征数越少。所有层加起来就是指定的特征数。(2)将代码里面的sample复制。(3)计算patch里面的v的最大u,这里变量为umax。后两者都是为计算描述子做准备。

然后是计算金字塔,对尺度因子累乘就行了。

接下来角点检测。循环检测每一层金字塔,划分一定大小的patch,对每个patch进行角点检测,这里直接采用的cv::FAST。需要注意的是,代码里有两个FAST阈值,当大阈值检测不出来时换小阈值。其实,可以考虑自适应。

// 如果检测到的fast特征为空,则降低阈值再进行检测
    if (vec_keys_cell.empty())
    {
        cv::FAST(vec_image_pyramid_[level].rowRange(ini_y, max_y).colRange(ini_x, max_x),
            vec_keys_cell, min_fast_threshold_, true);
    }

很多时候图像的容易集中在某个局部,另外有很大一部区域角点很稀疏,这样计算出来的描述子很不理想,为了让角点分布更均匀合理,这里运用四叉树算法对角点进行再分布。将图像以中点为远点划分为四个象限:

ni.UL_ = cv::Point2i(interval_x*static_ca
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值