知乎上面的大牛还是很多,直接搜Homography或者单应矩阵就能得到很多大神的回答,可能回答中的一句话或者一个链接就够自己学习很久。

其实在之前研究双目视觉的时候就接触了对极几何,通过视觉就可以得到物体的远近信息,这也是特斯拉等自动驾驶甚至可以完全使用摄像头而不使用雷达的原因。

通过下面这幅图说明一下匹配点必须在极线上。在单镜头下,同一个径向的物体P、Q的成像是重合的,所以我们无法判断物体的前后远近关系,在双目视觉中,利用两个镜头对同一场景进行捕捉,相当于换了一个视角观察,或者说引入了镜头相对位置这个先验信息,从而可以利用两个镜头分别捕捉的图像进行信息融合。这时问题的关键就是在两幅图像之间找到对应点。我们当然可以使用SIFT等特征点描述子进行匹配,但是,对极几何利用极平面的特殊性质将对应点约束在另外一幅图像的极线上,将搜索范围从2D减少到1D。

本质矩阵

刚才提到我们引入了镜头相对位置的先验信息,两个镜头对于彼此的位置是已知的(通过极点),那么这种相对位置在数学上是怎么表示的呢?其实这就是基础矩阵。最基本的空间变换是平移和旋转,本质矩阵Essential Matrix就包含了旋转R和平移T,因为只是镜头相对位置,所以不包含相机焦距等内参。本质矩阵的推导主要利用的是三个红色的向量在极平面内共面,即三个向量混合积(点乘和叉乘)为0,使用的坐标系是相机坐标系。

叉乘(向量的外积),结果还是一个向量,新的向量c垂直于向量a和b,按照右手螺旋法则,长度是a和b张开的平行四边形的面积。相机坐标系是以相机的镜头(光心)为原点,z轴为镜头的径向,和成像平面垂直。

将圆括号中的叉乘改写成矩阵形式,最后可以得到

本质矩阵的求解和其中旋转和平移矩阵的求解。矩阵是3x3大小的,需要8个点来求解。

基础矩阵

刚才的本质矩阵是在对应点在相机坐标系下的对应关系,而我们更关心的是成像,即对应点在图像物理坐标系(也叫平面坐标系)下的对应关系。图像物理坐标系大致和相机坐标系一样,但是原点移到了成像面上,为光轴与成像平面的交点。

相机坐标系到图像物理坐标系之间的转换:

图像物理坐标系和我们日常在计算机进行数字图像处理所使用的坐标系依然不一样,前者是以m为单位的,表示的是成像时距离原点的绝对长度,而我们通常使用的是像素坐标系。像素坐标系以像素为单位,如图像大小为255x255,表示这个图像长宽都是255个像素。像素坐标系的原点选在图像左上角,x轴为水平向右。OpenCV、OpenGL等库的坐标系即和图像坐标系一致。当然明显看出CCD传感器以mm单位到像素中间有转换的。举个例子,CCD传感上上面的8mm x 6mm,转换到像素大小是640x480. 假如dx表示像素坐标系中每个像素的物理大小就是1/80. 也就是说毫米与像素点的之间关系是piexl/mm.

OpenCV中函数findFundamentalMat可以找到基础矩阵Fundamental matrix。

单应性矩阵Homography matrix

之前的对极几何中两个视图中点的对应关系是点对应直线(极线),而单应矩阵是点对应另外一幅视图中的点,约束力更强。

H矩阵的推导,来自相机在不同位姿拍摄同一个三维平面。之所以H矩阵约束力更强,是它不仅仅引入了两个镜头之间的旋转和平移变换,还包含了景深信息d。

通过相机位置坐标在法向量方向的投影(乘转置)表示景深距离d。

两个相机之间的位置包含了平移和旋转,他们之间的关系可以用等式来表示:

如果研究的对象是相机像素坐标,应该有内参矩阵K的参与,对应的单应矩阵为:

注意这里的单应矩阵中包含了三大信息,旋转矩阵R,平移矩阵T,景深信息d。R和T描述两个相机之间的关系,所以是唯一确定的,而d是两个相机所捕获的平面上点到其中一个相机的距离,为了用单应矩阵描述两幅视图中像素点的对应关系,这个d应该保持一致,即相机所捕获的场景应该是平面,且是垂直于相机1法向量的平面。

特别的,在纯旋转情况下,两个相机之间没有平移关系T,即

