[Tutorial]综述阅读笔记 <Visual Odometry PartII_Introduce about BA>
目录
Visual Odometry: Part II - Matching, Robustness, and Applications ---- paper notes
https://www.zora.uzh.ch/id/eprint/71030/1/Fraundorfer_Scaramuzza_Visual_odometry.pdf
特征点的选择与匹配
特征点匹配的两类方法
在一张图中提取特征点,在另一张图中用局部搜索的方法跟踪上一张图的特征点
两张图各自提取特征点,比较这些特征点的描述子的相似性
第一个方法适用于相机移动比较小,视角变化较少时;第二个方法适用于相机大幅度运动时。最近比较常用的是第二个方法,因为第一个方法认为相机是在小范围的环境中(small-scale environment)拍摄;而当前的应用大多是在大范围的环境中(large-scale environment)
检测特征点
大致分为角点检测器Corner Detectors 、斑点检测器Blob Detectors ,corner detectors (e.g., Moravec , Forstner, Harris, Shi-Tomasi, and FAST) and blob detectors (SIFT , SURF , and CENSUR )
- 角点容易被检测到但辨识度较差 less distinctive,斑点辨识度高但检测速度比较慢
- 角点比斑点更容易在图片中定位,但角点难以应对尺度的变化(比如缩小图片则可能很难准确定位到角点)
检测特征点一般分为两个阶段:
首先将特征响应函数应用到整幅图
其次使用非最大值抑制来过滤输出
如何使特征点具有尺度不变性? 一般是将一幅图的大尺度版本和小尺度版本都分别输入到检测器中
如何使特征点能应对视角的变换?一般是将视角畸变为affine 的程度
The trick to make a detector invariant to scale changes consits in applying the detector at lower-scale and upper-scale versions of the same image. Invariance to perspective changes is instead attained by approximating the perspective distortion as an affine one
特征描述子
最简单的特征描述子是外观,也就是特征点周围像素的密度,然而它无法应对方向、尺度、视角的变换。最常用的描述子之一是SIFT,也就是特征点周围区域的梯度方向的直方图。
发展历史 SIFT->SURF->BRIEF->ORB
特征(描述子)匹配
在两张图中分别检测特征 计算描述子,然后比较两幅图的各自描述子的相似性
- 可能会使得第二张图中的一个特征对应于第一张图的多个,可以使用互相一致性检查来避免
- 这种穷尽的匹配方式代价比较高,可以使用索引类型的数据结构改善,更快的方法是直接搜索第二张图中可能的对应区域,比如使用某种运动模型来预测可能的对应区域
移除局外点
匹配点中可能存在局外点,也就是错误的匹配。可能造成的原因比如图像噪声,遮挡,模糊,视角变换、光照的影响等等。因此需要利用运动模型的几何约束来移除局外点。RANSAC已经成为这方面的标准算法。
RANSAC的思想在于从数据点中随机采样子集,估计出一个假设的模型,然后用其它的点来验证这个模型,能够与其它数据达成最大一致的模型则认为是最终模型。
对于两帧VO的运动估计来说,需要估计的模型是两帧之间相机的变换矩阵(R, t),数据点则是候选的匹配特征点对
相机姿态优化
姿态图优化 Pose-Graph Optimization
将VO中计算得到的相机姿态,表示为姿态图:
图节点为相机姿态
图的边为相机之间的姿态变换(不同帧之间的)
边约束为
\[
\sum_{e_{ij}} ||C_i-T_{e_{ij}}C_j||^2
\]
其中,\(T_{e_{ij}}\) 是姿态之间的变换矩阵
变换矩阵中的旋转矩阵部分,使得损失函数是非线性的
因此需要用非线性优化算法来求解。
回环,为距离较远的帧(的相机姿态)之间建立了边约束。
回环检测通常是用视觉词袋来计算图片之间的相似性,判断是否存在回环。
若找到相似较高的图片 则用几何约束来验证(比如是否符合对极约束)是否匹配
- 若符合,则基于两张图之间的匹配点 (此时匹配的阈值可以稍微放宽限制 因为距离较长可能带来很多误差累计),估计二者的刚体变换,将其添加到姿态图中继续优化。
- 若符合,则基于两张图之间的匹配点 (此时匹配的阈值可以稍微放宽限制 因为距离较长可能带来很多误差累计),估计二者的刚体变换,将其添加到姿态图中继续优化。
局部(窗口Windowed)BA
与姿态图优化类似,但是BA还考虑了3D路标点的优化。称为局部或窗口是因为一次性考虑n帧图像,然后对相机姿态和路标点进行参数优化。优化目的是找到最优的相机姿态和路标点,使得重投影误差最小化:
\[
\arg \min _{X^i, C_k} \sum_{i, k} ||p_k^i - g(X^i, C_k) ||^2
\]
其中 \(p_k^i\) 是3D路标点 \(X^i\) 在第 \(k\) 张图像中的第 \(i\) 个观测点,\(g(X^i, C_k)\) 是路标点 \(X^i\) 在相机姿态\(C_k\)下的重投影
观测点是怎么得到的?路标点是怎么优化的?
对于2D 的情况,即没有深度信息。首先做帧间特征点匹配,计算出初始的帧间变换矩阵T;其次使用三角化估计出2D图像对应的3D点,作为路标点,将路标点投影到第三帧的图像,计算重投影误差,来优化姿态和路标点。
- 为什么需要优化路标点?因为如果不优化,则认为三角化是完全准确的,但由于姿态也是估计的 不一定准。。因此会影响三角化的结果,使得路标点未必准确
好处?
- 相比2帧的VO来说减少了很多运动飘移drift,相机姿态和路标点之间也会有边连接(也就是存在变换关系),而图像的特征跟踪不只是来自之前的相机姿态,也有来自将来的相机姿态回来(是因为回环的关系吗?)
Bundle Adjustment https://blog.csdn.net/OptSolution/article/details/64442962
本质上是个优化模型,目的是最小化重投影误差(通过优化相机姿态等一些变量的计算来达到)
[Tutorial]综述阅读笔记 <Visual Odometry PartII_Introduce about BA>的更多相关文章
- 《The Cg Tutorial》阅读笔记——动画 Animation
这段时间阅读了英文版的NVidia官方的<The Cg Tutorial>,借此来学习基本的图形学知识和着色器编程. 在此做一个阅读笔记. 本文为大便一箩筐的原创内容,转载请注明出处,谢谢 ...
- 个性探测综述阅读笔记——Recent trends in deep learning based personality detection
目录 abstract 1. introduction 1.1 个性衡量方法 1.2 应用前景 1.3 伦理道德 2. Related works 3. Baseline methods 3.1 文本 ...
- Multimodal Machine Learning:A Survey and Taxonomy 综述阅读笔记
该笔记基于:Multimodal Machine Learning:A Survey and Taxonomy 该论文是一篇对多模态机器学习领域的总结和分类,且发表于2017年,算是相当新的综述了.老 ...
- 《The Cg Tutorial》阅读笔记——光照 Lighting
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4796306.html 光照 Lighting 一.常见的几种光照模型 二.基本的光照 ...
- 《The Cg Tutorial》阅读笔记——凹凸贴图 Bump Mapping
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/5018103.html 凹凸贴图 Bump Mapping 一.简介 凹凸贴图用于在不 ...
- 《The Cg Tutorial》阅读笔记——环境贴图 Environment Mapping
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4969956.html 环境贴图 Environment Mapping 一.简介 环 ...
- “CoreCLR is now Open Source”阅读笔记
英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- SLAM论文阅读笔记
[1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...
随机推荐
- 2019牛客多校(第一场)F-Random Point in Triangle
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Point{ ll x, y; Poi ...
- jmeter从上一个请求使用正则表达式抓取Set-Cookie值,在下一个请求中运用
工作中遇到的问题,登录请求,返回的Response Headers中有个参数Set-Cookie,需要抓取这个参数,运用到下一个请求中,见下图: 通过正则表达式抓取Set-Cookie的值,由于该值存 ...
- 【第1题】 Pythonn内存管理以及垃圾回收机制
内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...
- sql 代码优化
1. where 执行顺序:右→左,筛选多的放右边:计算难度小的放右边,sql老版本(只在基于规则的优化器中有效,新版本基于代价不存在这个问题): 2. 少用子查询: 3. union快,表结构得一致 ...
- SDOI2019退役记
\(update:2019-8-15\) 这个坑占了四个月,不填上终归不太好,也不甘心.日子久了,记不太清了,您就当瞧个乐吧. \(Day \ 0\) 下午来到山师大领准考证,晚上一点前就睡了觉. \ ...
- 使用JaCoCo统计单元测试代码覆盖率
1 JaCoCo介绍 JaCoCo是EclEmma团队基于多年覆盖率库使用经验总结而研发的一个开源的Java代码覆盖率库. 2 JaCoCo覆盖率计数器 JaCoCo 包含了多种尺度的覆盖率计数器(C ...
- tomcat正常运行一段时间后,突然访问不了项目了
前言 我将项目部署在tomcat服务器上,本来都是好好的,输入网站地址就能访问:但是第二天一早去就会发现网站访问提示404,文件无法找到:我就很懵了. 排查 1.我是用的是chrome浏览器,所以尝试 ...
- 文件安全复制之 FastCopy
FastCopy是Windows平台上最快的文件拷贝.删除软件.由于其功能强劲,性能优越,一时间便超越相同类型的所有其他软件.由于该软件十分小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可 ...
- 按照官网的升级完socket.io报错Manager is being released。
查阅了很多资料和英文官网自己也提出了一些问题,估计官网以前有该类的问题历史,懒得回复. 终于功夫不负有心人原因竟然是:你的manager被释放了. you need to make sure the ...
- Asp.Net中Global报错,关键字也不变色问题
原因是我把Global名字改了,使用默认名字就好了