美文网首页
ORB、RFNET等特征点分析

ORB、RFNET等特征点分析

作者: 星云舰长 | 来源:发表于2019-08-23 13:14 被阅读0次

    回顾了一下比赛的问题
    我们这个slam针对的场景是什么?这个需要分析下优缺点。

    直觉:

    1、ORB更稳定,rfnet更准确。

    可能原因:

    • orbslam对于orb特征点选择问题,特征点选择方式使得系统更加稳定
    • 系统参数没调整好
    • rfnet特征点本身的问题

    2、Orb,rfnet,lfnet在什么场景会好?什么场景会不好?

    较难比较

    3、ORB与SIFT之类的在keypoints上有什么差异?

    keypoints对比:

    ORB

    ORBSLAM系统中的ORB
    orbslam
    with scale ori
    RFNET

    直观上RFNET更稀疏,倾向于物体的轮廓,似乎能感知到图片中高层语义信息,比如电脑和桌子的轮廓非常清晰,不仅仅是图像灰度变化就会相应。

    匹配效果上:

    ORB
    ORB_allmatch.png
    ORB_withRANSAC.png
    RFNET
    RFNET_all_match.png
    RFNET_withRANSAC.png

    感觉比orb匹配成功的更多

    Fast与Sift的比较

    4、SURF之类的加速策略?

    5、能不能在RFNET网络中引入在无纹理区域加特征点机制。使得密集地方还是很密,但是在空白地方也要有至少达到一定数量的特征点,尽管要保持不均匀性,但是要兼顾稳定性

    6、RFNet直觉上光照更稳定

    当我们都提取1000个特征点时候,RFNet能得到的正确匹配比ORB要多很多

    RFNET

    ORB

    7、 能不能也安LIFT学习SIFT流程学习一遍ORB?

    不太可能,因为detector本质上就是fast,orb是描述方法通过学习的,改成深度学习意义不是很大。

    8、 ORBSLAM系统上希望得到的特征点

    均匀,并且要有一定表现能力

    9 、ORBSLAM系统提取特征点策略:

    整个特征提取部分涉及到的对象结构如下:


    特征点提取策略

    每一帧图像共提取1000个特征点,分布在金字塔8层中,层间尺度比例1.2,计算下来金字塔0层大约有217个特征点,7层大约有50个特征点。

    9.1 建立金字塔

    为了得到尺度不变性,使用金字塔结构。


    9.2 在每层金字塔上划分网格提取fast角点

    • ComputeKeyPointsOctTree()
      这一步要对图像每一层来计算特征点,具体步骤就是将图像划分成小网格区域(orbslam2里使用的是30大小的窗口),然后对每个小网格单独使用FAST角点检测。值得注意是,为了尽可能使得每个小网格都能有点被检测到,这里使用了两种不同的阈值,如果没有检测到角点则使用更低阈值检测。

                //计算FAST关键点
                vector<cv::KeyPoint> vKeysCell;
                FAST(mvImagePyramid[level].rowRange(iniY,maxY).colRange(iniX,maxX),
                     vKeysCell,iniThFAST,true);
                // 如果没有找到关键点,就降低阈值重新计算FAST
                if(vKeysCell.empty())
                {
                    FAST(mvImagePyramid[level].rowRange(iniY,maxY).colRange(iniX,maxX),
                         vKeysCell,minThFAST,true);
                }
      

    得到角点后对每一层都调用一下DistributeOctTree()

    9.3 使用四叉树均匀角点

    • DistributeOctTree()
      其实是四叉树均匀分布算法的实现。
      为了提取出的特征点在图像中分布比较均匀(实际情况中,特征点通常分布得比较集中,这样不利于进行匹配,也不利于精确地求解相机间的位姿从而得到精确的VO轨迹),使用了八叉树(其实是平面上的四叉树)的数据结构来存储提取出的特征点。
      这个树结构除了根节点其实只实现了3层,最顶层的node数量由图像的横纵比决定(例如2);下面两层最多产生64个叶子。因此,对于前面提到的特征点数,平均每个分割节点中分布一两个特征点,如果该叶子中含有较多特征点,则选取其中Harris响应值(是由OpenCV的KeyPoint.response属性计算的)最大的,其他的抛弃!

    10 初步设想

    • end-to-end学出来这种orbslam2的特征选择方式,甚至要更稳定
    • 速度要提升上来
    • lfnet在尺度上来说是失败的,rfnet提高了很多,但是角度上反而变差了,应当具有更好的尺度角度信息
    • 实际应用场景更加鲁棒,如光线明暗、模糊、动态场景

    相关文章

      网友评论

          本文标题:ORB、RFNET等特征点分析

          本文链接:https://www.haomeiwen.com/subject/gcgzsctx.html