4. 多相机系统标定基础
在四相机同步图像采集与激光条纹中心线提取系统中,相机标定是决定测量精度的核心环节。标定的本质是建立从三维世界坐标到二维图像坐标的映射关系,并消除镜头畸变带来的误差。本章将系统阐述单目标定、双目标定以及多相机联合标定的数学原理与工程实现路径。
4.1 单目标定:内参与畸变参数求解
单目标定是标定工作的基础,其目标是确定单个相机的内参矩阵(焦距、主点坐标)和畸变系数(径向畸变、切向畸变)。
4.1.1 成像模型与坐标系变换
针孔相机模型描述了从世界坐标系到像素坐标系的四次变换:
- 世界坐标系 → 相机坐标系:通过旋转矩阵 R 和平移向量 t 实现刚体变换。
- 相机坐标系 → 图像物理坐标系:基于针孔投影原理,将三维点投影到成像平面。
- 图像物理坐标系 → 像素坐标系:通过缩放因子和主点偏移,将物理坐标转换为像素坐标。
完整的投影方程可表示为:
s * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T
其中,s 为尺度因子,K 为内参矩阵,[R | t] 为外参矩阵。
4.1.2 张正友标定法
张正友标定法是单目标定的工业标准方法,使用棋盘格作为标定靶标。其核心步骤为:
| 步骤 | 操作内容 | 数学本质 |
|---|---|---|
| 1 | 采集不同位姿的棋盘格图像(≥10张) | 提供多组对应点约束 |
| 2 | 提取亚像素级角点坐标 | 获取图像特征点 |
| 3 | 计算单应性矩阵 H | 建立世界平面与图像平面的映射 |
| 4 | 利用 H 的约束求解内参初值 | 线性最小二乘 |
| 5 | 加入畸变模型,非线性优化 | Levenberg-Marquardt 迭代 |
4.1.3 畸变校正模型
镜头畸变主要包括径向畸变和切向畸变。常用的畸变模型为:
x_distorted = x * (1 + k1*r^2 + k2*r^4 + k3*r^6) + 2*p1*x*y + p2*(r^2 + 2*x^2)
y_distorted = y * (1 + k1*r^2 + k2*r^4 + k3*r^6) + p1*(r^2 + 2*y^2) + 2*p2*x*y
其中,k1, k2, k3 为径向畸变系数,p1, p2 为切向畸变系数,r^2 = x^2 + y^2。
4.2 双目标定:立体视觉的几何约束
双目标定在单目标定的基础上,进一步求解两个相机之间的相对位姿关系(旋转矩阵 R 和平移向量 t),为立体匹配和三维重建奠定基础。
4.2.1 对极几何与基础矩阵
对极几何描述了双相机系统中同名点之间的几何约束关系。核心概念包括:
- 基线:两个相机光心的连线。
- 对极点:基线在图像平面上的交点。
- 对极线:空间点在两个图像平面上的投影线。
- 基础矩阵 F:描述左右图像点对应关系的 3×3 矩阵,满足
x'^T * F * x = 0。 - 本质矩阵 E:在归一化坐标系下描述位姿关系,
E = K'^T * F * K。
4.2.2 双目标定流程
| 步骤 | 操作 | 输出 |
|---|---|---|
| 1 | 分别对左右相机进行单目标定 | 内参 K1, K2;畸变系数 D1, D2 |
| 2 | 采集左右相机同步图像对 | 棋盘格角点对应关系 |
| 3 | 计算本质矩阵 E | 通过五点法或八点法 |
| 4 | 分解 E 得到 R 和 t | 旋转矩阵 R,平移向量 t |
| 5 | 立体校正(极线对齐) | 校正映射表 |
| 6 | 全局优化(Bundle Adjustment) | 最小化重投影误差 |
4.2.3 立体校正原理
立体校正(Rectification)的目的是将双相机系统变换为理想的平行双目结构,使左右图像的对极线水平对齐,从而将二维搜索降为一维搜索。Bouguet 算法是常用的校正方法,其核心思想是将右相机图像平面旋转到左相机图像平面,并调整光轴平行。
4.3 多相机联合标定原理
对于四相机系统,联合标定的目标是建立所有相机在统一世界坐标系下的位姿关系,确保多视角数据的空间一致性。
4.3.1 标定策略选择
| 策略 | 方法描述 | 适用场景 | 精度 |
|---|---|---|---|
| 链式标定 | 依次标定相邻相机对,通过传递矩阵统一坐标系 | 相机呈线性排列 | 中等(误差累积) |
| 全局标定 | 所有相机同时观测公共标定靶,一次性求解所有外参 | 四相机共视区域较大 | 高 |
| 两步法 | 先两两标定,再通过图优化全局平差 | 通用场景 | 高 |
4.3.2 全局标定数学模型
全局标定将四台相机的所有观测数据纳入统一的优化框架。设第 i 台相机的外参为 [R_i | t_i],第 j 个标定板角点的世界坐标为 P_j,则重投影误差为:
E = Σ_i Σ_j || p_ij - K_i * [R_i | t_i] * P_j ||^2
通过 Levenberg-Marquardt 算法最小化上述误差,同时优化所有相机的内参、外参以及标定板点的三维坐标。
4.3.3 多相机标定实施要点
- 共视区域设计:确保相邻相机之间有足够的重叠视场(建议 ≥ 30%),以便提取足够的同名点。
- 标定板尺寸:应同时满足所有相机的视场要求,避免在某个相机中占比过小。
- 同步采集:四相机必须硬件触发同步,避免因运动模糊或时间差引入标定误差。
- 鲁棒性检查:标定完成后,使用独立验证集计算重投影误差,并检查三维重建的几何一致性。
4.4 标定精度评估指标
| 指标 | 定义 | 合格标准 |
|---|---|---|
| 重投影误差 | 角点检测坐标与投影坐标的均方根误差 | < 0.15 pixel |
| 立体匹配误差 | 校正后同名点的垂直视差 | < 0.5 pixel |
| 三维重建误差 | 已知距离的测量值与重建值的偏差 | < 0.1% 测量距离 |
| 外参一致性 | 闭环路径下旋转矩阵的累积误差 | < 0.1° |
calibrateCamera() 和 stereoCalibrate() 函数提供了成熟的单目和双目标定实现。对于多相机系统,可以使用 cv2.aruco 模块的 Charuco 板,结合自定义的全局优化脚本完成联合标定。