本系列文章旨在总结主流视觉 SLAM 算法的框架, 对比各个算法在子模块的差异, 最终提炼出融合各个算法优点的架构
PTAM[1]是视觉 SLAM 领域里程碑式的项目在此之前, MonoSLAM[2]为代表的基于卡尔曼滤波的算法架构是主流, 它用单个线程逐帧更新相机位置姿态和地图地图更新的计算复杂度很高, 为了做到实时处理 (30Hz),MonoSLAM 每帧图片只能用滤波的方法处理约 10~12 个最稳定的特征点 PTAM 最大的贡献是提出了 trackingmapping 双线程的架构, tracking 线程只需要逐帧更新相机位置姿态, 可以很容易实现实时计算; 而 mapping 线程并不需要逐帧更新, 有更长的处理时间, 原来只能用在离线 SfM(Structure from Motion) 的 BA(Bundle Adjustment)也可以用起来这种基于优化的算法比滤波法在单位计算时间可以得到更高的精度 [3] 这种多线程的处理方式也更顺应现代 CPU 的发展趋势之后的视觉 SLAM 算法几乎全部沿用了这一思想
在 tracking 线程, 地图 (由地图点和关键帧组成) 是已知且固定的对图片构造金字塔的目的有两个: 1)加快匹配; 2)提高地图点相对于相机远近变化时的鲁棒性 FAST 是常用的特征点, 优点是快, 缺点是不鲁棒通常会先提取出大量的 (成百上千个)FAST 特征, 然后用各种约束剔除误匹配基于运动模型(PTAM 选用减速模型, 一般匀速模型更常见) 假定当前帧的初始位置姿态, 把地图点投影到当前帧, 建立起当前帧和关键帧 (每个地图点会关联第一次观察到它的关键帧) 的联系随后在匹配点附近找一块小区域 (这就是所谓的 patch), 通过比较当前帧和关键帧的 patch 的相似度(计算 SSD), 可以剔除误匹配为了去除观测位置姿态不同的影响, 会在匹配前对 patch 做仿射变换, 直观的解释是: 正方形从另一个角度看是平行四边形 Patch 匹配的另一个用处是提高匹配点的精度, 可以用插值得到亚像素级别的坐标, 这对于金字塔高层图片上的匹配点帮助很大找到一系列匹配点之后, 就可以优化求解当前帧的位置姿态, 优化通常是在李群求解 PTAM 为了加速计算, 设计了从粗到细两轮求解过程, 粗测阶段只考虑金字塔最高层图片上的少量匹配点(50 个), 优化出的位置姿态作为精测阶段的初值, 精测阶段会纳入更多匹配点(1000 个) 和金字塔所有层从粗到细两轮求解的缺点是会增加抖动(jitter), 改进的办法是在接近静止的状态下跳过粗测直接进入精测阶段 PTAM 用三个级别评判 tracking 质量: 好不好丢失只会在好的状态下插入新关键帧和地图点, 如果丢失, 会有简单的重定位功能(在所有关键帧中找相似的)
在 mapping 线程, 优化对象是地图点位置和关键帧位置姿态, 不再考虑当前帧的位置姿态先利用两帧图片初始化, 具体方法是先五点法加 RANSAC 求出初值, 然后所有匹配点 (约 1000 个)BA 优化由于是单目, 所以尺度是未知的, 当做常数固定下来首先从以下几个角度判断当前帧是否是关键帧: 1)tracking 效果好; 2) 距离上一个关键帧至少 20 帧图片; 3)距离最近的地图点大于一个阈值, 这是为了保证 baseline 足够大如果当前帧不是关键帧, 则做 BA 优化 PTAM 把 BA 优化分为局部和全局两部分, 这和 tracking 线程从粗到细两轮求解是一个思路, 都是为了降低计算复杂度, 加速求解在局部 BA 阶段, 只考虑滑动窗内的关键帧 (5 帧), 以及它们能观测到的所有地图点额外的约束是能观测到这些地图点的其他关键帧, 这些关键帧固定不动, 并不是优化对象全局 BA 阶段, 优化对象纳入所有的关键帧和地图点在闲暇时间 mapping 线程可以利用旧的关键帧改善地图, 要么从旧的关键帧观察新添加的地图点, 要么重新测量之前被剔除的外点, 如果被成功观测并收敛, 则作为新的地图点插入地图如果当前帧是关键帧, 则做两件事情: 1) 把所有地图点投影到这个新的关键帧 (tracking 线程处于计算量的考虑只投影了一部分地图点), 为之后的 BA 做准备; 2) 生成新的地图点, 会对新关键帧的特征点做非极大值抑制, 并筛选出最显著 (Shi-Tomasi 分数) 的一批特征点, 然后在最近的关键帧上沿极线搜索匹配点, 只要能找到匹配点, 就三角化出地图点
参考文献:
- [1] Klein G, Murray D. Parallel tracking and mapping for small AR workspaces[C]//Mixed and Augmented Reality, 2007. ISMAR 2007. 6th IEEE and ACM International Symposium on. IEEE, 2007: 225-234.
- [2] Davison A J, Reid I D, Molton N D, et al. MonoSLAM: Real-time single camera SLAM[J]. IEEE transactions on pattern analysis and machine intelligence, 2007, 29(6): 1052-1067.
- [3] Strasdat H, Montiel J M M, Davison A J. Real-time monocular SLAM: Why filter?[C]//Robotics and Automation (ICRA), 2010 IEEE International Conference on. IEEE, 2010: 2657-2664.
来源: http://www.bubuko.com/infodetail-2495572.html