0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单的V-SLAM介绍

新机器视觉 来源:知乎 作者:黄浴 2020-08-28 15:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【导读】SLAM是“Simultaneous Localization And Mapping”的缩写,可译为同步定位与建图。最早,SLAM 主要用在机器人领域,是为了在没有任何先验知识的情况下,根据传感器数据实时构建周围环境地图,同时根据这个地图推测自身的定位。因此本文以简单清晰的文字为大家介绍了视觉V-SLAM。

简单的V-SLAM介绍,就当入门:)。

首先,从双目立体几何(stereo geometry)原理开始来定义外极(epipolar)约束:两个摄像头光心分别是 c0 和 c1,3-D 空间点 p 在两个图像平面的投影点分别是 x0 和 x1,那么直线 c0c1 和两个图像平面的交点即外极点(epipole)e0 和 e1,pc0c1 平面称为外极平面(epipolar plane),它和两个图像平面的交线 l0 和 l1 即外极线(epipolar line);可以看到两个摄像头坐标系之间的转换满足(R,t),同时说明摄像头 c0 的图像点 x0 在摄像头 c1 的图像对应点 x1 一定落在其外极线 l1,反之依然;

(a)对应一条光线的外极线 (b)对应的外极线集合和外极平面 外极线约束

这里需要定义一个本质矩阵(essential matrix)E 和一个基础矩阵(fundamental matrix)F:E = [t]×R,其中 [t]× 是反对称矩阵,即定义向量

那么

而 F = A−TEA−1,其中 A 是摄像头内参数矩阵;对矩阵 E 和矩阵 F 来说,均满足外极约束方程x1TEx0 =0,x1TFx0 =0

前者是摄像头已标定情况下图像特征点的对应关系,后者是摄像头未标定情况下图像特征点的对应关系;

其次,得到外极线约束(以F矩阵为例,E矩阵同样)如下

l1=Fx0,l0=x1F,

以及,外极点约束(以F矩阵为例,E矩阵同样)如下

Fe0=0,FTe1=0;

根据上面图像特征点的外极约束方程,有8 点算法求解 F 和 E,以 F 为例,给定一组匹配特征点(n> 7)

定义F矩阵元素fij(i=1~3,j=1~3),那么线性齐次方程组为

简记为

Qf = 0

做SVD得到Q = USVT,而最终F的解是V最右的奇异向量(singular vector);

另外,因为E矩阵完全由摄像头外参数(R和t共6个未知参数,但有一个不确定平移尺度量)决定,所以存在5 点算法求解E矩阵;

可以分解E得到摄像头外参数,其步骤如下:

i. 同样对E矩阵做奇异值分解(SVD):

ii. 那么第一个摄像头投影矩阵简单设为

而第二个摄像头矩阵P2有四种可能情况,如图(a)-(d)所示:

其中

从E矩阵分解得到R和t

根据视图方向与摄像头中心到3-D点的方向之间夹角可以发现,四个可能中只有情况(a)是合理的解;

确定两个视角的姿态之后,匹配的特征点 x,x’可以重建其 3-D 坐标X,即三角化(triangulation)理论;首先存在一个线性解:设两个摄像头投影矩阵为 P 和 P’,相应的它们列向量为pi,pi’,i=1~3,则有方程组:AX= 0

其中

但一些误差干扰的存在,上述线性解是不存在的;所以需要一个非线性的解,这里采用F 矩阵定义的外极约束方程xTFx’= 0,得到最小化误差函数为

下面采用外极线 l, l’的来约束定义误差,如图所示,将目标函数重写为

外极线定义的误差

另外,在已知重建的 3-D 点集,如何和新视角的 2-D 图像特征点匹配呢?这个问题解法称为PnP(Perspective n Points),算法如下:

i. 首先,3D 点表示为 4 个控制点的加权和;

ii. 控制点坐标是求解的(12)未知数;

iii. 3D点投影到图像上以控制点坐标建立线性方程;

iv. 控制点坐标表达为零特征向量(null eigenvectors)线性组合;

