【机器视觉-基础知识】三角测量(Triangulation)

文章目录

三角测量(Triangulation)原理解析

一、基本定义

三角测量(Triangulation) 是通过两台(或多台)相机的投影信息,计算空间点三维坐标的一种方法。

已知:

  • 两个相机的投影矩阵 P 1 , P 2 P_1, P_2 P1,P2
  • 同一空间点在两幅图像中的对应点 p 1 , p 2 p_1, p_2 p1,p2

目标是:

求出三维点 X = X , Y , Z , 1 T X = X, Y, Z, 1^{\mathsf{T}} X=X,Y,Z,1T 的坐标。


二、几何直观

从几何上看:

  • 空间点 X X X 经过两个相机投影到图像上,形成 p 1 p_1 p1 和 p 2 p_2 p2
  • 由相机中心 O 1 O_1 O1、 O 2 O_2 O2 及点 X X X 构成一个三角形
  • 因此称为 "三角测量(Triangulation)"

三角测量的本质:
通过两条视线(射线)的交点来恢复空间点的三维位置。


三、基本数学模型

1. 齐次坐标投影方程

空间点 X X X 与图像点 p p p 的关系为:

p ∼ P X p \sim P X p∼PX

其中:

  • P = K R ∣ t P = K R \| t P=KR∣t 为相机投影矩阵
  • p = x , y , 1 T p = x, y, 1^{\mathsf{T}} p=x,y,1T 为图像点的齐次坐标
  • " ∼ \sim ∼" 表示相差一个比例因子 s s s(同线性)

s p = P X s p = P X sp=PX

比例因子 s s s 实际上就是该三维点在相机坐标系下的深度 Z c Z_c Zc。

对于两台相机:

