多视图几何--恢复相机位姿/内参的几种方法

恢复相机位姿的几种方法

1分解投影矩阵

1.1投影矩阵分解为相机内外参矩阵的完整解析

投影矩阵(Projection Matrix)是计算机视觉中将三维世界点映射到二维像素坐标的核心工具,其本质是相机内参矩阵(Intrinsic Matrix)和外参矩阵(Extrinsic Matrix)的联合作用。


一、投影矩阵的数学构成

投影矩阵 P P P 是一个 3 × 4 3 \times 4 3×4 的矩阵,其表达式为:
P = K ⋅ R ∣ t P = K \cdot R \\ \| \\ t P=K⋅R ∣ t

其中:

  • K K K 是内参矩阵( 3 × 3 3 \times 3 3×3),包含焦距 f x , f y f_x, f_y fx,fy 和主点坐标 ( c x , c y ) (c_x, c_y) (cx,cy),形式为:
    K = f x 0 c x 0 f y c y 0 0 1 K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1
  • R ∣ t R \\ \| \\ t R ∣ t 是外参矩阵( 3 × 4 3 \times 4 3×4),由旋转矩阵 R R R( 3 × 3 3 \times 3 3×3)和平移向量 t t t( 3 × 1 3 \times 1 3×1)组成,表示世界坐标系到相机坐标系的变换。

关键性质

  1. 投影矩阵前三列 P : , 1 : 3 P_{:,1:3} P:,1:3 对应 K ⋅ R K \cdot R K⋅R,第四列 P : , 4 P_{:,4} P:,4 对应 K ⋅ t K \cdot t K⋅t。
  2. 任何非奇异的前三列矩阵均可通过分解唯一确定 K K K 和 R R R。

二、分解步骤与数学方法
1. 分离内参矩阵 K K K 和外参旋转矩阵 R R R

对投影矩阵的前三列进行 RQ分解 (或等效的 QR分解 ):
K ⋅ R = P : , 1 : 3 ⇒ RQ分解 ⇒ K , R K \cdot R = P_{:,1:3} \quad \Rightarrow \quad \text{RQ分解} \quad \Rightarrow \quad K, R K⋅R=P:,1:3⇒RQ分解⇒K,R

  • RQ分解 :将矩阵分解为一个上三角矩阵(对应内参 K K K)和一个正交矩阵(对应旋转 R R R)。由于 K K K 是上三角矩阵, R R R 是正交矩阵(满足 R T R = I R^T R = I RTR=I),此分解是唯一的。
  • 验证分解结果
    • 检查 K K K 的最后一行为 0 , 0 , 1 0, 0, 1 0,0,1,否则需对矩阵进行归一化。
    • 若分解后 R R R 的行列式不为 1 1 1(即非旋转矩阵),需调整符号以保证其为合法旋转矩阵。
2. 求解平移向量 t t t

从投影矩阵第四列提取 K ⋅ t K \cdot t K⋅t,并通过逆运算得到平移向量:
t = K − 1 ⋅ P : , 4 t = K^{-1} \cdot P_{:,4} t=K−1⋅P:,4
示例 :若 K = f x 0 c x 0 f y c y 0 0 1 K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1 ,则 K − 1 = 1 / f x 0 − c x / f x 0 1 / f y − c y / f y 0 0 1 K^{-1} = \begin{bmatrix} 1/f_x & 0 & -c_x/f_x \\ 0 & 1/f_y & -c_y/f_y \\ 0 & 0 & 1 \end{bmatrix} K−1= 1/fx0001/fy0−cx/fx−cy/fy1 。

3. 分解的唯一性与约束条件
  • 尺度等价性 :投影矩阵 P P P 的尺度不确定性(即 P P P 和 λ P \lambda P λP 等价)需通过附加约束(如焦距的物理单位)确定。
  • 非奇异条件 :分解要求 P P P 的前三列矩阵非奇异(即 det ⁡ ( P : , 1 : 3 ) ≠ 0 \det(P_{:,1:3}) \neq 0 det(P:,1:3)=0)。

