温馨提示:如遇公式错误,可在文末留言,欢迎指正。本文未经允许禁止转载。


单应矩阵描述的是空间中同一平面上的三维点在两张图像中的对应关系。这里需要强调的是同一平面

单应矩阵可以应用在图像矫正、图像配准拼接、视角转换以及计算两张图像的相机运动(旋转和平移)上。

下面我们推导一下单应矩阵,本文讲述了两种推导方式。首先回忆一下相机模型矩阵:

其中:

[R T] 是一个3x4的矩阵,Xw是一个4x1的矩阵,K是一个3x3的矩阵。

图1 空间中同一点投影到两图像上

为了讨论更为一般的情况,我们假设两张图片来自于两个相机A、B(对应着左右图),这样两个相机的内参矩阵是不同的,分别为Ka、Kb。世界坐标系中的三维点到相机坐标系转换,对应的旋转、平移矩阵分别为:

这样一来,我们就可以得到两个相机模型矩阵。

将世界坐标系中的点用非齐次形式(头顶一飘~)表达为:

1. 推导一:

在相机坐标系下,空间中的平面模型为

是在相机坐标系下的非齐次坐标。

图2 相机看空间中的一个平面

接下来推导从左图(相机A)到右图(相机B)的映射矩阵,需要用到的式子先摆上(下标中带字母“ca”和“a”,对应相机A)。

是平面在相机A坐标系下的法向量,d表示该平面到相机A的垂直距离,是相机A坐标系下平面上的一点。

开启推导模式:

需要说明一下:

是上述平面在世界坐标系中的法向量。

旋转矩阵R是正交矩阵,所以R的转置就等于R的逆

至此,经过上述推导,两张图像中点的对应关系我们就得到了。

如果把世界坐标系和相机A坐标系重合,那么

上式化简为:

单应矩阵

H是一个3x3的矩阵,可以看出单应矩阵与两个相机之间的相对运动以及所拍摄平面特性有关系。

2. 推导二:

  为了方便计算,假设所拍摄平面在世界坐标系中位于Z=0上。

这样Xw大小就由原来的4x1变成了3x1,旋转矩阵R中第三列就可以消去,[R T]变成了3x3的矩阵。

3. 如何计算H:

为两张图像中匹配的点对(可以利用sift、surf等描述子匹配获得),每一对匹配点,可以得到两个方程。H矩阵中h9是尺度,所以一共有8个未知数,则至少需要4对点就可以解出矩阵H。解H矩阵常用的一个方法是SVD分解,以后我们会讲一下SVD分解。

这里给出MATLAB中求解H的代码:

[U,S,V] =svd(A);
H=V(:,end);
H=reshape(H,3,3);

至此,单应矩阵的推导以及计算就讲解完了。这里仍然需要强调的是:使用单应矩阵,需要确保三维点在一个平面上。(当然并不是必须在一个平面上,因为如果三维点距离相机比较远,三维点之间的距离和其距离相机的距离相比就很小,那就可以认为在一个平面上了。)

本文同步更新微信公众号:

单应矩阵公式推导及计算相关推荐

  1. 透视变换矩阵(单应矩阵)计算:findHomography 与 getPerspectiveTransform

    两者联系:     都用于计算单应矩阵,即解一个线性方程组.由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程). 两者区别:     1.计算 ...

  2. linux vim编辑矩阵乘,LM算法计算单应矩阵

    LM算法计算单应矩阵 slam 单应矩阵 单应矩阵的定义 什么是单应矩阵呢?其实简单来说,就是两个图像之间的变换矩阵.什么意思呢,可以考虑这样一个情形: 你有一个相机,拍摄一个建筑物,首先在某一个视角 ...

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

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

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

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

  5. 多视图几何总结——单应矩阵和基础矩阵的兼容关系

    多视图几何总结--单应矩阵和基础矩阵的兼容关系 多视图几何总结--单应矩阵和基础矩阵的兼容关系 (1)单应矩阵和基础矩阵的兼容性 (2)基础矩阵 -> 单应矩阵 (3)单应矩阵 -> 基础 ...

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

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

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

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

  8. 通过SVD求解单应矩阵

    我们现在知道原则上4对匹配点对就可以唯一确定单应矩阵,但是在实际应用中我们无法保证两个视图严格满足使用条件(只有旋转变换:远景:平面场景),所以要使用拟合的方法求一个最优解.现在就来以SIFT算法源码 ...

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

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

  10. MVG读书笔记——单应矩阵估计这件小事(二)

    还是以两幅图像进行单应矩阵求解为例,上面讲到使用DLT算法一对对应点之间可以构成一个方程组Ah=0Ah=0,其中A为一个2×92 \times 9的矩阵.由此只需要4个点就可以求解出H矩阵.但是在实际 ...

最新文章

  1. 诊断Java中的内存泄露
  2. PHP安装laravel(win+linux)
  3. 华清远见java考试题_Java面试题,你能答对几个?
  4. Python中__new__和__init__区别
  5. 【数据结构与算法】之面试必考的“二分算法”系统梳理
  6. kruskal算法java_克鲁斯卡尔算法(Kruskal)的java实现
  7. 数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)
  8. 数据库建表赋予权限语句
  9. 汇编语言:实验7寻址方式在结构化数据访问中的应用
  10. foobar2000 Mac版终于来了
  11. mysql有to char函数吗_mysql 类似to_char() to_date()函数
  12. 问题 E: 天宝便利店
  13. 墙裂推荐!看完全面掌握,最详细的 Docker 学习笔记总结(2021最新版)
  14. NLP Prompting for Text Classification(1)
  15. 关于 git 的用法
  16. [c语言]倒置字符串 -牛客网
  17. 详解Bash命令行处理
  18. 使用基于时间的关系加权标准来改善社交网络中的链接预测
  19. BIOS实战之读写逻辑设备(SIO)
  20. 【网络科学0】新的开始

热门文章

  1. rk3288问题总结!
  2. mysql数据库原理及应用书籍_《MySQL数据库原理及应用》 【正版电子纸书阅读_PDF下载】- 书问...
  3. 数据库原理及应用教程课后习题参考答案
  4. python爬虫毕业论文大纲参考模板_毕业论文大纲参考模板.docx
  5. [ZZ]DevExpress Windows Form(1) DevExpress控件之主题
  6. 新建文件夹时找不到该项目
  7. 【电脑运用及修理】连接不到网站服务器解决方案【win10】
  8. HTML网页设计:十一、表单
  9. 树莓派控制台达伺服控制器
  10. visio2019 专业版,两种方法