单应矩阵的推导与理解(R, t, {n,d})

单应矩阵的推导与理解

转载自知乎 [北麓牧羊人] 的文章:https://zhuanlan.zhihu.com/p/138266214)

〇 、单应矩阵介绍

单应矩阵 H (Homography),约束了同一 3D 空间点在两个像素平面的 2D 齐次坐标。

[公式]

展开:

[公式]

正比于符号[公式]可以理解为单应矩阵 H 约束了[公式][公式]的方向是同方向,而不约束尺度。可通过叉乘计算消去齐次的尺度因子,因此上面的约束还可以表达为如下形式:

[公式]

因为[公式][公式]同方向,所以其叉乘结果为[公式]向量。

依据推导可得,单应矩阵 H 由两相机旋转和平移信息(R,t),两相机内参矩阵 K,平面参数 (n,d) 组成:

[公式]

下面给出上述单应矩阵公式的推导和理解过程。


一、基本设定

1. 相机系坐标

3D 空间点在相机系下的坐标 p 为:

[公式]

2. 像素系坐标

相机系坐标投影到像素系的齐次坐标:

[公式]

其中:

  • q 为像素系齐次坐标;
  • K 为相机内参矩阵:[公式]

3. 平面参数

3D 空间点 p 所在的平面在相机系下的平面参数为:

[公式]

其中:

  • n 为平面法向量;
  • d 为相机系原点到平面距离。

3D 空间点 p 位于平面 { n,d} 上,由以下方程表达:

[公式]


二、平面参数:由像素系计算相机系

1. 由像素系坐标计算相机系坐标:

[公式]

由于存在未知的深度 z ,因此无法由像素系计算出相机系坐标。

2. 平面参数计算深度

结合(1.4)(2.1)得:

[公式]

整理得:

[公式]

可见:通过 3D 点所在平面参数和像素系坐标 q 可以计算出 3D 点的深度 z 。

结合(2.1)(2.4)得:

[公式]

可知,加入平面信息 { n,d } 后,可完全由像素坐标还原出相机系坐标。


三、单应矩阵:由像素系 a 计算像素系 b

1. 由 a 系像素计算 b 系像素

有相机系 a 下的点[公式]和 相机系 b 下的点[公式]

[公式][公式]

其中:

  • [公式]表示:1. b 系下 a 系的姿态。2. a 系到 b 系的坐标旋转变换;
  • [公式]表示:1. b 系下 a 系的位置。2. a 系到 b 系的坐标平移变换。

转到对应像素系,有关系:

[公式]

可得到,由 a 系像素表达的 b 系像素:

[公式]

但是存在未知数[公式],所以无法直接通过 a 系像素得到 b 系像素。

2. 加入平面参数

结合(2.4)(3.4)

[公式]

上面推导用到的理论:

  1. [公式]
  2. 齐次坐标与系数无关,因此可省去[公式]

可见,加入 3D 点的平面参数后,可由 a 系下像素坐标完全计算出对应的 b 系下像素坐标。

3. 定义单应矩阵

符号简化:

[公式]

其中[公式]为由像素系 a 到像素系 b 的 单应矩阵

[公式]

单应矩阵包含了相机内参矩阵[公式]、旋转[公式]、平移[公式]和平面参数[公式]信息。引入单应矩阵后,可以直接通过 a 系像素得到 b 系像素。


四、求解单应矩阵

(3.7)给出的单应矩阵的定义是通过旋转平移信息计算的,现实中有时不知道旋转平移信息,而知道两张图像中的匹配点,可以由匹配点计算出单应矩阵。

对于图片上的一对匹配点有如下关系:

[公式]

展开得:

[公式]

1. 单应矩阵有 8 个未知数

因为转换的是齐次坐标,所以单应矩阵 H 与尺度无关,也即 aHH 的作用是相同的,因此自由度为 8,使用[公式]来进行归一化。

[公式]

H 共 8 个未知数,需要 8 个方程来解。

2. 一对匹配点提供 2 个方程

由于是齐次坐标,所以展开是这种形式:

[公式]

3. 四对匹配点提供 8 个方程

[公式]

解此线性方程组,可得 单应矩阵 H

Guess you like

Origin blog.csdn.net/Nismilesucc/article/details/121055231