对极几何与极点极线推导梳理
1. 对极几何约束(Epipolar Constraint)推导
1.1 符号定义
| 符号 | 含义 |
|---|---|
| PPP | 世界坐标系下的三维点 |
| p1,p2p_1,p_2p1,p2 | 像素坐标 (2D) |
| x1,x2x_1,x_2x1,x2 | 归一化平面坐标 (Normalized coords) |
| KKK | 相机内参矩阵 |
| R,tR,tR,t | 相机2相对于相机1的旋转与平移 |
| EEE | 本质矩阵 (Essential Matrix) |
| FFF | 基础矩阵 (Fundamental Matrix) |
1.2 推导过程
-
投影方程:
d1p1=KP(1) d_1 p_1 = K P \qquad (1) d1p1=KP(1)
d2p2=K(RP+t)(2) d_2 p_2 = K (R P + t) \qquad (2) d2p2=K(RP+t)(2)
-
归一化坐标:
消除内参 KKK,得到归一化坐标 x=K−1px = K^{-1} px=K−1p:
d1x1=P(3) d_1 x_1 = P \qquad (3) d1x1=P(3)
d2x2=RP+t(4) d_2 x_2 = R P + t \qquad (4) d2x2=RP+t(4)
-
消元与叉积:
将 (3) 代入 (4) 消去 PPP:
d2x2=d1Rx1+t d_2 x_2 = d_1 R x_1 + t d2x2=d1Rx1+t
两边左乘 t∧t^\wedget∧(反对称矩阵,表示叉乘 t×t \timest×):
t∧d2x2=t∧d1Rx1+t∧t t^\wedge d_2 x_2 = t^\wedge d_1 R x_1 + t^\wedge t t∧d2x2=t∧d1Rx1+t∧t
由于 t∧t=0t^\wedge t = 0t∧t=0,简化为:
d2(t×x2)=d1(t×Rx1) d_2 (t \times x_2) = d_1 (t \times R x_1) d2(t×x2)=d1(t×Rx1)
-
点积归零:
两边左乘 x2Tx_2^Tx2T:
d2x2T(t×x2)=d1x2T(t×Rx1) d_2 x_2^T (t \times x_2) = d_1 x_2^T (t \times R x_1) d2x2T(t×x2)=d1x2T(t×Rx1)
左边 x2T(t×x2)=0x_2^T (t \times x_2) = 0x2T(t×x2)=0(叉乘结果垂直于原向量,点积为0),故:
x2T(t∧R)x1=0 x_2^T (t^\wedge R) x_1 = 0 x2T(t∧R)x1=0
-
最终形式:
- 本质矩阵 :E=t∧RE = t^\wedge RE=t∧R,满足 x2TEx1=0x_2^T E x_1 = 0x2TEx1=0。
- 基础矩阵 :F=K−TEK−1F = K^{-T} E K^{-1}F=K−TEK−1,满足 p2TFp1=0p_2^T F p_1 = 0p2TFp1=0。
2. 极点(Epipole)与极线(Epipolar Line)求解
2.1 几何定义
- 极点 (e):另一个相机光心在当前图像上的投影。
- 极线 (l):空间点所在的射线投影在图像上形成的直线。
2.2 极线求解
给定基础矩阵 F21F_{21}F21(从图1到图2的映射):
-
图像1中的点 p1p_1p1 在 图像2 中对应的极线 l2l_2l2:
l2=F21p1 l_2 = F_{21} p_1 l2=F21p1
-
图像2中的点 p2p_2p2 在 图像1 中对应的极线 l1l_1l1:
l1=F21Tp2 l_1 = F_{21}^T p_2 l1=F21Tp2
2.3 极点求解(核心)
极点满足:极点在其对应图像的极线上永远成立。
求解图像1的极点 e1e_1e1
-
e1e_1e1 是相机2的光心投影。当图像1的点取 e1e_1e1 时,对应的极线在图像2中退化(过原点),即 F21e1=0F_{21} e_1 = 0F21e1=0。
-
计算 :e1e_1e1 是 F21F_{21}F21 的右零空间(Null Space)。
F21e1=0 F_{21} e_1 = 0 F21e1=0
求解图像2的极点 e2e_2e2
-
e2e_2e2 是相机1的光心投影。对于图像2中的任意极线 l2l_2l2,都有 e2Tl2=0e_2^T l_2 = 0e2Tl2=0。
代入 l2=F21p1l_2 = F_{21} p_1l2=F21p1,得 e2TF21p1=0⇒(F21Te2)Tp1=0e_2^T F_{21} p_1 = 0 \Rightarrow (F_{21}^T e_2)^T p_1 = 0e2TF21p1=0⇒(F21Te2)Tp1=0。
-
计算 :e2e_2e2 是 F21F_{21}F21 的左零空间。
F21Te2=0 F_{21}^T e_2 = 0 F21Te2=0
数值解法(SVD)
对 FFF 进行奇异值分解 F=UΣVTF = U \Sigma V^TF=UΣVT:
- e1e_1e1 对应 VVV 的最后一列(对应最小奇异值0)。
- e2e_2e2 对应 UUU 的最后一列(对应最小奇异值0)。
3. 区分 e1,e2,l1,l2e_1,e_2,l_1,l_2e1,e2,l1,l2 与 FFF 的对应关系
这是最容易混淆的部分,关键在于明确 FFF 的下标定义。
3.1 核心原则
FABF_{AB}FAB 表示将图像 BBB 中的点映射到图像 AAA 中的极线。
极点 eAe_AeA 是"另一个相机(BBB)"在"图像 AAA"上的投影。
下标约定 :FABF_{AB}FAB 的下标 AAA 表示目标图像 (极线所在图像),BBB 表示源图像 (特征点所在图像)。因此 F21F_{21}F21 将图像1(源)中的点映射到图像2(目标)中的极线。
3.2 对照表
假设我们定义 F21F_{21}F21 (即方程 p2TF21p1=0p_2^T F_{21} p_1 = 0p2TF21p1=0):
| 对象 | 物理意义 | 数学表达 | 求解方程 |
|---|---|---|---|
| p1p_1p1 | 图像1中的特征点 | 已知 | -- |
| p2p_2p2 | 图像2中的特征点 | 未知/已知 | -- |
| l2l_2l2 | 图像2中的极线 | l2=F21p1l_2 = F_{21} p_1l2=F21p1 | -- |
| l1l_1l1 | 图像1中的极线 | l1=F21Tp2l_1 = F_{21}^T p_2l1=F21Tp2 | -- |
| e1e_1e1 | 相机2 光心在图像1上的投影 | 图像1的极点 | F21e1=0F_{21} e_1 = 0F21e1=0 |
| e2e_2e2 | 相机1 光心在图像2上的投影 | 图像2的极点 | F21Te2=0F_{21}^T e_2 = 0F21Te2=0 |
3.3 方向反转的情况
如果定义 F12F_{12}F12 (即方程 p1TF12p2=0p_1^T F_{12} p_2 = 0p1TF12p2=0),则所有关系反转:
| 对象 | 求解方程 (针对 F12F_{12}F12) |
|---|---|
| e1e_1e1 (图像1极点) | F12Te1=0F_{12}^T e_1 = 0F12Te1=0 |
| e2e_2e2 (图像2极点) | F12e2=0F_{12} e_2 = 0F12e2=0 |
3.4 记忆口诀
-
"点在矩阵右边" :如果 FFF 乘以 p1p_1p1 得到 l2l_2l2,那么 FFF 就是从1到2的映射(即 F21F_{21}F21)。
-
"极点找零空间"(通用规则):
- 对于基础矩阵 FijF_{ij}Fij(从图像 jjj 到图像 iii):
- 图像 jjj 的极点 eje_jej 满足 Fijej=0F_{ij} e_j = 0Fijej=0(右零空间)
- 图像 iii 的极点 eie_iei 满足 FijTei=0F_{ij}^T e_i = 0FijTei=0(左零空间)
- 具体地(当使用 F21F_{21}F21 时):
- 求 图像1的极点 e1e_1e1 :解 F21e1=0F_{21} e_1 = 0F21e1=0
- 求 图像2的极点 e2e_2e2 :解 F21Te2=0F_{21}^T e_2 = 0F21Te2=0
- 对于基础矩阵 FijF_{ij}Fij(从图像 jjj 到图像 iii):
-
物理验证 :极点一定是另一个相机光心 的位置。如果你算出来的 e1e_1e1 不在图像1上,或者位置不对,立刻检查 FFF 的定义方向。