v. 上面组合的权重(bi)是新未知数(<4);

vi. 增加刚体(rigidity)约束以得到bi二次方程;

vii. 根据bi数目(无论线性化,或重新线性化)求解。

(注:有时候3-D-2-D匹配比3-D之间匹配的精度高)

PnP求解的示意图

这里需要补充两个概念,一是鲁棒估计的随机样本共识法(RANSAC,RANdom SAmple Consensus),另一个是全局优化的集束修正法(BA,bundle adjustment):

i. RANSAC的目的是在包含异常点(outlier)的数据集上鲁棒地拟合一个模型,如图 2-12 所示:

1. 随机选择(最小)数据点子集并实例化(instantiate)模型;

2. 基于此模型,将所有数据点分类为内点(inlier)或异常点;

3. 迭代重复 1-2 步;

4. 选择最大的内地集,以此重新估计最终模型。

RANSAC示意图

ii. BA的目的是优化全局参数估计,对 SLAM 来说,结构重建的 3-D 点X和其对应的 2-D 特征点x,还有估计的视角变换参数(甚至包括摄像头内参数)P,位于一个重投影(reprojection)误差函数 D 最小化框架下(如图所示),即

BA示意图

这里集束(Bundle)指2-D点和3-D点之间的光线集,而修正(Adjustment)是指全局优化过程;其解法是非线性迭代的梯度下降法,如Gauss-Newton 方法和其修正 Levenberg-Marquardt 方法,因为问题自身的特性,这里的雅可比矩阵是非常稀疏的;另外,只取重建 3-D 点修正的话,称为 structure only BA,而只取视角变换修正的话,称为 motion-only BA;

在以上基础之上,再重新审视SLAM过程:

i. 首先要提到概念 VO,即视觉里程计(visual odometry);VO 是 SLAM 的一部分,VO 主要是估计视角之间的变换,或者运动参数,它不需要输出制图(mapping)的结果,而且 BA 就是 motion-only 的模式;

ii. SLAM 方法分两种途径,一种是递推滤波器方法,另一种是批处理估计方法;

a)滤波器方法,比如卡尔曼滤波递推估计,实际上建立一个状态空间的观测模型和状态转换(运动)模型;观察模型描述当摄像头姿态和地标位置(来自于地图)已知时观测(地标)的概率; 运动模型是系统状态(摄像头姿态)转换的概率分布,即马尔可夫过程; 那么在递归贝叶斯估计中,同时更新系统状态和建立的地图,其中融合来自不同视角的观测来完成制图,而估计系统状态可计算摄像头的姿态,即定位问题;

b)批处理估计方法,也称“关键帧”方法,其步骤是:

1)首先通过选择的头两(关键)帧,采用双目几何的特征点匹配得到初始的3-D点云重建;

2)正常模式:假设 3D 地图可用,并且估计出摄像头增量运动,跟踪特征点并使用 PnP 进行摄像头姿态估计;

3)恢复模式:假设 3D 地图可用,但跟踪失败故没有增量运动,可相对于先前重建的地图重新定位(re-localize)摄像头姿势;

4)关键帧 BA:保持一个“关键帧”子集,状态向量是所有关键帧的 3D 地标和对应摄像头姿势,BA 可以在与跟踪模块并列的线程中调整状态估计;

(注意:关键帧的选择策略是算法性能很重要的一个因素)

SLAM 中的闭环(loop closure)问题:当摄像头又回到原来位置,称为闭环,需要检测闭环,并以此在 BA 框架下优化结构和运动估计;闭环检测和重定位是类似的,可以基于图像特征的匹配实现,俗称“基于图像的重定位(image-based re-localization),当关键帧子集较大的时候,需要对特征匹配进行压缩和加速,比如词包(bag of words)法和K维-树(KD-tree)数据结构等等;

SLAM 中的传感器可以是单目、双目、深度传感器(RGB-D)甚至激光雷达,也可以和 IMU 融合,称为 VINS(visual inertial navigation system)。

