SLAM笔记(六)直接法介绍
本章整理自高翔的SLAM十四讲之《直接法的原理与实现》以及PAMI上的《Direct Sparse Odometry》
1
之前总结的方法都需要先从图片中提取特征点并进行匹配,然后进行优化求解,这类方法称为特征法或间接法。由于提取、匹配的过程中耗时很大,因此有人提出是否能不计算关键点或描述子,直接根据图像的像素信息来计算相机运动,这类方法称为直接法。随着一批不需提取特征的方法,如LSD(选取整幅图像中有梯度的部分来采用直接法,这种方法称为半稠密方法(simi-dense)),SVO(选取关键点来采用直接法,这类方法称为稀疏方法(sparse)),直接法渐露其自身优势。
1.1间接法与直接法的区别:
除了提取和匹配耗时,在使用特征点时,也忽略了除特征点以外的所有信息,因此丢弃了很多可能有用的图像信息.
间接法通过最小化几何误差geometric error)(因为预先得到的点或光流向量都是几何度量,常用的有重投影误差(projection error)等)来进行优化从而得到相机运动;直接法通过最小化测量误差(photometirc error,即像素之间的误差).直接法的好处:直接法让单独一个点不具备识别意义,而是将大量的点组织起来,因此它的表达是一种细粒度的几何表示。
1.2 直接法的基本假设
同一空间三维点在各个视角下测到的灰度值不变(因此假设所在平面是漫反射,没有遮挡,没有光照变化);
1.3 直接法原理
I1(Cpi) I_1(Cpi)与 I2(CRpi+t) I_2(CRp_i+t)分别为pi在图像对应点的灰度值。
随后用非线性优化求解最小测量误差J,得到目标函数:
\min J = \sum_{t=1}^N||I_1(Cp_i)-I_2(C(Rp_i+t))||^2_2(1)
用 ξ \xi表示相机位姿[R,t;0,1]对应的李代数,则:
Rpi+t=exp(ξ) Rp_i+t = exp(\xi )
上式的单个误差项:
ei e_i为 I1(Cpi)−I2(Cexp(ξ)pi I_1(Cp_i)-I_2(Cexp(\xi)pi(2)
如何求解这个目标函数,可以用
1>梯度下降法
则 Ji=∂ei∂ξ J_i = \frac {\partial e_i}{\partial \xi} (3)
2>高斯牛顿法
(4)
这里的 δξ∗ \delta \xi^*是 ξ \xi的增量
如何求(3)呢:
可以令:空间三维点坐标 q=exp(ξ\^)p q=exp(\xi \^)p;(从世界坐标系到相机坐标系)
像素点坐标:u = Cq(C为相机内参数;表示从相机坐标系到像素坐标系)
三个导数分别代表(从左往右)图像对像素的导数,像素对空间点的导数,空间点对位姿的李代数的导数。
其结果分别为:
第一个是图像对像素的求导,相邻灰度值求导;
第二个可以根据u=Cq中的
u=fxxz−cx u = \frac{f_x x}{ z}-c_x
v=fyyz−cy v = \frac{f_y y}{ z}-c_y
也容易求得;
第三个比较难,基本做法是对其做一个左微扰,具体操作是先左乘一个 exp(δξ^) exp(\delta \hat\xi ),再减去本身,最后除以 δξ \delta\xi
1.4分类
a.
Sparse+Indirect:非直接法(即特征点法)SLAM,基本套路是:特征点+匹配+优化方法求解最小化重投影误差。
典型代表:
Mono-SLAM,PTAM,ORB-SLAM,以及现在大部分SLAM
b.
Dense+Indirect:
基本方法:光流场的平滑度+几何误差(光流求导)
典型代表:
DTAM;
LSD-SLAM;
DSO
直接法评价:
It is expected to be more robust to motion blur or poorly-textured environments.a direct method its
performance can be severely degraded by unmodeled effects like rolling shutter or non-lambertian reflectance(ORBSLAM2中评价)
SLAM笔记(六)直接法介绍相关推荐
- Django笔记六之外键ForeignKey介绍
这一篇笔记介绍 Django 系统 model 的外键处理,ForeignKey 以及相应的处理方法. 这是一种一对多的字段类型,表示两张表之间的关联关系. 本篇笔记的目录如下: on_delete ...
- 视觉SLAM笔记(41) 光流
视觉SLAM笔记(41) 光流 1. 光流 2. LK光流 1. 光流 直接法是从光流演变而来的 它们非常相似,具有相同的假设条件 光流描述了像素在图像中的运动 而直接法则附带着一个相机运动模型 为了 ...
- 视觉SLAM笔记(40) 特征点的缺陷
视觉SLAM笔记(40) 特征点的缺陷 1. 特征点估计相机运动的缺陷 2. 克服使用特征点缺陷 3. 思路分析 4. 直接法 1. 特征点估计相机运动的缺陷 之前介绍了使用特征点估计相机运动的方法 ...
- MongoDB学习笔记(一) MongoDB介绍及安装
系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jq ...
- 吴恩达《机器学习》学习笔记六——过拟合与正则化
吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- 视觉SLAM笔记(60) 建图
视觉SLAM笔记(60) 建图 1. 概述 2. 用处 1. 概述 建图(Mapping),本应该是 SLAM 的两大目标之一 因为 SLAM 被称为同时定位与建图 之前讨论的都是定位问题,包括通过特 ...
- 视觉SLAM笔记(58) 字典
视觉SLAM笔记(58) 字典 1. 字典的结构 2. 创建字典 1. 字典的结构 按照前面的介绍,字典由很多单词组成,而每一个单词代表了一个概念 一个单词与一个单独的特征点不同 它不是从单个图像上提 ...
- 视觉SLAM笔记(30) 特征点法
视觉SLAM笔记(30) 特征点法 1. 特征点法 2. 特征点 3. ORB 特征 3.1. FAST 关键点 3.2. BRIEF 描述子 4. 特征匹配 1. 特征点法 视觉 SLAM 主要分为 ...
- 视觉SLAM笔记(26) 状态估计问题
视觉SLAM笔记(26) 状态估计问题 1. 噪声 2. 噪声影响 3. 最大后验与最大似然 4. 最小二乘 1. 噪声 在前面介绍了经典 SLAM 模型的运动方程和观测方程 现在已经知道,方程中的位 ...
最新文章
- ehcache.xsd
- BC:带你温习并解读《中国区块链技术和应用发展白皮书》—概述
- 《高性能JavaScript》第一章 加载和执行
- Connect 2016 白话脱口秀将在B站直播,我们的口号是quot; 微软大法好quot;
- Linux 目录详细说明
- 前端培训什么机构好?有什么好的学习方法能少走弯路?
- web网页设计实例作业 ——二手书店-大学生书店(13页) 学生个人网站作业模板 简单个人网页制作
- 传输层协议和应用层协议及它们之间的关系(端口)
- php队列处理mysql_php队列处理:php消息队列实现原理(图文)
- Arcgis空间校正操作
- 监控不同外挂盘的硬盘io、查看linux命令运行时间和记录、iostat命令查看硬盘io、查看硬盘io的几种方法、定位到硬盘io高的dm
- java安卓软件开发_9大安卓app开发软件盘点,0基础自己也能开发开发安卓app
- [NOI2008] 糖果雨
- Linux内核升级(降级)
- mysql集群方案参考
- yp北京理工 拓扑排序+最短路(更新中re)
- 腰椎间盘突出可否睡硬板床
- SSD固态硬盘安装后:AS SSD Benchmark检测pciide-BAD解决办法
- 维克生产管理软件 v1.12 免费
- eprint自定义打印工具