入门

相机标定入门:原理、流程与常见误区

相机标定求的是焦距、主点、畸变等内参以及相机之间的位置关系。本文讲清针孔模型与平面标定板标定的原理,给出一套可执行的标定流程,并逐条分析“重投影误差越低越好”等八个常见误区。

要点

  • 相机标定求的是“三维点如何变成像素”这套数学模型的参数:内参(焦距、主点)、畸变系数,以及多台相机之间、相机与其他设备之间的外参。
  • 工业上最常用的做法是:用平面标定板从多个角度拍摄十几到几十张图像,检测特征点后做非线性优化,也就是张正友平面标定法及其扩展。
  • 标定结果只对标定时的镜头状态有效。调焦、变焦、改光圈,或者改变分辨率、裁剪区域之后,都需要重新标定。
  • 重投影误差低是必要条件,不是充分条件,还要检查图像覆盖、参数不确定度,并做独立验证。
  • 标定板的尺寸精度和平面度决定了外参、双目基线和测量结果这把“尺子”准不准。

什么是相机标定?

相机把三维世界投影成二维图像。这个过程可以用一个数学模型描述:给定空间中一个点的坐标,模型能算出它落在图像的哪个像素上。相机标定(camera calibration)就是通过拍摄几何尺寸已知的物体——通常是标定板——来估计这个模型的参数。

完成标定后,才能可靠地做以下工作:

  • 把像素距离换算成毫米,进行尺寸测量;
  • 校正镜头畸变,让直线在图像中保持笔直;
  • 用双目或多相机做三维重建和测距;
  • 把相机坐标与机器人、激光雷达、IMU 等设备的坐标统一起来;
  • 在 AR、数字孪生等应用中让虚拟内容与真实画面对齐。

广义的“标定”还包括双目和多相机的外参标定、机器人手眼标定、相机与激光雷达或 IMU 的联合标定等,它们几乎都以单台相机的内参标定为基础。

内参:焦距、主点与畸变

内参(intrinsic parameters)描述相机自身的成像特性,与相机放在哪里无关:

  • 焦距 fx、fy:以像素为单位,约等于镜头焦距除以像元尺寸。例如 8 mm 镜头配 3.45 µm 像元,fx ≈ 8 / 0.00345 ≈ 2319 px。像元为正方形时,fx 与 fy 非常接近。
  • 主点 cx、cy:光轴与传感器平面的交点。由于镜头与传感器存在装配偏差,它通常不在图像的正中心。
  • 畸变系数:真实镜头不是理想的针孔。径向畸变(radial distortion)让直线向外鼓(桶形)或向内收(枕形);切向畸变(tangential distortion)主要来自镜片的偏心或倾斜。

外参:相机在哪里、朝向哪里

外参(extrinsic parameters)描述两个坐标系之间的刚体变换,即旋转 R 和平移 t。单相机标定时,每张图像都会解出一个“标定板相对相机”的位姿;双目和多相机标定还要求出相机之间的相对位姿,两台相机光心之间的距离就是基线(baseline)。

一个三维点是如何变成像素的?

最常用的是“针孔 + 畸变”模型,可以分四步理解:

  1. 坐标变换:把点从标定板(或世界)坐标系变换到相机坐标系,P_cam = R · P_board + t,得到 (X, Y, Z)。
  2. 透视除法:投影到距光心为 1 的归一化平面,x = X / Z,y = Y / Z。
  3. 加入畸变:按畸变模型把 (x, y) 变成 (x_d, y_d),例如径向部分 x_d = x · (1 + k1·r² + k2·r⁴ + k3·r⁶),其中 r² = x² + y²。
  4. 换算成像素:u = fx · x_d + cx,v = fy · y_d + cy。

广角和鱼眼镜头需要换用其他投影模型,详见相机模型怎么选。

为什么一块平面标定板就能完成标定?

标定板上每个特征点(角点或圆心)在板坐标系中的位置都是已知的,而且都位于同一个平面上(z = 0)。忽略畸变时,平面到图像的映射是一个 3×3 的单应矩阵(homography)。每拍一张图,就能求出一个单应矩阵,而每个单应矩阵能为内参提供两个约束方程。只要有足够多姿态不同的图像,就能解出内参的初值。这正是张正友平面标定法的核心思想。

有了初值,再用非线性最小二乘(如 Levenberg–Marquardt 算法)同时优化内参、畸变系数和每张图的位姿,使所有特征点重投影误差(reprojection error)的平方和最小。重投影误差指的是:用当前参数把已知的三维点投影到图像上,投影位置与实际检测位置之间的像素距离。

这里有一个关键前提:各张图中标定板的朝向必须不同。如果各张图中的板面都相互平行,例如始终正对相机、只是平移或在板面内转动,每张图提供的约束就是重复的,焦距和拍摄距离无法区分——拍得再多也解不准。

