BundleFusion论文解析

BundleFusion论文解析

  • 一.创新点
  • 二.框架处理流程
  • 三.各模块详解
    • 1. 特征一致性策略
      • 1.1 稀疏一致性:
      • 1.2 稠密一致性(根据稀疏一致性得到的位姿关系,通过以下方式进行特征优化与检测):
    • 2. 分层优化策略
      • 2.1 local Intra-Chunk Pose Optimization
      • 2.2 per-Chunk keyframes
    • 3. 建立局部/全局优化目标函数
    • 4. 优化目标函数求解策略
  • 四.算法不足及改进意见

参考链接: BundleFusion解析

一.创新点

  1. 采用space-then-dense的全局优化策略:
    1.1 首先基于SIFT特征点进行位姿粗优化(主要用于对dense位姿优化提供初始位姿并且基于SIFT特征点进行回环检测与重定位);
    1.2 然后基于dense photometric 与 geometric consistency进行位姿精确优化;
  2. 采用local-to-global的位姿优化策略:
    2.1 首先每n个frame组成为一个chunk(子地图),chunk内采用local优化;
    2.2 然后对所有的chunks之间采用golbal优化;(由于chunk内frame之间遵从时间先后关系,chunk之间不需要保证时间的先后关系,因此回环检测/重定位是建立在chunk间的)

二.框架处理流程

BundleFusion论文解析_第1张图片

三.各模块详解

1. 特征一致性策略

1.1 稀疏一致性:

1.1.1 SIFT特征检测与匹配;
1.1.2 Filter:
<1>Key point correspondence filter(寻找稳定的匹配点);
<2>Surface area filter(检测匹配的特征点的分布范围是否足够—>将3D特征点集合投影到两帧的主轴方向组成的平面上,如果投影区域的bounding box的面积不足够大,则放弃两帧之间的匹配关系);

1.2 稠密一致性(根据稀疏一致性得到的位姿关系,通过以下方式进行特征优化与检测):

1.2.1 空间距离误差约束;
在这里插入图片描述

1.2.2 空间法向量误差约束;
在这里插入图片描述

1.2.3 彩色图光度误差约束;

在这里插入图片描述

2. 分层优化策略

2.1 local Intra-Chunk Pose Optimization

每11个frame组成一个chunk,chunk间有一帧的重叠,以便于chunk间的位姿的优化;

2.2 per-Chunk keyframes

1.根据local pose优化的位姿,将chunk内所有frame内的特征点转换到同一个坐标系下进行表示(chunk内第一帧的位姿)
2.把空间位置和描述子相似的特征合并为一个特征(特征的位置用所有特征的的位置的最小二乘拟合得到)
3.舍弃intra-chunk(chunkn内的特征描述子和匹配关系)–>(意味着chunk内的稀疏特征匹配关系固定,后期不在进行chunk内的位姿优化);
4.保留chunk内下采样后的每帧的图像信息–>(意味着后期进行global优化时,通过对keyframe更新的位姿然后更新得到chunk内每个frame的位姿,通过此frame新的位姿对TSDF模型进行去融合和再融合的更新)
5.注:本论文中采用每N chunk(eg=11)个frame为一个chunk,同时记keyframe为chunk内的第一帧(代表融合后的chunk)global inter-Chunk Pose Optimization

3. 建立局部/全局优化目标函数

优化目标函数:Ealign(X)= WsparseEsparse(X) + WdenseEdense(X);

此处需要注意权重值Wdense随着迭代次出线性增加。具体解释为:迭代刚开始以稀疏特征点计算的位姿为主,随着迭代次数的进行,稠密计算的位姿相对于稀疏匹配的位姿更加可以提现高精度的特性,因此Wdense随着迭代次出线性增加。

4. 优化目标函数求解策略

假设求解目标函数为:
在这里插入图片描述
在这里插入图片描述

注意此处的参数:在这里插入图片描述
,接下来会对此参数进行解释:
|E|:代表存在关系的frame对数量;
|Ii|:60x80个匹配点的像素误差值;
|Di|:60*80个匹配点的点到平面的距离误差值;
Ncoor:代表所有存在关系的特征对数量;
3Ncoor:代表每个特征对存在三个误差量(4.1.1空间/点面距离/颜色差异);
N:代表3d空间,6个维度;

此时目标函数改写为向量形式为(F代表当前X下,所有量的误差函数):
在这里插入图片描述

注意此时:F函数代表N维到R维度的映射:
在这里插入图片描述
BundleFusion论文解析_第2张图片

因此对于所有待优化的pose,变量个数很大;

四.算法不足及改进意见

  1. 检测的方法来确定初始位姿以及进行回环检测与重定位,所以此算法受特征点提取的质量以及应用场景的限制.(eg 弱纹理区域、重复纹理区域)参考kinectFusion的方法引入3D-3D的基于ICP的方式,来增加鲁棒性;
  2. 由于model中采用Integration and De-integration的方式,所以需要保存每一帧的深度图信息,因此随着时间的推移,会导致内存开销持续增长,速度因此也会越来越慢;建议可以将chunk内的n个frame转为只保存n个key-frame的方式,延缓增长;
  3. 采用点贴图的方式,后期可以更改为面贴图方式,以增加纹理细节;

你可能感兴趣的:(3D机器视觉,计算机视觉,算法)