【机器视觉-基础知识】三角测量(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,1]T 的坐标。


二、几何直观

从几何上看:

  • 空间点 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=K[R∣t] 为相机投影矩阵
  • p = [ x , y , 1 ] T p = [x, y, 1]^{\mathsf{T}} p=[x,y,1]T 为图像点的齐次坐标
  • " ∼ \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,X4]T

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

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=X41[X1,X2,X3]T=[X,Y,Z]

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


五、几何解释:射线交点

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

{ 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)

十、总结一句话

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

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

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

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

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

相关推荐
放羊郎10 小时前
五点法求解相机的相对位姿
数码相机·相机·五点法·相对位姿
Wnq1007220 小时前
如何在移动 的巡检机器人上,实现管道跑冒滴漏的视觉识别
数码相机·opencv·机器学习·计算机视觉·目标跟踪·自动驾驶
ARM+FPGA+AI工业主板定制专家1 天前
基于JETSON ORIN/RK3588+AI相机:机器人-多路视觉边缘计算方案
人工智能·数码相机·机器人
道传科技上位机2 天前
机器视觉九点标定(现场实用版)
人工智能·数码相机·计算机视觉
fanstering2 天前
深度相机初探:立体视觉(Stereo Vision)、结构光(Structured Light)、TOF(Time of Flight,飞行时间)
笔记·数码相机·立体视觉·结构光·tof
格林威3 天前
偏振相机是否属于不同光谱相机的范围内
图像处理·人工智能·数码相机·计算机视觉·视觉检测·工业相机
格林威3 天前
常规的鱼眼镜头有哪些类型?能做什么?
图像处理·人工智能·数码相机·计算机视觉·视觉检测·工业镜头
菜鸡饶5 天前
[THREEJS]实战-基础三要素
数码相机
人类发明了工具5 天前
【三维重建-对极几何】极线约束(Epipolar Constraint)
图像处理·数码相机·三维重建