3、标定板设计:棋盘格标定板设计要点、圆点阵标定板设计要点、ChArUco板的设计与优势、标定板材质与精度要求
标定板这东西,说白了就是相机标定的“尺子”。你尺子不准,后面算出来的内参外参全是废的。我见过太多人花大价钱买工业相机,结果用一张A4纸打印的棋盘格去标定,最后标定误差大得离谱。嗯,咱们今天就把这块说透。
3.1 棋盘格标定板设计要点
棋盘格是最经典的标定图案。为什么经典?因为角点检测稳定、算法成熟、实现简单。我个人习惯在项目初期先用棋盘格快速验证标定流程。
设计时要注意这几个点:
- 格子数量: 建议内角点数量在 8×6 到 12×9 之间。太少的话,标定参数解算不稳定;太多的话,边缘畸变区域可能拍不全。我一般用 9×7 或 11×8。
- 格子大小: 每个格子的物理尺寸要精确测量。我建议用 20mm-40mm 的边长。太小了,远距离拍摄时角点模糊;太大了,近距离拍不全。
- 黑白对比: 必须保证黑白格子有足够的对比度。我曾经遇到过一次,打印在哑光纸上反光严重,角点检测直接崩了。后来换了哑光覆膜才解决。
- 边框留白: 棋盘格四周要留出至少一个格子的空白区域。为什么?因为角点检测算法需要边缘缓冲区,否则边缘格子容易误检。
核心经验: 棋盘格标定板一定要贴在一个绝对平整的刚性背板上。我见过有人直接贴在墙上,结果墙面不平,标定出来的畸变参数全是错的。你想想看,一个0.5mm的起伏,在近距离拍摄时就能引入几个像素的误差。
3.2 圆点阵标定板设计要点
圆点阵标定板,很多人觉得它不如棋盘格好用。其实不然。圆点阵在大畸变场景下表现更好。为什么?因为圆心的亚像素定位精度比角点更高。
设计要点:
- 圆点直径: 建议占格子边长的 60%-80%。太小了,远距离变成小点,定位不准;太大了,椭圆畸变严重,圆心偏移。
- 圆点间距: 间距至少是直径的 1.5 倍。太密的话,相邻圆点会互相干扰,检测时容易漏检或误检。
- 非对称标记: 一定要在某个角落加一个非对称标记(比如一个大圆点或一个缺角)。否则你拍到的圆点阵,算法分不清上下左右。我记得有一次忘了加标记,结果标定出来的旋转矩阵全是反的,折腾了两天才发现。
- 背景色: 白色背景配黑色圆点是最稳妥的。别用灰色背景,检测阈值不好调。
避坑指南: 我曾经用圆点阵标定鱼眼镜头,发现边缘的圆点变成了明显的椭圆。这时候不能直接用椭圆中心代替圆心,必须做椭圆拟合补偿。否则标定出来的畸变参数会带系统偏差。
3.3 ChArUco板的设计与优势
ChArUco板,说白了就是棋盘格和ArUco码的结合体。它既有棋盘格的角点精度,又有ArUco码的ID识别能力。我个人觉得这是目前最实用的标定板方案。
ChArUco板的核心优势:
- 自动识别: 每个ArUco码都带有唯一ID。你不需要手动指定哪个角点对应哪个世界坐标。算法自动匹配。这在多相机标定中特别有用。
- 部分遮挡可用: 即使标定板被部分遮挡,只要能看到几个完整的ArUco码,就能恢复出整个板子的位姿。我在做机械臂手眼标定时,经常遇到标定板被机械臂挡住一半的情况,ChArUco板完美解决了这个问题。
- 角点精度高: 它继承了棋盘格的角点检测优势。ArUco码只是用来做ID识别和位姿初估,最终的角点定位还是用棋盘格的亚像素方法。
- 支持任意尺寸: 你可以根据需要生成任意行列数的ChArUco板。我习惯用 7×5 的棋盘格内嵌 6×4 的ArUco码。
注意: ChArUco板的生成需要专门的库。OpenCV的aruco模块直接支持。但要注意,不同版本的OpenCV生成的ArUco字典可能不同。我建议统一用 DICT_6X6_250,兼容性最好。
3.4 标定板材质与精度要求
材质这块,很多人不重视。其实材质直接决定了标定板的寿命和精度。我踩过不少坑,今天一次性说清楚。
| 材质类型 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 普通打印纸 | 成本低、制作快 | 易变形、反光、不耐用 | 临时验证、实验室快速测试 |
| 哑光相纸 | 对比度高、反光少 | 仍会受潮变形 | 短期项目、室内环境 |
| 铝基板+覆膜 | 平整度高、耐用、抗弯折 | 成本较高、制作周期长 | 工业现场、长期使用 |
| 陶瓷基板 | 热膨胀系数低、精度极高 | 价格昂贵、易碎 | 高精度计量、实验室基准 |
| 玻璃基板+光刻 | 精度最高、表面平整 | 极贵、易碎、反光严重 | 半导体检测、显微标定 |
精度要求方面,我的建议是:
- 普通视觉应用: 标定板尺寸误差控制在 ±0.1mm 以内。用哑光相纸打印在铝基板上就够用了。
- 工业测量级: 尺寸误差需要 ±0.02mm。这时候必须用光刻玻璃板或陶瓷基板。我做过一个手机摄像头模组的标定项目,用的就是光刻玻璃板,一个格子 10mm,误差控制在 5μm 以内。
- 温度影响: 你想想看,铝基板的热膨胀系数大约是 23×10⁻⁶/°C。温度变化 10°C,一个 300mm 的标定板会变化 0.07mm。这在精密标定中是不能忽略的。所以高精度场景下,我建议用陶瓷基板或微晶玻璃。
一句话总结: 标定板的精度,决定了你整个视觉系统的精度上限。别在标定板上省钱,否则后面花十倍的时间去排查误差,得不偿失。
公众号:蓝海资料掘金营,微信deep3321