持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
对极几何和三维重建基础
在没有一些先验知识前提下,很难用一张图像来恢复 3 维世界的整个结构,这是由于在从 3维到 2维投影过程中丢失了一些信息。
三角化

P=xl×xr
两条直线叉乘得到点就是两条射线的交点,如何理解这件事呢? 我们知道两个向量叉乘得到一个向量是垂直于 xl 和 xr 所在平面的,所以 xlTP=0 而且 xrTP=0 也就是 P 点即在 xr 这条直线上,又在 xl 这条直线上。所以 P 是两条射线的角点。
需要在同一个坐标系下,两条直线叉乘才有意义。这个过程叫做三角化。
在实际情况由于噪声存在,两条直线很难相交。
线性解法
{pl=MlP=Kl[I0]Ppr=MrP=Kr[RT]P
ul=ml,3Pml,1Pvl=ml,3Pml,2Pur=mr,3Pmr,1Pvr=mr,3Pmr,2P
ml,1P−ul(ml,3P)=0ml,2P−vl(ml,3P)=0mr,1P−ur(mr,3P)=0mr,2P−vr(mr,3P)=0
最小二乘解
对于 A 矩阵进行奇异值分解,A=UDVT拿到 V 矩阵的最后一列作为 P
非线性解
定义一个能量函数 d(pl,MlP)+d(pr,MrP)
不过以上都是理想情况,通常许多参数我们是不知道的
- 例如我们知道 pl 和 pr 在像平面的坐标,并且已知摄像机的内参 Kl 和 Kr 去求解摄像机间的变换矩阵 R,T 以及三维点 P 的坐标
- 或者只知道pr 和 pl 在像平面的坐标
多视图几何
- 估计摄像机的内、外参数,也就是摄像机标定
- 研究同一场景下 P 点在一个图像中点 pl 与另个一图像中 pr 的对应关系
对极几何
对极几何
描述在两个视点像平面中对应点 pl 和 pr 之间的关系,两个视点图像间的几何关系。

接下来介绍几个概念
一些性质
- 极平面相交于基线
- 因为极平面在右侧平面上投影为极线 er,ur 的连线,所以 ul 在极平面上,所以一定落在 ur 和 er 这条极线上,这是对于成像点的一个约束,全图搜索问题在极线上进行搜索
平行视图

- 两个图像平面平行
- 基线平行于图像平面,极点 el 和 er 位于无穷远处
- 极线平行于图像坐标系的 u 轴
解决问题一般思路

- P 为场景中一个 3 维点
- Ol 和 Or 为两个观测场景的视点(摄像机位置)
- u^l 和 v^l 和 u^r 和 v^r 构成两个视平面
- ul 和 ur 是 P 在两个不同视点的像平面上位置
- t,R 为两个摄像机中心相对位置的变换矩阵
极点
这里 el 和 er 分别为 Ol 和 Or 在右侧像平面和左侧像平面上的点。
极平面
也就是右两个摄像机中心点 Ol 和 Or和场景点 P 围成的平面为极平面。
本质矩阵
本质矩阵对规范化规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述。
K=⎣⎡100010001⎦⎤
p′=⎣⎡xyz⎦⎤=⎣⎡100010001000⎦⎤⎣⎡xyz1⎦⎤
规范化摄像机好处就是在像素平面内的 p′ 的齐次坐标就可以看做 p 点在 3维坐标系下坐标,也就是 (u,v,1)
那么 pr 在 Or 坐标系下,也就是 (ur,vr,l)
pr=Rpr′+Tpr′=RT(pr−T)
那么从而了解到 pr 在 Ol 下坐标为 RTpr−RTT
- pr 在 Ol 坐标系为 RTpr−RTT
- Or 在 Ol 坐标系坐标 −RTT
OrOl 和 prO1 这两个向量叉乘得到一个垂直于极平面的向量
−RTT×(RTpr−RTT)RTT×RTpr−RTT×RTT
RT[T×]RTpr
首先我们来这个负号为什么没有了? 这是因为如果 OrOl 和 OlOr 效果一样,这里负号只代表方向,而且向量和自己进行叉乘得到向量是一个 0 向量
⎣⎡0az−ay−az0axay−ax0⎦⎤
from numpy.linalg import matrix_rank
import numpy as np
ax = 1
ay = 3
az = 2
a = np.array([
[0,-az,ay],
[az,0,-ax],
[-ay,ax,0]
])
print(matrix_rank(a))
将向量 T 经过一个旋转 RT 然后再去和一个向量 pr 经过一个旋转变换 RT
[RT(T×pr)]Tp(T×pr)TRpprT[T×]TRp
−prT[T×]Rp=0prT[T×]Rp=0
E=[T×]R=T×R
- pl 对应的极线是 xr(xr=Epl) 这是因为 prTEpl=0 那么也就是 prTxr=0 所以 xr=Epl
- pr 对应的极线 xl=ETpr
- Eel=0 和 erTE=0
xrTpr=0(Epl)Tpr=0(Epl)Ter=0plTETer=0
E 是奇异的(秩为 2 ) 5 个自由度(3旋转,3平移 - 1 一个自由度)
基础矩阵
8 点法(8-point algorithm)
已知条件是给定一个匹配点 {xi,xi′}
问题是要估计基础矩阵(Fundamental Matrix) F
假设这里有 M 对个点,两两匹配
{xm,xm′}m∈{1,…,M}
xm′TFxm=0
pr=R(pl−T)
我们来假设将世界坐标系设置在第 1 个摄像机的坐标系上,那么对于第二个摄像机坐标系原点 Or 就是先经过一个旋转 R 然后再经过一个平移来到
S=[]
数据归一化
将选取点进行归一化处理,也就是将这些点平移到远点,然后在进行一定缩放来保证这些点在一定范围内
- 这些点的中心位于原点
- 各个点到原点的均方根距离等于 2