ORB特征和FAST 关键点

1. ORB特征

ORB特征由关键点和描述子两部分组成。它的关键点称为"Oriented FAST",是 一种改进的FAST角点,什么是FAST角点我们将在下文介绍。它的描述子称为BRIEF(Binary Robust Independent Elementary Features)。因此,提取ORB特征分为两个步骤:

  • FAST角点提取:找出图像中的"角点"。相较于原版的FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变特性。
  • BRIEF描述子:对前一步提取出特征点的周围图像区域进行描述。

(1) FAST 关键点

FAST是一种角点,主要检测局部像素灰度变化明显的地方,以速度快著称。它的思想是:如果一个像素与它邻域的像素差别较大(过亮或过暗),那它更可能是角点。相比于其他角点检测算法,FAST只需比较像素亮度的大小,十分快捷。检测过程如下:

  1. 在图像中选取像素ppp, 假设它的亮度为IpI_pIp​。
  2. 设置一个阈值TTT(比如IpI_pIp​)的20%。
  3. 以像素ppp为中心,选取半径为3的圆上的16个像素点。
  4. 加入选取的圆上,有连续NNN个点的亮度大于Ip+TI_p+TIp​+T或者小于Ip−TI_p-TIp​−T,那么像素ppp可以被认为是特征点(N通常取12,即为FAST-12。其他常用的N取值为9和11,它们分别被称为FAST-9,FAST-11)。
  5. 循环以上四步,对每一个像素执行相同的操作。

在FAST-12算法中,为了更高效,可以添加一项预测试操作,以快速地排除绝大多数不是角点的像素。具体操作为,对于每个像素,直接检测邻域圆上的第1,5,9,13个像素的亮度。只有当这四个像素中有三个同时大于Ip+TI_p+TIp​+T或小于Ip−TI_p-TIp​−T时,当前像素才有可能是一个角点,否则应该直接排除。这样的预测试操作大大加速了角点检测。此外,原始的FAST角点经常出现“扎堆”的现象。所以在第一遍检测之后,还需要用非极大值抑制(Non-maximal suppression),在一定区域内仅保留响应极大值的角点, 避免角点集中的问题。

FAST特征点的计算仅仅是比较像素间亮度的差异,速度非常快,但它也有一些问题。首先,FAST特征点数量很大且不确定,而我们往往希望对图像提取固定数量的特征。因此,在ORB中,对原始的FAST算法进行了改进。 我们可以指定最终要提取的角点数量N,对原始FAST角点分别计算Harris响应值,然后选取前NNN个具有最大响应值的角点,作为最终的角点集合。

其次,FAST角点不具有方向信息。 而且,由于它固定取半径为3的圆,存在尺度问题 :远处看着像是角点的地方,接近后看可能就不是角点了。针对FAST角点不具有方向性和尺度的弱点,ORB添加了尺度和旋转的描述。尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。而特征的旋转是由灰度质心法(Intensity Centroid)实现的,具体如下:

  • 在一个小的图像块 BBB中,定义图像块的矩为:
    mpq=∑x,y∈BxpyqI(x,y),p,q={0,1}m_{pq} = \sum_{x,y \in B} x^py^qI(x,y), \quad p,q=\{0,1\} mpq​=x,y∈B∑​xpyqI(x,y),p,q={0,1}
  • 通过矩可以找到图像块的质心:
    C=(m10m00,m01m00)C= (\frac{m_{10}}{m_{00}}, \frac{m_{01}}{m_{00}}) C=(m00​m10​​,m00​m01​​)
  • 连接图像块的几何中心OOO与质心CCC,得到一个方向向量OC→\overrightarrow{OC}OC,于是特征点的方向可以定义为:
    θ=arctan⁡(m01/m10)\theta = \arctan(m_{01}/m_{10}) θ=arctan(m01​/m10​)

通过以上方法,FAST角点便具有了尺度与旋转的描述,大大提升了它们在不同图像之间表述的鲁棒性。 所以在ORB中,把这种改进后的FAST称为Oriented FAST。

(2) BRIEF 描述子

在提取Oriented FAST关键点后,我们对每个点计算其描述子。ORB使用改进的BRIEF特征描述。我们先来讲BRIEF是什么。

BRIEF 是一种二进制描述子,它的描述向量由许多个0和1组成, 这里的0和1编码了关键点附近两个像素(比如说p和q)的大小关系:如果p比q大,则取1,反之就取0。如果我们取了128个这样的p,q,最后就得到128维由0,1组成的向量。那么,p和q 如何选取呢?在作者原始的论文中给出了若干种挑选方法,大体上都是按照某种概率分布,随机地挑选p和q的位置。BRIEF使用了随机选点的比较,速度非常快,而且由于使用了二进制表达,存储起来也十分方便,适用于实时的图像匹配。原始的BRIEF描述子不具有旋转不变性的,因此在图像发生旋转时容易丢失。而ORB在FAST特征点提取阶段计算了关键点的方向,所以可以利用方向信息,计算了旋转之后的"Steer BRIEF"特征,使ORB的描述子具有较好的旋转不变性。

