声明:下面一些内容引用了高翔的视觉slam十四讲, 感谢作者。

对于我这种刚入门的小白(cai bi)来说,对极约束公式中的某些步骤理解起来还是有些难度的,下面把个人对相关内容的理解写下来,以备日后翻阅。

一、对极约束推导

以下图为例,我们希望求取两帧图像 I1 , I2 之间的运动,设第一帧到第二帧的运动为R, t。两个相机中心分别为 O1 , O2 。现在,考虑 I1 中有一个特征点 p1 ,它在 I2 中对应着特征点 p2 。

图1

从代数角度来看一下这里出现的几何关系。在第一帧的坐标系下,设 P 的空间位置为:

公式1

根据针孔相机模型,我们知道两个像素点 p1 , p2 的像素位置为:

公式2

这里 K 为相机内参矩阵,R, t 为两个坐标系的相机运动。如果使用齐次坐标, 也可以把上式写成在乘以非零常数下成立的(up
to a scale)等式:

公式3

问题(1)来了:为什么使用齐次坐标,并且乘以非零常数后等式依然成立。

解释如下:说到齐次坐标,就要提一下投影几何(或射影几何)。首先齐次坐标是指一个用于投影几何里的坐标系统,如同用于欧式几何里的笛卡儿坐标一般(具体见wiki),射影几何研究在摄影变换下不变的几何性质(具体见wiki)。以针孔相机模型为例,来解释一下为什么齐次坐标乘以非零常数后仍然表示同一个点,如下图:

上图中,O表示相机光心,为像素坐标系下的点,P1,P2,P3为在相机坐标系下的空间点,并且P1,P2,P3均投影到像素坐标系下的p点。在推导相机的内参矩阵时,为了使等式左右两边维度相同,我们把写成齐次坐标形式,如下式:

所以对于P1,P2,P3三点与齐次坐标的关系为:

Z1 * p = K * P1; Z2 * p = K * P2; Z3 * p = K * P3

则 p =  (K * P1 ) / Z1 = (K * P2 ) / Z2 = (K * P3 ) / Z3, 我们发现,齐次坐标乘以非零常数后依然表示同一个投影点,只不过空间点P位置变了,但都在 这条射线上,齐次坐标乘以不同的非零常数表示不同距离的空间点在像素平面的投影,就是这条射线上的点均投影到 p 点。这也表明了单目相机的一张图像没法确定深度。另外也可参考另一个博客。

由以上解释可以看出,使用齐次坐标可以使相机模型计算更加方便,灵活性更高,乘以非零常数后仍表示同一个点。

接上面的公式3,令

公式4

很明显, 是上面图1中两个像素点  的相机归一化平面上的坐标(相机坐标系下)。

则将公式4带入公式3中,得到: , 最终得到:

公式5

两边同时左乘 ,得到:

公式6

两侧同时左乘,得到:

公式7

由于,所以有:

公式8

重新代入,得到:

公式9

这两个式子都称为对极约束。通过定义基础矩阵F和本质矩阵E进一步简化上式:

公式10

E 和 F 只相差了相机内参,求出E或者F就可以通过分解求出R和t。通常内参是已知的,求解E会更方便。

二、本质矩阵

根据定义,本质矩阵,它是一个 3 × 3 的矩阵,内有 9 个未知数。E满足如下条件:

(1)E满足对极约束: ,由于对极约束是等式为零的约束,所以对 E 乘以任意非零常数后,对极约束依然满足,这称为 E 在不同尺度下是等价的,即尺度等价性。

(2)根据, 可以证明,本质矩阵 E 的奇异值必定是 [σ, σ, 0]T 的形式。这称为本质矩阵的内在性质。(推导可见另一博客)

(3)另一方面,由于平移和旋转各有三个自由度,故共有六个自由度。但由于尺度等价性,故 E 实际上有五个自由度。

E的求解:

E 具有五个自由度的事实,表明我们最少可以用五对点来求解 E。但是,E 的内在性质是一种非线性性质,在求解线性方程时会带来麻烦。

问题(2):本质矩阵E为什么是尺度等价的?

问题(3):本质矩阵E的奇异值为什么是 [σ, σ, 0]T,怎么求?

问题(4):本质矩阵E为什么有5个自由度?

