第三章 图像采集规范:标定图像采集的10个黄金法则

相机标定这件事,算法选得再好,算子调得再熟,如果图像采集这关没过,后面全是白搭。我见过太多人拿着模糊、反光、标定板只占画面一角的图像来问我为什么标定失败——说实话,这种问题根本轮不到算法背锅。

这一章,我把多年现场攒下来的经验,浓缩成10条黄金法则。每条都是踩过坑之后才真正理解的。你照着做,标定成功率至少能提八成。

核心观点:标定精度不是算出来的,是拍出来的。图像采集的质量,直接决定了标定结果的上下限。

3.1 标定板:选对、放对、拍对

先说说标定板本身。很多人觉得随便打印一张棋盘格就能用,其实没那么简单。

法则1:标定板材质必须平整

陶瓷或玻璃基板是首选,亚克力次之。打印纸贴在硬纸板上?我劝你别试。我在一个3C项目里吃过这个亏——打印纸受潮微微起拱,标定出来的内参偏了0.3个像素,最后测量精度死活过不了。换成2mm厚的玻璃棋盘格,一次过。

法则2:图案精度要够

棋盘格角点位置误差不能超过0.01mm。圆点阵列板要求更高。工业级标定板都有出厂精度报告,别省这个钱。你想想看,标定板本身就有误差,标出来的结果能准吗?

法则3:尺寸覆盖视场1/3以上

标定板在图像里不能太小。我个人习惯是让它至少占视场的1/3到1/2。太小了,角点提取的亚像素精度会打折扣。

标定板尺寸选择参考 视场大小 推荐标定板边长 棋盘格数量
小视场(< 50mm) 10-20mm 7×7 或 9×9
中视场(50-200mm) 30-80mm 12×9 或 15×11
大视场(> 200mm) 80-200mm 15×11 或 20×15

3.2 光照:被忽视的精度杀手

光照问题,是我在项目现场遇到最多的坑。说白了,标定算法依赖的是角点或圆心的亚像素定位,光照不均匀,定位就偏。

法则4:均匀漫射照明

用环形无影光源或穹顶光源,避免点光源直射。我曾在一条产线上看到工人用手电筒照着标定板拍照——结果可想而知,标定出来的畸变系数完全是错的。

法则5:避免反光和阴影

标定板表面不能有镜面反射。如果标定板是玻璃的,注意调整光源角度,让反射光避开相机。阴影会导致棋盘格黑白区域的对比度不一致,角点提取会偏移。

小技巧:拍摄前用Halcon的min_max_gray算子检查一下图像的灰度直方图。理想情况下,黑白区域的灰度值应该分别集中在两个峰上,中间没有拖尾。

法则6:保持光照一致性

标定时的光照要和实际测量时一致。别在暗室里标定,然后拿到强光下用。镜头的光圈、增益、曝光时间,标定过程中一旦设定就不要动。

3.3 姿态多样性:标定板要“动”起来

这是新手最容易忽略的一点。很多人把标定板往视场中间一放,拍一张就完事。这样标出来的结果,只能覆盖一个姿态,畸变模型根本拟合不准。

法则7:覆盖视场所有区域

标定板要出现在图像的左上、右上、左下、右下、中心,以及四个边的中间位置。一共至少9个位置。

法则8:改变倾斜角度

标定板平面要和像平面成一定夹角。我一般控制在15°到30°之间。太斜了,角点提取会模糊;太平了,畸变参数解算会退化。

法则9:改变旋转角度

标定板绕光轴旋转0°、90°、180°、270°各拍一组。这样可以消除标定板图案本身的制造误差。

注意:标定板不能超出视场。哪怕只切掉一个角,那张图就不能用。Halcon的find_calib_object会报错,但更麻烦的是,它可能不报错但结果偏了。

3.4 10条法则速查表

编号 法则 关键要求 常见错误
1 材质平整 陶瓷/玻璃基板 打印纸起皱
2 图案精度 误差< 0.01mm 使用劣质标定板
3 尺寸覆盖 占视场1/3以上 标定板太小
4 均匀照明 漫射光、无影光 点光源直射
5 无反光阴影 调整光源角度 玻璃反光
6 光照一致 标定与测量相同 标定后改光圈
7 覆盖全视场 至少9个位置 只拍中心
8 倾斜角度 15°-30° 太平或太斜
9 旋转角度 0°/90°/180°/270° 单一方向
10 不超出视场 完整可见 切角、切边

3.5 图像采集流程

下面这张图,是我自己项目里一直在用的采集流程。你照着走一遍,基本不会漏掉关键步骤。

标定图像采集标准流程 1. 固定相机与镜头 2. 设定光圈/增益/曝光 3. 放置标定板 4. 检查图像质量 合格 → 保存图像 不合格 → 调整 调整光照/姿态后重试 5. 改变姿态重复 采集15-25张完成 关键检查项: • 标定板完整可见 • 无高光/阴影/模糊

3.6 避坑指南:我踩过的那些坑

最后,分享几个真实教训。你遇到了,直接跳过就好。

  • 标定板脏了:我曾经用一块有指纹的标定板拍了20张图,标定结果一直收敛不了。后来用酒精擦干净,一次通过。标定板要定期清洁,别嫌麻烦。
  • 镜头焦距没锁死:变焦镜头标定过程中如果动了焦距,所有图像的内参都不一样了。标定前一定要用胶带锁死调焦环和光圈环。
  • 图像数量不够:最少15张,建议20-25张。少于10张,畸变参数解算不稳定。多于30张,边际效益递减,还浪费时间。
  • 标定板太靠近图像边缘:边缘畸变最大,如果标定板没有覆盖到边缘区域,边缘的畸变就校正不准。我习惯让标定板的最外圈角点距离图像边界至少留10个像素的余量。
我的习惯:每次标定前,先用grab_image拍一张预览图,用disp_image显示出来,肉眼扫一遍。确认没有反光、阴影、模糊、切边之后,再开始批量采集。这一步花不了30秒,但能省下后面半小时的排查时间。