《视觉SLAM14讲》学习笔记——ORB特征提取与匹配

1 篇文章 0 订阅

本篇博客是对于《视觉SLAM十四讲》中第7讲的ORB特征提取和匹配部分进行一个记录,后续会继续完善和补充ORB的其他内容

7.1 特征点法

  • 视觉里程计算法主要分为:特征点法直接法
  • 特征点法的优点:稳定,对光照、动态物体不敏感

7.1.1 特征点

  • 提取角点的算法有:Harris角点、FAST角点、GFTT角点
  • 单纯的角点不具有尺度不变性,目前主要的特征点有**SIFT1 、SURF、ORB2**等
  • 特征点由**关键点(Key-point)描述子(Descriptor)**组成
    • 关键点:特征点在图像里的位置,有些特征点还带有朝向、大小等信息
    • 描述子:通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息

7.1.2 ORB特征

FAST关键点

  • ORB改进了FAST检测子不具有方向信息和尺度的问题,并且使用二进制描述子BRIEF(Binary Robust Independent Elementary Feature)
    • 尺度不变性:构建图像金字塔,并在金字塔的每一层上检测角点DOG
    • 旋转不变性:灰度质心法(Intensity Centroid)找一个灰度值作为权重的中心C,连接几何中心O和C,得到一个方向向量,

BRIEF描述子

  • BRIEF是二进制的描述子,存储方便,实时性也好

7.1.3 特征匹配

  • 最简单的特征匹配方法是暴力匹配:对于每一个特征点xtn和所有的xt+1n测量描述子的距离,然后选取距离最近的点对。
  • 由于这里使用的BRIEF(二进制 0或1),所以只需要比较不同的位数就可以了

7.2 实践(C++ & OpenCV-3.3.1)

7.2.1 OpenCV的ORB特征

具体的代码就不放在这了,这里我附上了我自己的Github链接和书的作者的Github链接。
列举一些需要记住的编写方式:

// 初始化
// OpenCV中特征点的类型为“==KeyPoint==”
vector<KeyPoint> keypoints_1, keypoints_2;
Mat descriptors_1, descriptors_2;
// 
Ptr<FeatureDetector> detector = ORB::create();
Ptr<DescriptorExtractor> descriptor = ORB::create();
Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("BruteForce-Hamming");

  1. 尺度不变特征变换(Scale-Invariant Feature Transform) ↩︎

  2. ORB (Oriented FAST and Rotated BRIEF) ↩︎

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值