视觉SLAM14讲笔记03:ch7图像特征提取与匹配

图像在这里插入图片描述

我们从最简单的图像一灭度图开始说起。在一张灰度图中,每个像素位置 ( x x x, y y y) 对 应到一个灰度值 I I I,所以一张宽度为 w w w,高度为 h h h 的图像,数学形式可以记成一个矩阵:
I ( x , y ) ∈ R w × h I(x, y) \in \mathbb{R}^{w \times h} I(x,y)Rw×h
然而,计算机并不能表达整个实数空间,所以我们只能在某个范围内,对图像进行量化。例如常见的灰度图中,我们用0-255之间整数(即一个unsigned char, —个字节)来表达图像的灰度大小。

特征点

回顾第二讲的内容,我们说过视觉SLAM主要分为视觉前端和优化后端。0前端也称为视觉里程计(VO)。它根据相邻图像的信息,估计出粗略的相机运动,给后端提供较好的初始值。VO的实现方法,按是否需要提取特征,分为特征点法的前端以及不提特征的直接法前端。基于特征点法的前端,长久以来(直到现在)被认为是视觉里程计的主流方法。它运行稳定,对光照、动态物体不敏感,是目前比较成熟的解决方案。
相比于朴素的角点,这些人工设计的特征点能够拥有如下的性质:

  1. 可重复性(Repeatability):相同的“区域”可以在不同的图像中被找到。
  2. 可区别性(Distinctiveness): 不同的"区域"有不同的表达。
  3. 高效率(Efficiency):同一图像中,特征点的数量应远小于像素的数量。
  4. 本地性(Locality):特征仅与一小片图像区域相关。

特征点由关键点(Key-point)和描述子(Descriptor)两部分组成。其中,SIFT(尺度不变特征变换,Scale-Invariant Feature Transform)当属最为经典的一种。

ORB 特征

FAST角点提取

FAST是一种角点,主要检测局部像素灰度变化明显的地方,以速度快著称。它的思想是:如果一个像素与它邻域的像素差别较大(过亮或过暗),那它更可能是角点。

针对FAST角点不具有方向性和尺度的弱点,ORB添加了尺度和旋转的描述。尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。而特征的旋转是由灰度质心法(Intensity Centroid)实现的。

质心是指以图像块灰度值作为权重的中心。其具体操作步骤如下

  1. 在一个小的图像块 B 中,定义图像块的矩为:
    m p q = ∑ x , y ∈ B x p y q I ( x , y ) , p , q = { 0 , 1 } m_{p q}=\sum_{x, y \in B} x^{p} y^{q} I(x, y), \quad p, q=\{0,1\} mpq=x,yBxpyqI(x,y),p,q={0,1}
  2. 通过矩可以找到图像块的质心:
    C = ( m 10 m 00 , m 01 m 00 ) C=\left(\frac{m_{10}}{m_{00}}, \frac{m_{01}}{m_{00}}\right) C=(m00m10,m00m01)
  3. 连接图像块的几何中心 O 与质心 C,得到一个方向向量 OC,于是特征点的方向可
    以定义为:
    θ = arctan ⁡ ( m 01 / m 10 ) \theta=\arctan \left(m_{01} / m_{10}\right) θ=arctan(m01/m10)

BRIEF描述子

BRIEF是一种二进制描述子,它的描述向量由许多个0 和 1组成,这里的0和1编码了关键点附近两个像素(比如说 p p p q q q) 的大小关系:如果 p p p q q q大,则取1 ,反之就取 0。如果我们取了 128个这样的 p p p , q q q,最后就得到128维由0, 1 组成的向量。那么, p p p q q q如何选取呢?在作者原始的论文出给出了若干种挑选方法,大体上都是按照某种概率分布,随机地挑选 p p p q q q的位置

特征匹配

特征匹配是视觉SLAM中极为关键的一步,宽泛地说,特征匹配解决了 SLAM中的数据关联问题(dataassociation),即确定当前看到的路标与之前看到的路标之间的对应关系。

由于图像特征的局部特性,误匹配的情况广泛存在,而且长期以来一直没有得到有效解决,目前已经成为视觉SLAM中制约性能提升的一大瓶颈。部分原因是因为场景中经常存在大量的重复纹理,使得特征描述非常相似。在这种情况下,仅利用局部特征解决误匹配是非常困难的。

不过,让我们先来看正确匹配的情况,等做完实验再同头去讨论误匹配问题。考虑两个时刻的图像。如果在图像 I t I_{t} It 中提取到特征点 x t m , m = 1 , 2 , … , M , x_{t}^{m}, m=1,2, \ldots, M, xtm,m=1,2,,M, 在图像 I t + 1 I_{t+1} It+1 中提取 到特征点 x t + 1 n , n = 1 , 2 , … , N , x_{t+1}^{n}, \quad n=1,2, \ldots, N, xt+1n,n=1,2,,N, 如何寻找这两个集合元素的对应关系呢?最简单的特征 匹配方法就是暴力匹配(Brute-Force Matcher)。即对每一个特征点 x t m , x_{t}^{m}, xtm, 与所有的 x t + 1 n x_{t+1}^{n} xt+1n 测量描述子的距离,然后排序,取最近的一个作为匹配点。描述子距离表示了两个特征之 间的相似程度,不过在实际运用中还可以取不同的距离度量范数。对于浮点类型的描述子,使用欧氏距离进行度量即可。而对于二进制的描述子(比如 BRIEF 这样的),我们往往使用汉明距离(Hamming distance)做为度量一两个二进制串之间的汉明距离,指的 是它们不同位数的个数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值