ORB-SLAM2从理论到代码实现(四):相机成像原理、基本矩阵、本质矩阵、单应矩阵、三角测量详解
由于ORBmatcher.cc中有三角化和重投影等内容,所有我先写相机成像等多视图几何内容。
1. 相机的成像原理
假设空间中有一点P,它在世界坐标系中的坐标为,在相机坐标系中的坐标为,在图片中的像素坐标为.
设相机内参为
则,,的关系为:
上式中相机的位姿 R,t 又称为相机的外参数, 上式两侧都是齐次坐标。因为齐次坐标乘上非零常数后表达同样的含义,所以可以简单地把 Z 去掉:
这就完成了从空间点到像素的过程。
2. 对极几何
假设图像I_{1},I_{2}之间的运动为R,t。我们知道像素P_{1},P_{2},怎么求R,t呢?
P在O_{1}处的坐标为P,则P在O_{2}处的坐标为RP+t,则
使用齐次坐标,写为
取
则
两边同时左乘
两侧同时左乘
由外积的意义,知左边为零,得一个简洁的式子
x我们把已知的 P_{1},P_{2},带入上式,即可得到对极约束,
记基础矩阵(Fundamental Matrix)为F ,本质矩阵为(Essential Matrix)E。
本质矩阵E反映空间一点在不同视角摄像机下摄像机坐标系中的表示之间的关系。
基础矩阵F反映空间一点在不同视角摄像机下图像坐标系中的表示之间的关系。
F矩阵有如下性质:
- 秩为2;
- F矩阵有七个自由度(3*3矩阵本身9个自由度,因为相差一个常数因子和行列式值为0两个条件,减掉2个自由度),相差一个常数因此的意思是:kF(k!=0)也是基本矩阵,也就是说如果F是基本矩阵,那么kF也是基本矩阵,所以基本矩阵不唯一,在相差一个倍数的前提下是唯一的,也就是我们可以固定矩阵中某一个非零元素的值,这样自然少一个自由度。
E矩阵有如下性质:
- 秩为2;
- 本质矩阵 E 的奇异值必定是 [σ,σ,0]T 的形式。这称为本质矩阵的内在性质。
- 由于平移和旋转各有三个自由度,共有六个自由度,但由于尺度等价性,故 E 实际上有五个自由度。
3. 单应矩阵
单应性是几何中的一个概念。单应性是一个从实射影平面到射影平面的可逆变换,直线在该变换下仍映射为直线。它是一对透视投影的组合射影变换群。它描述了当观察者视角改变时,被观察物体的感知位置会发生何种变化。射影变换并不保持大小和角度,但会保持重合关系和交比。
单应矩阵通常描述处于共同平面上的一些点,在两张图像之间的变换关系。
由于单应矩阵有8个自由度,所以用四对匹配点即可求出H。
4. 三角测量
假设 x1,x2分别为两个特征点的归一化坐标,s1,s2,为两个特征点的深度值,R,t表示两帧之间的变换,有
现在方程左右两边左乘x1^,求x1的外积,那么就有
该式左侧为零,右侧可看成 s2 的一个方程,可以根据它直接求得 s2。有了 s2,s1 也 非常容易求出。
但是一般情况下R,t不一定精确,所以一般应用最小二乘求最优解。
ORB-SLAM2从理论到代码实现(四):相机成像原理、基本矩阵、本质矩阵、单应矩阵、三角测量详解相关推荐
- 单应矩阵(Homography)基本概念和代码测试
简 介: 应用棋盘格图片或者相机图片中与标准棋盘格之间的单应矩阵.其中应用到opencv中的findChessboardCorners, findHomographys等函数. 这位利用单应矩阵进行下 ...
- 让别人远程访问你的代码网站项目或临时演示你的项目给客户的方式详解即外网局域网访问自己的项目
让别人远程访问你的代码网站项目或临时演示你的项目给客户的方式详解 文章目录 让别人远程访问你的代码网站项目或临时演示你的项目给客户的方式详解 引言 一.创建一个你想要别人访问的项目 二.明确你想要将这 ...
- Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...
- SLAM笔记(四)运动恢复结构的几何数学(本征矩阵、单应矩阵、基础矩阵)
1. 间接法进行运动恢复的前提假设 对于结构与运动或视觉三维重建中,通常假设已经通过特征匹配等方法获取了匹配好的点对. 先求出匹配点对再获取结构和运动信息的方法称作间接法. 间接法最重要的三个假设是: ...
- 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...
- 什么是TCP三次握手和四次挥手【重点学习系列---干货十足--一文详解】
引言 本文将会从一个爱情的故事开始,着力从什么是三次握手.为什么是三次而不是俩次或者四次.TCP关闭的过程.为什么要四次挥手.而不是三次.为什么最后是2MSL.什么是2MSL这些问题展开分析,详解,让 ...
- python接口自动化项目_python接口自动化(四十二)- 项目结构设计之大结局(超详解)...
简介 这一篇主要是将前边的所有知识做一个整合,把各种各样的砖块---模块(post请求,get请求,logging,参数关联,接口封装等等)垒起来,搭建一个房子.并且有很多小伙伴对于接口项目测试的框架 ...
- Appium+python自动化(十四)- 与Capability完美懈垢之解读(超详解)
简介 Capability又叫Appium Desired Capabilities,前边写了那么多实例代码,小伙伴可以发现一些规律,就是有一部分代码总是重复的出现在你的视线中.这部分就是对Capab ...
- java代码中设置mysql时区_关于Java中的mysql时区问题详解
前言 话说工作十多年,mysql 还真没用几年.起初是外企银行,无法直接接触到 DB:后来一直从事架构方面,也多是解决问题为主. 这次搭建海外机房,围绕时区大家做了一番讨论.不说最终的结果是什么,期间 ...
最新文章
- python pandas常用函数_Python pandas常用函数详解
- php连接不到mysql怎么解决,怎么解决php无法连接mysql的问题
- pythonfile操作教程_Python基础教程之文件操作
- Redis入门教程(一)
- 手把手教你拦截Linux系统调用
- matplotlib 中文_详解Matplotlib中文字符显示问题
- 医疗保健数据接口_应用的大数据:医疗保健的经济学
- 数据量大的sql怎么做优化_搜索引擎关键词优化怎么做
- 线性回归用matlab怎么做,matlab中如何应用regress()函数进行线性回归分析?
- 计算机等级考试三级教材,计算机等级考试三级过关技巧
- mysql中什么来维护表之间_转mysql维护索引和表
- 数据库建模工具powerdisgner16.5
- 8926音频录音流程
- 论文阅读 [TPAMI-2022] VolterraNet: A Higher Order Convolutional Network With Group Equivariance for Homo
- 大规模优化方法(一)
- let和const的区别
- 计蒜客---它是多么甜蜜啊!
- WinRAR误装其他语言版本卸载重装后右键依旧存在外文
- 高速公路收费运营安全风险管控与突发事件应急处置 PPT
- fedora Linux 配置阿里云开源镜像站
热门文章
- Zend Framework Mail通过网易免费邮箱发送邮件
- 在Linux系统中修改目录的权限如何恢复
- red hat DHCP服务器配置
- 安装Android SDK需要选择哪些,开始为Android开发,我应该选择安装哪些SDK?
- r语言 编辑 d3.js_d3.js的语言介绍
- 全球链界科技发展大会_如何成为科技界的团队合作者
- 我的第一个web_登陆我的第一个全栈Web开发人员职位
- 用拓扑排序检测有向图中是否有环
- Python培训教程分享:有哪些值得使用的爬虫开源项目?
- 如何进行app的兼容性测试?需要考虑哪些方面?