这三个问题的答案墙裂推荐一篇有道云笔记(备用链接),该笔记从最基础的矩阵理论出发,一步步解释了本质矩阵、基础矩阵以及单应矩阵的性质和求解方法,新手必备。

slam入门3:2D-2D对极几何中的对极约束公式详细解释(参考 视觉slam十四讲)相关推荐

  1. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

    专栏系列文章如下:  专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...

  2. 【视觉SLAM入门】一些关于视觉SLAM十四讲的重要基础概念

    文章目录 高翔. *视觉SLAM十四讲 从理论到实践*. 电子工业出版社, 2017. Print. 第二章:初识SLAM 第三章:三维空间刚体运动 第四章:李群与李代数 第五章:相机与图像 第六章: ...

  3. 视觉SLAM十四讲 ch3 Ubuntu18.04 KDevelop的使用及Eigen实践 入门笔记

    视觉SLAM十四讲 ch3 Ubuntu18.04 KDevelop的使用及Eigen实践 入门笔记 一.创建KDevelop项目 二.编写程序 一.创建KDevelop项目 你的电脑上如果还没有安装 ...

  4. SLAM十四讲笔记1

    文章目录 ch02 初识SLAM ch02-01 经典视觉SLAM框架 ch02-02 SLAM问题的数学表述 ch03 三维空间刚体运动 ch03.01 旋转矩阵:点和向量,坐标系 01 向量a在线 ...

  5. 视觉SLAM总结——视觉SLAM十四讲笔记整理

    视觉SLAM总结--视觉SLAM十四讲笔记整理 说明 基础知识点 1. 特征提取.特征匹配 (1)Harris (2)SIFT (3)SUFT (4)ORB (5)特征匹配 2. 2D-2D:对极约束 ...

  6. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  7. <视觉SLAM十四讲> ch7 视觉里程计1

    文章目录 一.特征点法 1.1 特征点 1.2 ORB 特征 1.3 特征匹配 实践 二. 计算相机运动 三.2D-2D:对极几何 3.1 对极约束 3.2 本质矩阵 3.3 单应矩阵 讨论 四.实践 ...

  8. 视觉SLAM十四讲笔记-7-2

    视觉SLAM十四讲笔记-7-2 文章目录 视觉SLAM十四讲笔记-7-2 估计相机运动 7.3 2D-2D:对极几何 7.3.1 对极约束 7.3.2 本质矩阵 7.3.3 单应矩阵 7.4 实践:对 ...

  9. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-PnP和实践

      专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记- ...

最新文章

  1. nestjs连接远程mysql_Nestjs 链接mysql
  2. REST API 概念的简单介绍
  3. LayoutInflater——inflate方法不同参数的区别
  4. vba 指定列后插入列_Vba代码插入指定数量的空白行
  5. 关于“想哭”病毒,我也来两句。--转载
  6. scala 类及抽象类入门
  7. CRC32的C语言源代码
  8. 电商数据分析Excel案例
  9. Keil4打开单片机工程一片空白,cpu100%程序卡死的问题解决
  10. 【数字信号处理】基本序列 ( 复指数序列 | 单位复指数序列 | 复变函数欧拉公式 )
  11. 多项式回归分析之预测成本和利润
  12. 计算机用户删除文件找回,电脑删除的文件怎么找回?失易得数据恢复帮助找回...
  13. 解决:服务器种挖矿程序的一次实战记录~
  14. 【离散数学】数学归纳法
  15. 思维拓展:不相邻问题插空法
  16. 学生宿舍管理数据库设计(下)
  17. oracle中的crs,Oracle CRS简介
  18. js获取浏览器窗口页面宽度、高度的方法 kaki 的博客
  19. java基础知识 API文档 字符串基本操作 正则表达式 Object
  20. 企业数字化转型系列报告 —— 低代码行业研究报告

热门文章

  1. 学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
  2. Java遍历List数组
  3. java数组字母向后移动两位_java数组字母倒序
  4. 期权激励是股权激励吗?期权激励的现状及期权激励预留比例分析
  5. 京东APP技术解密:移动端秒级配置触达平台-Switchquery
  6. 使用potplayer录制屏幕
  7. java中BufferedInputStream缓存为什么使IO效率高?
  8. Sublime Text 4 4126 可用
  9. win10删除鲁大师残留文件夹
  10. ASCII码表 ASCII码转换函数