帮助中心
帮助中心主页
移动机器人通识
外部传感器
激光雷达
距离传感器
其他传感器
总线型编码器
电池及充电
喇叭及氛围灯
功能授权
参数及报警码
基于特征点法的视觉定位

视觉特征点的定义

视觉定位核心问题是根据图像估计相机运动。特征点是从各个图像中选取相同的有代表性的点(相机视角发生少量变化时,这些点保持不变),在这些点的基础上讨论相机位姿估计问题以及这些点的定位问题。在经典SLAM模型中,这些点是路标;在视觉SLAM中,这些点是图像特征。
数字图像在计算机中以灰度值矩阵方式存储。在视觉定位中,希望特征点在相机运动后保持稳定,而灰度值容易受光照、形变、物体材质等影响,在不同图像之间变化很大,不稳定。因此仅凭灰度值不够,需要对图像提取特征点。
特征点是图像里一些特别的地方,一般可以分为角点、边缘、区块。区分同一个角点最简单,区分一个区块最难。

可以作为图像特征的部分:角点、边缘、区块
在实际应用中,单纯的提取角点不能够解决问题,图像远处看是一个角点,当相机离近后可能就不是角点了。或者当相机旋转运动时,角点的外观也会发生变化,也不容易辨认是同一个角点。在经过人工设计后有著名的SIFT,SURF,ORB等,特征点有以下性质:
1、可重复性:相同特征可以在不同图像中找到
2、可区别性:不同特征有不同表达
3、高效率:同一个图像中,特征点数量远小于像素点数量
4、局部性:特征只与一小片图像区域相关
一个图像的特征点由两部分构成:关键点(Keypoint)和描述子(Descriptor)。 关键点指的是该特征点在图像中的位置,有些还具有方向、尺度信息;描述子通常是一个向量,按照人为的设计的方式,描述关键点周围像素的信息。通常描述子是按照外观相似的特征应该有相似的描述子设计的。因此,在匹配的时候,只要两个特征点的描述子在向量空间的距离相近,就可以认为它们是同一个特征点。

特征描述子

从图像中提取到特征的关键点信息,通常只是其在图像的位置信息(有可能包含尺度和方向信息),仅仅利用这些信息无法很好的进行特征点的匹配,所以就需要更详细的信息,将特征区分开来,这就是特征描述子。另外,通过特征描述子可以消除视角的变化带来图像的尺度和方向的变化,能够更好的在图像间匹配。
特征的描述子通常是一个精心设计的向量,描述了关键点及其周围像素的信息。为了能够更好的匹配,一个好的描述子通常要具有以下特性:

  • 不变性 指特征不会随着图像的放大缩小旋转而改变。
  • 鲁棒性 对噪声、光照或者其他一些小的形变不敏感
  • 可区分性 每一个特征描述子都是独特的,具有排他性,尽可能减少彼此间的相似性。

其中描述子的可区分性和其不变性是矛盾的,一个具有众多不变性的特征描述子,其区分局部图像内容的能力就比较稍弱;而如果一个很容易区分不同局部图像内容的特征描述子,其鲁棒性往往比较低。所以,在设计特征描述子的时候,就需要综合考虑这三个特性,找到三者之间的平衡。
特征描述子的不变性主要体现在两个方面:
尺度不变性 Scale Invarient:指的是同一个特征,在图像的不同的尺度空间保持不变。匹配在不同图像中的同一个特征点经常会有图像的尺度问题,不同尺度的图像中特征点的距离变得不同,物体的尺寸变得不同,而仅仅改变特征点的大小就有可能造成强度不匹配。如果描述子无法保证尺度不变性,那么同一个特征点在放大或者缩小的图像间,就不能很好的匹配。为了保持尺度的不变性,在计算特征点的描述子的时候,通常将图像变换到统一的尺度空间,再加上尺度因子。
旋转不变性 Rotation Invarient:指的是同一个特征,在成像视角旋转后,特征仍然能够保持不变。和尺度不变性类似,为了保持旋转不变性,在计算特征点描述子的时候,要加上关键点的方向信息。

特征点的匹配

特征的匹配是针对特征描述子的进行的,上面提到特征描述子通常是一个向量,两个特征描述子的之间的距离可以反应出其相似的程度,也就是这两个特征点是不是同一个。根据描述子的不同,可以选择不同的距离度量。如果是浮点类型的描述子,可以使用其欧式距离;对于二进制的描述子(BRIEF)可以使用其汉明距离(两个不同二进制之间的汉明距离指的是两个二进制串不同位的个数)。

得到计算描述子相似度的方后法,那么在特征点的集合中如何寻找和其最相似的特征点,这就是特征点的匹配了。
最简单直观的方法就是使用:暴力匹配(Brute-Froce Matcher),计算某一个特征点描述子与其他所有特征点描述子之间的距离,然后将得到的距离进行排序,取距离最近的一个作为匹配点。这种方法简单,错误匹配多。因此就需要使用一些机制来过滤掉错误的匹配,常见的检查错误匹配的机制包括:最近邻匹配,一致性检查等

计算相机运动

通过上面的匹配关系,我们得到了前后两帧图像中的对应点对。接下来要根据点对估计相机运动,由于相机类的原理不同,计算姿态的数学原理也发生了变化:

  1. 当相机为单目时,我们只知道 2D 的像素坐标,因而问题是根据两组 2D 点估计运动。该问题用对极几何来解决。


对极几何约束

  1. 当相机为双目、RGB-D 时,或者我们通过某种方法得到了距离信息,那问题就是根据两组 3D 点估计运动。该问题通常用 ICP 来解决。
  2. 如果我们有 3D 点和它们在相机的投影位置,也能估计相机的运动。该问题通过 PnP求解。

计算地图点

我们需要用相机的运动估计特征点的空间位置。在单目 SLAM 中,仅通过单张图像无法获得像素的深度信息,我们需要通过三角测量(Triangulation)(或三角化)的方法来估计地图点的深度。三角测量是指,通过在两处观察同一个点的夹角,确定该点的距离。三角测量最早由高斯提出并应用于测量学中,它在天文学、地理学的测量中都有应用。例如,我们可以通过不同季节观察到星星的角度,估计它离我们的距离。在 SLAM 中,我们主要用三角化来估计像素点的距离。

关于三角测量,还有一个必须注意的地方。三角测量是由平移得到的,有平移才会有对极几何中的三角形,才谈的上三角测量。因此,纯旋转是无法使用三角测量的,因为对极约束将永远满足。

最近更新 2023/09/22
文章内容

视觉特征点的定义

特征描述子

特征点的匹配

计算相机运动

计算地图点