一套可执行的标定流程

步骤 要做的事 延伸阅读
1. 明确需求 工作距离、视场、精度目标;单目、双目还是手眼 —
2. 选择标定板 图案类型、外形尺寸、方格大小、基材 图案、尺寸、基材
3. 固定相机状态 锁定对焦、光圈、变焦,关闭自动对焦和图像增强 采集最佳实践
4. 采集图像 多角度倾斜,覆盖画面四角与边缘,远近有变化 同上
5. 检测特征 亚像素提取角点或圆心,剔除检测失败或可疑的图像 —
6. 优化求解 选择相机模型,初始化后做非线性优化,剔除离群点 相机模型
7. 评估结果 RMS、逐图误差、参数标准差、覆盖情况 看懂标定结果
8. 独立验证 用未参与标定的图像或已知尺寸进行检验 同上
9. 保存与归档 记录相机序列号、镜头设置、分辨率、日期、标定板编号 —

第 9 步最容易被忽略。几个月后系统出了问题,如果不知道当时用的是哪块板、什么镜头设置,就无从排查。

像素误差换算到物体上是多少?

标定结果和特征检测精度通常以像素表示。想知道它在被测物上大约对应多少毫米,可以用物方像素尺寸换算:

物方像素尺寸 = 视场宽度 / 图像宽度(像素)

例如视场宽 280 mm、图像宽 2448 px,每个像素对应约 0.11 mm,0.1 像素的误差相当于物体上约 11 µm。这只是量级估计:实际测量误差还取决于标定误差在画面中的分布、被测物边缘的提取精度,以及物体是否处在标定时覆盖的距离范围内。

单目相机标定后能测距吗?

标定之后,每个像素都可以反投影成一条空间射线,但单凭一张图无法知道物点在射线上的哪个位置。因此单目相机只能在有额外约束时做三维测量:例如物体位于一个已知平面上(如传送带平面,需要先求出该平面相对相机的位姿),或者物体本身的几何尺寸已知(用 PnP 算法求位姿)。需要测量任意点的三维坐标时,应采用双目、多相机或结构光等方案。

常见误区

误区一:重投影误差越低,标定越好

RMS 只反映模型对“参与标定的这些点”拟合得好不好。如果所有图像都集中在画面中央,边角的畸变完全靠外推,RMS 可以很低,边缘的实际误差却可能达到几个像素。参数过多的模型、过少的图像也会让 RMS 偏低。

误区二:图像越多越好

真正起作用的是姿态和位置的多样性。三十张姿态几乎相同的图像,不如十五张角度、位置、远近各不相同的图像。重复的图像还会让结果偏向某一区域。

误区三:标定板正对相机拍就行

正对拍摄时透视效果很弱,焦距与距离高度相关。应让标定板绕水平轴和竖直轴分别倾斜,常用范围约 30–45°。

误区四:标定完还能调焦或改光圈

调焦会改变镜头的有效焦距和畸变,变焦的影响更大,改变光圈也可能带来细微变化。这些设置应在标定前调到实际使用状态并锁定,标定后不再改动。

误区五:打印一张纸贴在板上就够用

普通打印机存在缩放误差,纸张会随湿度伸缩,粘贴时容易起鼓、不平。用于演示和试验没有问题,用于测量或多相机标定时,这些误差会直接进入结果。

误区六:畸变参数越多越精确

参数越多,模型的拟合能力越强,但也需要更多、分布更好的数据来约束。数据不足时会过拟合:在标定数据上误差很小,换个位置却变差。大多数工业镜头用 5 参数畸变模型就足够了。

误区七:方格尺寸填错影响不大

方格尺寸填错时,焦距、主点、畸变这些内参基本不受影响,RMS 也看不出任何异常;但所有平移量都会按比例出错——双目基线、手眼标定的平移、以毫米计的测量结果都会偏。正因为不容易发现,务必核对板上标注的参数。

误区八:标定一次,永久有效

运输振动、碰撞、镜头螺纹松动、温度变化都会让参数漂移。建议建立定期复检机制,例如测量一个已知长度,或检查双目极线校正后的纵向视差。

什么时候必须重新标定?

  • 更换了镜头或相机,或调整过对焦、变焦、光圈;
  • 改变了图像分辨率、binning 或 ROI——裁剪会改变主点坐标,binning 会改变以像素计的焦距;
  • 相机或支架受到碰撞,或经过拆装;
  • 工作温度与标定时相差较大,而应用的精度要求较高;
  • 定期复检发现误差超出了允许范围。

需要帮您选标定板?

把相机分辨率、像元尺寸、焦距、工作距离和应用场景告诉我们,我们给出图案、尺寸与基材建议。