这样单应矩阵H就退化为H=R,H中不再包含d,所以就可以摆脱拍摄景物必须在同一平面的限制。而我们通常无法获得景深信息d,所以这也让我们不必再求解d。换一种思路,即便相机之间存在平移,但是当景物在无穷远处时,d可以认为无穷大,也可以将H中的第二项舍去,此时的H叫做Infinite Homography。这给我们的启发或者说解释就是,在使用相机拍摄全景图时,最好保证相机只在原地旋转,没有平移运动,或者拍摄的景物是远景,可以看作d是无穷大。

那么,当实在无法满足上述条件,即有平移,且无法保证共面,这种情况下不同的点的参数d不一样,但是单应矩阵只能选择一个d,肯定会出现误差。当相机的平移向量相对于场景深度而言足够小时,可以使用RANSAC找到一个满足大部分点的矩阵,误差是可以接受的,这应该就是orbslam中提到的低视差情形。

单应矩阵的本质

单应矩阵的本质是利用了平面信息(平面法向量n和相机到平面的距离d),建立起像素坐标到相机系坐标的关系。推导过程如下:

像素系齐次坐标

原理上可由齐次坐标得到相机坐标系下的坐标:,K是相机内参,K一般是已知的,现在问题是深度z未知。而如果我们除了知道p的点坐标,还知道它所在平面的信息,就可以求出z。

p所在平面的法向量是n,p所在平面到相机的距离d,那么,将代入,得到

最后,参考链接还总结了单应矩阵和对极几何的关系。所谓的“六点法”,四个共面点确定H,两个非共面点确定极点。极点确定了,H也知道,那么其他任意点的极线就能画出来了,不用本征矩阵我们也可以构造极线几何。

而在计算本质矩阵中,又必须满足8点不能共面。这是因为共面的话求解E会有无穷多个解满足方程,所以8点法求解不能适用于共面的情况。

这篇博客连同上一篇研究了图像变换和单应矩阵、本质矩阵。其实在学习线性代数和矩阵论时就应该认识到,矩阵不仅能表示状态,还可以表示运动。真实世界中的物体在不同的成像条件下(特指相机的位置不同,两个相机之间存在旋转和平移),会得到不同的图像,这些图像之间可以认为存在仿射变换或者透视变换,如果用矩阵来描述就可以使用单应矩阵或者本质矩阵。其实单应矩阵适用于相机发生了旋转的平面场景(或者近似平面场景),应用的限制性和对点的限制性(点到点)都更强;本质矩阵和基础矩阵适用范围更广,它们都包含了相机之间的旋转和平移信息,其中基础矩阵更常用,因为它具体描述的是两个相机得到的图像的像素级之间的关系,而本质矩阵只描述了两个相机之间的关系,换一句话说,基础矩阵相比于本质矩阵,不仅包含两个相机之间的旋转平移信息,还包含了相机内参。相机内参就包括了镜头焦距、像素大小等信息,这就涉及到相机标定,可以通过一个仿射矩阵表示。不过在理论上通过四对匹配点对就可以计算得到,而OpenCV的一个函数就可以实现。

Reference:

1.知多少https://blog.csdn.net/heyijia0327/article/details/53782094

2.坐标系https://blog.csdn.net/lyl771857509/article/details/79633412

3.庖丁解牛侯凯https://www.cnblogs.com/houkai/p/6661607.html

4.葵花宝典https://link.zhihu.com/?target=http%3A//www.robots.ox.ac.uk/%7Evgg/hzbook/

5.一分钟:https://blog.csdn.net/Yong_Qi2015/article/details/82858582

