1623 字
8 分钟
Stereo Vision(立体视觉)- 几何基础
2026-06-25
无标签

单目相机的投影矩阵#

三维世界点 XX 到二维图像点 x\mathbf{x} 的映射统一表示为:

x=K[Rt]X\mathbf{x} = K \begin{bmatrix} R | t \end{bmatrix} X
  • x\mathbf{x}(图像坐标): 齐次坐标 [u,v,1]T[u, v, 1]^T,表示图像平面上的点。

  • XX(世界坐标):三维空间中的齐次坐标 [X,Y,Z,1]T[X, Y, Z, 1]^T

  • [Rt][R|t](外参矩阵):描述相机姿态(6个自由度)。将世界坐标系下的点 XX 变换到相机坐标系下的点 XcX_c

    • RR:3x3旋转矩阵(3个自由度,如欧拉角)。
    • tt:3x1平移向量(3个自由度)。
  • KK(内参矩阵):描述相机内部光学属性(5个自由度)。将相机坐标系下的点 XcX_c 投影到图像平面上:

    • K=[αsu00βv0001]K = \begin{bmatrix} \alpha & s & u_0 \\ 0 & \beta & v_0 \\ 0 & 0 & 1 \end{bmatrix}
    • α,β\alpha, \betax,yx, y 方向的焦距(像素单位);
    • ss:倾斜因子(通常为0);
    • (u0,v0)(u_0, v_0):主点坐标(光心位置)。

这个模型只描述了“一个相机看到什么”,无法恢复深度信息——因为无数个不同深度的三维点都可能投影到同一个像素点上。

不同假设对 KK 的影响,就是逐步把单一的焦距 ff依次“解锁”成主点 (u0,v0)(u_0,v_0)、双轴焦距 (α,β)(\alpha,\beta) 和倾斜因子 ss,最终形成 5 个自由度的完整上三角矩阵。而旋转、平移的假设与 KK 无关。

逐级放开假设,KK 的变化路径如下:

假设条件对内参 KK 的影响数学形态(自由度)
理想情况(正方形像素、光心在原点、无倾斜)仅含焦距[f000f0001]\begin{bmatrix}f&0&0\\0&f&0\\0&0&1\end{bmatrix}(1维)
移除“光心在原点”引入主点偏移 u0,v0u_0, v_0[f0u00fv0001]\begin{bmatrix}f&0&u_0\\0&f&v_0\\0&0&1\end{bmatrix}(3维)
移除“正方形像素”拆分焦距 fα,βf \to \alpha, \beta(非均匀缩放)[α0u00βv0001]\begin{bmatrix}\alpha&0&u_0\\0&\beta&v_0\\0&0&1\end{bmatrix}(4维)
移除“无倾斜(无错切)”引入倾斜因子 ss(轴不垂直)[αsu00βv0001]\begin{bmatrix}\alpha&s&u_0\\0&\beta&v_0\\0&0&1\end{bmatrix}5维,最终完整形态)
移除“无旋转/平移”毫无影响(外参 [Rt][R\|t] 单独负责)保持上述 5 维不变

关键数学工具:齐次坐标#

定义:在普通坐标后增加一维(如 (x,y)[x,y,1]T(x,y) \to [x,y,1]^T),使平移、旋转、缩放、投影统一表示为矩阵乘法

尺度不变性[x,y,w]T[x, y, w]^T[kx,ky,kw]T[kx, ky, kw]^T 表示同一点,归一化笛卡尔坐标为 (x/w,y/w)(x/w, y/w)。笛卡尔坐标中的一个点,在齐次坐标中对应一条射线

几何运算(叉积)

  • 两点连线(叉积可以得到一条直线):line=p1×p2line = p_1 \times p_2(对应直线方程 ax+by+c=0ax+by+c=0)。
  • 两线交点(两条直线的叉积得到):point=line1×line2point = line_1 \times line_2

对于一个三维方向向量 d=[X,Y,Z]Td=[X, Y, Z]^T,在齐次坐标系下有两种情况

  1. 有限点dd 的第四维不为零,投影到图像平面上得到有限点。
  2. 无穷远点dd 的第四维为零,投影到图像平面上得到消失点。这时候这个向量就不是一个有限的点,而是一个方向(由前三个分量决定)。

从有限点到无穷远点的过渡:

对于一条直线,定义其起点 p0=[x0,y0,z0]Tp_0=[x_0, y_0, z_0]^T 和方向向量 d=[dx,dy,dz]Td=[d_x, d_y, d_z]^T,则直线上的有限点可以表示为参数方程形式:

p(k)=p0+kdp(k) = p_0 + k d

用齐次坐标表示上面的 有限点:

p(k)homogeneous=[x0+kdxy0+kdyz0+kdz1]p(k)_{homogeneous} = \begin{bmatrix} x_0 + k d_x \\ y_0 + k d_y \\ z_0 + k d_z \\ 1 \end{bmatrix}

