单目相机的投影矩阵#
三维世界点 X 到二维图像点 x 的映射统一表示为:
x=K[R∣t]X
-
x(图像坐标): 齐次坐标 [u,v,1]T,表示图像平面上的点。
-
X(世界坐标):三维空间中的齐次坐标 [X,Y,Z,1]T。
-
[R∣t](外参矩阵):描述相机姿态(6个自由度)。将世界坐标系下的点 X 变换到相机坐标系下的点 Xc:
- R:3x3旋转矩阵(3个自由度,如欧拉角)。
- t:3x1平移向量(3个自由度)。
-
K(内参矩阵):描述相机内部光学属性(5个自由度)。将相机坐标系下的点 Xc 投影到图像平面上:
- K=α00sβ0u0v01
- α,β:x,y 方向的焦距(像素单位);
- s:倾斜因子(通常为0);
- (u0,v0):主点坐标(光心位置)。
这个模型只描述了“一个相机看到什么”,无法恢复深度信息——因为无数个不同深度的三维点都可能投影到同一个像素点上。
不同假设对 K 的影响,就是逐步把单一的焦距 f,依次“解锁”成主点 (u0,v0)、双轴焦距 (α,β) 和倾斜因子 s,最终形成 5 个自由度的完整上三角矩阵。而旋转、平移的假设与 K 无关。
逐级放开假设,K 的变化路径如下:
| 假设条件 | 对内参 K 的影响 | 数学形态(自由度) |
|---|
| 理想情况(正方形像素、光心在原点、无倾斜) | 仅含焦距 | f000f0001(1维) |
| 移除“光心在原点” | 引入主点偏移 u0,v0 | f000f0u0v01(3维) |
| 移除“正方形像素” | 拆分焦距 f→α,β(非均匀缩放) | α000β0u0v01(4维) |
| 移除“无倾斜(无错切)” | 引入倾斜因子 s(轴不垂直) | α00sβ0u0v01(5维,最终完整形态) |
| 移除“无旋转/平移” | 毫无影响(外参 [R∥t] 单独负责) | 保持上述 5 维不变 |
关键数学工具:齐次坐标#
定义:在普通坐标后增加一维(如 (x,y)→[x,y,1]T),使平移、旋转、缩放、投影统一表示为矩阵乘法。
尺度不变性:[x,y,w]T 与 [kx,ky,kw]T 表示同一点,归一化笛卡尔坐标为 (x/w,y/w)。笛卡尔坐标中的一个点,在齐次坐标中对应一条射线
几何运算(叉积):
- 两点连线(叉积可以得到一条直线):line=p1×p2(对应直线方程 ax+by+c=0)。
- 两线交点(两条直线的叉积得到):point=line1×line2。
对于一个三维方向向量 d=[X,Y,Z]T,在齐次坐标系下有两种情况
- 有限点:d 的第四维不为零,投影到图像平面上得到有限点。
- 无穷远点:d 的第四维为零,投影到图像平面上得到消失点。这时候这个向量就不是一个有限的点,而是一个方向(由前三个分量决定)。
从有限点到无穷远点的过渡:
对于一条直线,定义其起点 p0=[x0,y0,z0]T 和方向向量 d=[dx,dy,dz]T,则直线上的有限点可以表示为参数方程形式:
p(k)=p0+kd用齐次坐标表示上面的 有限点:
p(k)homogeneous=x0+kdxy0+kdyz0+kdz1无穷远点等价于 k→∞,则有:
p(k)homogeneous=k(kx0+dx)k(ky0+dy)k(kz0+dz)1p′(k)homogeneous=k1p(k)homogeneousk→∞⇒p∞=dxdydz0
消失点(Vanishing Point):无穷远点在图像平面上的投影#
物理含义:空间中一组平行线在图像平面上汇聚的交点在图像平面的投影,即无穷远点在图像平面上的投影。
数学表达:空间中方向向量(无穷远点)为 d=[dx,dy,dz]T 的平行线,带入相机的投影矩阵后,其消失点坐标为:
p=K[R∣t]d=K(Rd+t⋅0)=KRd这时候平移向量 t 对消失点的投影没有影响,因为 d 的第四维为 0,投影时丢弃了平移影响。
2D图像变换(单应性)层级#
讲义比较了三种2D变换,自由度逐级增加:
- 相似变换(4自由度):平移 + 旋转 + 均匀缩放(保持形状)。
- 仿射变换(6自由度):线性变换(旋转、缩放、剪切)+ 平移(保持平行性,不保持角度)。
- 投影变换/单应性(8自由度):最一般形式(3×3 矩阵,h33=1),可表现“近大远小”的透视效果(分母 h31x+h32y+h33)。
相机标定:直接线性变换(DLT)#
目标:仅通过若干组已知的 3D 点 X 和其对应的 2D 图像点 x,求解未知的投影矩阵 M(即 K,R,t)。
核心步骤:
- 建立方程:设未知投影矩阵 M(3x4,共12个元素)。对于每一对点 (X,Y,Z)↔(u,v),消去尺度因子 s,得到两个线性方程:
{m11X+m12Y+m13Z+m14−m31uX−m32uY−m33uZ−m34u=0m21X+m22Y+m23Z+m24−m31vX−m32vY−m33vZ−m34v=0
- 构建矩阵 A:将所有点对(至少6对)的方程堆叠成齐次线性方程组 Am=0(A 为 2n×12 矩阵)。
- SVD求解:
- 问题转化为带约束的最小二乘:min∣∣Am∣∣2,约束 ∣∣m∣∣=1。
- 对 A 进行奇异值分解(SVD),最优解 m 是 ATA 的最小特征值对应的特征向量,即 V 矩阵的最后一列(最小奇异值对应的右奇异向量)。
- 分解:将求得的 M 矩阵通过 RQ分解,拆解出内参 K 和外参 R,t。
- 标定板:常用 ChArUco 板(棋盘格 + ArUco 二维码混合),兼顾角点亚像素精度和编码唯一性,抗遮挡能力强。
- DLT 的局限性:该线性算法无法模拟镜头畸变(径向畸变、切向畸变)。实际应用中,通常以 DLT 结果为初值,再代入非线性优化(如最小化重投影误差)进行精细调整。
三大视觉任务的已知/未知关系(总结页)#
| 任务 | 已知条件 | 未知量 | 目的 |
|---|
| 相机标定 | 3D点 X + 2D点 x | 内参 K、外参 [R∥t] | 获取相机参数 |
| 姿态估计 | 3D点 X + 2D点 x + 内参 K | 外参 [R∥t] | 求相机位置/朝向 |
| 三维重建 | 2D点 x + 内参 K + 外参 [R∥t] | 3D点 X | 恢复场景深度/结构 |