Single-View Geometry
1. Homography 单应变换

Homography converts one Convex Quadrilateral to another,也称 Projective Transform 投影变换
Convex Quadrilateral 凸四边形
四边形的所有内角
,所有对角线都在形状内
Assume the transform from Image B
不变量:4个共线点的 cross-ratio
-
自由度:8 DOF
对 Homography 进行 scaling 是不会影响其效果的,因此可以 scale with
这样得到的新矩阵就只有 8个参数了
1.1 投影 v.s. 透视

补充材料里的 Perspectivity (see 3.2.2) 看起来和 Projectivity (Homography) 非常相似,但是二者并不相同,透视只是投影的一种
Projectivity 是纯数学的二维平面变换
Perspectivity 有物理限制,是专门描述三维场景映射到二维平面的变换
1.1.1 Example 1
现实中,多个 Perspectivity 可以组成一个 Projectivity,但不一定仍然是 一个Perspectivity

上图中,Image 1 和 Image 2 是在不同角度拍下的 ABC 的照片
-
Perspectivity
这两个变换都遵循了三维到二维的透视投影
-
Projectivity
这个变换几乎完全无视物理法则,所以不能直接用 单一的perspectivity 描述了
1.1.2 Example 2

-
左图 Image 1 & Image 2
相机在不同位置拍摄同一物体得到的图片
可以通过多个 perspectivity 组合成 perspective homography 用于变换
-
右图 Image 1 & Image 2
相机在相同位置旋转后拍摄同一物体得到的图片,有 common center of projection
但是没有 common plane!两张图片只共同包含了物体的一部分(x 与 x‘),不存在能用 perspectivity 的结构
只能用 non-perspective homography 变换这两张图的一部分
1.2 矩阵求解 & 图像拼接
1.2.1 Image Stitching

如上图所示,相机绕一个 common center of projection 旋转拍摄三张图片
若想它们投影到一个新的平面
从 到 从 到 从 到
Homography 按照需要的变换顺序相乘即可合并
1.2.2 求解 Homography
常用的方法是 Direct Linear Transformation (DLT)
-
Requirement
a set of AT LEAST 4 pairs of matching points between Image 1 and Image 2

-
Computation
虽然看起来有 9 个未知参数,但是如 1. 开头所言,homography 可以转化为只有 8 个未知量的矩阵
展开处理后得到
整理
然后变回矩阵
只需要把已有的 Matching Point Pairs 代入上式,然后就可以 Stacking Matrix,最后得到
-
齐次线性方程组
求 9 个参数
-
一般线性方程组
求 8 个参数
这是一个 Overdetermined System of Equations,照着补充材料里介绍的解法求就好了 (see 3.1)
-
2. Single-View Geometry 单视几何
2.1 无穷
2.1.0 基础定义
-
定义:直线

一条直线
可以如此表示变成矩阵形式
这种
的表达式其实就是 在齐次形式下的直线法向量,你从它和直线上点的点乘结果为 0 就可以看出来 -
定义:交点

两条直线
与 的交点 为证明如下,众所周知 (see 3.3)
Cross Product of two vectors is a vector orthogonal to both
两个垂直的向量之点乘一定是 0
因此有
所以
一定在 和 上,即两线之交点 -
定义:平行线
设定两条直线
变成比较熟悉的形式
若
与 平行,则一定满足
2.1.1 无穷远点 (2D)
设定两条平行线

则其交点
由于两条线平行,所以有
代入两线交点矩阵可知其第三维一定是 0
由于
而满足这一条件的只有
不信你可以代入点在线上的点乘条件看看,方便起见,我们用前者
2.1.2 无穷远线 (2D)

无穷远线定义式
证明如下,所有无穷远点都可以写成
二者点乘可得
满足点在线上的条件,
2.1.3 结论扩张到 3D
无穷远的结论扩张到 3D 空间非常方便
-
3D 空间的面

变成矩阵形式
这种
的表达式其实就是 在齐次形式下的平面法向量,你从它和平面上点的点乘结果为 0 就可以看出来 -
无穷远点
-
无穷远面

2.2 消失
2.2.0 “无穷” 变换
对 无穷远点 / 线 分别进行 Perspective / Affine Transform
-
无穷远点
点到点的变换,
和 通过 相互转换使用一个非常简单的无穷远点
-
Perspective Transform
此时变换后的点的
因此:透视变换后无穷远点不再是无穷远点!
-
Affine Transform
此时变换后的点的
因此:仿射变换后无穷远点仍然是无穷远点!
-
-
无穷远线
线到线的变换
已知
在直线 上, 在直线 上, 和 通过 相互转换众所周知,
,非常好用由于
,所以
-
Perspective Transform
透视变换后无穷远线不再是无穷远线!
-
Affine Transform
仿射变换后无穷远线仍然是无穷远线!
以上结果其实很好理解:仿射变换会保留平行线的平行性,但是透视变换则不会
2.2.1 Vanishing Point 影消点
即世界坐标系中的无穷远点
本部分我们主要关注的透视变换为 Camera Matrix
影消点对应的是现实世界里的无穷远点,但它本身不是无穷远点

