除了基本矩阵和本质矩阵,我们还有一种称为单应矩阵(Homography) HHH 的东西,它描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上(比如墙,地面等),则可以通过单应性来进行运动估计。这种情况在无人机携带的俯视相机,或扫地机携带的顶视相机中比较常见。

单应矩阵通常描述处于共同平面上的一些点,在两张图像之间的变换关系。考虑在图像 I1I1I1 和 I2I2I2 有一对匹配好的特征点 p1p1p1 和 p2p2p2。这些特征点落在某平面上。设这个平面满足方程:

nTP+d=0\boldsymbol{n}^{T} \boldsymbol{P}+d=0nTP+d=0

稍加整理,得:

−nTPd=1-\frac{\boldsymbol{n}^{T} \boldsymbol{P}}{d}=1−dnTP​=1

然后,得:
p2≃K(RP+t)≃K(RP+t⋅(−nTPd))≃K(R−tnTd)P≃K(R−tnTd)K−1p1\begin{aligned} p_{2} & \simeq K(R P+t) \\ & \simeq K\left(R P+t \cdot\left(-\frac{n^{T} P}{d}\right)\right) \\ & \simeq K\left(R-\frac{t n^{T}}{d}\right) P \\ & \simeq K\left(R-\frac{t n^{T}}{d}\right) K^{-1} p_{1} \end{aligned}p2​​≃K(RP+t)≃K(RP+t⋅(−dnTP​))≃K(R−dtnT​)P≃K(R−dtnT​)K−1p1​​

于是,我们得到了一个直接描述图像坐标 p1p1p1 和 p2p2p2 之间的变换,把中间这部分记为 HHH,于是:
p2≃Hp1p_{2} \simeq H p_{1}p2​≃Hp1​

它的定义与旋转、平移以及平面的参数有关。与基础矩阵 FFF 类似,单应矩阵 HHH 也是一个 3×33 × 33×3 的矩阵,求解时的思路也和 FFF 类似,同样地可以先根据匹配点计算 HHH,然后将它分解以计算旋转和平移。把上式展开,得:
(u2v21)≃(h1h2h3h4h5h6h7h8h9)(u1v11)\left(\begin{array}{c}u_{2} \\ v_{2} \\ 1\end{array}\right) \simeq\left(\begin{array}{ccc}h_{1} & h_{2} & h_{3} \\ h_{4} & h_{5} & h_{6} \\ h_{7} & h_{8} & h_{9}\end{array}\right)\left(\begin{array}{c}u_{1} \\ v_{1} \\ 1\end{array}\right)⎝⎛​u2​v2​1​⎠⎞​≃⎝⎛​h1​h4​h7​​h2​h5​h8​​h3​h6​h9​​⎠⎞​⎝⎛​u1​v1​1​⎠⎞​

请注意,这里的等号依然是≃\simeq≃而不是普通的等号,所以H矩阵也可以乘以任意非零常数。我们在实际处理中可以令h9=1h_{9}=1h9​=1(在它取非零值时)。然后根据第333行,去掉这个非零因子,于是有

u2=h1u1+h2v1+h3h7u1+h8v1+h9u_{2} =\frac{h_{1} u_{1}+h_{2} v_{1}+h_{3}}{h_{7} u_{1}+h_{8} v_{1}+h_{9}}u2​=h7​u1​+h8​v1​+h9​h1​u1​+h2​v1​+h3​​

v2=h4u1+h5v1+h6h7u1+h8v1+h9v_{2}=\frac{h_{4} u_{1}+h_{5} v_{1}+h_{6}}{h_{7} u_{1}+h_{8} v_{1}+h_{9}}v2​=h7​u1​+h8​v1​+h9​h4​u1​+h5​v1​+h6​​

整理得:
h1u1+h2v1+h3−h7u1u2−h8v1u2=u2h_{1} u_{1}+h_{2} v_{1}+h_{3}-h_{7} u_{1} u_{2}-h_{8} v_{1} u_{2}=u_{2}h1​u1​+h2​v1​+h3​−h7​u1​u2​−h8​v1​u2​=u2​
h4u1+h5v1+h6−h7u1v2−h8v1v2=v2.h_{4} u_{1}+h_{5} v_{1}+h_{6}-h_{7} u_{1} v_{2}-h_{8} v_{1} v_{2}=v_{2} .h4​u1​+h5​v1​+h6​−h7​u1​v2​−h8​v1​v2​=v2​.

