4、多相机标定与联合标定:多相机相对位姿估计、联合标定流程、标定精度评估方法

多相机系统,说白了就是把几双眼睛拼在一起,让它们协同工作。但问题来了——每台相机都有自己的脾气,视角不同、安装位置不同,拍出来的画面天然就存在偏差。如果不做联合标定,你融合出来的数据就是各说各话,根本没法用。

我最早做多相机融合时,踩过一个大坑。当时用了四台相机做环视拼接,结果拼接缝总是对不齐。折腾了两周,最后发现是相机之间的外参标定精度差了0.5度。嗯,0.5度听起来不大,但在远距离场景下,误差能放大到几十厘米。从那以后,我对联合标定的精度要求就特别苛刻。

4.1 多相机相对位姿估计

多相机标定的核心,就是求出一台相机相对于另一台相机的位姿关系。这个关系用旋转矩阵 R 和平移向量 t 来描述。说白了,就是知道相机A在空间里怎么转、怎么挪,才能变成相机B的视角。

我习惯把这个问题拆成两步:

  1. 单相机内参标定——先让每台相机自己看清楚,把畸变参数和焦距搞定。
  2. 双相机外参估计——再找两台相机之间的空间关系。

具体怎么做?最常用的方法是基于共视标定板。你拿一个棋盘格或者圆点板,放在两台相机的公共视野里。两台相机同时拍照,各自提取角点坐标。然后通过PnP算法或者本质矩阵分解,就能算出相对位姿。

核心公式(本质矩阵):

E = t^× R

其中:
E  —— 本质矩阵(3x3)
t^× —— 平移向量的反对称矩阵
R  —— 旋转矩阵

通过匹配的特征点对,可以解出 E,再分解得到 R 和 t。

这里有个坑——分解出来的 R 和 t 有四个可能的解,只有一个是物理上合理的。怎么判断?用三角化算一下三维点,看它是不是在相机前方。我在项目里就遇到过选错解的情况,结果重建出来的点全跑到相机后面去了,画面诡异得很。

4.2 联合标定流程

多相机联合标定,不是简单地把两两标定结果拼起来。你想想看,三台相机就有三个两两关系,但这些关系必须自洽。如果A到B的变换和B到C的变换,乘起来不等于A到C的变换,那就说明标定有误差。

我建议的联合标定流程是这样的:

  1. 准备标定板——用高精度棋盘格,尺寸要足够大,覆盖视野的30%以上。
  2. 采集数据——所有相机同步触发,同时拍摄标定板在不同位姿下的图像。至少采集20组。
  3. 单相机标定——每台相机单独跑一遍张正友标定法,得到内参和畸变系数。
  4. 初始外参估计——用共视图像对,估算两两相机之间的初始外参。
  5. 全局优化——把所有相机的内参、外参、标定板位姿一起丢进BA(Bundle Adjustment)里优化。
  6. 精度验证——用未参与标定的图像做重投影误差检查。

我的个人习惯:在采集数据时,标定板要尽量覆盖视野的各个区域——左上、右下、中间、近处、远处。别偷懒只拍中间区域,否则标定出来的边缘畸变校正会出问题。

全局优化这一步,我一般用Ceres Solver或者g2o来做。目标函数是所有观测角点的重投影误差之和:

min ∑ || p_ij - K_i * (R_i * P_j + t_i) ||^2

其中:
p_ij —— 第i台相机观测到的第j个角点像素坐标
K_i  —— 第i台相机的内参矩阵
R_i, t_i —— 第i台相机的外参
P_j  —— 标定板上第j个角点的三维坐标

优化完成后,所有相机的位姿都统一到了同一个世界坐标系下。这时候,多相机系统才算真正「对齐」了。

4.3 标定精度评估方法

标定做完了,怎么知道准不准?不能光看优化收敛了就完事。我一般用三个指标来评估:

评估指标 计算方法 合格标准
重投影误差 所有角点的像素误差均方根 < 0.5 pixel
相对位姿一致性 闭环误差:R_ab * R_bc * R_ca 与单位矩阵的偏差 旋转误差 < 0.1°,平移误差 < 1mm
三维重建精度 用标定后的系统重建已知尺寸的物体 尺寸误差 < 1%

注意:重投影误差低不代表一切完美。我曾经遇到过重投影误差只有0.3像素,但实际拼接效果很差的情况。原因是标定板只覆盖了视野中心区域,边缘区域的畸变没有被充分约束。所以一定要用多组不同位姿的数据做交叉验证。

还有一个我常用的方法——手眼标定验证。如果你有机械臂或者高精度转台,可以把相机固定在运动平台上,让平台做已知运动,然后看相机估计的运动和实际运动是否一致。这个方法虽然麻烦,但最能暴露问题。

4.4 知识体系总览

下面这张图,是我自己整理的多相机联合标定知识体系。每次做项目前,我都会对照着检查一遍,确保没有遗漏。

多相机联合标定知识体系 多相机图像数据 单相机内参标定 焦距、畸变、主点 双相机外参估计 R, t 分解与选择 全局BA优化 Ceres / g2o 统一坐标系下的相机位姿 精度评估:重投影误差 | 位姿一致性 | 三维重建精度

这张图把整个流程串起来了。从输入图像数据开始,经过单相机标定、双相机外参估计、全局BA优化,最终得到统一坐标系下的位姿。最后再用三个指标做精度评估,形成闭环。

我做项目时,最怕的就是标定完了才发现精度不够。所以现在养成了一个习惯——每标定完一组相机,立刻用评估指标跑一遍。不合格就重新采集数据,绝不凑合。你想想看,后面所有的融合、控制、决策都依赖这个标定结果,源头错了,后面全白搭。

避坑指南:我曾经因为标定板打印精度不够,导致标定结果始终差那么一点点。后来换了高精度玻璃基板,问题立刻解决。标定板的角点位置精度,至少要达到0.01mm级别。

好了,多相机联合标定的核心内容就这些。记住一句话:标定是融合的基石,精度是标定的灵魂。别图快,别偷懒,每一步都做扎实了,后面的工作才能顺利推进。


公众号:蓝海资料掘金营,微信deep3321