设定
设定 世界坐标系 = 相机坐标系,因此投影所用的 Camera Matrix 为
方便起见,设定
那么影消点
两种写法都可以
2.2.2 Vanishing Line 影消线
即世界坐标系中的无穷远线
本部分我们主要关注的透视变换为 Camera Matrix
影消线对应的是现实世界里的无穷远线,但它本身不是无穷远线

下图中黄色的线为影消线

除了Image Plane 上的影消线

那么影消线
三维世界中
二维 Image Plane 中
与之前的 “点在面上” 公式对比可得
与
的定义式对比可知此时
在平面法向量里代表 offset,此平面过相机光心,那么 offset = 0 就非常合理了
定义平面法向量
2.2.3 Summary
-
Image Plane 上影消点
与对应三维世界里平行线方向 的关系为 -
Image Plane 上影消线
与对应三维世界里穿过相机光心的平面法向量方向 的关系为
Remainder:
为相机内参
2.3 单视重构
2.3.1 两组平行线的夹角
下图中
求这两组平行线的夹角

-
已知
平行线方向可表示为 (see 2.2.3)
两个矩阵点乘可表示为 (see 3.3.1)
-
求解
由于
本身就是单位向量,所以不再需要分母上的模了设定
,展开整理可得
以下是一些重要的,能利用的特性
-
夹角
的性质若
-
公式
的性质以下性质与相机 Intrinsic Matrix
相关-
为对称矩阵 -
若 Image Plane 是零倾斜,则
即
-
若 Image Plane 是正方形像素,则
,即
且 -
有 5 个自由度因为构成
的 一共只有 5 DOF
-
2.3.2 单视图场景恢复

-
Step 1: 求 Intrinsic Matrix
从上图可以找出三组相互垂直 (即夹角
) 的平行线
依据夹角
的性质一共可以得到三组公式但是 Intrinsic Matrix 一共有 5 DOF,光给 3 个公式作为约束是不够的!
所以额外增加两个假设
Image Plane 零倾斜
Image Plane 为正方形像素
追加两个新的约束条件
这样一来
就变成只有 3 DOF 了!可以考虑整体除一下
,然后就只有 3 个未知量了,反正对 做 scaling 不会影响其效果得到
之后就可以分解,然后得到 Intrinsic Matrix -
Step 2: 恢复场景平面
现在有 Intrinisc Matrix
,有 Vanishing Line取两组同一平面上的平行线的影消点 Vanishing Point,就能找到影消线

那么找到相机参考系中的三个场景平面法向量方向
就很好求了 -
Result
最后恢复出来一个 可以拖动查看的 3D 平面场景,下图是其中一个视角

2.3.3 单视重构的弊端
需要很多先验信息:
手动选择 Vanishing Lines / Points
手动判断 点/线/面 对应关系
难以找出以上信息的实体恢复不了
下图中,红框和绿框内的平面可以恢复,但是黄框内的人是恢复不出来的!

3. 补充材料
3.1 最小二乘法 Least Squares
The method to solve problems in the form
3.1.1 线性方程组
已知线性方程组
转化成 matrix form
若此时矩阵
此时可求满足方程组条件的最小二乘解
[解法]:
SVD 奇异值分解
-
定义并计算如下内容
-
为 Diagonal Matrix 上的第 个元素
3.1.2 齐次线性方程组
已知齐次线性方程组
转化成 matrix form
若此时矩阵
此时可求满足方程组条件的最小二乘解
为何设定
的 magnitude = 1? well,反正
的scale 多大多小都不会影响结果为 0,而设定 magnitude = 1 会非常方便 那就这么设定叭 ()
[解法]:
SVD 奇异值分解
为 的最后一列
3.2 Projection Geometry 投影变换
3.2.1 仿射变换 Affine Transform
Transformation Matrix 的最后一行保持

不变量:平行线之平行性,平行线之长度比,各区域面积比
自由度:6 DOF
3.2.2 透视变换 Perspective Transform
Transformation Matrix 的 0 部分变成一个全新的参数组

不变量:4个共线点的 cross-ratio
自由度:8 DOF
3.3 矩阵点乘 & 叉乘
很难绷,但是我还是写在这里吧
3.3.1 矩阵点乘
Given
二者点乘为
或者用几何上的定义
其值相当于:
向量
于向量 上之投影的长度 向量 的长度
3.3.2 矩阵叉乘

Given
二者叉乘为
或者也可以表示为