一个完整的SLAM系统分为前端和后端,前端也就是我们所说的视觉里程计,它是来根据相邻图片来估计相机之间的运动。视觉里程计的算法主要分为两大类别:特征点法和直接法。本次记录了特征点法学习的部分内容,特征点法的原理,并且进行了相关实验。
特征点法首先顾名思义就是要找到特征点,即从相机的图片间选出有代表性的点,因为直接从图像矩阵的层面去进行运动估计,过程很难实现。
在SLAM中我们希望特征点能够拥有以下特点:
- 可重复性(在不同的图像中可以找到相同的特征)
- 可区别性(不同的特征点有不同的表达)
- 高效性(在一张图片中,特征点的数量远远小于整个图片的像素点)
- 本地性(每一个特征点仅与自己附近的一小片区域有关联)
我们可以把图像中的角点,边缘和区块都当成图像中具有代表性的地方。但有时候当指出一幅图片中出现相同的边缘较为困难,因为当你沿着边缘移动的时候,图像局部是相似的。对于区块,肯定是最困难的。所以,相对与后两者,角点显然在不同的图像之间的辨识度更强。角点的提取算法有很多,比如:Harris角点,FAST角点,GFTT角点等。
但是在很多场合,单纯的角点不能满足很多需求,比如从很远的地方看是一个焦点,但是当相机靠近之后就会出现可能不是角点的情况;或者当相机旋转,此时也会出现不能辨认出角点的情况。此时就出现了一些优秀的算法,SIFT,SURF,ORB等。本文对ORB做简单的说明。
特征点由关键点和描述子组成。
关键点&