2. 标定基础理论:相机内参、外参、畸变模型(径向/切向)详解

做深度相机标定这些年,我最大的感触就是——理论不扎实,后面全是坑。今天咱们就把相机标定的几个核心概念掰开揉碎讲清楚。你想想看,一台相机放在产线上,它怎么知道拍到的物体在真实世界里长什么样?这背后就是内参、外参和畸变模型在起作用。

2.1 相机内参:相机自己的“基因密码”

内参说白了,就是相机本身的固有属性。它描述了三维空间点如何投影到二维图像平面。我习惯用一个简单的矩阵来表示:

K = [fx  0  cx]
    [ 0  fy cy]
    [ 0   0  1]

这里每个参数都有物理意义:

  • fx, fy:焦距参数,单位是像素。它们决定了物体在图像中放大的倍数。
  • cx, cy:主点坐标,也就是光轴与图像平面的交点。理想情况下在图像中心,但实际总有偏差。
我的经验:有一次产线上发现深度图总是偏左,排查了半天,最后发现是主点标定偏差了3个像素。嗯,别小看这几个像素,在远距离测量时误差会被放大好几倍。

内参矩阵还有一个重要特性——上三角矩阵。这意味着它只包含5个自由度(fx, fy, cx, cy, 以及一个倾斜参数s,但现代相机s通常为0)。

2.2 相机外参:相机在空间中的“位置和姿态”

外参解决的是另一个问题:相机坐标系和世界坐标系之间怎么转换?

外参由两部分组成:

  • 旋转矩阵 R(3×3):描述相机的朝向
  • 平移向量 t(3×1):描述相机的位置

合在一起,就是一个4×4的齐次变换矩阵:

[R | t]
[0 | 1]

我个人习惯把外参理解为“相机在真实世界里的身份证”。同一个场景,换个角度拍,外参就变了。但内参不会变——除非你动了镜头或换了相机。

关键点:内参是“相机到图像”的映射,外参是“世界到相机”的映射。两者结合,才能把真实世界的点投影到图像上。

2.3 畸变模型:为什么直线会变弯?

你想想看,理想情况下相机应该遵循小孔成像模型。但实际镜头都有光学缺陷,导致图像变形。这就是畸变。我把它分为两类:

2.3.1 径向畸变

径向畸变是最常见也最明显的畸变。它来自镜头本身的曲面形状。说白了,就是光线经过透镜边缘时弯曲得比中心厉害。

数学上,我们用三个参数来描述:k1, k2, k3。校正公式如下:

x_corrected = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_corrected = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)

其中 r 是像素点到图像中心的距离。你会发现,离中心越远,畸变越严重

避坑指南:我曾经遇到一个项目,标定出来的k3值特别大。一开始以为是镜头质量问题,后来发现是标定板放得太近了。记住,k3只在广角镜头或大畸变情况下才需要,普通镜头用k1、k2就够了。

2.3.2 切向畸变

切向畸变就没那么直观了。它是因为镜头和成像平面不平行造成的。说白了,就是镜头装歪了。

切向畸变用两个参数描述:p1, p2。校正公式:

x_corrected = x + [2*p1*x*y + p2*(r² + 2*x²)]
y_corrected = y + [p1*(r² + 2*y²) + 2*p2*x*y]

嗯,公式看着有点复杂。但实际项目中,切向畸变通常比径向畸变小一个数量级。我一般先看径向畸变,如果效果不满意再考虑切向。

2.4 知识体系总览

下面这张图,是我自己总结的标定理论核心逻辑。你看一遍就能理清关系:

相机标定基础理论体系 相机内参 fx, fy, cx, cy 相机外参 R(旋转), t(平移) 畸变模型 径向 + 切向 内参作用 三维点 → 二维像素 焦距决定放大倍数 主点决定图像偏移 外参作用 世界坐标 → 相机坐标 旋转矩阵描述朝向 平移向量描述位置 畸变类型 径向畸变:k1, k2, k3 切向畸变:p1, p2 镜头装配误差导致 三者结合 → 完整的相机投影模型 标定的本质:求解这些参数的最优值 使得重投影误差最小化 产线标定重点:内参一次标定,外参随工位变化

2.5 畸变校正的完整流程

在实际产线中,我们不会手动去算这些公式。但理解流程很重要。我一般按这个步骤走:

  1. 采集标定板图像:至少20张,覆盖不同角度和距离
  2. 提取角点:找到标定板上棋盘格或圆点的精确位置
  3. 求解内参和外参:用最小二乘法拟合
  4. 计算畸变系数:基于重投影误差优化
  5. 应用校正:生成去畸变后的图像
产线实战要点:
  • 标定板必须平整,我见过用亚克力板代替陶瓷板的,结果标定误差大了3倍
  • 光照要均匀,避免反光点干扰角点提取
  • 标定完成后一定要做验证——拍一张已知尺寸的物体,看测量值是否准确

2.6 一个常见的误解

很多人以为标定一次就一劳永逸了。其实不然。我遇到过的情况:

  • 镜头松动后,内参变了
  • 温度变化导致镜头热胀冷缩,畸变参数漂移
  • 产线振动让相机位置偏移,外参需要重新标

所以,定期复标是产线运维的必修课。我个人建议:量产前做一次完整标定,之后每周做一次快速验证。

小技巧:快速验证不需要重新跑全套流程。你只需要拍一张标定板,算一下重投影误差。如果误差超过0.5像素,就该重新标定了。

好了,这一章的内容就到这里。内参、外参、畸变模型这三个概念,是后续所有标定操作的基础。你把这些吃透了,后面讲张正友标定法、立体标定、手眼标定的时候,就会轻松很多。

专注资料整理