4. 标定数据采集
标定数据采集,说白了就是给相机“喂”足够多、足够好的照片。很多新手觉得标定就是拍几张棋盘格,跑个脚本就完事了。嗯,我以前也这么想,直到在一条汽车产线上栽了跟头——标定结果反复横跳,最后发现是采集的数据太“偏食”了。
这一章,我就把数据采集的那些门道掰开揉碎了讲。核心就两件事:怎么拍得全,怎么拍得清。
4.1 多角度与多姿态:别让标定板“躺平”
标定板在视野里的姿态越丰富,相机内参和外参的约束就越强。我见过有人把标定板放在同一个平面,平移几下就完事。这样标出来的结果,换个角度就崩。
我个人习惯把采集策略分成三个维度:
| 维度 | 说明 | 建议采集数量 |
|---|---|---|
| 角度 | 标定板平面与相机光轴的夹角 | ±30° ~ ±60°,至少5组 |
| 姿态 | 标定板绕自身法线的旋转 | 0°、90°、180°、270°,各1组 |
| 位置 | 标定板在视野中的XY分布 | 9宫格覆盖,中心+四角+四边 |
我的小技巧: 每次改变姿态后,先拍一张预览,看看角点检测是否完整。如果棋盘格边缘有缺失,说明角度太极端了,往回退一点。
具体操作时,我建议按这个流程来:
- 固定相机,移动标定板——别反过来,否则手眼标定会多一层麻烦。
- 先粗调角度:让标定板从正对相机开始,逐步倾斜到30°、45°、60°。
- 在每个角度下旋转标定板:顺时针转几圈,逆时针转几圈。
- 平移覆盖全视野:把标定板放到画面的左上、右上、左下、右下、中心。
- 重复以上步骤,直到采集20~30张有效图像。
注意: 标定板不能超出视野边界。我曾经为了追求大角度,让标定板一半在画面外,结果角点检测直接报错。老老实实让标定板完整出现在画面里。
4.2 光照与反光:3D视觉的“隐形杀手”
光照问题在2D视觉里就很头疼,到了3D视觉更麻烦。结构光相机对环境光敏感,激光雷达对高反光表面束手无策。我踩过最大的坑,就是在高亮金属件上做标定——点云直接飞掉。
我把常见的光照问题分成三类:
| 问题类型 | 表现 | 典型场景 |
|---|---|---|
| 环境光过强 | 投影图案被淹没,点云稀疏 | 靠近窗户、阳光直射 |
| 局部反光 | 标定板表面出现高光斑块 | 陶瓷、金属、光滑塑料 |
| 阴影干扰 | 标定板边缘出现虚假特征 | 多光源、遮挡物 |
针对这些问题,我的处理策略是:
- 控制环境光:尽量在暗室或遮光环境下采集。如果条件不允许,用偏振片滤掉部分杂光。
- 调整曝光时间:对于反光表面,适当降低曝光,避免过曝。我一般从默认值往下调20%~30%。
- 使用哑光标定板:陶瓷标定板反光严重,换成氧化铝或玻璃蚀刻的哑光板会好很多。
- 多光源补光:用两个光源从左右45°打光,减少单侧阴影。
核心原则: 标定数据的质量 > 数量。10张高质量图像,比50张有反光、模糊、遮挡的图像强得多。
4.3 数据采集流程与质量检查
光说不练假把式。我整理了一套标准流程,每次做标定都按这个来:
- 准备阶段:清洁标定板,确认无划痕、无污渍。检查相机镜头,擦干净。
- 粗采阶段:快速采集10张不同姿态的图像,跑一次预标定,看看重投影误差。
- 精采阶段:根据预标定结果,补充缺失的姿态。比如发现某个角度误差大,就多拍几张那个角度的。
- 质量检查:逐张检查图像,剔除模糊、过曝、欠曝、角点缺失的。
- 最终标定:用筛选后的图像跑正式标定,记录重投影误差。
避坑指南: 我曾经为了省事,一次性拍了50张图全扔进标定程序。结果重投影误差0.8像素,怎么调都下不去。后来一张张排查,发现里面有3张是手抖拍糊的。剔除后,误差直接降到0.2像素。所以,别偷懒,每张图都要看。
4.4 知识体系:标定数据采集全景图
下面这张图,把标定数据采集的核心逻辑串起来了。你可以把它当成一个检查清单,每次做标定前过一遍。
4.5 实战经验:几个常见坑
最后,分享几个我踩过的坑,希望能帮你省点时间:
- 标定板脏了:指纹、油污会让角点检测偏移。每次使用前用无尘布擦一下。
- 相机参数变了:标定过程中动了光圈或焦距,内参就变了。标定期间,相机参数必须锁定。
- 标定板不平:便宜的亚克力板容易弯曲。贴在玻璃板上或者用陶瓷板会好很多。
- 数据量不够:少于15张有效图像,标定结果不稳定。我一般保证20~30张。
重要提醒: 标定数据采集不是一次性工作。相机安装位置变了、镜头换了、甚至环境温度变化大了,都需要重新采集。别偷懒,该重做就重做。