7.1 特征点法
前面提到过,SLAM中主要分为前端和后端,前端主要是根据相邻图像的信息,粗略估计相机的运动,从而给后端一个比较好的初始值。前端的实现,根据是否需要提取特征,分为特征点法和直接法。
对于特征点法,首先需要的就是定义什么是特征点。图像本身就是一个矩阵,如果直接从矩阵的层面考虑运动的估计,相当于用图像中全部的数据去估计,这样做的运算量必然是很大的。一般我们都会采用选代表的方法,也就是选取图像中比较有代表性的点。这些点在相机发生小幅度变化后会保持不变,所以可以在各个图像中找到相同的点,之后利用这些点,去讨论相机位姿估计问题以及点的定位问题。
特征是图像信息的另一种表达方式,一般数字图像在计算机中以灰度值矩阵的形式存在,而在视觉里程计中,我们希望特征点在相机运动之后能够保持稳定,灰度容易受到光照、形变等因素的影响,显然不够稳定。理想情况是场景和相机视角发生小幅度变化时,我们依然可以通过图像判断哪个地方是同一个点,这样仅仅依靠灰度值就不够了。 在视觉里程计中特征点就是图像中一些特别的地方,一般可以将角点、边缘和区块都看做一些有代表性的地方,不过判断同一个角点会相对简单,判断同一个边缘会因为局部相似而变得困难,判断区块则是最难的。因此图像中的角点、边缘相比于像素区块会更加特别,从而辨识度也就更高。因此在特征提取的时候,最直观的方法是提取不同图像间的角点,之后再确定它们之间的对应关系。 在进一步的研究中,研究人员定义了更多更加稳定的局部图像特征,他们都包括下面的特征: 特征点由两部分组成:关键点和描述子。关键点值的是该特征点在图像里的位置,有些特征点还包括朝向、大小等信息。描述子一般是一个向量,按照某种人为的方法去设定,用来描述周围的信息,一般设计描述子,都是按照“外观相似的特征应该有相似的描述子”原则进行的,因此只要描述子在向量空间的距离相近,就可以认为是同样的特征点。换句话说,关键点是具体的一个位置,在这个位置的基础上,用描述子来描述这个关键点周围的信息,比如我要描述一个人脸的特征,我不能只说一个位置,也不能只说一个样子,我必须是说明白哪里有个什么特征,鼻子下面有个痦子,鼻子下面就是一个关键点,有个痦子则是描述子。而我精心设计的描述子向量,必须能够体现我的特征,比如都是发黑,我要能够区别是痣还是皮肤癌,这样在实际比较的时候,某个向量离痣更近,那我就可以判断这个特征是个痣而不是皮肤癌。
在实际应用中,研究人员提出了很多类型的特征,其中SIFT是最经典的一种,它充分考虑了图像变换过程中出现的光照、尺度、旋转等变换,但是也带来了很大的计算量要求。ORB特征则是目前看来更具有代表性的特征,他改进了FAST特征子,不仅优化了方向问题,还采用二进制描述子,从而提高了计算速度。
下面简单介绍一下ORB特征。
|