当前位置: 首页 > news >正文

视觉SLAM十四讲:从理论到实践(Chapter7:视觉里程计1)

前言

学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可

一、目标

1.理解图像特征点的意义,并掌握在单幅图像中提取特征点及多幅图像中匹配特征点的方法。
2.理解对极几何的原理,利用对极几何的约束,恢复图像之间的摄像机的三维运动。
3.理解PNP问题,以及利用已知三维结构与图像的对应关系求解摄像机的三维运动。
4.理解ICP问题,以及利用点云的匹配关系求解摄像机的三维运动。
5.理解如何通过三角化获得二维图像上对应点的三维结构。
 

二、特征点法

视觉里程(Visual Odometry):计算前后两帧位姿的变化量

VO主要有两个大类:特征点法和直接法

特征点法最大的一个案例就是ORB-SLAM。

2.1 特征点

特征点由关键点(Key-point)描述子(Descriptor)组成。

2.2 ORB特征

ORB(Oriented FAST and Rotated BRIEF)

关键点:FAST角点

描述子:BRIEF(一种二进制描述子,速度非常快)

2.3 特征匹配

Hamming distance:两个二进制串之间的比较,相同为1,不同为0.

暴力匹配(Brute-Force Matcher):A中的每个特征点依次和B中所有的特征点比较距离,取最近的一个作为匹配点。

加速方法:快速最近邻(FLANN)

2.4 计算相机运动

三、2D-2D:对极几何

对极几何是研究两幅图像之间存在的关系的几何。它与场景结构无关,只依赖于相机的内外参数,可广泛用于图像匹配、三维重建方面。

3.1 对极约束

空间点P的世界坐标:

像素点p1,p2的像素坐标:,其中:K:内参矩阵,R,t:外参矩阵,s1p1和p1是投影关系,在齐次坐标上是相等的(尺度意义下相等)。

把s除过取,再使用归一化坐标:

 

基础矩阵F(和内参和外参都有关)和本质矩阵E (只和外参有关,内参已知的情况下)

3.2 本质矩阵

 最后可以得到如下方程:

Ax=0可以用SVD方法计算出x的值。 

从E中分离出R和t的方法是:,该方法会有4个可能的解

八点法用于初始换,但有尺度不确定性,而且不能用于纯旋转问题,多于八个点会用最小二乘法或RANSAC算法。

3.3 单应矩阵

平面方程:于是有:把中间部分记作H,则有:H即为单应矩阵。

 整理得:

强制令h9=1,可得:

 

类似于Ax=b的方程,可用SVD分解或者最小二乘法优化算法求解。 

四、三角测量

R,t已经求解出结果,只有深度未知,求解深度即可

但三角测量的误差与基线长度有关:

相机初始化:

特征点提取 --> 特征匹配 --> 求解E或F --> 根据E或F分解出R,t --> 三角化恢复三维坐标

五、3D-2D:PnP

真实点3D坐标和像素点的2D坐标已知,相机可以通过标定得到内参,进而计算相机位姿R,t的算法。

P3P,DLT,EPnP,UPnP等算法,PnP只是求解出一个初值,后面还需要用光束平差法(Bundle Adjustment, BA)进行优化。

5.1 DLT(直接线性变换)

一个点对可以提供两个方程,DLT有12个未知数,所以至少6个点对就可以求解。

现在最常用的是EPnP

总结

http://www.lryc.cn/news/358516.html

相关文章:

  • c++指针的*
  • 快团团大团长帮卖团长团长如何获得物流查询码?
  • MySQL(二)基本SQL语句以及基本函数应用
  • fyne apptab布局
  • Python实现定时任务的方式
  • 微信小程序-网络数据请求(配置request合法域名)
  • 栈和队列题目练习
  • 【排列问题】
  • token 无感刷新
  • Netty SSL双向验证
  • 4.nginx反向代理、负载均衡
  • 浅谈申请小程序地理位置权限的正确打开方式
  • make modules 和 make modules_install
  • docker 安装mysql,redis,rabbitmq
  • Windows配置java环境JDK
  • 英伟达驱动重装教程
  • 【蓝桥杯嵌入式】 第六届国赛
  • 图片裁剪与上传处理方案 —— 基于阿里云 OSS 处理用户资料
  • 迷你主机Esxi 6.7挂载新硬盘
  • 解决VSCode右键没有Open In Default Browser问题
  • httpsok-v1.12.0支持LB证书自动部署
  • 基于Pytorch框架的深度学习EfficientNetV2神经网络中草药识别分类系统源码
  • 网络协议。
  • Excel单元格格式无法修改的原因与解决方法
  • CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问
  • JAVA学习-练习试用Java实现“最长回文子串”
  • 深入探索Qt框架系列之信号槽原理(三)
  • npm镜像源管理、nvm安装多版本node异常处理
  • 异步编程的魔力:如何显著提升系统性能
  • 优选算法一:双指针算法与练习(移动0)