这样一组匹配点对就可以构造出两项约束(事实上有三个约束,但是因为线性相关,只取前两个),于是自由度为 888 的单应矩阵可以通过 444 对匹配特征点算出(在非退化的情况下,即这些特征点不能有三点共线的情况),即求解以下的线性方程组(当 h9h_9h9​ = 0 时,右侧为零):

(u11v111000−u11u21−v11u21000u11v111−u11v21−v11v21u12v121000−u12u22−v12u22000u12v121−u12v22−v12v22u13v131000−u13u23−v13u23000u13v131−u13v23−v13v23u14v141000−u14u24−v14u24000u14v141−u14v24−v14v24)(h1h2h3h4h5h6h7h8)=(u21v21u22v22u23v23u24v24)\left(\begin{array}{cccccccc}u_{1}^{1} & v_{1}^{1} & 1 & 0 & 0 & 0 & -u_{1}^{1} u_{2}^{1} & -v_{1}^{1} u_{2}^{1} \\ 0 & 0 & 0 & u_{1}^{1} & v_{1}^{1} & 1 & -u_{1}^{1} v_{2}^{1} & -v_{1}^{1} v_{2}^{1} \\ u_{1}^{2} & v_{1}^{2} & 1 & 0 & 0 & 0 & -u_{1}^{2} u_{2}^{2} & -v_{1}^{2} u_{2}^{2} \\ 0 & 0 & 0 & u_{1}^{2} & v_{1}^{2} & 1 & -u_{1}^{2} v_{2}^{2} & -v_{1}^{2} v_{2}^{2} \\ u_{1}^{3} & v_{1}^{3} & 1 & 0 & 0 & 0 & -u_{1}^{3} u_{2}^{3} & -v_{1}^{3} u_{2}^{3} \\ 0 & 0 & 0 & u_{1}^{3} & v_{1}^{3} & 1 & -u_{1}^{3} v_{2}^{3} & -v_{1}^{3} v_{2}^{3} \\ u_{1}^{4} & v_{1}^{4} & 1 & 0 & 0 & 0 & -u_{1}^{4} u_{2}^{4} & -v_{1}^{4} u_{2}^{4} \\ 0 & 0 & 0 & u_{1}^{4} & v_{1}^{4} & 1 & -u_{1}^{4} v_{2}^{4} & -v_{1}^{4} v_{2}^{4}\end{array}\right)\left(\begin{array}{c}h_{1} \\ h_{2} \\ h_{3} \\ h_{4} \\ h_{5} \\ h_{6} \\ h_{7} \\ h_{8}\end{array}\right)=\left(\begin{array}{c}u_{2}^{1} \\ v_{2}^{1} \\ u_{2}^{2} \\ v_{2}^{2} \\ u_{2}^{3} \\ v_{2}^{3} \\ u_{2}^{4} \\ v_{2}^{4}\end{array}\right)⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛​u11​0u12​0u13​0u14​0​v11​0v12​0v13​0v14​0​10101010​0u11​0u12​0u13​0u14​​0v11​0v12​0v13​0v14​​01010101​−u11​u21​−u11​v21​−u12​u22​−u12​v22​−u13​u23​−u13​v23​−u14​u24​−u14​v24​​−v11​u21​−v11​v21​−v12​u22​−v12​v22​−v13​u23​−v13​v23​−v14​u24​−v14​v24​​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞​⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛​h1​h2​h3​h4​h5​h6​h7​h8​​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞​=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛​u21​v21​u22​v22​u23​v23​u24​v24​​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞​

这种做法把 HHH 矩阵看成了向量,通过解该向量的线性方程来恢复 HHH,又称直接线性变换(Direct Linear Transform)。与本质矩阵相似,求出单应矩阵以后需要对其进行分解,才可以得到相应的旋转矩阵 R平移向量 t。分解的方法包括数值法与解析法。与本质矩阵的分解类似,单应矩阵的分解同样会返回四组旋转矩阵平移向量,并且同时可以计算出它们分别对应的场景点所在平面的法向量。如果已知成像的地图点的深度全为正值(即在相机前方),则又可以排除两组解。最后仅剩两组解,这时需要通过更多的先验信息进行判断。通常我们可以通过假设已知场景平面的法向量来解决,如场景平面与相机平面平行,那么法向量 nnn 的理论值为 1T1^{T}1T。

