【机器视觉-基础知识】三角测量(Triangulation)
文章目录
- 三角测量(Triangulation)原理解析
- 一、基本定义
- 二、几何直观
- 三、基本数学模型
- 1. 齐次坐标投影方程
- 四、线性三角化(Linear Triangulation)
- 五、几何解释:射线交点
- 六、改进方法:最优三角化(Optimal Triangulation)
- 七、数值稳定性与注意事项
- 八、在 SfM / MVS 中的作用
- 九、核心公式回顾
- 十、总结一句话
三角测量(Triangulation)原理解析
一、基本定义
三角测量(Triangulation) 是通过两台(或多台)相机的投影信息,计算空间点三维坐标的一种方法。
已知:
- 两个相机的投影矩阵 P1,P2P_1, P_2P1,P2
- 同一空间点在两幅图像中的对应点 p1,p2p_1, p_2p1,p2
目标是:
求出三维点 X=[X,Y,Z,1]TX = [X, Y, Z, 1]^{\mathsf{T}}X=[X,Y,Z,1]T 的坐标。
二、几何直观
从几何上看:
- 空间点 XXX 经过两个相机投影到图像上,形成 p1p_1p1 和 p2p_2p2
- 由相机中心 O1O_1O1、O2O_2O2 及点 XXX 构成一个三角形
- 因此称为 “三角测量(Triangulation)”
三角测量的本质:
通过两条视线(射线)的交点来恢复空间点的三维位置。
三、基本数学模型
1. 齐次坐标投影方程
空间点 XXX 与图像点 ppp 的关系为:
p∼PXp \sim P X p∼PX
其中:
- P=K[R∣t]P = K [R | t]P=K[R∣t] 为相机投影矩阵
- p=[x,y,1]Tp = [x, y, 1]^{\mathsf{T}}p=[x,y,1]T 为图像点的齐次坐标
- “∼\sim∼” 表示相差一个比例因子sss(同线性)
sp=PXs p = P X sp=PX
比例因子 sss 实际上就是该三维点在相机坐标系下的深度 ZcZ_cZc。
对于两台相机:
{p1∼P1Xp2∼P2X\begin{cases} p_1 \sim P_1 X \\ p_2 \sim P_2 X \end{cases} {p1∼P1Xp2∼P2X
四、线性三角化(Linear Triangulation)
对于每个相机的齐次形式投影方程:
si[uivi1]=Pi[XYZ1]s_i \begin{bmatrix} u_i \\ v_i \\ 1 \end{bmatrix} = P_i \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} siuivi1=PiXYZ1
其中,sis_isi 是尺度因子(深度)。
则对于每一个相机 iii 的投影方程:
每个方程有 3 个分量:
siui=pi1TX,sivi=pi2TX,si=pi3TXs_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
其中,pi1,,pi2,,pi3p_{i1},, p_{i2},, p_{i3}pi1,,pi2,,pi3 分别是 PiP_iPi 的第 1、2、3 行向量。
通过消去 sis_isi:
ui,(pi3TX)=pi1TXu_i ,(p_{i3}^{\mathsf{T}} \mathbf{X}) = p_{i1}^{\mathsf{T}} \mathbf{X} ui,(pi3TX)=pi1TX
vi,(pi3TX)=pi2TXv_i ,(p_{i3}^{\mathsf{T}} \mathbf{X}) = p_{i2}^{\mathsf{T}} \mathbf{X} vi,(pi3TX)=pi2TX
将两式改写为线性方程形式:
(ui,pi3T−pi1T)X=0(u_i, p_{i3}^{\mathsf{T}} - p_{i1}^{\mathsf{T}}) \mathbf{X} = 0 (ui,pi3T−pi1T)X=0
(vi,pi3T−pi2T)X=0(v_i, p_{i3}^{\mathsf{T}} - p_{i2}^{\mathsf{T}}) \mathbf{X} = 0 (vi,pi3T−pi2T)X=0
组合两个相机的两视图的方程,可得总共 4 个线性方程:
AX=0A \mathbf{X} = 0 AX=0
其中:
A=[u1p13T−p11Tv1p13T−p12Tu2p23T−p21Tv2p23T−p22T](矩阵尺寸 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)
解法:通过最小二乘求解 AX=0A X = 0AX=0,即:
X=argmin∣X∣=1∣AX∣X = \arg\min_{|X|=1} |A X| X=arg∣X∣=1min∣AX∣
该问题可通过 奇异值分解(SVD) 得到:
A=UΣVT⇒X=V(:,4)A = U \Sigma V^{\mathsf{T}} \quad \Rightarrow \quad X = V_{(:,4)} A=UΣVT⇒X=V(:,4)
即 VVV 的最后一列,对应最小奇异值。
通过线性三角化(Linear Triangulation),我们最终求得三维空间点的齐次坐标 X=[X1,X2,X3,X4]TX = [X_1, X_2, X_3, X_4]^{\mathsf{T}}X=[X1,X2,X3,X4]T
最后将齐次坐标归一化成:
Xcart=1X4[X1,X2,X3]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
五、几何解释:射线交点
从物理几何意义上,三角测量等价于两条射线的交点:
{r1=O1+λ1d1r2=O2+λ2d2\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
其中:
- OiO_iOi 为相机中心
- di\mathbf{d}_idi 为方向向量(由像素反投影得到)
理论上,两射线应在空间交于一点。
实际由于噪声存在,它们一般不会精确相交,因此取 最近点中点 作为估计点:
X=r1(λ1∗)+r2(λ2∗)2X = \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)获得最优结果:
minX∑i=12∣pi−π(PiX)∣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 优化求解。
七、数值稳定性与注意事项
-
归一化(Normalization):
在进行线性三角化前应对图像点坐标进行归一化,以减少数值误差。 -
视差角(Baseline):
当两相机的基线很短或视差很小,三角测量精度会显著下降。 -
非线性优化后精化:
通常先用线性三角化求初值,再以最小重投影误差方式进行迭代精化。
八、在 SfM / MVS 中的作用
应用场景 | 作用 |
---|---|
SfM(Structure from Motion) | 根据估计的相机姿态恢复三维点云 |
MVS(Multi-View Stereo) | 利用多视图一致性进行密集三维重建 |
双目匹配(Stereo Matching) | 根据左右相机匹配点计算深度(ZZZ) |
九、核心公式回顾
名称 | 公式 | 含义 |
---|---|---|
投影方程 | p∼PXp \sim P Xp∼PX | 空间点到图像点的投影关系 |
线性方程 | AX=0A X = 0AX=0 | 由两幅图像观测建立的约束 |
SVD 解法 | X=V(:,4)X = V_{(:,4)}X=V(:,4) | 最小二乘意义下的三维点解 |
最优估计 | $\min_X \sum_i | p_i - \pi(P_i X) |
十、总结一句话
三角测量 = 由多视图投影恢复三维点坐标的过程。
它是从二维观测到三维几何的关键步骤,
与极线约束互为几何对应:
极线约束描述“两个点应在同一平面上”,
三角测量计算“该平面与两条视线的交点”。