什么是单应矩阵和本质矩阵相关推荐

  1. 基础矩阵,本质矩阵,单应性矩阵讲解

    ORB-SLAM点云地图中相机的位姿初始化,无论算法工作在平面场景,还是非平面场景下,都能够完成初始化的工作.其中主要是使用了适用于平面场景的单应性矩阵H和适用于非平面场景的基础矩阵F,程序中通过一个 ...

  2. 计算机视觉三维重建的几何基础:坐标系与关键矩阵(基础矩阵、本质矩阵、单应矩阵)...

    作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/159194599 编辑丨3D视觉工坊 你站在桥上看风景, 看风景人在楼上看你. 明月装饰了你的窗子, 你装饰了别人 ...

  3. 多视图几何总结——基础矩阵、本质矩阵和单应矩阵的求解过程

    多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 多视图几何总结--基础矩阵.本质矩阵和单应矩阵的求解过程 1. 说明--其实求解过程大同小异 2. 单应矩阵求解过程 2.1 基于代数误差的线 ...

  4. 多视图几何总结——基础矩阵、本质矩阵和单应矩阵的自由度分析

    多视图几何总结--基础矩阵.本质矩阵和单应矩阵的自由度分析 多视图几何总结--基础矩阵.本质矩阵和单应矩阵的自由度分析 总结 基础矩阵自由度 (1)几何推导 (2)代数推导 (3)直观理解 本质矩阵自 ...

  5. 三维重建1-位姿追踪:单应矩阵、本质矩阵和基本矩阵

    从今天起,好好复习一下面试到的题目,把研究生时期学习的,工作时间忘记的东西再补回来. 本文所写与原文相距甚远,如有疑问,请拜访原文.未经允许大量盗图,如有不满,请联系删除. 更多的细节请参考多视几何一 ...

  6. 《增强现实:原理、算法与应用》读书笔记(1)基础矩阵、本质矩阵与单应性矩阵

    <增强现实:原理.算法与应用>读书笔记(1) 入坑增强现实,学长让我先把这本书看懂,看了一小半,确实有很多对数学要求挺高的地方,所以打算写个读书笔记,分享一些体会. 第三章:实景的三维结构 ...

  7. 单应性矩阵和仿射变换_单应矩阵 基本矩阵 本质矩阵的区别与联系

    1. 叉乘 2. 双目系统 3. 对极几何 (Epipolar Geometry) 对极几何定义:是两个视图间的内部射影几何,它只与摄像机的内部参数和相对位姿有关,与场景结构无关. 基线(baseli ...

  8. 2D - 2D 点对 求解基础矩阵 F 本质矩阵E 单应矩阵 H 进而求 旋转矩阵 R 和 t

    *对极几何 求解 两组单目相机 2D图像 间的 旋转平移 矩阵 * 2D 点对 求 两相机的 旋转和平移矩阵 * 空间点 P 两相机 像素点对 p1 p2 两相机 归一化平面上的点对 x1 x2 与P ...

  9. SLAM基础- 题目:基础矩阵F、本质矩阵E和单应矩阵H的自由度和秩

    主要分析:基础矩阵F.本质矩阵E和单应矩阵H的自由度和秩,首先两个问题,尺度归一化和秩 尺度归一化: 以本质矩阵为例,表达两帧的相机归一化坐标之间的对应关系 将矩阵写成向量,转化为下式: 由于等式右侧 ...

最新文章

  1. 1-3_基本概念_程序进程
  2. 第三章 中间件,3.1 万亿级数据洪峰下的分布式消息引擎(作者:冯嘉、誓嘉、尘央、牟羽)...
  3. 数据仓库之电商数仓-- 4、可视化报表Superset
  4. 西电计算机达标测试挂科保研,西电竞赛保研
  5. luoguP1742 最小圆覆盖
  6. java中加号和append,请详细说一下java中append()的方法.
  7. CMMI3认证过程总结
  8. 74系列芯片功能说明
  9. Score UVA - 1585
  10. 服务器打完补丁无法进入系统,win7系统电脑更新补丁后无法进入系统怎么办
  11. centos安装git时出错提示make[1]: *** [perl.mak] Error 2 make: *** [perl/perl.mak] Error 2
  12. 求职经验贴-描述笔者当时找工作情形
  13. 微信小程序模仿拼多多APP地址选择样式
  14. 惠普服务器dl388g7光盘引导,hp dl388g7 无光驱怎么安装系统
  15. Java集成华为云对象存储
  16. 手机触屏特效Java_手机触屏触摸特效javascript-TouchSwipe(依赖于jquery库)中文说明...
  17. 差分放大电路的基本工作原理是什么//2021-2-18
  18. 51单片机(四)—— 51单片机仿真芯片的使用
  19. 0xC000005:Access Violation和指针强制转换问题
  20. WebRTC offer - answer交换sdp流程分析

热门文章

  1. 新年第二弹|卖萌屋私藏书单大公开
  2. 写在校招季,谈谈机器学习岗的Offer选择问题
  3. 最新阿里内推高级Java面试题
  4. 我对Spring的理解
  5. Android官方开发文档Training系列课程中文版:后台服务之IntentService的使用
  6. pytorch基础一:张量
  7. Python中参数函数内部赋值与使用+=的变量
  8. SpringMVC详细执行流程与组件说明
  9. 8万行的insert数据,Ctrl+c、Ctrl+v后心态崩了(如何在Linux下对MySQL数据库执行sql文件)...
  10. 死磕JDK源码之String