4. 相机标定原理
相机标定是连接二维图像与三维空间的第一步,也是机器人手眼标定的前置基础。本章聚焦于最经典的张正友标定法,从标定板设计、数学模型到畸变校正,建立完整的标定理论框架。
4.1 张正友标定法核心原理
张正友标定法(Zhang’s Method)于1998年提出,核心思想是:通过拍摄多张不同姿态的平面棋盘格图像,利用单应性矩阵约束,线性求解相机内参初值,再通过非线性优化得到精确结果。该方法不需要高精度的3D标定物,仅需一个打印的棋盘格,极大降低了标定门槛。
4.1.1 数学模型与求解流程
标定过程可分解为以下关键步骤:
- 提取角点:在每张图像中检测棋盘格内角点,获得亚像素精度的像素坐标。
- 计算单应性矩阵:对每张图像,建立世界坐标系(Z=0平面)到像素坐标系的单应性矩阵 H。
- 求解内参初值:利用旋转矩阵的正交约束,从多张图像的 H 矩阵中线性解出内参矩阵 K。
- 求解外参初值:根据内参和 H 矩阵,计算每张图像的旋转矩阵 R 和平移向量 t。
- 非线性优化:以重投影误差最小化为目标,使用Levenberg-Marquardt算法对所有参数(内参、畸变系数、外参)进行全局优化。
重投影误差公式:
min Σ || p_ij - p̂(K, k1, k2, p1, p2, R_i, t_i, P_j) ||²
其中 p_ij 为第 i 张图像中第 j 个角点的实际像素坐标,p̂ 为根据当前参数计算的重投影坐标。目标是最小化所有角点的重投影误差平方和。
4.1.2 张正友标定法流程
下图展示了从图像采集到参数输出的完整标定流程:
4.2 棋盘格标定板设计
棋盘格标定板是张正友标定法的核心工具,其设计质量直接影响标定精度。设计时需关注以下关键参数:
| 参数 | 推荐值/要求 | 说明 |
|---|---|---|
| 棋盘格尺寸 | 7×9 或 8×11 内角点 | 内角点数量指黑白方格相交的角点,非方格总数 |
| 方格边长 | 20mm ~ 40mm | 根据相机视场角和工作距离选择,保证角点清晰可辨 |
| 打印精度 | ≥ 600 DPI | 低精度打印会导致角点位置偏差,引入系统误差 |
| 衬底材质 | 刚性平板(亚克力/铝板) | 柔性纸张在粘贴时会产生曲面变形,破坏平面假设 |
| 图案对称性 | 非对称设计(如一侧加边框) | 便于自动识别标定板的方向和编号 |
实战建议:标定板应覆盖相机视场的不同区域(中心、边缘、四角),并在不同距离和倾角下采集15~25张图像。避免所有图像都集中在同一平面或同一姿态,否则会导致内参解算病态。
4.3 畸变模型:径向畸变与切向畸变
实际镜头并非理想的小孔成像模型,光线通过透镜时会产生畸变。畸变主要分为两类:径向畸变(由透镜形状引起)和切向畸变(由透镜与成像平面不平行引起)。
4.3.1 径向畸变(Radial Distortion)
径向畸变是影响最大的畸变类型,表现为图像点沿径向方向向内或向外偏移。根据偏移方向分为:
- 桶形畸变(Barrel Distortion):图像点向中心收缩,常见于广角镜头。
- 枕形畸变(Pincushion Distortion):图像点向外扩张,常见于长焦镜头。
径向畸变的数学模型使用泰勒级数展开,通常取前两项或三项:
x_corrected = x * (1 + k1 * r² + k2 * r⁴ + k3 * r⁶)
y_corrected = y * (1 + k1 * r² + k2 * r⁴ + k3 * r⁶)
其中 (x, y) 为归一化平面上的畸变坐标,r² = x² + y²,k1、k2、k3 为径向畸变系数。对于普通镜头,k1 和 k2 已足够;对于鱼眼镜头或高畸变镜头,需要引入 k3。
4.3.2 切向畸变(Tangential Distortion)
切向畸变由镜头组装时透镜与成像平面不平行导致,表现为图像点沿切线方向偏移。其数学模型为:
x_corrected = x + [2 * p1 * x * y + p2 * (r² + 2 * x²)]
y_corrected = y + [p1 * (r² + 2 * y²) + 2 * p2 * x * y]
其中 p1、p2 为切向畸变系数。切向畸变通常远小于径向畸变,但在高精度标定中不可忽略。
4.3.3 畸变模型对比
| 畸变类型 | 产生原因 | 数学模型参数 | 典型影响 |
|---|---|---|---|
| 径向畸变 | 透镜曲面形状非理想 | k1, k2, k3 | 直线弯曲,边缘变形明显 |
| 切向畸变 | 透镜与成像平面不平行 | p1, p2 | 图像倾斜,矩形变梯形 |
4.3.4 畸变校正流程
完整的畸变校正过程分为两步:
- 标定阶段:通过张正友标定法求解畸变系数 k1, k2, k3, p1, p2。
- 校正阶段:对每个像素,根据畸变模型计算其对应的理想坐标,然后通过插值(如双线性插值)得到校正后的像素值。
注意:畸变校正是像素级的重映射,计算量较大。在实时机器人视觉系统中,建议预先计算校正映射表(remap),运行时直接查表,避免逐像素实时计算。
4.4 标定结果验证
标定完成后,必须验证标定结果的准确性。常用验证方法包括:
- 重投影误差:所有角点的平均重投影误差应小于 0.5 像素,优秀标定可达 0.1 像素以下。
- 畸变校正可视化:将棋盘格图像进行畸变校正,观察棋盘格直线是否恢复为直线。
- 三维重建验证:使用标定结果对已知尺寸的物体进行三维测量,验证测量精度。
下表总结了标定质量的常见判断标准:
| 指标 | 优秀 | 良好 | 需重新标定 |
|---|---|---|---|
| 平均重投影误差 | < 0.15 像素 | 0.15 ~ 0.5 像素 | > 0.5 像素 |
| 最大重投影误差 | < 0.5 像素 | 0.5 ~ 1.0 像素 | > 1.0 像素 |
| 图像数量 | 20 ~ 30 张 | 15 ~ 20 张 | < 10 张 |
| 姿态覆盖 | 全视场多角度 | 大部分区域覆盖 | 集中在中心区域 |
核心要点回顾:
- 张正友标定法利用平面棋盘格的多张图像,通过单应性矩阵约束线性求解内参初值,再通过非线性优化得到精确结果。
- 棋盘格标定板需保证平面度、打印精度和足够的角点数量,设计时需考虑相机视场和工作距离。
- 畸变模型包含径向畸变(k1, k2, k3)和切向畸变(p1, p2),校正时需先标定畸变系数,再通过重映射实现像素级校正。
- 标定完成后必须验证重投影误差和畸变校正效果,确保标定质量满足后续手眼标定和3D定位的精度要求。