SLAM笔记(四)运动恢复结构的数学基础(本征矩阵F,单应矩阵H,八点法与五点法,四点法)
来源:互联网 发布:c数据结构与算法pdf 编辑:程序博客网 时间:2024/06/05 07:58
1. 间接法前提假设
对于结构与运动或视觉三维重建中,通常假设已经通过特征匹配等方法获取了匹配好的点对。这种方法先求出匹配点对再获取结构和运动信息的方法称作间接法。间接法最重要的三个假设是:
1.拥有一堆两帧之间的匹配点对。同时假设:
- a.匹配点不一定精确,即对于匹配点对
- b.匹配关系不一定正确。
2.场景是静态的,即环境中不存在运动的物体
3.知道相机内参数且内参数恒定不变。
此处的匹配点,可以是2D-2D(单目相机初始化时),2D-3D配对点(单目相机运行过程中,已经算出了3D的地图点,又来了2D的图形),或是3D-3D的匹配点(使用双目相机、RGBD相机或其他传感器,可以直接过间接获取匹配好的三维点对)。本文默认是2D-2D的配对点。
2.极线约束,本征矩阵
极限约束:
物理世界上的一个三维点P投影到两个成像面(实际上像面也常常处理成z=1的地方)上,点P与两个像面的光心形成一个对极平面,
极限约束是指对第一个成像面上的点p1,它在第二个平面上的对应点p2总存在于对应的极线
用x表示像平面坐标的话,K为内参数矩阵,P为相机坐标系三维点;如果已知内参数K,则可以去掉K的影响,即令
即:
此处的
极线约束(Epipolar constraint,essential constraint,bilinear constraint):
对于两帧之间的归一化坐标
其推导过程如下:
1。由于
R,T分别为旋转和平移矩阵。
2.左右分别左乘
3.左乘
注:
上述2,3过程中,
极线约束的几何意义:
对于式
(
本征矩阵(Essential Matrix):
E组成的空间称为本征空间:
一个非零矩阵当且仅当(充要条件)
svd 分解中
时,这个矩阵是本征矩阵。
(思考:为什么特征空间需要这样定义)
此时可由E求得R和T:
因此视觉SFM(structure of motion)问题中恢复分两步走:
- 1..Recover the Essential Matrix frome the epipolar constraints
- 2.Extract the R,T if we know the Essential Matrix:E=U
从一系列极线约束中恢复的矩阵E一般是不满足本征矩阵的条件的;怎么办,再将E投影到本征空间即可,具体做法是称为八点法。
3.运动信息重建(旋转和平移信息)
3.1 八点法(Eight-Point Algorithm)
3.1.1从点对中求解出矩阵E
先将矩阵E写作栈的形式:
同时,假设点的齐次向量
则极线约束可换成两个向量乘积的形式:
对于n个点对:上式为:
因此求解E变成求解方程(2-3),即
由于无法知道E的正负(方向),因此结合每个E有两个可能的(R,T)组合,最终可能有四个可能的(R,T)
3.1.2将矩阵E投影到本征空间中
由于E往往不满足上部分2中特征空间的要求,因此需要将E投影到特征空间上,具体做法是:
对于
(思考:Since in the reconstruction, E is only defined up to a scalar)
在三维重建中一般将
总结:八点法(Longuet-Higgins ’81)的具体做法:
1.通过最小化
2.SVD分解E,并E投影到特征空间,并将结果归一化
3.从特征矩阵中恢复出R,T:
求出的四个(R,T)对的效果如下图所示:
能看出四个(R,T)解中只有一个解是有意义的,只有这个解才能使所有点的深度是正的。
3.2 五点法(Five-Point Algorighm)
矩阵E的自由度:
由于E由三个旋转,三个位移构成,一共六个自由度;但由于
Kruppa 在 1913证明只需要5个匹配点对就能算出E,即五点法。
由于五点法引入了非线性约束,解起来麻烦,于是这儿就不详解了,只是大概表述如下:
如果有额外的信息,比如运动是在同一平面运动或绕圆周运动,又比如有了惯性传感器可以知道其他位姿信息,则需要更少的点就可以求出本征矩阵。
continuous epipolar constraint:产生线速度和角速度而非位移T和旋转R。
* independently moving objects:*
3.3 四点法,单应性矩阵H
3.3.1 单应矩阵到底是个什么东西
单应映射就是线性映射关系
当我们从两幅image上看到真实世界中的同一个有限平面(如一个长方形)时,假设长方形在image1中形成的投影为四边形1,在image2中形成的投影为四边形2;假设长方形任何一个点在四边形1的对应的点x1,在四边形2中的对应点x2,这些二维点对
从形式上看,这不就是二维点与二维点之间的映射关系吗?比如举一个最简单的例子,二维旋转矩阵就是一个简单的单应矩阵:
再来一个栗子:
单应矩阵可以将一个二维的正方形做如下变换(r代表旋转矩阵的元素,s表示缩放的标量)
3.3.2数学上的单应性矩阵H
明白了使用场景,我们再来看单应性(homography,在多视图几何中又称为projectivity(射影性),collineation(直射变换,共线性),projective transformation(投影变换))的定义:
的定义:
定义:
单应性是一个存在于空间
或者说:
当然单应性不止局限于2x2平面,也可以有n维空间之间的单应映射:
比如,在三维投影空间(
当一些点在同一个平面上时,设
上式右乘到下式右边:
其中H成为单应矩阵(homography matrix):
如果令
则
(根据空间平面单位和位置不同而产生不同的H映射,实际运用中更多的是直接使用像素坐标而非物理化后的metric 坐标)
对
这是单应性的另一种形式。
注意这个式子与本征约束式子之间的差别:一个是x叉乘,一个是x转置。化简后本式实际上是一个线性方程组(0是一个3维向量),本征矩阵约束是一个线性方程(0是一个标量),这导致了H约束个数的翻倍:只用四个点对即可求解
单应性约束与极限约束:极线约束只是点与对应一条极线的关系,而单应性矩阵约束更强(从单应性矩阵可逆而本征矩阵缺秩也可以看出),是点到点的一一对应。
所以对于物理空间上的同平面
这之后计算H的方法和式(2-1)的处理方式相似,都是根据:
可以用直接线性法(DLT,Direct Linear Transformation)求解线性方程(参见附录1)
从H组成可以看出H取决于R,T和平面自身的参数。
算出H后,再根据
此外,实际计算单应性时,由于H对噪声敏感,需要将所有点进行归一化处理成平均值为0,方差为固定(如sqrt(2)),随后根据像素点与像素点的对应关系求出H。
3.3.3单应性矩阵的特殊情况
当T=0,则H=R,即有
E与H的关系
将
3.4 基础矩阵(fundamental matrix)
当不知道内参数矩阵时,只有像素坐标,那悲催了,堆积约束为:
在SFM,SLAM中我们一般认为相机已经标定好,因此基础矩阵不常用。
4.结构信息重建(地图点三维信息)
求出R,T后,对于某点对,其 关系如下:
其中:
但
上式可以写作:
对与所有点对
可求出所有点的实际三维点
附录:
1直接线性法:multi-view geometry
2homograph:
homograph1
homograph2
- SLAM笔记(四)运动恢复结构的数学基础(本征矩阵F,单应矩阵H,八点法与五点法,四点法)
- 【立体视觉】单应矩阵H、本质矩阵E和基本矩阵F
- 单应矩阵与透视变换矩阵
- 单应性矩阵,本征矩阵,基础矩阵
- 单应矩阵 基本矩阵 本质矩阵的区别与联系
- 单应矩阵 基本矩阵 本质矩阵的区别与联系
- 单应矩阵 基本矩阵 本质矩阵的区别与联系
- 单应矩阵 基本矩阵 本质矩阵的区别与联系
- (学习笔记)投影与三维视觉——本征矩阵和基础矩阵
- Homography单应矩阵
- 单应矩阵
- 单应矩阵分解
- Homography单应矩阵
- 单应矩阵,基本矩阵,本质矩阵
- 透视变换矩阵(单应矩阵)计算:findHomography 与 getPerspectiveTransform
- opencv的单应矩阵相机标定
- 矩阵基础(四)
- 数学基础: 矩阵的求导
- App分解
- Idea开发Scala应用
- Android之仿腾讯游戏转盘抽奖
- MySql中读出的中文乱码问题
- C/C++生成高斯分布随机数
- SLAM笔记(四)运动恢复结构的数学基础(本征矩阵F,单应矩阵H,八点法与五点法,四点法)
- 文件描述符 dup/dup2函数
- Kafka入门经典教程
- jdk安装后没有配置环境变量也可以java -version
- J2EE:servlet response常用方法总结
- LeetCode题目:315. Count of Smaller Numbers After Self
- 尾递归总结
- phoenix 把CSV格式的数据导入到Hbase执行日志
- 智能制造核心技术在哪里?