2. 误差来源分析:镜头畸变、特征点检测噪声、标定板平面度

做标定这么多年,我最大的感受就是:重投影误差不是算出来的,是“攒”出来的。你想想看,一个像素的偏差,背后可能是镜头畸变没建模好,也可能是角点检测偏了半个像素,甚至可能是标定板本身就不平。这一章,咱们就把这三个“罪魁祸首”一个一个拎出来分析。

2.1 镜头畸变:最“诚实”的误差源

镜头畸变是物理世界的硬伤。说白了,就是光线穿过透镜时,不走直线了。我刚开始做标定时,总觉得畸变模型越复杂越好,后来发现——模型选不对,误差反而更大。

2.1.1 径向畸变 vs 切向畸变

畸变类型 产生原因 数学模型 典型表现
径向畸变 透镜曲面制造误差 k₁, k₂, k₃ 多项式 图像边缘“桶形”或“枕形”
切向畸变 透镜与传感器不平行 p₁, p₂ 参数 图像“梯形”拉伸

我个人习惯,先只标 k₁ 和 k₂。为什么?因为 k₃ 对边缘像素影响很大,但如果你标定板没拍满整个视场,k₃ 就是瞎猜。我在一个车载项目里吃过这个亏——用了 5 参数畸变模型,结果远角点误差反而比 3 参数还大。

我的经验: 普通工业镜头,3 参数(k₁, k₂, p₁)就够了。鱼眼镜头才需要 k₃ 甚至更多。别为了炫技加参数,误差会反噬你。

2.1.2 畸变对重投影误差的影响曲线

畸变误差在图像中心几乎为零,越往边缘越大。我习惯用下面这张图来理解:

畸变误差 vs 像素位置 像素到图像中心的距离 重投影误差 (pixel) 径向畸变 切向畸变 边缘区域误差可达到中心区域的 5~10 倍
避坑指南: 我曾经在一个项目中,只拍了标定板在画面中央的图片,结果畸变参数几乎为零。后来补拍了边缘图片,重投影误差从 0.3 像素降到了 0.08 像素。记住:没有边缘图像,就没有畸变参数。

2.2 特征点检测噪声:看不见的“抖动”

特征点检测,说白了就是找棋盘格角点或者圆点中心。但像素是离散的,亚像素精度再高,也有极限。我见过很多新手,把 OpenCV 的 findChessboardCorners 当成“真理”,其实它返回的坐标本身就有噪声。

2.2.1 噪声来源

  • 量化误差: 模拟信号转数字时,像素值被四舍五入。这是物理极限,躲不掉。
  • 光照不均匀: 标定板一半亮一半暗,角点检测会偏移。我在户外标定时吃过这个亏。
  • 图像模糊: 对焦不准或运动模糊,角点梯度变弱,亚像素定位精度下降。
  • 算法偏差: 不同检测算法(Harris、Shi-Tomasi、OpenCV 自带)对同一角点的定位可能差 0.1~0.3 像素。

2.2.2 噪声对重投影误差的影响

特征点噪声是随机误差,不像畸变那样有规律。它的影响可以用一个简单公式理解:

重投影误差 ≈ 特征点检测噪声 × 相机位姿敏感度

什么意思?就是如果你的相机离标定板很远,或者角度很刁钻,同样的 0.1 像素检测噪声,会被放大成 0.5 像素的重投影误差。我习惯用多帧平均来降低这个影响。

实用技巧: 对同一个标定板位姿,连续拍 5~10 张图,取角点坐标的平均值。这样能把随机噪声降低 √n 倍。我在一个高精度测量项目里,用这个方法把重投影误差从 0.15 像素降到了 0.06 像素。

2.3 标定板平面度:最容易被忽视的“隐形杀手”

嗯,这里要注意。标定板不平,是所有误差里最隐蔽、最难排查的。你想想看,如果标定板本身有 0.1mm 的弯曲,在 100mm 的视场里,它造成的角度误差可能只有 0.05°,但反映在重投影误差上,可能就是 0.3 像素。

2.3.1 平面度误差的数学模型

假设标定板实际是一个曲面,我们用平面模型去拟合它。那么每个角点都会有一个Z 方向偏差 ΔZ。这个偏差通过投影矩阵映射到图像上:

Δu = f_x * ΔZ / Z² * (u - u₀)
Δv = f_y * ΔZ / Z² * (v - v₀)

其中 f_x, f_y 是焦距,Z 是相机到标定板的距离。你看,焦距越大、距离越近,平面度误差的影响越大。

2.3.2 不同标定板的平面度对比

标定板类型 典型平面度 适用场景 我的建议
陶瓷棋盘格 ±0.01mm 高精度实验室 首选,但贵
玻璃棋盘格 ±0.03mm 中等精度 性价比高
亚克力/塑料板 ±0.1~0.3mm 快速验证 慎用,容易变形
打印纸贴玻璃 取决于玻璃 临时方案 纸会皱,不推荐
我曾经踩过的坑: 用亚克力板做标定,放在 60°C 的车间里,板子热变形了。标定结果看起来很好(重投影误差 0.12 像素),但实际测量误差达到 0.5mm。后来换了陶瓷板,问题才解决。记住:标定板平面度要优于你期望精度的 10 倍。

2.4 三种误差的叠加效应

这三种误差不是独立工作的。它们会叠加、放大、甚至互相掩盖。我画了一张图来展示它们的关系:

三种误差的叠加效应 镜头畸变 特征点噪声 标定板平面度 重投影误差 标定精度下降

你看,这三个误差源最终都汇聚到重投影误差上。但最麻烦的是——它们会互相掩盖。比如,畸变误差和平面度误差方向相反时,重投影误差反而变小了。你以为标定结果很好,其实两个误差都没消除。

我的诊断方法: 把重投影误差按图像位置画成热力图。如果误差分布有规律(比如中心小边缘大),说明畸变没标好;如果误差随机分布,说明特征点噪声大;如果误差集中在某个区域,可能是标定板不平。

2.5 本章小结

  • 镜头畸变: 系统误差,边缘大中心小。模型别贪多,3 参数起步。
  • 特征点噪声: 随机误差,多帧平均是王道。光照和焦距要控制好。
  • 标定板平面度: 隐蔽误差,选板子要舍得花钱。温度变化要留意。
  • 叠加效应: 三种误差会互相掩盖,别只看重投影误差的数值,要看分布。