本质矩阵 基础矩阵 单应矩阵 (3)相关推荐

  1. Colmap学习三:后端Initialization部分(基础矩阵F、本质矩阵E和单应矩阵H)

    算矩阵的基础知识 解析本质.基础.单应矩阵的自由度 1 寻找初始像对 1.1手动选择ID 1.2自动筛选 ①prior focal length存在情况下,开始筛选 匹配点数由小到大排序 第二张候选影 ...

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

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

  3. Opencv学习(3)——基础矩阵F、本质矩阵E、单应矩阵H 函数解析

    官网:https://docs.opencv.org/3.4.0/d9/d0c/group__calib3d.html#ga4abc2ece9fab9398f2e560d53c8c9780 基础矩阵F ...

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

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

  5. 什么是单应矩阵和本质矩阵

    知乎上面的大牛还是很多,直接搜Homography或者单应矩阵就能得到很多大神的回答,可能回答中的一句话或者一个链接就够自己学习很久. 其实在之前研究双目视觉的时候就接触了对极几何,通过视觉就可以得到 ...

  6. 单应矩阵,基本矩阵,本质矩阵

    1.归一化图像坐标 2.本质矩阵 essential matrix 2.1 本质矩阵的推导 2.2特点 3.相机内参 4.基本矩阵 fundamental matrix 4.2基本矩阵推导 4.1特点 ...

  7. 内参矩阵、外参矩阵、旋转矩阵、平移矩阵、单应矩阵、本征矩阵、基础矩阵

    自己在单目结构光系统.双单目结构光系统及双目相机系统学习的过程中接触到如标题所列的各种矩阵,总感觉理解不到位,现在特总结下,方便日后查阅及修正自己的理解. 自己已经总结了单目相机各坐标系的变换,链接如 ...

  8. 单应矩阵(Homography)基本概念和代码测试

    简 介: 应用棋盘格图片或者相机图片中与标准棋盘格之间的单应矩阵.其中应用到opencv中的findChessboardCorners, findHomographys等函数. 这位利用单应矩阵进行下 ...

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

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

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

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

最新文章

  1. Closure Compiler 使用
  2. zabbix对一台主机监控的操作
  3. Nature:压榨学生,论资排辈,现行论文作者制度已死
  4. Eclipse调试Logcat类的说明
  5. java泛型类指定多个泛型_Java泛型中的多态
  6. Angular实现悬浮球组件
  7. 一些有关。NET界面处理与多线程的文章
  8. 第十五回(二):文会内战平分秋色 树下阔论使坏心焦【林大帅作品】
  9. 不用POI技术,JAVA给Word文档中的数据区域赋值
  10. nvidia tesla k40
  11. vue中动态加载图片路径
  12. C++过河(动态规划dp)
  13. 硬盘扩容linux重新检查,Linux 无损扩容磁盘
  14. 【爬虫】Web Scraper正则表达式
  15. FPGA_Verilog学习之旅(3)---VGA贪吃蛇游戏
  16. 从苏宁易购2020双十一战报窥探各品牌座次排行
  17. 三菱触摸屏GS2107以太网连接FX系列PLC
  18. opencv python考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)
  19. 房地产新项目经济测算解决方案
  20. Vegas13安装教程图文附下载地址

热门文章

  1. 通过Google分析页面加载缓慢并优化
  2. 面试题--------8、mysql的几种锁
  3. jQuery操作元素内容的相关方法
  4. 【渝粤教育】国家开放大学2018年春季 8636-21T实用心理学 参考试题
  5. [渝粤教育] 西南科技大学 人力资源管理 在线考试复习资料
  6. Webbrowser若干点
  7. HTTP之Web服务器
  8. openstack vm实例pxe无法启动
  9. [转]installshield for VC++6 如何使用
  10. 区块链基础语言(二)——Go语言开发环境搭建