4、相机标定基础:棋盘格标定板、张正友标定法、内参与畸变系数求解、重投影误差评估

相机标定是机器人手眼标定的前置核心环节,其本质是求解相机几何模型中的内参矩阵与畸变系数。无论是眼在手上(Eye-in-Hand)还是眼在手外(Eye-to-Hand)的机械臂视觉系统,若相机内参不准确,外参(相机与机械臂基座或工具端的位姿关系)的求解将失去数学基础。本章围绕棋盘格标定板的设计与使用、张正友标定法的数学原理、内参与畸变系数的求解流程,以及重投影误差的评估方法展开,帮助学习者建立从物理标定板到数值优化的完整认知链路。

相机标定核心链路与误差评估 棋盘格标定板 角点检测 亚像素精度 方格尺寸已知 刚性平面 张正友标定法 单应性矩阵 H 内参约束方程 闭式解 + 非线性优化 至少3张不同姿态 内参与畸变 fx, fy, cx, cy k1, k2, p1, p2 k3 (可选) 相机矩阵 K 重投影误差评估 世界点 → 像素投影 与检测点比较 RMS < 0.1 px 剔除异常帧 / 重新采集 采集图像 角点提取 单应性计算 内参初值 畸变优化 标定板姿态多样性 → 提高内参可观测性 → 降低重投影误差 建议采集 15~20 张不同位姿图像,覆盖视场边缘与倾斜角度

上图展示了相机标定的完整链路:从棋盘格标定板的物理特征出发,经过张正友法的数学映射,最终输出内参与畸变系数,并通过重投影误差形成闭环反馈。下面逐一拆解每个环节的核心原理与实操要点。

4.1 棋盘格标定板:设计规范与图像采集要求

棋盘格标定板是相机标定中最常用的平面靶标,其核心优势在于角点检测的鲁棒性和亚像素定位精度。一个合格的标定板需要满足以下条件:

  • 方格尺寸精确:每个黑白方格的物理边长必须精确测量(如 30mm ± 0.01mm),该值作为世界坐标系的尺度基准,直接影响内参中焦距 fx、fy 的精度。
  • 平面度要求:标定板应粘贴在刚性玻璃或铝板上,表面平面度误差应小于 0.1mm,否则会引入系统性畸变误差。
  • 角点数量与分布:建议内角点数量不少于 7×7(即 8×8 方格),保证单应性矩阵求解的过约束性。
  • 表面处理:采用哑光材质,避免反光导致角点检测失败;黑白对比度应大于 5:1。

图像采集是标定流程中最容易出错的环节。采集时需注意:标定板应占据视场面积的 1/3 至 2/3,避免过小导致角点提取不稳定;标定板姿态需覆盖俯仰、偏航、翻滚三个自由度,且倾斜角度控制在 20°~45° 之间;采集数量建议为 15~20 张,过少会导致内参求解病态,过多则增加计算时间且可能引入模糊帧。

经验提醒:在机器人手眼标定场景中,标定板应固定在机械臂工作空间内的不同位置,而非仅放在相机正前方。这样可以使标定结果对工作空间内的不同深度和视角都具有适应性,避免后续手眼标定出现局部最优。

4.2 张正友标定法:从单应性矩阵到内参约束