无穷远点等价于 kk \to \infty,则有:

p(k)homogeneous=[k(x0k+dx)k(y0k+dy)k(z0k+dz)1]p(k)homogeneous=1kp(k)homogeneouskp=[dxdydz0]p(k)_{homogeneous} = \begin{bmatrix} k(\frac{x_0}{k}+d_x) \\ k(\frac{y_0}{k}+d_y) \\ k(\frac{z_0}{k}+d_z) \\ 1 \end{bmatrix}\\ p'(k)_{homogeneous} = \frac{1}{k}p(k)_{homogeneous}\\ k\to\infty \Rightarrow p_{\infty} = \begin{bmatrix} d_x \\ d_y \\ d_z \\ 0 \end{bmatrix}

消失点(Vanishing Point):无穷远点在图像平面上的投影#

物理含义:空间中一组平行线在图像平面上汇聚的交点在图像平面的投影,即无穷远点在图像平面上的投影

数学表达:空间中方向向量(无穷远点)为 d=[dx,dy,dz]Td = [d_x, d_y, d_z]^T 的平行线,带入相机的投影矩阵后,其消失点坐标为:

p=K[Rt]d=K(Rd+t0)=KRdp = K [R|t] d= K(R d + t\cdot 0) = K R d

这时候平移向量 tt 对消失点的投影没有影响,因为 dd 的第四维为 0,投影时丢弃了平移影响。

2D图像变换(单应性)层级#

讲义比较了三种2D变换,自由度逐级增加:

  1. 相似变换(4自由度):平移 + 旋转 + 均匀缩放(保持形状)。
  2. 仿射变换(6自由度):线性变换(旋转、缩放、剪切)+ 平移(保持平行性,不保持角度)。
  3. 投影变换/单应性(8自由度):最一般形式(3×33\times3 矩阵,h33=1h_{33}=1),可表现“近大远小”的透视效果(分母 h31x+h32y+h33h_{31}x+h_{32}y+h_{33})。

相机标定:直接线性变换(DLT)#

目标:仅通过若干组已知的 3D 点 XX 和其对应的 2D 图像点 x\mathbf{x},求解未知的投影矩阵 MM(即 K,R,tK, R, t)。

核心步骤

  1. 建立方程:设未知投影矩阵 MM(3x4,共12个元素)。对于每一对点 (X,Y,Z)(u,v)(X, Y, Z) \leftrightarrow (u, v),消去尺度因子 ss,得到两个线性方程{m11X+m12Y+m13Z+m14m31uXm32uYm33uZm34u=0m21X+m22Y+m23Z+m24m31vXm32vYm33vZm34v=0\begin{cases} m_{11}X + m_{12}Y + m_{13}Z + m_{14} - m_{31}uX - m_{32}uY - m_{33}uZ - m_{34}u = 0 \\ m_{21}X + m_{22}Y + m_{23}Z + m_{24} - m_{31}vX - m_{32}vY - m_{33}vZ - m_{34}v = 0 \end{cases}
  2. 构建矩阵 AA:将所有点对(至少6对)的方程堆叠成齐次线性方程组 Am=0A m = 0AA2n×122n \times 12 矩阵)。
  3. SVD求解
    • 问题转化为带约束的最小二乘:minAm2\min ||Am||^2,约束 m=1||m||=1
    • AA 进行奇异值分解(SVD),最优解 mmATAA^T A 的最小特征值对应的特征向量,即 VV 矩阵的最后一列(最小奇异值对应的右奇异向量)。
  4. 分解:将求得的 MM 矩阵通过 RQ分解,拆解出内参 KK 和外参 R,tR, t
  • 标定板:常用 ChArUco 板(棋盘格 + ArUco 二维码混合),兼顾角点亚像素精度和编码唯一性,抗遮挡能力强。
  • DLT 的局限性:该线性算法无法模拟镜头畸变(径向畸变、切向畸变)。实际应用中,通常以 DLT 结果为初值,再代入非线性优化(如最小化重投影误差)进行精细调整。

三大视觉任务的已知/未知关系(总结页)#

任务已知条件未知量目的
相机标定3D点 XX + 2D点 x\mathbf{x}内参 KK、外参 [Rt][R \| t]获取相机参数
姿态估计3D点 XX + 2D点 x\mathbf{x} + 内参 KK外参 [Rt][R\|t]求相机位置/朝向
三维重建2D点 x\mathbf{x} + 内参 KK + 外参 [Rt][R\|t]3D点 XX恢复场景深度/结构
Stereo Vision(立体视觉)- 几何基础
https://biscuit0613.github.io/posts/cv/cv-sv-geometrybasic/
作者
Biscuit
发布于
2026-06-25
许可协议
CC BY-NC-SA 4.0
Stereo Vision(立体视觉)- 三维表示与重建
Stereo Vision(立体视觉)- 深度恢复