2022-10-10 更新

个人感想

homography 适用的第一种情况,H 矩阵的组成有R,t,K等信息,很有感觉。
但是适用的第三种情况,H 矩阵直接就用矩阵的 9 个元素来表示,没什么感觉。
更新前的原文推导的公式是第一种情况的公式

homography 的相关说明

Projective Transformations aka Homographies aka Planar Perspective Maps

就是 这三个词同义词

图10-10-1. projectivity 定义。图片来自Multiple View Geometry in Computer Vision P33

图10-10-2. projective transformation 定义。图片来自Multiple View Geometry in Computer Vision P33

注意,可以通过一个 homography 变换将一个二维平面变换到另外一个二维平面,就是两个平面局部坐标系的坐标存在一个变换。

图10-10-3. homography作用于两图像间的例子,来自网课计算机视觉,谭平老师

图10-10-4. 。图片来自Multiple View Geometry in Computer Vision P33

图10-10-5. 。homography 的一个应用,图片来自Multiple View Geometry in Computer Vision P35 # 原文

在下面3种情况中,两个相机的像素点之间可以用一个 homography 矩阵进行转换:

  1. 两个相机看到的 3d 点在一个平面上
  2. 两个相机没有平移只有旋转
  3. 作者感觉就是 central projection 的例子,如2022-10-10更新的图10-10-4所示。

图0. homography 变换的三种适用情况。图片来自Multiple View Geometry in Computer Vision P36

注意,homography矩阵刻画的是一种坐标之间的对应关系。
  
本文推导关于两个 像素坐标系下的 以及 在两个 相机坐标系下的 归一化 成像平面的对应点之间的 homography 矩阵。

图1. 两个相机视角 CCC,C′C^{'}C′ 同时看 3d 空间中 共面 3d点。来自 Visual Odometry on Mobile
Devices for Virtual Walkthroughs page25

首先在,3d场景下,有一个在 平面上的 3d 点 QQQ, 它在相机坐标系 CCC, C′C^{'}C′ 下的 3d 坐标分别是 Q1Q_1Q1​, Q2Q_{2}Q2​。已知,两个相机坐标系的关系如下:

Q2=RQ1+t(1)Q_{2}= RQ_{1}+t \tag{1}Q2​=RQ1​+t(1)

其中 RRR, ttt 分别为 从相机坐标系 CCC 转换到 C′C'C′ 的 3×33\times33×3, 3×13\times13×1 的旋转矩阵平移向量
又由 图1 所示, 3×13\times13×1 向量 nnn 是平面的一个单位法向量,而且它指向相机 C 光心的那侧(因为一个平面的法向量有两个方向,本文故指定其方向)。故
d=−nTQ1(2)d=-n^{T}Q_{1}\tag{2}d=−nTQ1​(2)
其中 ddd 是三维场景中相机 C 的光心到平面 的距离。
Q1Q_{1}Q1​ 代表由相机 C 的光心指向 三维点Q1Q_{1}Q1​的向量。
对式(2)等式两边同除以 ddd,得
1=−nTQ1d(3)1 = -\frac{n^{T}Q_{1}}{d} \tag{3}1=−dnTQ1​​(3)
根据 式(1)、(2),得
Q2=RQ1−tnTQ1dQ_{2} = RQ_{1}-t\frac{n^{T}Q_{1}}{d} Q2​=RQ1​−tdnTQ1​​
可化为
Q2=(R−tnTd)Q1(4)Q_{2} = (R-t\frac{n^{T}}{d})Q_{1}\tag{4} Q2​=(R−tdnT​)Q1​(4)
注意,提取公共矩阵 QQQ 在原来项中都处于右侧,故提出去后必须放在括号右边,矩阵乘法无交换律。
另一方面,根据相机坐标系的点投影到像素平面,有
s1q1=K1Q1(5)s_{1}q_{1}=K_{1}Q_{1} \tag{5}s1​q1​=K1​Q1​(5)s2q2=K2Q2(6)s_{2}q_{2}=K_{2}Q_{2} \tag{6}s2​q2​=K2​Q2​(6)
其中,q1q_{1}q1​, q2q_{2}q2​ 分别是 Q1Q_{1}Q1​, Q2Q_{2}Q2​ 在各自像素平面上的像素点,K1K_{1}K1​, K2K_{2}K2​ 分别为各自的 3×33\times33×3 相机内参矩阵
进而,将式(4)带入(6),得
s2q2=K2(R−tnTd)Q1(7)s_{2}q_{2}=K_{2}(R-t\frac{n^{T}}{d})Q_{1} \tag{7}s2​q2​=K2​(R−tdnT​)Q1​(7)
根据 式(5)(7),得
s2q2=s1K2(R−tnTd)K1−1q1s_{2}q_{2}= s_{1}K_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1}q_{1} s2​q2​=s1​K2​(R−tdnT​)K1−1​q1​
可化为
q2=sK2(R−tnTd)K1−1q1(8)q_{2}= sK_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1}q_{1} \tag{8}q2​=sK2​(R−tdnT​)K1−1​q1​(8)
其中
s=s1s2s = \frac{s_{1}}{s_{2}}s=s2​s1​​

故从一个像素平面到另一个像素平面的 homography 矩阵
H=K2(R−tnTd)K1−1(9)H = K_{2}(R-t\frac{n^{T}}{d})K_{1}^{-1} \tag{9}H=K2​(R−tdnT​)K1−1​(9)

又 Q1ˉ=K1−1q1(10)\bar{Q_{1}} = K_{1}^{-1}q_{1} \tag{10}Q1​ˉ​=K1−1​q1​(10) Qˉ2=K2−1q2(11)\bar{Q}_{2} = K_{2}^{-1}q_{2}\tag{11}Qˉ​2​=K2−1​q2​(11)