张正友标定法(Zhang's Method)是介于传统标定与自标定之间的经典方案,仅需平面棋盘格即可完成标定。其数学核心分为三步:

  1. 计算单应性矩阵 H:对于每张标定板图像,建立世界坐标系(Z=0 平面)到像素坐标系的映射关系。设棋盘格角点世界坐标为 (X, Y, 0),像素坐标为 (u, v),则有:
s * [u, v, 1]^T = K * [r1, r2, t] * [X, Y, 1]^T
其中 K 为内参矩阵,r1、r2 为旋转矩阵前两列,t 为平移向量

每张图像可求解一个 3×3 的单应性矩阵 H,H 包含了内参和外参的混合信息。

  1. 建立内参约束方程:由于旋转矩阵的正交性(r1^T * r2 = 0 且 |r1| = |r2|),可以从 H 矩阵中提取两个关于内参的线性约束。通过至少 3 张不同姿态的图像,即可线性求解内参矩阵 K 的闭式解。
  2. 非线性优化:以闭式解为初值,使用 Levenberg-Marquardt 算法最小化重投影误差,同时优化内参、外参和畸变系数。

张正友法的优势在于:无需昂贵的 3D 标定块,仅需平面靶标;数学上可证明闭式解的稳定性;对镜头畸变有较好的鲁棒性。但其局限性在于:标定板必须为平面,且图像数量不足时容易陷入局部极小值。

4.3 内参与畸变系数求解:数学模型与优化策略

相机内参矩阵 K 包含四个关键参数:

参数 符号 物理意义 典型值范围(工业相机)
焦距 x 方向 fx 像素单位下的水平焦距 500 ~ 5000
焦距 y 方向 fy 像素单位下的垂直焦距 500 ~ 5000
主点 x 坐标 cx 光轴与成像平面交点 图像宽度/2 ± 50
主点 y 坐标 cy 光轴与成像平面交点 图像高度/2 ± 50

畸变系数通常采用 Brown-Conrady 模型,包含径向畸变(k1, k2, k3)和切向畸变(p1, p2)。径向畸变由镜头曲面引起,切向畸变由镜头与成像平面不平行引起。畸变模型可表示为:

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
其中 r^2 = x^2 + y^2,x、y 为归一化平面坐标

求解流程通常为:先忽略畸变,用线性方法求内参初值;再引入畸变模型,用极大似然估计优化所有参数;最后根据重投影误差判断是否需要增加 k3 项(一般广角镜头或鱼眼镜头才需要)。

风险提示:畸变系数并非越多越好。对于常规工业镜头,使用 k1、k2、p1、p2 四个参数即可;盲目增加 k3 可能导致过拟合,尤其在标定图像数量不足时,高阶畸变项会吸收噪声,反而降低标定精度。

4.4 重投影误差评估:量化标定质量的黄金指标

重投影误差(Reprojection Error)是衡量标定结果的核心指标,其定义为:将世界坐标系中的角点通过标定得到的内参、外参和畸变系数投影到像素平面,计算投影点与实际检测点之间的欧氏距离。均方根误差(RMS)计算公式为:

RMS = sqrt( (1/N) * Σ || p_i - p'_i ||^2 )
其中 p_i 为检测角点,p'_i 为投影角点,N 为所有图像的总角点数

评估标准如下:

  • RMS < 0.1 像素:优秀,标定结果可靠,可用于高精度手眼标定。
  • 0.1 ≤ RMS < 0.3 像素:良好,可接受,但需检查是否存在个别异常图像。
  • RMS ≥ 0.3 像素:较差,需要重新采集图像或检查标定板质量。

当重投影误差偏大时,应按照以下顺序排查:首先检查标定板方格尺寸是否输入错误;其次检查图像是否模糊或存在运动模糊;然后检查标定板是否弯曲;最后检查是否有个别图像的角点检测错误(可通过可视化角点检测结果确认)。

案例拆解:某机器人视觉引导项目使用 500 万像素工业相机(2448×2048),搭配 8mm 镜头,标定板为 12×9 方格(边长 25mm)。初次采集 12 张图像,标定后 RMS 为 0.42 像素,明显超标。分析发现:其中 3 张图像标定板倾斜角超过 60°,导致角点检测不稳定;另有 2 张图像标定板边缘超出视场。重新采集 18 张图像,控制倾斜角在 25°~40° 之间,并确保标定板完整出现在视场内。再次标定后 RMS 降至 0.08 像素,内参 fx=1823.5, fy=1822.1, cx=1224.3, cy=1021.7,畸变系数 k1=-0.112, k2=0.023, p1=0.0012, p2=-0.0008。后续手眼标定的平移误差从 2.1mm 降至 0.4mm,验证了标定质量提升的效果。

4.5 常见误区与总结复盘

在相机标定实践中,以下误区需要特别警惕:

  • 误区一:标定图像越多越好。实际上,超过 30 张后精度提升有限,且容易引入重复姿态,导致信息冗余。关键在于姿态多样性而非数量。
  • 误区二:忽略标定板平面度。使用打印纸粘贴在非刚性表面,会导致角点坐标在三维空间中的实际位置与理想平面偏差,引入系统性误差。
  • 误区三:固定焦距后重新标定。变焦镜头或自动对焦镜头在焦距改变后必须重新标定,否则内参失效。
  • 误区四:只关注 RMS 而忽略单张图像误差分布。应检查每张图像的最大重投影误差,若某张图像误差明显大于其他图像,应剔除该帧。

总结复盘:相机标定的本质是参数估计问题,其精度受限于标定板精度、图像质量、算法优化能力和环境稳定性。在机器人手眼标定项目中,建议将相机标定作为独立工序,每次标定后保存标定报告(包括 RMS、内参、畸变系数、采集图像列表),便于后续追溯和问题定位。同时,标定环境的光照应均匀稳定,避免高光或阴影干扰角点检测。通过严格的标定流程控制,才能为后续的手眼矩阵求解提供可靠的数据基础。