ORB-SLAM 对 PTAM 改了什么

来源:互联网 发布:如何上传淘宝数据包 编辑:程序博客网 时间:2024/05/01 05:54

特征匹配差异

PTAM patch 匹配和 ORB 描述子匹配

ORB-SLAM 用 ORB 特征匹配计算位姿,回环检测和重定位都用 ORB 特征;PTAM 没有用特征,和 SVO 一样,用的是 patch(8x8 方块),PTAM 在地图点和当前帧 patch 匹配的时候,由于地图点所在的帧和当前帧间距或者旋转可能较大,当前帧的 patch 相对于地图点的可能形变较大(尺度,旋转,拉伸),所以地图点的 patch 在当前帧寻找匹配的 patch 时,先计算一个 affine warp matrix 变换,将地图点的 patch 变换到和当前帧的相似,再在当前帧中用 SSD 算法找匹配的 patch。

4x4 affine warp matrix 计算表达式:

A=ucusvcusucvsvcvs

上式中 {us,vs} 是 source pyramid level 像素位移(地图点所在关键帧在对应层的像素位移),{uc,vc} 是 source pyramid level 中有位移 {us,vs} 时在当前帧最底层产生的像素位移。

affine warp matrix 具体计算方式如下:
在地图点所在关键帧对应层上,产生一个像素的位移(横纵坐标分开做),并且将这个像素位移(对应到最底层位移不止一个像素)投影到地图点所在的 patch 平面上(patch 在三维空间的坐标和法向量可以确定 patch 在 3D 空间的平面),再将这个 3D 空间中的位移线段投影到当前帧中,计算在当前帧在横纵坐标上产生的像素位移。

矩阵 A 的行列式决定 patch 在当前帧的哪一层上做搜索,矩阵行列式还决定了搜索的面积,det(A)/4 是在第一层搜索的面积,det(A)/4l 是在第 l 层搜索的面积,使得 det(A)/4l 接近 1 的层 l 是搜索 patch 的层。

在进行搜索前先用矩阵 A/2l 对 source 的 patch 做变换,做完变换后再通过插值得到待搜索的 patch,因为计算 A 时 source patch 是在 source pyramid level 和当前帧第一层金字塔对比的,所以 A 在对 source patch 做变换时还需要除以 2l,这样得到的 warp 后的 patch 才可以在使 det(A)/4l 接近 1 的层上搜索。det(A)/4l 中的 4 指面积,层间的面积比是 4,det(A)/2l 是计算坐标,层间的横纵坐标比是 2。

而对于 ORB-SLAM 中的特征匹配,特征描述子对于旋转具备不变性(其他特征可能还具备平移,相似或者仿射不变性),不需要对 patch 进行 SSD 匹配,只需要计算特征描述子间距离就可以了。

ORB-SLAM 特征提取很耗时。

匹配流程差异

ORB-SLAM 先和上一帧配准,再跟当前帧所在的局部地图配准计算位姿:
http://blog.csdn.net/fuxingyin/article/details/53511439

PTAM 通过两步和局部地图配准计算位姿,第一步和少量的层数最高的地图点配准计算位姿,然后再和大量的地图点配准计算位姿。

ORB-SLAM 中的 convisibility graph

ORB-SLAM 中的 convisibility graph 保存了关键帧之间的连接,通过 convisibility 可以得到局部地图,在和局部地图匹配和初始化新的地图点时都用到 convisibility graph,PTAM 没有 convisibility graph。

ORB-SLAM 中的 Essential Graph /Pose graph

ORB-SLAM 中通过 convisibility graph 计算得到 Essential Graph /Pose graph,在检测到回环时,先优化 essential graph 再进行全局的 BA,essential graph 在 PTAM 中也是没有的。

回环检测和回环优化

PTAM 中没有回环检测,只有 local BA,PTAM 是为小场景 AR 设计的,没考虑全局的回环。ORB-SLAM 有回环检测,也有 locaL BA。ORB-SLAM 只有 tracking 和 mapping 两个线程,ORB-SLAM 有 tracking,mapping 和 loop closing 三个线程。

重定位算法

PTAM 中的重定位算法和 Elasticfusion 中的重定位算法很像:
http://blog.csdn.net/fuxingyin/article/details/51436430
ORB-SLAM 基于 DBoW2 做重定位,个人感觉基于 Fern 的重定位算法实现起来简单,方便调试,召回率相对于 DBoW2 高,准确率低。

参考文献:
“Parallel Tracking and Mapping for Small AR Workspaces”
“ORB-SLAM: a Versatile and Accurate Monocular SLAM System”

版权声明:本文为博主原创文章,未经博主允许不得转载。

1 0
原创粉丝点击