2分解单应矩阵

2.1世界坐标到像素坐标

当世界坐标为平面时,投影矩阵此时为特殊的单应矩阵,利用张正友标定法原理可以求解相机位姿。

2.2像素坐标到像素坐标

当单应矩阵描述两张照片的射影关系时,有数值法和解析法:

《Motion and structure from motion in a piecewise planar environment》

《3d reconstruction based on homography mapping》

《Deeper understanding of the homography decomposition for vision based control》


3分解本质矩阵

3.1 基本矩阵分解得到相机位姿的完整解析

在双目视觉或多视图几何中,基本矩阵(Fundamental Matrix)描述了不同视角间图像点对应的对极几何约束关系。分解基本矩阵以恢复相机位姿(旋转矩阵 R R R和平移向量 t t t)是三维重建与SLAM系统的核心步骤。以下结合数学推导、分解方法及工程实践,详细阐述其实现过程。


一、基本矩阵与本质矩阵的关系

基本矩阵 F F F和本质矩阵 E E E是理解对极几何的关键:

  1. 基本矩阵 F F F

    定义两视图间的对极约束关系,满足:
    x ′ T F x = 0 \mathbf{x}'^T F \mathbf{x} = 0 x′TFx=0

    其中 x \mathbf{x} x和 x ′ \mathbf{x}' x′为归一化平面坐标点。

  2. 本质矩阵 E E E

    当相机内参 K K K已知时, E E E与 F F F的关系为:
    E = K T F K E = K^T F K E=KTFK
    E E E可分解为旋转矩阵 R R R和平移向量 t t t的组合:
    E = t × R E = t_\times R E=t×R

    其中 t × t_\times t×为平移向量 t t t的斜对称矩阵。


二、分解本质矩阵的数学步骤
1. 奇异值分解(SVD)

对本质矩阵 E E E进行SVD分解:
E = U Σ V T E = U \Sigma V^T E=UΣVT

其中 Σ = diag ( σ 1 , σ 2 , 0 ) \Sigma = \text{diag}(\sigma_1, \sigma_2, 0) Σ=diag(σ1,σ2,0), σ 1 ≈ σ 2 \sigma_1 \approx \sigma_2 σ1≈σ2。根据Hartley的归一化方法, Σ \Sigma Σ可替换为 diag ( 1 , 1 , 0 ) \text{diag}(1,1,0) diag(1,1,0)以消除尺度影响。

2. 构造候选解

分解后,旋转矩阵 R R R和平移向量 t t t的可能组合为:
R = U W V T 或 R = U W T V T R = U W V^T \quad \text{或} \quad R = U W^T V^T R=UWVT或R=UWTVT
t = U ⋅ 3 或 t = − U ⋅ 3 t = U_{\cdot 3} \quad \text{或} \quad t = -U_{\cdot 3} t=U⋅3或t=−U⋅3

其中:
W = 0 − 1 0 1 0 0 0 0 1 W = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} W= 010−100001

这会产生四组候选解 ( R 1 , t 1 ) , ( R 1 , − t 1 ) , ( R 2 , t 1 ) , ( R 2 , − t 1 ) (R_1, t_1), (R_1, -t_1), (R_2, t_1), (R_2, -t_1) (R1,t1),(R1,−t1),(R2,t1),(R2,−t1)。

3. 解的唯一性筛选

通过正深度约束筛选正确解:

  1. 对匹配点对 x ↔ x ′ \mathbf{x} \leftrightarrow \mathbf{x}' x↔x′,计算三角化后的3D点 P P P在相机坐标系下的深度 Z Z Z。
  2. 若所有点的深度 Z Z Z均为正,则该解为物理可行解。
  3. 若存在多组可行解,需结合多视图几何或先验信息进一步判断。

4PnP方法

通过已知的3d点和对应的2d点,直接求解相机位姿,主要有直接线性变换,p3p,EPnP,BA等。

参考:

MVG

slam14讲
1
2

相关推荐
兵慌码乱21 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack203 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树3 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE2124 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2124 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术4 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦4 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试