2、相机标定原理:标定板设计(棋盘格/圆点阵)。张正友标定法核心思想。单应性矩阵与内外参求解。

相机标定,说白了就是给相机做一次“视力矫正”。

你想想看,镜头天生就有畸变,广角镜头尤其明显。我最早做车载环视项目时,第一次看到鱼眼镜头拍出来的画面——停车场柱子全是弯的,吓得我赶紧去查标定资料。嗯,从那以后我就明白了:不标定,畸变校正就是空中楼阁。

2.1 标定板设计:棋盘格 vs 圆点阵

标定板是标定的“尺子”。你得有一块已知尺寸的图案,相机才能算出自己的参数。

核心原则:标定板上的特征点必须能被算法稳定、精确地检测到。精度不够,后面全白搭。

棋盘格标定板

这是最常用的方案。黑白格子交替排列,角点就是特征点。

  • 优点:角点检测算法成熟(OpenCV 的 findChessboardCorners),亚像素精度高。
  • 缺点:必须保证棋盘格完整出现在视野中,部分遮挡时检测会失败。
  • 我踩过的坑:有一次在户外标定,阳光太强,黑白格反光严重,角点检测直接崩了。后来我换了哑光覆膜的标定板,问题解决。

圆点阵标定板

圆形图案,圆心作为特征点。

  • 优点:圆心定位精度更高(理论上可达 0.01 像素级),对部分遮挡更鲁棒。
  • 缺点:透视畸变会让圆变成椭圆,需要做椭圆拟合,计算量稍大。
  • 适用场景:高精度工业测量、显微成像。
对比项 棋盘格 圆点阵
特征点类型 角点 圆心
检测鲁棒性 需完整视野 可部分遮挡
亚像素精度 高 更高
计算开销 低 中
个人推荐 通用首选 高精度场景

我的建议:如果你刚开始做标定,先用棋盘格。OpenCV 的例程最多,遇到问题好查。等流程跑通了,再考虑圆点阵提升精度。

2.2 张正友标定法核心思想

张正友标定法,是 1998 年张正友博士提出的。它解决了“用 2D 平面标定板标定 3D 相机”的问题。

为什么它这么牛?因为在此之前,标定需要高精度的 3D 标定块,又贵又难做。张正友的方法只需要你打印一张棋盘格,贴在平面上,拍几张不同角度的照片就行。

核心思想就一句话:利用平面标定板上的已知点,建立 2D 图像点到 3D 世界点的映射关系,然后通过数学推导,把相机内参、外参、畸变系数一步步解出来。

具体步骤我拆解一下:

  1. 拍一组图片:标定板放在不同位置、不同角度,至少 10-15 张。
  2. 检测特征点:提取每张图片中的角点或圆心坐标。
  3. 计算单应性矩阵:每张图片对应一个单应性矩阵 H。
  4. 求解内参:利用 H 矩阵的约束条件,解出内参矩阵 K。
  5. 求解外参:内参已知后,每张图片的外参(旋转 R 和平移 t)就出来了。
  6. 优化畸变:用最小二乘法拟合畸变系数。
  7. 全局优化:用 Levenberg-Marquardt 算法做一次整体优化。

注意:标定板必须平整!我曾经用一张海报纸当标定板,结果纸有褶皱,标定出来的内参偏差很大。后来换了 3mm 亚克力板,精度才稳定下来。

2.3 单应性矩阵与内外参求解

单应性矩阵 H,是连接“世界平面”和“图像平面”的桥梁。

它的数学形式是 3x3 矩阵,有 8 个自由度(因为尺度归一化)。

// 单应性矩阵的数学表达
// s * [u, v, 1]^T = H * [X, Y, 1]^T
// 其中 H = K * [r1, r2, t]
// K 是内参矩阵,r1、r2 是旋转矩阵的前两列,t 是平移向量

每张标定板图片,都能算出一个 H。怎么算?用至少 4 个点对,通过直接线性变换(DLT)求解。

有了 H 之后,内参怎么解?这里有个关键约束:旋转矩阵的列向量是正交的,且模长为 1。

数学推导我就不展开了,直接说结论:

  • 从 H 矩阵中提取出两个约束方程。
  • 多张图片的约束方程联立,可以解出内参矩阵 K 的 5 个参数(fx, fy, cx, cy, skew)。
  • 内参已知后,外参 R 和 t 可以直接从 H 和 K 反算出来。

工程要点:实际求解时,OpenCV 的 calibrateCamera 函数已经封装好了。但你得理解背后的原理——否则遇到标定失败时,你连日志都看不懂。

2.4 知识体系总览

下面这张图,把整个标定原理串起来了。我建议你保存下来,做项目时对照着看。

相机标定原理知识体系 相机标定原理知识体系 相机标定 标定板设计 张正友标定法 单应性矩阵 H 棋盘格 圆点阵 拍图检测 求解 H DLT 求解 正交约束 输出:内参 K + 外参 R,t + 畸变系数 工程要点 标定板必须平整,图片至少 10-15 张 覆盖视野的各个区域,避免只拍中心 重投影误差 < 0.5 像素才算合格

2.5 工程落地要点

理论说完了,聊点实际的。我在几个量产项目里总结的经验:

标定图片怎么拍?

  • 标定板占画面 1/4 到 1/3 大小,别太小也别太大。
  • 角度变化:俯仰 ±30°,偏航 ±30°,滚转随意。
  • 距离变化:从最近到最远,覆盖工作距离范围。
  • 我习惯拍 15-20 张,剔除重投影误差大于 0.5 像素的图片。

常见翻车现场:

  • 标定板反光 → 换哑光材质。
  • 标定板不平 → 用玻璃或亚克力板压平。
  • 图片模糊 → 确保快门速度够快,别手抖。
  • 特征点检测失败 → 检查光照是否均匀,对比度是否足够。

嗯,标定原理这部分就这些。记住:标定是畸变校正的基石,基础打牢了,后面的工程化部署才能稳。