{ p 1 ∼ P 1 X p 2 ∼ P 2 X \begin{cases} p_1 \sim P_1 X \\ p_2 \sim P_2 X \end{cases} {p1∼P1Xp2∼P2X


四、线性三角化(Linear Triangulation)

对于每个相机的齐次形式投影方程:

s i u i v i 1 = P i X Y Z 1 s_i \begin{bmatrix} u_i \\ v_i \\ 1 \end{bmatrix} = P_i \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} si uivi1 =Pi XYZ1

其中, s i s_i si 是尺度因子(深度)。

则对于每一个相机 i i i 的投影方程:

每个方程有 3 个分量:

s i u i = p i 1 T X , s i v i = p i 2 T X , s i = p i 3 T X s_i u_i = p_{i1}^{\mathsf{T}} \mathbf{X}, \quad s_i v_i = p_{i2}^{\mathsf{T}} \mathbf{X}, \quad s_i = p_{i3}^{\mathsf{T}} \mathbf{X} siui=pi1TX,sivi=pi2TX,si=pi3TX

其中, p i 1 , , p i 2 , , p i 3 p_{i1},, p_{i2},, p_{i3} pi1,,pi2,,pi3 分别是 P i P_i Pi 的第 1、2、3 行向量。

通过消去 s i s_i si:

u i , ( p i 3 T X ) = p i 1 T X u_i ,(p_{i3}^{\mathsf{T}} \mathbf{X}) = p_{i1}^{\mathsf{T}} \mathbf{X} ui,(pi3TX)=pi1TX

v i , ( p i 3 T X ) = p i 2 T X v_i ,(p_{i3}^{\mathsf{T}} \mathbf{X}) = p_{i2}^{\mathsf{T}} \mathbf{X} vi,(pi3TX)=pi2TX

将两式改写为线性方程形式:

( u i , p i 3 T − p i 1 T ) X = 0 (u_i, p_{i3}^{\mathsf{T}} - p_{i1}^{\mathsf{T}}) \mathbf{X} = 0 (ui,pi3T−pi1T)X=0

( v i , p i 3 T − p i 2 T ) X = 0 (v_i, p_{i3}^{\mathsf{T}} - p_{i2}^{\mathsf{T}}) \mathbf{X} = 0 (vi,pi3T−pi2T)X=0

组合两个相机的两视图的方程,可得总共 4 个线性方程:

A X = 0 A \mathbf{X} = 0 AX=0

其中:

A = u 1 p 13 T − p 11 T v 1 p 13 T − p 12 T u 2 p 23 T − p 21 T v 2 p 23 T − p 22 T (矩阵尺寸 4 × 4 ) A = \begin{bmatrix} u_1 p_{13}^{\mathsf{T}} - p_{11}^{\mathsf{T}} \\ v_1 p_{13}^{\mathsf{T}} - p_{12}^{\mathsf{T}} \\ u_2 p_{23}^{\mathsf{T}} - p_{21}^{\mathsf{T}} \\ v_2 p_{23}^{\mathsf{T}} - p_{22}^{\mathsf{T}} \end{bmatrix} \quad \text{(矩阵尺寸 } 4 \times 4) A= u1p13T−p11Tv1p13T−p12Tu2p23T−p21Tv2p23T−p22T (矩阵尺寸 4×4)

解法:通过最小二乘求解 A X = 0 A X = 0 AX=0,即:

X = arg ⁡ min ⁡ ∣ X ∣ = 1 ∣ A X ∣ X = \arg\min_{|X|=1} |A X| X=arg∣X∣=1min∣AX∣

该问题可通过 奇异值分解(SVD) 得到:

A = U Σ V T ⇒ X = V ( : , 4 ) A = U \Sigma V^{\mathsf{T}} \quad \Rightarrow \quad X = V_{(:,4)} A=UΣVT⇒X=V(:,4)

即 V V V 的最后一列,对应最小奇异值。

通过线性三角化(Linear Triangulation),我们最终求得三维空间点的齐次坐标 X = X 1 , X 2 , X 3 , X 4 T X = X_1, X_2, X_3, X_4^{\mathsf{T}} X=X1,X2,X3,X4T

最后将齐次坐标归一化成:

X cart = 1 X 4 X 1 , X 2 , X 3 T = X , Y , Z X_{\text{cart}} = \frac{1}{X_4} X_1, X_2, X_3^{\mathsf{T}} = X,Y,Z Xcart=X41X1,X2,X3T=X,Y,Z

非齐次坐标 X , Y , Z , 1 T X,Y,Z,1^{\mathsf{T}} X,Y,Z,1T


五、几何解释:射线交点

从物理几何意义上,三角测量等价于两条射线的交点:

{ r 1 = O 1 + λ 1 d 1 r 2 = O 2 + λ 2 d 2 \begin{cases} r_1 = O_1 + \lambda_1 \mathbf{d}_1 \\ r_2 = O_2 + \lambda_2 \mathbf{d}_2 \end{cases} {r1=O1+λ1d1r2=O2+λ2d2

其中:

  • O i O_i Oi 为相机中心
  • d i \mathbf{d}_i di 为方向向量(由像素反投影得到)

理论上,两射线应在空间交于一点。

实际由于噪声存在,它们一般不会精确相交,因此取 最近点中点 作为估计点:

X = r 1 ( λ 1 ∗ ) + r 2 ( λ 2 ∗ ) 2 X = \frac{r_1(\lambda_1^*) + r_2(\lambda_2^*)}{2} X=2r1(λ1∗)+r2(λ2∗)

  • r₁(λ₁*):在射线 r₁ 上的某个点。
  • r₂(λ₂*):在射线 r₂ 上的某个点。这两个点之间的欧氏距离 ||r₁(λ₁*) - r₂(λ₂*)|| 是所有可能点对中最小的。
  • 参数 λ₁* 和 λ₂* 就是使这个距离最小化的最优参数。

六、改进方法:最优三角化(Optimal Triangulation)

线性方法简单但对噪声敏感。

可通过最小化 重投影误差(Reprojection Error)获得最优结果:

min ⁡ X ∑ i = 1 2 ∣ p i − π ( P i X ) ∣ 2 \min_{X} \sum_{i=1}^2 |p_i - \pi(P_i X)|^2 Xmini=1∑2∣pi−π(PiX)∣2

其中 π ( ⋅ ) \pi(\cdot) π(⋅) 表示从齐次坐标到像素坐标的投影操作。

该问题为非线性优化 ,可通过 高斯--牛顿法(Gauss--Newton)Levenberg--Marquardt 优化求解。


七、数值稳定性与注意事项

  1. 归一化(Normalization)

    在进行线性三角化前应对图像点坐标进行归一化,以减少数值误差。

  2. 视差角(Baseline)

    当两相机的基线很短或视差很小,三角测量精度会显著下降。

  3. 非线性优化后精化

    通常先用线性三角化求初值,再以最小重投影误差方式进行迭代精化。


八、在 SfM / MVS 中的作用

应用场景 作用
SfM(Structure from Motion) 根据估计的相机姿态恢复三维点云
MVS(Multi-View Stereo) 利用多视图一致性进行密集三维重建
双目匹配(Stereo Matching) 根据左右相机匹配点计算深度( Z Z Z)

九、核心公式回顾

名称 公式 含义
投影方程 p ∼ P X p \sim P X p∼PX 空间点到图像点的投影关系
线性方程 A X = 0 A X = 0 AX=0 由两幅图像观测建立的约束
SVD 解法 X = V ( : , 4 ) X = V_{(:,4)} X=V(:,4) 最小二乘意义下的三维点解
最优估计 $\min_X \sum_i p_i - \pi(P_i X)

十、总结一句话

三角测量 = 由多视图投影恢复三维点坐标的过程。

它是从二维观测到三维几何的关键步骤,

与极线约束互为几何对应:

极线约束描述"两个点应在同一平面上",

三角测量计算"该平面与两条视线的交点"。

相关推荐
LabVIEW开发7 小时前
LabVIEW 机器视觉 让 FDM 3D 打印缺陷检出率达到 100%
数码相机·labview·labview知识·labview功能·labview程序
小白不白1118 小时前
Invoke的用法
开发语言·人工智能·数码相机·计算机视觉·c#
博图光电10 小时前
梅卡曼德工业相机代理 | 专业工业视觉解决方案 - 助力智能制造
数码相机·制造
拓朗工控1 天前
视觉检测行业工控机选型指南:核心要素与避坑策略
人工智能·数码相机·视觉检测·工控机·工业电脑
小宋加油啊1 天前
对于工业相机的认识(对机械臂的,工业方面的也可以参考)
数码相机
暂未成功人士!1 天前
相机标定---张正友相机标定和手眼标定
数码相机·手眼标定·相机标定
大江东去浪淘尽千古风流人物2 天前
【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
网络·数码相机·3d·transformer·slam·3d重建·cvpr2025
CG_MAGIC2 天前
摄像机与渲染输出:焦距、景深与Cycles/Eevee渲染设置
数码相机·3d·贴图·效果图·建模教程·渲云渲染
蝈蝈Tjguo2 天前
opencv 与摄影测量 相机坐标系的区别
人工智能·数码相机·opencv
埃科光电5 天前
打通全场景检测痛点UB系列相机赋能多元智造场景
图像处理·数码相机·计算机视觉·制造·相机