附录:G-N 和 L-M 的非线性最小二乘算法

假设有观测向量 zi’,其预测模型为 zi = zi(x),其中x为模型参数;那么最小二乘(LS)法就是最小化如下代价函数:平方误差加权和(weighted Sum of Squared Error,SSE)

其中 Wi 是一个任意对称正定(symmetric positive definite,SPD) 矩阵,特征误差函数为

雅可比矩阵J和黑森(Hessian)矩阵H的计算为

那么 H 近似为

H≈J⊤WJ

作为梯度下降法,其 G-N 迭代的步进量即 z → z + delta z,由下面方程组计算

对于上面 G-N 的迭代步进量计算,可能左边的矩阵不可逆。为此,一种改进的方法是在对角线元素中加入阻尼因子(Damped factor),即 L-M 迭代的步进量计算变成如下方程组

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    214

    文章

    31659

    浏览量

    224574
  • 摄像头
    +关注

    关注

    61

    文章

    5133

    浏览量

    103647
  • SLAM
    +关注

    关注

    24

    文章

    461

    浏览量

    33458

原文标题:简单明了,一文入门视觉SLAM

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    6V转3.2V小夜灯线性恒流芯片H7309 过温点可调 电路走线简单

    6V转3.2V小夜灯线性恒流芯片H7309 过温点可调 电路走线简单 一、方案介绍: 惠海半导H7309 是一款线性降压恒流 LED 驱动器,仅需外接一只电阻即可搭建完整恒流驱动电路,
    发表于 05-22 10:26

    为什么无图智驾不使用SLAM建立局部语义地图?

    个过程中,BEV、Occupancy(占用网络)和Transformer的组合成了主流,而曾经在机器人领域立下汗马功劳的SLAM方案,却没有在智驾领域大放异彩。为什么无图智驾不使用SLAM建立局部语义地图?   为什么传统的几何建图跟不上变化? 传统的SLA
    的头像 发表于 04-29 08:55 372次阅读
    为什么无图智驾不使用<b class='flag-5'>SLAM</b>建立局部语义地图?

    ROS2 SLAM建图与导航实战--基于米尔RK3576开发板

    的改进版本,相比传统的Gmapping、Hector SLAM或Cartographer,它具有以下显著优势: 图优化框架 :采用基于图优化的后端,而非简单的滤波器,在大场景下地图一致性更好。 生命周期
    发表于 03-12 17:55

    SLAM如何为自动驾驶提供空间感知能力?

    ,并精准地判断自己与障碍物的距离。这种看似本能的空间感知能力,在工程学领域被具象化为同步定位与地图构建技术,即我们常说的SLAM。在自动驾驶的发展进程中,SLAM不仅是车辆在未知环境中“生存”的技能,更是其实现厘米级高
    的头像 发表于 02-09 09:12 635次阅读
    <b class='flag-5'>SLAM</b>如何为自动驾驶提供空间感知能力?

    什么是激光雷达 3D SLAM技术?

    在智能移动设备自主运行的赛道上,激光雷达3DSLAM技术正成为破局关键,但多数人对其认知仍停留在表层。要读懂这一核心技术,不妨先回溯“SLAM”的本质——SLAM
    的头像 发表于 12-02 19:23 886次阅读
    什么是激光雷达 3D <b class='flag-5'>SLAM</b>技术?

    FPGA和GPU加速的视觉SLAM系统中特征检测器研究

    特征检测是SLAM系统中常见但耗时的模块,随着SLAM技术日益广泛应用于无人机等功耗受限平台,其效率优化尤为重要。本文首次针对视觉SLAM流程开展硬件加速特征检测器的对比研究,通过对比现代SoC平台
    的头像 发表于 10-31 09:30 950次阅读
    FPGA和GPU加速的视觉<b class='flag-5'>SLAM</b>系统中特征检测器研究

    简单的内联汇编介绍

    前言1、在程序中我们可以嵌入汇编直接对我们加入的硬件进行相应的操作 2、在RISC-V架构中定义的CSR寄存器需要使用特殊的 CSR 指令进行访问,如果在 C/C++程序中需要使用 CSR 寄存器
    发表于 10-30 08:04

    自动驾驶中如何将稀疏地图与视觉SLAM相结合?

    [首发于智驾最前沿微信公众号]在自动驾驶场景中,稀疏地图通常是由一系列关键帧和若干三维稀疏特征点构成的地图,每个特征点包含三维坐标和描述外观的描述子;而视觉SLAM是运行在车辆上的实时算法,它一边
    的头像 发表于 10-28 09:07 871次阅读
    自动驾驶中如何将稀疏地图与视觉<b class='flag-5'>SLAM</b>相结合?

    【国庆中秋礼品 Milk-V Duo RISC-V开发板】开箱、介绍、环境搭建、工程测试

    【国庆中秋礼品 Milk-V Duo RISC-V开发板】开箱、介绍、环境搭建、工程测试 感谢电子发烧友论坛 【贺华诞 庆中秋 | 一起来为祖国母亲送祝福吧!留言有礼】 活动的支持~ 活动礼品收到啦
    发表于 10-19 13:06

    全新轻量级ViSTA-SLAM系统介绍

    无需相机内参、极致轻量的前端(前端模型大小仅为同类35%),实时单目视觉SLAM,ViSTA-SLAM。与现有方法相比,ViSTA-SLAM不仅更轻、更快,在相机跟踪和密集3D重建质量方面也均表现出色。
    的头像 发表于 09-22 15:53 1328次阅读
    全新轻量级ViSTA-<b class='flag-5'>SLAM</b>系统<b class='flag-5'>介绍</b>

    一种适用于动态环境的自适应先验场景-对象SLAM框架

    由于传统视觉SLAM在动态场景中容易会出现严重的定位漂移,本文提出了一种新颖的基于场景-对象的可靠性评估框架,该框架通过当前帧质量指标以及相对于可靠参考帧的场景变化,全面评估SLAM的稳定性。
    的头像 发表于 08-19 14:17 1077次阅读
    一种适用于动态环境的自适应先验场景-对象<b class='flag-5'>SLAM</b>框架

    基于深度学习的增强版ORB-SLAM3详解

    ORB-SLAM3虽是当前最先进的SLAM之一,但由于使用传统的ORB(定向FAST和旋转BRIEF)特征,在尺度、旋转和光照发生显著变化时可能会表现出局限性。
    的头像 发表于 07-14 17:21 2139次阅读
    基于深度学习的增强版ORB-<b class='flag-5'>SLAM</b>3详解

    一种适用于动态环境的实时RGB-D SLAM系统

    近期用于视觉SLAM的3D高斯泼溅(3DGS)技术在跟踪和高保真建图方面取得了显著进展。然而,其顺序优化框架以及对动态物体的敏感性限制了其在现实场景中的实时性能和鲁棒性。为此,我们提出
    的头像 发表于 07-04 15:14 1549次阅读
    一种适用于动态环境的实时RGB-D <b class='flag-5'>SLAM</b>系统

    一种适用于动态环境的3DGS-SLAM系统

    当前基于神经辐射场(NeRF)或3D高斯泼溅(3DGS)的SLAM方法在重建静态3D场景方面表现出色,但在动态环境中的跟踪和重建方面却面临着挑战。
    的头像 发表于 06-13 10:10 1716次阅读
    一种适用于动态环境的3DGS-<b class='flag-5'>SLAM</b>系统

    三维高斯泼溅大规模视觉SLAM系统解析

    近期兴起的神经辐射场(NeRF)与三维高斯泼溅(3DGS)技术在视觉SLAM中展现出令人鼓舞的突破性成果。然而,当前主流方法多依赖RGBD传感器,并且仅适用于室内环境。在大规模室外场景中的重建鲁棒性
    的头像 发表于 05-27 14:13 1955次阅读
    三维高斯泼溅大规模视觉<b class='flag-5'>SLAM</b>系统解析