ORB特征和FAST关键点 笔记相关推荐

  1. 视觉里程计:特征点法之ORB特征点

    VO的核心问题在于根据图像信息估计相机的运动轨迹 .通常从图像中选取具有代表性的点,并当相机运动后,从不同的图像中找到对应的相同点,从而确定相机位姿估计问题.在经典SLAM模型中,称这种点为路标,而在 ...

  2. ORB:FAST关键点和rBRIEF描述子

    介绍 FAST关键点 rBRIEF描述子 介绍 目前SIFT特征准确度高,但是计算复杂度也高.很多时候需要用到匹配.追踪什么的,使用SIFT就比较慢.本文作者提出了ORB(Oriented FAST ...

  3. 【OpenCV-Python】——哈里斯/Shi-Tomas角检测FAST/SIFT/ORB特征点检测暴力/FLANN匹配器对象查找

    目录 前言: 1.角检测 1.1 哈里斯角检测 1.2 优化哈里斯角 1.3 Shi-Tomasi角检测 2.特征点检测 2.1 FAST特征点检测 2.2 SIFT特征检测 2.3 ORB特征检测 ...

  4. 常见图像特征点——FAST角点,ORB,SIFT

    图像特征点性质: 可重复性:在不同图像中能重现 可区别性:不同的点有不同的表达 高效:特征点数量应远小于像素数量 本地:特征仅与一小片区域相关 1.FAST特征点 FAST是一种角点,主要检测局部像素 ...

  5. ORB2单目读代码笔记5--利用灰度质心计算ORB特征点方向,实现旋转不变性

    5.利用灰度质心计算ORB特征点方向,实现旋转不变性 ComputeKeyPointOctTree 跳转 computeOrientation computeOrientation 跳转 IC_Ang ...

  6. ORB-SLAM中的ORB特征(提取)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:小葡萄 https://zhuanlan.zhihu.com/p/61738607 本文仅做学术 ...

  7. opencv ORB特征匹配

    AKAZE 局部特征匹配 级联分类器使用 等比例缩放图片 给图片加logo 鱼眼校正 智能答卷识别 opencv滤镜效果 灰度图像增强方式 opencv模板匹配 基础知识点 ORB 算法 使用 FAS ...

  8. orb特征 稠密特征_特征点的基本概念和如何找到它们

    一.什么是特征点,它具有什么"特征"? 特征点.角点.关键点,这些概念虽然有细节上的不同,但是在我们这里统一称为"特征"点,也就是具有特征性质的点.在图像处理中 ...

  9. ORBSLAM的ORB特征到底从哪儿来?

    ORBSLAM中的主要使用了ORB特征,也就是FAST特征+BRIEF描述子的组合,具体这两种方法就不详细介绍了,这里主要说一下每个特征对应的描述子在ORBSLAM中的维护方式: 首先需要说明的是每个 ...

最新文章

  1. 叶杰平入选、华人占4成,2020年ACM杰出科学家榜单出炉
  2. 基于算法的建模---分形几何方法
  3. 关于不过洋节的通知_迁安各商家从今往后不再过“洋节”!
  4. Java print流简介
  5. bert本质理解记录一
  6. 阿里技术大神:你没做错啥,你错在啥都没做
  7. 【今日CV 视觉论文速览】22 Nov 2018
  8. python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
  9. vue+node+mongodb实现的功能
  10. 从“跳一跳”来看微信小程序的未来
  11. 面试官:这货一听就是一个水货...
  12. COCO2017 数据集分类统计
  13. Maya Python脚本入门
  14. C语言学习笔记-各项为正整数的一元二次方程的十字交叉法因式分解
  15. react中input输入框显示字数
  16. 9_1 法律法规标准化
  17. Functional Programming in Java venkat(4) Using Collections part2
  18. flash 与分解:分解百度MP3图片墙
  19. 程序员是干什么的呢?
  20. 2023最新Ypay源支付系统源码V6.9.9版+兼容易支付和码支付API

热门文章

  1. 我心中的linux,和我如何用GNU linux工作!【强帖,精彩,真精彩】
  2. 完全用GNU/Linux工作,摈弃Windows---你我共勉 (转)
  3. 界面原型设计工具 Balsamiq Mockups
  4. 记录Magisk面具root,并使用HttpCanary获取APP或小程序请求 (一)
  5. 乱七八糟之处理器天梯图
  6. 关于VMware 15:在部分链上无法执行所调用的函数,请打开父虚拟磁盘
  7. Windows程序设计-剪贴板
  8. 招聘渠道超全汇总,最适合你的是哪一类?
  9. java实现程序等待一段时间的代码
  10. wfp网络过滤框架总结(一)