其中 Q1ˉ\bar{Q_{1}}Q1​ˉ​, Qˉ2\bar{Q}_{2}Qˉ​2​ 分别为各自相机坐标系下 normalized相机平面上的 3d 点。
故由式(8)(10)(11),得 各自相机坐标系下 归一化平面上的 homography 矩阵
Hˉ=R−tnTd\bar{H} = R-t\frac{n^{T}}{d}Hˉ=R−tdnT​

应用

  1. 得到一张图像在另外的视角下面的图像。比如想得到道路的俯视图,但是没有俯视图,可以从其他视角的图像通过homography矩阵得到。
  2. 求得 H,K,解算R,t。

参考资料

Pinhole Camera: Homography
Visual Odometry on Mobile Devices for Virtual Walkthroughs
wiki:homography

Homography拓展(含与平面法向量相关的情况)相关推荐

  1. 平面法向量,点云法向量估计及可视化

    目录 单通道深度图像,转三通道法向图像 opencv 平面法向量_任意两平面求夹角 点云3种法向量估计方法及可视化 单通道深度图像,转三通道法向图像 import cv2 import numpy a ...

  2. 【OpenGL】平面法向量、顶点法向量的计算方法

    平面法向量计算 平面法向量知识介绍: 对于平面法向量计算实质就是:平面内两非平行向量的叉积(又称"外积.向量积.叉乘")为该平面的法向量. 根据两向量相乘的前后顺序计算得到两个方向 ...

  3. 大学知识下放高中:平面法向量的求法

    大学知识下放高中:平面法向量的求法9条评论 分享到: 腾讯微博 QQ空间 新浪微博 人人网 开心网 豆瓣 Facebook Twitter 2013-03-26    分类:中学数学教学       ...

  4. 求空间点沿平面法向量与平面交点的坐标

    假定平面方程为: a x + b y − z + d = 0 ax+by-z+d=0 ax+by−z+d=0,空间点坐标为 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0​ ...

  5. Eigen 由三点求平面方程及平面法向量

    Eigen 由三点求平面方程及平面法向量 一.原理 二.Eigen实现 一.原理   已知三点 P 1 ( x 1 , y 1 , z 1 ) P1(x_1,y_1,z_1) P1(x1​,y1​,z ...

  6. 空间平面法向量求法(转)

    一.法向量定义 定义:如果,那么向量叫做平面的法向量.平面的法向量共有两大类(从方向上分),无数条. 二.平面法向量的求法 1.内积法 在给定的空间直角坐标系中,设平面 的法向量=(x,y,1)[或= ...

  7. 求三个点构成平面的平面法向量

    1.三角面法向量 空间已知三点的位置: p1(x1,y1,z1), p2(x2,y2,z2), p3(x3,y3,z3), 令它们逆时针在空间摆放.这样就可以得到平面的两个向量: p1p2 = (x2 ...

  8. 已知三点求平面法向量

    空间已知三点的位置p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),令它们逆时针在空间摆放.这样就可以得到平面的两个向量p1p2(x2-x1,y2-y1,z2-z1),p1 ...

  9. 三维点云处理:3平面法向量估计

    三维点云处理:平面法向量估计 平面的法向量:垂直于平面的直线所表示的向量为该平面的法向量.找一堆点最小特征值对应的特征向量 应用: 1.寻找地面:法向量朝上的 2.分割.聚类算法 一.求法向量的方法: ...

  10. pcl求平面法向量_线性代数6——平面方程与矩阵

    线性方程的几何意义 二元线性方程 该方程是一个二元线性方程组,包含两个方程,每个方程是一条直线,两条直线的交点就是该方程有唯一解,这就是二元线性方程的几何意义. 平面方程 空间内不在同一直线上的三点构 ...

最新文章

  1. SQL SERVER 取所有表及注释 和 字段属性
  2. matlab交流电源并联,交流电路串联谐振和并联谐振的仿真分析
  3. LeetCode LCP 06. 拿硬币
  4. Java学习日报 — 问题记录 — 2021/12/14
  5. L2-022 重排链表-PAT团体程序设计天梯赛GPLT
  6. 杭州一般纳税人和小规模纳税人的区别
  7. AOP如何实现及实现原理
  8. npz文件转为npy_numpy 文件存取 npy、npz
  9. java-assured,如何使用Rest-Assured java中的证书进行HTTPS GET调用
  10. P/O矩阵、R/D矩阵、IPO图、C/U矩阵知识点
  11. Android文件解压
  12. 一个免费全格式MP3音乐播放器的工具
  13. axios封装request配置
  14. 跨境独立站MaTaCart教你怎么查谷歌排名
  15. iOS 下一维码与二维码识别相关资料
  16. Beats 使用详解
  17. HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据方案
  18. https证书产品价格为什么高低不一
  19. java 正则 js_JavaScript RegExp 对象
  20. 2019,不过是另一个开始

热门文章

  1. 如何快速记忆小鹤双拼键位图?
  2. html 刷新页面,javascript刷新页面的几种方法
  3. 教育部双一流计算机科学与技术,双一流大学及学科详情.pdf
  4. Python程序设计题库
  5. C#: 生辰八字五行计算算法
  6. svn和git下载安装
  7. 抖音协议、火山小视频通信协议加密算法研究分析
  8. android pc投屏,如何解决乐播投屏中投屏失败的问题【乐播投屏】
  9. 本页设置mac地址过滤来控制计算机对本无线网络的访问,D-Link无线路由器MAC地址过滤怎么设置...
  10. Java垃圾回收的工作原理和最佳做法