3. 采集环境搭建:光照条件、背景要求、相机固定方式、工作距离设定
标定数据采集,说白了就是给相机拍一组“标准照”。环境搭得对不对,直接决定标定成败。我见过太多人拿着畸变严重的图跑来问我“为什么标定老失败”,结果一看——光源乱打,标定板歪着放,工作距离跟实际产线差了十万八千里。嗯,咱们今天就把这事掰扯清楚。
3.1 光照条件:不是亮就行
很多人觉得“光照嘛,够亮就行”。其实不然。标定对光照的要求,跟日常拍照完全两码事。
核心原则:均匀、稳定、无反射
- 均匀性:标定板表面各区域照度差异 < 10%
- 稳定性:采集过程中光源不能闪烁或漂移
- 无反射:标定板表面不能出现高光斑或镜面反射
我个人习惯用漫射LED面光源,配合柔光板使用。有一次在客户现场,他们用环形光直接打标定板,结果棋盘格角点检测总是跳来跳去。我过去一看,每个白色方格中心都反射了一个亮斑——角点坐标全偏了。
小技巧:用手在标定板前晃一下,看阴影是否清晰。如果阴影边缘锐利,说明光源太“硬”,需要加柔光。理想状态是几乎看不到阴影。
常见光源类型对比
| 光源类型 | 均匀性 | 稳定性 | 适用场景 | 避坑点 |
|---|---|---|---|---|
| 漫射LED面光 | ★★★★★ | ★★★★★ | 通用标定 | 注意散热,长时间工作会衰减 |
| 环形光 | ★★★☆☆ | ★★★★☆ | 小视野标定 | 容易产生中心亮斑 |
| 同轴光 | ★★★★☆ | ★★★★★ | 高反光物体标定 | 成本高,对角度敏感 |
| 自然光 | ★☆☆☆☆ | ★☆☆☆☆ | 不推荐 | 随时间变化,无法复现 |
3.2 背景要求:越简单越好
标定板的背景,原则就一条:让标定板从背景里“跳”出来。
我曾经遇到一个案例,工程师把标定板放在黑色橡胶传送带上拍。结果黑色棋盘格跟背景融为一体,边缘检测直接崩了。后来换了白色亚光纸板做背景,问题立刻解决。
注意:背景不能有纹理、图案、渐变。纯色亚光面是最佳选择。颜色选择上,跟标定板最暗/最亮区域形成对比即可——棋盘格就用中性灰,圆点阵就用纯白或纯黑。
背景选择速查表
| 标定板类型 | 推荐背景 | 不推荐背景 |
|---|---|---|
| 黑白棋盘格 | 中性灰(#808080) | 黑色、白色、有纹理表面 |
| 圆点阵 | 纯白亚光 | 反光面、图案背景 |
| ChArUco板 | 纯色(灰/白/黑) | 带编码图案的背景 |
3.3 相机固定方式:稳,是第一位的
标定过程中,相机和标定板的相对位置必须稳定。你想想看,如果相机在采集过程中有微振动,拍出来的10张图每张的位姿都不一样,标定结果能准吗?
我推荐用以下方式固定相机:
- 刚性连接:相机通过转接板直接固定在铝型材或铸铁平台上
- 锁死所有调节机构:如果用了云台或关节臂,确认所有旋钮已锁紧
- 避免长悬臂:相机离固定点越远,振动放大越明显
- 加装减振垫:如果现场有振动源(如传送带、气动设备),在相机底座下加橡胶减振垫
我的习惯:固定好相机后,用手轻敲相机外壳,观察监视器上的图像是否抖动。如果抖动超过1个像素,说明固定不够牢靠。
3.4 工作距离设定:跟实际应用走
工作距离,就是相机镜头前端到标定板表面的距离。这个距离必须跟实际产线上的工作距离一致。为什么?因为镜头的畸变模型是随物距变化的——你在200mm处标定的参数,拿到300mm处用,误差会放大好几倍。
我记得有个项目,客户在实验室用300mm工作距离标定,产线上实际是250mm。结果测量误差从0.1mm飙到0.5mm。后来重新在250mm下标定,问题解决。
工作距离设定步骤
- 测量实际工作距离:用卷尺或激光测距仪,量出产线上相机到被测物体的距离
- 按此距离放置标定板:标定板表面与相机镜头前端保持相同距离
- 微调对焦:在设定距离下重新对焦,确保标定板图案清晰
- 锁定镜头:对焦环和光圈环都要锁死,防止后续松动
重要:如果产线工作距离有波动范围(比如±50mm),建议在范围的两端和中间各采集一组标定数据,做分段标定或景深补偿。
3.5 环境搭建知识体系
下面这张图把环境搭建的四个核心要素串起来了,你可以对照检查自己的搭建方案:
3.6 搭建检查清单
每次搭建完环境,我建议你对照下面这个清单过一遍:
| 检查项 | 标准 | 通过/不通过 |
|---|---|---|
| 光照均匀性 | 标定板各区域灰度差 < 20(8位图) | □ |
| 无反射光斑 | 标定板表面无高光点 | □ |
| 背景纯色 | 背景区域灰度标准差 < 5 | □ |
| 相机固定 | 轻敲相机,图像抖动 < 1像素 | □ |
| 工作距离 | 与实际产线偏差 < 5mm | □ |
| 对焦清晰度 | 棋盘格角点亚像素定位稳定 | □ |
最后说一句:环境搭建花10分钟,能省下后面2小时的排查时间。我每次做标定前,都会先花5分钟把环境检查一遍——这个习惯帮我避免了很多低级错误。