• 基于全景相机的视觉SLAM


    一、全景相机模型

    相机坐标系中空间点投影到二维图像的过程可以简化为将空间点投影到单位球面上,然后将此球面展开成全景图像。

    在这里插入图片描述

    式中:ri一空间点在相机坐标系中与原点的距离;t0一投影函数。可以看出,全景相机的投影过程是非线性的。

    在这里插入图片描述

    能看出全景图像的畸变系数为cosp,图2-4为全景机图像畸变的示意图,图中红色椭圆示意该区域图像性变形程度。可以看出近图像顶端或底端时图像变形严重。

    二、对极几何

    对极几何是两幅图像之间固有的投影几何约束,它只与相机的内参数和两幅图像之间的相对位姿有关。其中基本矩阵和本质矩阵与图像的场景无关,但基本矩阵和本质矩阵可以通过两幅图像上的对应点关系计算而得。

    在这里插入图片描述在这里插入图片描述

    根据相机投影的模型以及共面几何约束,推出两个图像之间的基础矩阵与本质矩阵。

    在这里插入图片描述

    三、相机位姿估计中的PnP问题

    重定位是视觉 SLAM 系统中一个重要的功能,其能够在系统跟踪失败后根据已经构建的 3D 地图重新定位当前相机的位姿。而 PnP 是实现重定位功能中至关重要的算法。PnP 问题可以简单描述为已知相机的内参数和 n 对 3D 与2D 对应点求解相机姿态的问题。
    其中相机位姿是 6 个自由度组成的,包括了相机相对于世界的旋转(横滚角,俯仰角,偏航角)和平移量。
    PnP 问题中有一些假设在所有解法是常见的,例如在多数 PnP 问题中相机被认为是完成内参标定的。因此相机内参数包括焦距、主点和畸变系数等都是已知的。
    通过PnP可以获得对应点在相机坐标系中的坐标值 ,剩下计算旋转矩阵和平移量的问题就转为已知两个坐标系下的点云求两个坐标系的变换关系的问题。

    四、ORB特征点

    ORB 特征使用的 FAST 关键点和 BRIEF 描述子最明显的优势就在于它们在计算量要求很低。
    需要注意的是 FAST 特征点不具有尺度不变形,因此在使用的过程中需要建立图像金字塔,并在图像金子塔的每一层进行 FAST 特征的提取。另外 FAST特征也不具有旋转不变性,为了解决这个问题,在 FAST 特征提取的过程中需要计算其特征点的方向,这样的 FAST 特征称为 oFAST。

    4.1 全景图像中的ORB特征

    场景中的 ORB 特征点主要来源于环境中的角点、边缘,为了使其在全景图像中具有稳定的识别效果,在全景图像中对其进行改进。

    计算 ORB 特征时,首先在每层图像上进行 FAST 特征提取,在全景图像
    在这里插入图片描述
    在这里插入图片描述

    五、基于全景相机的视觉SLAM

    5.1 系统初始化

    跟踪模块中当前相机位姿是通过优化地图点在成像球面上的重投影误差计算获得的,因此一定数量的空间特征点是系统正常工作的前提。而全景相机无法直接获得特征点的三维坐标,因此系统需要一个初始化过程。初始化是通过计算两帧图像的相对位姿,然后三角化得到空间点的三维坐标的过程。

    为了在全景图像中使用此方法,初始化时只对相机前方的特征点进行三角化并判断特征点的深度值符号,如图 4-3所示,图中绿色点为初始化使用的特征点。

    在这里插入图片描述

    5.2 跟踪模块

    跟踪模块主要实现的视觉 SLAM 系统中的前端任务,其通过非线性优化的方式实时计算当前相机的高精度位姿,同时将满足要求的图像视为关键帧传入建图模块中。 当新的图像传输到跟踪模块时,首先进行图像的预处理。预处理包括了图像 ORB 特征点的计算和图像 BoW 词袋向量的计算。跟踪模块中通过两种方式获得当前相机的位姿的初始值:1.匀速模型式跟踪;2.基于关键帧跟踪。系统默认优先使用匀速模型式跟踪的方式。而在获得当前相机位姿的初始值之后将进行局部地图式跟踪的方式获得最终高精度的当前相机位姿。

    5.3 建图模块

    建图模块在独立的线程中进行,接收来自跟踪模块生成的关键帧。在建图模块主要完成以下几个任务:1.地图点生成;2.地图点融合与剔除;3. 删除冗余关键帧;4.局部光束法平差(Local Bundle Adjustment)。

    5.4 闭环检测模块

    闭环检测的主要目是使系统具备能检测到回到曾经观测过得场景的能力。通过闭环检测新的约束将被建立到图结构中,以此来消除累计误差。正如前文所说,随视觉 SLAM 系统的运行,跟踪模块估计的相机轨迹将在7 自由度的空间中漂移(包括尺度)。闭环检测将在关键帧数据库中寻找与当前关键帧存在闭环可能性的关键帧,并通过 sim3 优化校正误差,其具体流程如图 4-7 所示。

    在这里插入图片描述

    5.5 重定位模块

    与闭环检测类似,重定位功能将判断当前帧与历史关键帧之间的相似性,若成功找到正确的重定位帧,再计算当前相机位姿并恢复视觉跟踪。与闭环检测不同的是,重定位并不在一个单独的线程中进行,只有当视觉跟踪失败时候才会使用重定位的功能。 当相机因剧烈运动而导致图像模糊,或者视线被短暂遮挡时跟踪模块将失败。当图像恢复正常时跟踪模块无法在没有当前位姿先验的情况下恢复运行,这时需要调用重定位功能。重定位过程如图 4-12 所示。

    在这里插入图片描述

  • 相关阅读:
    httpx.HTTPStatusError: Client error ‘429 Too Many Requests‘ for url ‘
    【python进阶】装饰器
    G1回收器的适用场景
    面试面经|java面试异常面试题
    2022年9月中国数据库排行榜:榜眼、探花纷纷易主,AnalyticDB蝉联榜单十强
    我朋友软件测试月薪5w,跟他聊过之后,才知道差距在哪里!
    力扣leetcode 670. 最大交换
    Python机器学习17——Xgboost和Lightgbm结合分位数回归(机器学习与传统统计学结合)
    Tomcat Java内存马 Filter型
    CSDN前面加空格
  • 原文地址:https://blog.csdn.net/qq_42025235/article/details/127853959