IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PTAM 论文记录 -> 正文阅读

[人工智能]PTAM 论文记录

原论文下载地址:Parallel Tracking and Mapping for Small AR Workspaces

该论文最大的特点:Parallel Tracking and Mapping
应用场景:Small AR Workspaces

1 INTRODUCTION

论文目的:在没有任何先验信息的情况下实现对 AR 场景的跟踪。
为了简化任务,场景需要是静态的、小的。

因为 tracking 和 mapping 并行化,把计算量大的 BA 放到了 mapping 线程中,所以 mapping 的扩张速度会慢,而 tracking 是基于 mapping 得到的地图的,所以就限制了 PTAM 的应用条件。

2 METHOD OVERVIEW IN THE CONTEXT OF SLAM

算法特点总结:

  • 跟踪和建图并行化
  • 使用关键帧建图
  • 5 点法密集初始化
  • 极线搜索初始化新的特征点
  • 使用大量特征点建图

算法比较:
tracking-while-mapping:EKF-SLAM、FastSLAM 2.0
都是渐进式建图方法,跟踪和建图紧密结合,每帧的相机位姿和路标坐标一同更新。
需要防止数据关联错误,如果没有外点去除,鲁棒性就不能满足 AR 的应用需求。

跟踪和建图并行化的优势:

  • 可以使用任意的跟踪算法
  • 跟踪和建图的数据关联不需要共享
  • 没有了需要每一帧都更新地图的负担,跟踪线程可以对图像做更细致的处理,提高了跟踪的性能
  • 不需要使用每一帧图像进行建图(使用关键帧
  • 不需要实时地处理关键帧
  • 可以使用计算量大但是高精度的批量方法(BA)

3 FURTHER RELATED WORK

4 THE MAP

地图包括:

  • 世界坐标系 W 下 M 个特征点,每个特征点都表示了世界坐标系下具有纹理的一个平面。特征点坐标、特征点关联的图像块的法向量、图像块的像素索引。
  • N 个关键帧。包括以相机为中心的坐标系、4层灰度金字塔。
  • 每个特征点还记录了它的原始关键帧(首次观察到该特征点的关键帧)、金字塔层级、像素坐标。在金字塔中,图像块是 8x8 的像素块。在世界坐标下(即把像素块反投影到地图点所在平面中),图像块的大小和形状取决于金字塔层级、距离原始关键帧相机中心的距离,图像块的法向量方向。

5 TRACKING

基于创建好的地图进行跟踪。
对每帧执行两步由粗到精的跟踪

  • 从相机采集图像,由运动模型得到一个初始位姿。
  • 根据帧的初始位姿,将地图点投影成图像像素坐标。
  • 在图像中搜索少量的粗尺度的特征,确定地图点和特征点的匹配关系
  • 从粗匹配中更新相机位姿

  • 投影大量的地图点,搜索
  • 从匹配中计算最终位姿

5.1 Image acquisition

  • 原始图像转为灰度图用于跟踪,RGB 图用于展示
  • 构建 4 层金字塔
  • 对每层金字塔检测 FAST-10 角点,不采用非极大抑制
  • 使用衰减速度模型得到帧的相机位姿先验

5.2 Camera pose and projection

将地图点投影到图像平面:
在这里插入图片描述
使用针孔相机模型FOV 径向畸变模型
为了可以对相机位姿进行求导,用到了四元数

5.3 Patch Search

在当前帧中找到地图点

  • 对图像块进行仿射变形
    在这里插入图片描述
    { u s , v s } \{u_s, v_s\} {us?,vs?} 表示图像块在原始金字塔层级中的像素位置, { u c , v c } \{u_c, v_c\} {uc?,vc?} 表示当前帧的第 0 层金字塔坐标。
    首先将图像块在原始金字塔层级中的像素位置投影到图像块平面,然后再投影到当前帧像素平面。

即 将原始关键帧中的像素反投影到地图特征点所在图像块平面位置,再投影到当前帧像素平面,用 [ u s , v s ] T [u_s, v_s]^T [us?,vs?]T 表示 [ u c , v c ] T [u_c, v_c]^T [uc?,vc?]T,A 即可求得。

A 的行列式用来决定在当前帧的哪一层金字塔图像中搜索该图像块。
A 的行列式表示一个原始像素占据目标关键帧一个全分辨率图像的像素面积。(A的行列式的物理含义
det( A ) / 4 表示在第一层中的像素面积,以此类推。
在最贴近图像块尺度的金字塔层中搜索该图像块(找到一个 l ,使 det( A ) / 4l 最接近 1)。

  • 在原始的金字塔层级中,根据变形矩阵 A / 2l 和双线性插值来生成一个 8x8 的图像块搜索模板,去亮度均值。
  • 在目标金字塔层级中固定半径内搜索该模板(在固定半径内每个FAST角点位置计算去均值SSD,如果低于一个阈值,就认为被找到了。那么模板关联的地图点就与找到的关键点匹配。

5.4 Pose update

由地图点和关键点的匹配关系,就能更新位姿。
图像块观测为一个图像块位置 ( u ^ , v ^ ) T (\hat{u}, \hat{v})^T (u^,v^)T ,测量噪声为 σ 2 = 2 2 l ? I \sigma^2 = 2^{2l} * I σ2=22l?I
迭代优化重投影误差
在这里插入图片描述
其中 e j e_j ej? 为重投影误差向量:
在这里插入图片描述
O b j ( ? , σ T ) Obj(\cdot , \sigma_T) Obj(?,σT?) 是 Tukey biweight 目标函数。
使用 M 估计法优化目标函数。

5.5 Two-stage coarse-to-fine tracking

为了可以处理相机的快速运动,做两次块搜索和位姿更新。

  • 首先在 当前帧最高层级金字塔图像大的搜索半径中进行 50 个地图点搜索,优化得到一个位姿。
  • 然后搜索剩下的地图点中 1000 个点,搜索半径减小,再优化得到一个位姿。

5.6 Tracking quality and failure recovery

使用成功的特征观测比例评估当前帧的跟踪质量。
如果比例过低,就认为跟踪效果不好。这时跟踪继续进行,但是不会继续添加关键帧
如果持续几帧的跟踪效果都不好,就认为跟踪丢失了。这时就会执行跟踪恢复步骤。

6 MAPPING

地图构建发生在两个不同的步骤:

  • 构建初始地图
  • tracking 过程中地图细化和扩展

Mapping 流程图:
在这里插入图片描述

6.1 Map initialisation

五点法:

  • 按下按键,获取第一个关键帧,计算得到 1000 个 2D 特征点图像块
  • 平滑移动、旋转,期间跟踪图像块,第二次按下按键,获取第二个关键帧。由 RANSAC 和 5点法 计算本质矩阵,三角化特征, BA 优化该地图。(本质矩阵有尺度等价性,由本质矩阵求得的位姿变换是尺度模糊的。
  • 恢复尺度:假定两个关键帧间相机移动了 10cm。
  • 旋转、平移地图,使得主平面位于 z = 0。
    (计算得到主平面:许多随机三个点组合组成的集合预测一个平面,然后剩下的点用来验证该平面)

6.2 Keyframe insertion and epipolar search

关键帧插入条件

  • 跟踪质量好
  • 距离上一关键帧时间超过阈值
  • 相机距离最近的地图点达到最小距离
    最小距离是为了防止相机静止时关键帧的插入影响地图质量,同时使得特征点可以三角化
    最小距离为观察到的特征点的平均深度。所以在观察一个平面时(最近点的距离和平均距离差得不多),关键帧会比较密集,而观察远处的墙时(最近点距离近,但是平均深度距离远),关键帧距离会远一些。

因为需要达到实时跟踪,跟踪线程可能只测量了一部分特征,建图线程会反测量剩下的特征。

跟踪线程已经检测了每一层金字塔图像的 FAST 角点,根据 ShI-Tomasi 得分对角点进行非极大抑制,靠近地图中已存在的地图点的观测会被剔除掉。剩下的观测都是地图的候选点。

三角化得到特征的深度:
使用距离最新关键帧最近的关键帧做极线搜索,通过极线搜索得到特征点匹配关系。不考虑模板的变形,并且在同一层级的金字塔图像中进行搜索。根据当前关键帧中特征的深度分布确定在极线中的搜索范围。

因为关键点没有深度,加上是在最近的关键帧上搜索,假所以就不考虑模板的变形。

6.3 Bundle Adjustment

全局 BA
同时优化所有的关键帧位姿和地图点的位置。
目标函数:
在这里插入图片描述
其中 i 为关键帧索引,j 为第 i 个关键帧中看到的地图点的索引。
使用LM法优化该目标函数。

当地图规模增大时,计算量也会增大。超过 150 个关键帧的的地图需要几十秒才能使目标函数收敛。这就限制了相机不能对环境做过快的探索。

出于这个原因,建图线程也会做局部 BA,只调整部分关键帧的位姿。
这时目标函数变为:
在这里插入图片描述
集合 X 包含了最新的一个关键帧以及地图中距离该关键帧最近的 4 个关键帧,共 5 个关键帧;
集合 Z 包含了集合 X 中 5 个关键帧观测到的地图点;
集合 Y 包含了可以观测到 集合 Z 中地图点的所有关键帧。

在执行 BA 优化的过程中,如果有关键帧需要插入,就停止优化,使关键帧插入到地图中。

6.4 Data association refined

当 BA 优化完成,也没有关键帧需要插入,建图线程就会对地图进行细化:

  • 在旧的关键帧中做新的测量
  • 在更旧的关键帧中测量新生成的地图点
  • 重新测量外点

之前提到做极线搜索是在最近的关键帧中搜索。但是最新关键帧中的特征也可能被别的关键帧观测到。基于此,把成功的搜索到的特征加入到地图中。
跟踪线程中的测量可能是不对的,当环境中出现重复纹理的时候就容易造成错误的测量。如果测量落在 Tukey 估计器中的 0 权重区域,就被标记为外点。每一个外点在剔除之前都会在一个更小的搜索区域内被重新测量,在决定是否要被剔除。

数据关联细化在建图线程中优先级低。

6.5 General implementation notes

当前建图系统中存在的一些低技术的手段:

  • 使用了简单的启发式移除外点。
  • 地图点关联的图像块的法向量平行于地图点与第一个观察到该地图点的关键帧的相机中心的连线,并且该法向量是固定的,不会被优化
  • 由粗到精的跟踪会增加跟踪的抖动。当运动模型认为相机接近于静止时,去掉粗跟踪这一步骤,以此来缓解抖动。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:17:23  更:2022-02-24 15:19:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:40:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码