4. 相机标定原理:针孔相机模型、内参矩阵、畸变模型、标定板与标定流程

相机标定是3D视觉引导抓取的基石。它建立了从三维世界坐标到二维像素坐标的映射关系,并校正镜头畸变。本章深入剖析针孔相机模型、内参矩阵、畸变模型、标定板选择及完整标定流程,为后续手眼标定与位姿解算提供精确的相机参数。

4.1 针孔相机模型

针孔相机模型是理想化的线性投影模型,描述了空间点 P(X, Y, Z) 如何通过光心投影到成像平面上的点 p(x, y)。其核心是相似三角形原理:

  • 光心 (O):相机坐标系原点,光线汇聚点。
  • 主光轴:过光心且垂直于成像平面的直线。
  • 焦距 (f):光心到成像平面的距离。
  • 成像平面:感光元件所在平面,像点在此形成。
关键公式: 在理想针孔模型下,
x = f * (X / Z)    y = f * (Y / Z)
其中 (X, Y, Z) 为相机坐标系下的三维坐标,(x, y) 为归一化成像平面坐标。
针孔相机模型示意图 针孔相机模型 物体 P(X,Y,Z) 光心 O 成像平面 p(x,y) 主光轴 焦距 f 说明:物体通过光心在成像平面上形成倒立缩小的实像。实际应用中,我们通过数学变换将像平面翻转,得到正立图像。

4.2 内参矩阵

内参矩阵 K 将归一化成像平面坐标转换为像素坐标,包含焦距、主点偏移和像素尺寸信息。它是相机固有的属性,与相机位置无关。

参数 符号 含义 单位
焦距 x 方向 fx f / dx,dx 为像素宽度 像素
焦距 y 方向 fy f / dy,dy 为像素高度 像素
主点 x 坐标 cx 光轴与成像平面交点的像素列坐标 像素
主点 y 坐标 cy 光轴与成像平面交点的像素行坐标 像素
倾斜因子 s 像素坐标系倾斜系数(通常为0) —
内参矩阵 K 的标准形式:
K = [[f_x,   s, c_x],
     [  0, f_y, c_y],
     [  0,   0,   1]]
对于大多数工业相机,s ≈ 0,矩阵简化为对角线形式。

4.3 畸变模型

实际镜头存在光学畸变,导致像素位置偏离理想针孔模型。主要分为径向畸变和切向畸变。

  • 径向畸变:由镜头形状引起,光线在边缘弯曲更严重。包括桶形畸变(负)和枕形畸变(正)。用参数 k1, k2, k3 描述。
  • 切向畸变:由镜头与成像平面不平行引起。用参数 p1, p2 描述。
畸变校正公式:
x_corrected = x * (1 + k1*r^2 + k2*r^4 + k3*r^6) + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_corrected = y * (1 + k1*r^2 + k2*r^4 + k3*r^6) + [p1*(r^2 + 2*y^2) + 2*p2*x*y]
其中 r2 = x2 + y2,(x, y) 为归一化坐标。
畸变模型对比 畸变模型对比 理想图像 径向畸变(桶形) 切向畸变 说明:径向畸变使直线向外或向内弯曲;切向畸变使直线整体偏移。标定过程同时估计这两类畸变参数,用于校正图像。

4.4 标定板与标定流程

标定板提供已知尺寸的精确特征点,是相机标定的物理基准。常用标定板类型:

类型 特征 优点 缺点
棋盘格 角点 检测算法成熟,精度高 需要完整可见
圆点阵列 圆心 亚像素精度高,抗遮挡 需要椭圆拟合
ChArUco 角点+ID 支持部分遮挡,可多板组合 算法稍复杂

4.5 完整标定流程

标准相机标定流程分为以下步骤,通常使用OpenCV或Halcon实现:

  1. 准备标定板:打印高精度棋盘格或圆点阵列,测量方格尺寸(如30mm×30mm)。
  2. 采集图像:从不同角度、距离、姿态拍摄15~30张标定板图像。确保标定板覆盖视场各个区域。
  3. 特征点提取:使用角点检测或圆心检测算法,提取每张图像中的特征点像素坐标。
  4. 求解内参和畸变:基于针孔模型和畸变模型,使用最小二乘法优化内参矩阵K和畸变系数(k1, k2, k3, p1, p2)。
  5. 重投影误差评估:计算所有特征点的重投影误差,通常要求平均误差 < 0.5像素。
  6. 保存标定结果:将内参矩阵和畸变系数保存为配置文件,供后续抓取位姿计算使用。
标定避坑指南:
- 标定板必须平整,避免弯曲或褶皱。
- 图像数量不宜过少(<10张),否则参数不稳定。
- 采集时标定板倾斜角度不宜过大(<45°),否则特征点提取失败。
- 定期重新标定,尤其是相机受到震动或温度变化后。

4.6 标定结果验证

标定完成后,必须验证参数的正确性。常用验证方法:

  • 重投影误差:将三维点重投影到图像,计算与检测点的像素距离。平均误差应 < 0.3像素。
  • 畸变校正效果:对一张包含直线的图像进行畸变校正,观察直线是否恢复平直。
  • 三维重建测试:使用标定参数对已知尺寸的物体进行三维测量,验证精度。
标定结果示例(OpenCV输出):
内参矩阵 K:
[[532.15,   0.  , 320.78],
 [  0.  , 531.89, 240.45],
 [  0.  ,   0.  ,   1.  ]]

畸变系数:
[k1, k2, p1, p2, k3] = [-0.283, 0.082, -0.001, 0.002, -0.015]

重投影误差: 0.12 像素

精确的相机标定是3D视觉引导抓取的基础。只有获得准确的内参和畸变参数,后续的手眼标定和位姿解算才能达到亚毫米级精度,确保机器人抓取的成功率。