特征点法匹配


在SLAM中VO的实现方法可以根据是否需要提取特征分为两类:

  1. 基于特征点的方法
  2. 不使用特征点的直接方法。

其中基于特征点的VO运行稳定,对光照、动态物体不敏感。
图像特征点的提取和匹配是计算机视觉中的一个基本问题,在视觉SLAM中就需要首先找到相邻图像对应点的组合,根据这些匹配的点对计算出相机的位姿(相对初始位置,相机的旋转和平移)。

概念

如何高效且准确的匹配出两个不同视角的图像中的同一个物体,是许多计算机视觉应用中的第一步。虽然图像在计算机中是以灰度矩阵的形式存在的,但是利用图像的灰度并不能准确的找出两幅图像中的同一个物体。这是由于灰度受光照的影响,并且当图像视角变化后,同一个物体的灰度值也会跟着变化。所以,就需要找出一种能够在相机进行移动和旋转(视角发生变化),仍然能够保持不变的特征,利用这些不变的特征来找出不同视角的图像中的同一个物体。然后在这些特征的基础上研究相机的位姿估计问题,以及这些特征的定位问题。在经典的SLAM模型中,这些特征点被称为路标;在VSLAM中则被称为图像特征

为了能够更好的进行图像匹配,需要在图像中选择具有代表性的区域,例如:图像中的角点、边缘和一些区块。其中在图像识别出角点是最容易,也就是说角点的辨识度是最高的。所以,在很多的计算机视觉处理中,都是提取角点作为特征,对图像进行匹配,例如SFM,视觉SLAM等

但是,单纯的角点并不能很好的满足我们的需求,例如:相机从远处得到的是角点,但是在近处就可能不是角点;或者,当相机旋转后,角点就发生了变化。为此,计算机视觉的研究者们设计了许多更为稳定的的特征点,这些特征点不会随着相机的移动,旋转或者光照的变化而变化。例如:SIFT,SURF,ORB等

一个图像的特征点由两部分构成:关键点(Keypoint)和描述子(Descriptor)

  1. 关键点指的是该特征点在图像中的位置,有些还具有方向、尺度信息;
  2. 描述子通常是一个向量,按照人为的设计的方式,描述关键点周围像素的信息。通常描述子是按照外观相似的特征应该有相似的描述子设计的。

因此,在匹配的时候,只要两个特征点的描述子在向量空间的距离相近,就可以认为它们是同一个特征点。
特征点的匹配通常需要以下三个步骤:(关键点 → \rightarrow 描述子 → \rightarrow 匹配)

  1. 提取图像中的关键点,这部分是查找图像中具有某些特征(不同的算法有不同的)的像素
  2. 根据得到的关键点位置,计算特征点的描述子
  3. 根据特征点的描述子,进行匹配

FAST关键点

假设灰度图像像素点A周围的像素存在连续大于或者小于A的灰度值,选择任意一个像素点P,假设半径为3,周围16个像素表示
在这里插入图片描述
则像素点P被标记为候选特征点、通常N取值为9、12,上图 N = 9 N=9 N=9
在FAST-12算法中,为了简化计算,可以通过计算1、9、5、13四个点进行预测试,至少其中三个点满足上述不等式条件,即可将P视为候选点进行检测,否则可以直接进行排除。
原始的FAST角点经常出现“扎堆”的现象,所以第一遍检测之后,还需要用非极大值抑制,在一定区域内仅保留响应极大值的角点,避免角点集中的问题。
优点:FAST特征点主要检测局部像素灰度变化明显的地方,相比其它算法,它只需要比较像素亮度的大小,速度很快
缺点: FAST特征点的数量大而不确定,没有尺度和旋转的描述

FAST ORB后 Oriented FAST

FAST进行ORB,根据上文提到的弱点进行改进。
首先由于FAST的特征点的数量大而不确定,因此指定最终提取的角点数量为N,对原始FAST角点分别计算Harris响应值,然后选取前N个具有最大响应值的角点作为最终的角点集合。

然后针对FAST角点不具备方向性和尺度的弱点,ORB添加了尺度和旋转的描述。
尺度: 这个问题通过构建图像金字塔并在每一层上检测角点来实习
旋转: 这个问题通过构建图像块几何中心和像素质心的向量来实现
几何中心位于图像块原点,像素质心可以通过图像块来实现
m p q = ∑ x , y ∈ B x p y q I ( x , y ) , p , q = 0 , 1 m_{pq}=\sum_{x,y \in B}x^{p}y^{q}I(x,y),p,q={0,1} mpq=x,yBxpyqI(x,y)p,q=0,1
那么图像块的质心可以定义为:
C = ( m 10 m 00 , m 01 m 00 ) C=(\frac{m_{10}}{m_{00}},\frac{m_{01}}{m_{00}}) C=(m00m10,m00m01)
几何中心和像素质心的方向向量为:
θ = a r c t a n ( m 01 / m 10 ) \theta=arctan(m_{01}/m_{10}) θ=arctan(m01/m10)
需要说明的是FAST和Oriented FAST两种方式都不是描述子,这只是选出关键点的一种方式

BRIEF描述子

BRIEF是一种二进制描述子,其描述向量由许多个0和1组成,计算步骤如下:

1、为减少噪声干扰,先对图像进行高斯滤波(方差为2,高斯窗口为9x9)。
2、以特征点为中心,取SxS的邻域窗口。在窗口内随机选取一对(两个)点,比较二者像素的大小,进行如下二进制赋值。

τ ( p ; x , y ) = { 1    i f   p ( x ) &lt; p ( y ) 0    o t h e r w i s e \tau(p;x,y)=\left\{ \begin{aligned} 1 &amp; \ \ if\ p(x)&lt;p(y) \\ 0 &amp; \ \ otherwise \\ \end{aligned} \right. τ(p;x,y)={10  if p(x)<p(y)  otherwise

3、在窗口中随机选取N对随机点,重复步骤2的二进制赋值,形成一个二进制编码,这个编码就是对特征点的描述,即特征描述子。(一般N=256)

以上便是BRIEF特征描述算法的步骤。

Harrix响应值

它主要是利用一个滑动的窗口,对于某个固定方向的(u,v)(u,v)(u,v),我们可以得到在当前像素下的窗口进行移动所产生的像素差
在这里插入图片描述
泰勒展开然后一阶近似,并将其转换成二次型
在这里插入图片描述
可以根据二次型中的矩阵的两个特征值来判断是否是角点,如果特征值都很大,则是角点;如果都很小,则是平滑的区域,否则是平滑的区域
也可以直接利用Harrix进行检测出关键点

非极大值抑制

非极大值抑制NMS在目标检测,定位等领域是一种被广泛使用的方法。对于目标具体位置定位过程,不管是使用sw(sliding Window)还是ss(selective search)方法,都会产生好多的候选区域。实际看到的情形就是好多区域的交叉重叠,难以满足实际的应用。如下图所示。
在这里插入图片描述
针对该问题有3种传统的解决思路。

  1. 选取好多矩形框的交集,即公共区域作为最后的目标区域。
  2. 选取好多矩形框的并集,即所有矩形框的最小外截矩作为目标区域。当然这里也不是只要相交就直接取并集,需要相交的框满足交集占最小框的面积达到一定比例(也就是阈值)才合并。
  3. NMS,简单的说,对于有相交的就选取其中置信度最高的一个作为最后结果,对于没相交的就直接保留下来,作为最后结果。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值