4. 标定板图案设计:棋盘格、圆点阵、条纹图案、编码图案的适用场景
图案选不对,标定全白费。这话听着夸张,但我见过太多项目因为图案选错,后期怎么调都救不回来。
线扫相机的标定板和面阵相机不太一样。面阵相机拍一张图就完事,线扫相机是一行一行拼出来的。这个差异决定了图案设计必须考虑方向性、连续性、还有亚像素提取的稳定性。
下面我把四种主流图案掰开揉碎讲清楚。每种图案我都踩过坑,有些经验是用加班换来的。
4.1 棋盘格图案
棋盘格是标定界的「万金油」。黑白相间的方块,角点清晰,算法成熟。OpenCV 的 findChessboardCorners 直接就能用。
适用场景:
- 常规线扫相机标定(视野内 5-10 个角点即可)
- 镜头畸变校正(棋盘格能提供均匀分布的控制点)
- 单相机平面标定(最常见的使用场景)
避坑指南:
- 棋盘格必须倾斜放置。我见过有人把标定板放得和相机成像面完全平行,结果角点提取全是错的。你想想看,线扫相机只拍一行,如果棋盘格线和扫描方向完全平行,那拍出来的图像就是一条黑一条白,根本找不到角点。
- 格子数量要奇数×偶数。比如 9×6,这样内外角点区分明确。
- 边缘留白至少 1 个格子宽度。我曾经因为标定板边缘没留白,结果相机拍到板子边缘时,角点提取直接崩了。
4.2 圆点阵图案
圆点阵是我个人比较偏爱的图案。为什么?因为圆的质心提取比角点更稳定。说白了,圆是旋转对称的,不管你怎么倾斜,质心位置几乎不变。
适用场景:
- 高精度标定(要求重投影误差小于 0.05 像素)
- 多相机拼接标定(圆点阵能提供更稳定的对应点匹配)
- 大视场标定(圆点阵对光照不均匀的鲁棒性更好)
参数设计要点:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 圆点直径 | 视野宽度的 1/50 ~ 1/30 | 太小则亚像素提取不稳定,太大则容易重叠 |
| 圆心间距 | 直径的 2~3 倍 | 保证圆点之间不粘连,同时有足够密度 |
| 行数/列数 | 至少 7×7 | 太少则标定参数过拟合 |
我的经验: 圆点阵的质心提取精度可以达到 0.02 像素级别。但前提是圆点边缘要清晰,不能有模糊。我建议用陶瓷或玻璃基板,比纸打印的圆点阵稳定得多。
4.3 条纹图案
条纹图案在线扫相机标定里比较特殊。它不是为了求取相机内参,而是为了测量线扫相场的均匀性和扫描方向的一致性。
适用场景:
- 线扫相机行频校准(验证每行像素的物理间距是否一致)
- 扫描方向畸变检测(检查扫描线是否弯曲)
- 多线扫相机同步标定(确保各相机扫描线对齐)
条纹设计原则:
- 条纹宽度要大于 5 个像素(在图像上)
- 条纹方向必须垂直于扫描方向
- 黑白条纹宽度比建议 1:1
我记得有一次做 4 台线扫相机的拼接项目,条纹图案帮了大忙。我们用条纹检测出其中一台相机的扫描线偏移了 0.8 个像素,这个误差用棋盘格根本看不出来。
4.4 编码图案
编码图案是进阶玩法。它把标定信息直接编码进图案里,算法可以自动识别每个特征点的世界坐标。这样就不需要手动输入标定板的物理尺寸了。
适用场景:
- 自动化标定(无人干预,批量标定)
- 大尺寸标定板(编码图案可以拼接多个子板)
- 三维标定(编码图案能提供唯一的特征点 ID)
常见编码方式:
- ChArUco 板(棋盘格 + ArUco 编码)
- AprilTag(二维码风格,鲁棒性高)
- 自定义二进制编码(适合特殊场景)
我个人习惯用 ChArUco 板。它结合了棋盘格的角点精度和 ArUco 的自动识别能力。你想想看,标定板随便放,算法自动识别每个角点的编号和坐标,多省事。
4.5 图案选择决策流程
说了这么多,到底怎么选?我画了一张决策图,帮你快速定位。
这张图我建议你保存下来。每次选图案前过一遍,基本不会出错。
4.6 四种图案对比总结
| 图案类型 | 精度等级 | 自动化程度 | 抗畸变能力 | 适用场景 |
|---|---|---|---|---|
| 棋盘格 | ★★★☆☆ | ★★★☆☆ | ★★☆☆☆ | 常规标定、畸变校正 |
| 圆点阵 | ★★★★★ | ★★★☆☆ | ★★★★☆ | 高精度标定、多相机拼接 |
| 条纹图案 | ★★☆☆☆ | ★★☆☆☆ | ★★★★★ | 行频校准、方向检测 |
| 编码图案 | ★★★★☆ | ★★★★★ | ★★★☆☆ | 自动化标定、三维标定 |
最后说一句:没有完美的图案,只有合适的搭配。我建议你手头至少准备两种标定板:一块高精度圆点阵用于日常标定,一块 ChArUco 板用于自动化产线。这样不管遇到什么场景,你都能从容应对。