3、标定基础理论:内参、外参、畸变模型、投影模型、刚体变换等核心概念与数学基础
传感器标定的本质,是建立传感器测量值与真实物理世界之间的确定性映射关系。无论是单目相机、双目系统、激光雷达还是毫米波雷达,其标定过程都围绕三个核心问题展开:传感器内部如何成像(内参与畸变)、传感器在空间中如何放置(外参)、如何用数学语言描述刚体在三维空间中的运动(旋转矩阵、四元数、欧拉角)。本章将系统梳理这些基础理论,为后续的标定实操与多传感器融合打下坚实的数学地基。
上图展示了传感器标定中各个坐标系与数学模型之间的逻辑关系。从世界坐标系到像素坐标系的完整链路,正是标定所要精确描述的物理过程。下面我们将逐一拆解每个环节的数学本质与工程含义。
3.1 内参矩阵与投影模型:从三维点到像素的映射
核心原理:针孔投影模型是相机成像的基础近似。三维空间中的点 P(Xc, Yc, Zc) 在相机坐标系下,通过光心投影到物理成像平面上,形成二维点 p(x, y)。其数学关系为:
x = f * Xc / Zc
y = f * Yc / Zc
其中 f 为焦距。进一步将物理坐标转换为像素坐标,引入像素坐标系的原点偏移 (cx, cy) 和像素在 x/y 方向上的物理尺寸 (dx, dy),得到内参矩阵 K:
K = [fx 0 cx]
[ 0 fy cy]
[ 0 0 1]
其中 fx = f/dx,fy = f/dy。完整的投影方程(齐次坐标形式)为:
s * [u, v, 1]^T = K * [Xc, Yc, Zc]^T
判断方法:内参标定通常使用棋盘格或圆点标定板,通过拍摄不同姿态的标定板图像,利用角点检测和单应性矩阵求解。OpenCV 的 calibrateCamera() 函数即基于张正友标定法实现,其核心思想是:先通过单应性矩阵线性求解内参初值,再用最大似然估计进行非线性优化。
| 参数 | 物理含义 | 典型值范围(工业相机) | 标定精度影响 |
|---|---|---|---|
| fx, fy | 归一化焦距(像素单位) | 500 ~ 5000 | 影响深度测量精度 |
| cx, cy | 主点坐标(像素) | 图像中心附近 | 影响三维重建偏差 |
| k1, k2, k3 | 径向畸变系数 | -0.5 ~ 0.5 | 影响边缘视场精度 |
| p1, p2 | 切向畸变系数 | -0.05 ~ 0.05 | 影响镜头与传感器平行度 |
3.2 畸变模型:修正镜头带来的非线性误差
核心原理:实际镜头并非理想针孔,存在径向畸变(由透镜形状引起)和切向畸变(由透镜与传感器不平行引起)。径向畸变用泰勒级数展开描述:
x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)
其中 r² = x² + y²。切向畸变模型为:
x_distorted = x + [2*p1*x*y + p2*(r² + 2*x²)]
y_distorted = y + [p1*(r² + 2*y²) + 2*p2*x*y]
操作流程:在标定过程中,畸变系数与内参矩阵一同被优化求解。去畸变操作在图像预处理阶段完成,OpenCV 提供 undistort() 和 initUndistortRectifyMap() 两个常用接口。前者直接输出校正图像,后者先生成映射表再通过 remap() 高效执行。
3.3 外参与刚体变换:旋转矩阵、四元数与欧拉角
核心原理:外参描述的是世界坐标系到相机坐标系的刚体变换,包含旋转 R(3×3 正交矩阵)和平移 t(3×1 向量)。刚体变换保持物体形状和大小不变,其数学表达为:
Pc = R * Pw + t
旋转矩阵 R 满足 R^T * R = I 且 det(R) = 1,属于特殊正交群 SO(3)。然而,旋转矩阵的 9 个参数存在 6 个约束,直接优化不便,因此工程中常用四元数和欧拉角进行参数化。
三种旋转表示方法的对比:
| 表示方法 | 参数数量 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 旋转矩阵 | 9 | 直观,可直接用于向量旋转 | 冗余,需正交化约束 | 理论推导、坐标变换计算 |
| 欧拉角 | 3 | 直观,符合人类认知 | 万向锁问题,插值不平滑 | 人机交互、姿态显示 |
| 四元数 | 4 | 无万向锁,插值平滑,计算高效 | 不够直观,需转换理解 | SLAM、多传感器融合、优化求解 |
四元数定义:q = w + xi + yj + zk,其中 w 为实部,满足 w² + x² + y² + z² = 1。旋转矩阵可由四元数转换得到:
R = [[1-2(y²+z²), 2(xy-wz), 2(xz+wy)],
[2(xy+wz), 1-2(x²+z²), 2(yz-wx)],
[2(xz-wy), 2(yz+wx), 1-2(x²+y²)]]
操作流程:在标定求解外参时,通常使用四元数作为优化变量,避免欧拉角的万向锁问题。优化完成后,再根据应用需求转换为欧拉角或旋转矩阵。例如,在 ROS 中,tf2::Quaternion 提供了完整的转换接口。
3.4 标定全流程与精度评估
核心原理:完整的标定流程包括:数据采集 → 特征提取 → 初值估计 → 非线性优化 → 精度评估。重投影误差(Reprojection Error)是衡量标定精度的核心指标,定义为:
e = || p_measured - p_projected(K, D, R, t, Pw) ||
操作流程:
- 数据采集:拍摄标定板图像,确保覆盖视场各区域,避免运动模糊。
- 特征提取:使用角点检测(如
findChessboardCorners())或圆点检测,获取亚像素级特征点坐标。 - 初值估计:通过单应性矩阵分解获得内参初值,通过 PnP 求解获得外参初值。
- 非线性优化:使用 Levenberg-Marquardt 或 Gauss-Newton 算法最小化总重投影误差。
- 精度评估:计算平均重投影误差、最大误差,并可视化误差分布。
精度评估标准:
| 应用场景 | 可接受重投影误差 | 备注 |
|---|---|---|
| 视觉SLAM | < 0.5 pixel | 影响轨迹精度 |
| 自动驾驶感知 | < 1.0 pixel | 影响目标定位 |
| 工业测量 | < 0.1 pixel | 需高精度标定板 |
| 多传感器融合 | < 0.8 pixel | 需联合优化 |