2. 标定板设计:棋盘格、AprilTag、ChArUco板的选择与制作规范
说到外参标定,第一个要面对的问题就是:用什么标定板?
很多人觉得这步无所谓,随便打印个棋盘格就开干。嗯,我以前也这么干过,结果标出来的外参,看着收敛了,实际用起来偏差大得离谱。后来我才明白——标定板选不对,后面所有算法都是白搭。
2.1 三种主流标定板,到底怎么选?
目前工业界和学术界常用的,无非就三种:棋盘格、AprilTag、ChArUco板。我一个个说。
2.1.1 棋盘格(Checkerboard)
这是最经典的选择。说白了就是黑白格子交替排列,角点检测用Harris或亚像素算法,成熟稳定。
- 优点:检测算法极其成熟,OpenCV直接支持,代码量少
- 缺点:必须完全可见,遮挡了就完蛋;没有唯一ID,多板场景容易混淆
- 适用场景:单相机标定、固定场景外参标定
我的经验:如果你只是标定一个相机到另一个相机的固定外参,棋盘格完全够用。我做过一个双目视觉项目,用12x9的棋盘格,每格30mm,标出来的旋转误差在0.05度以内。
2.1.2 AprilTag
这是一种二维码风格的标定板。每个Tag有独立ID,检测时能直接知道是哪个角点。
- 优点:部分遮挡也能检测;支持多板同时使用;鲁棒性极强
- 缺点:角点精度不如棋盘格(因为依赖四边形检测);需要额外库
- 适用场景:多相机系统、大场景标定、移动机器人
注意:AprilTag的家族选择很重要。Tag36h11适合小尺寸,Tag25h9适合远距离。我踩过坑——用Tag25h9做远距离标定,结果检测率不到60%。
2.1.3 ChArUco板
这是棋盘格和AprilTag的混合体。棋盘格提供高精度角点,ArUco标记提供唯一ID。
- 优点:兼具棋盘格的精度和Tag的鲁棒性;部分遮挡仍能工作
- 缺点:制作稍复杂;检测速度略慢
- 适用场景:高精度外参标定、多相机系统
我个人最推荐ChArUco板。为什么?因为它解决了棋盘格「必须全可见」的痛点,又保留了亚像素角点的精度。我在一个四目系统项目里,就是用ChArUco板,标出来的外参重投影误差稳定在0.3像素以内。
2.2 标定板制作规范
选好了类型,接下来就是制作。这里面的坑,比你想的多。
2.2.1 尺寸与精度
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 格子大小 | 20-50mm | 太小检测不准,太大需要远距离 |
| 格子数量 | 8x6 到 12x9 | 太少角点不足,太多易变形 |
| 打印精度 | ≥300 DPI | 低精度打印会导致角点偏移 |
| 基板材料 | 3mm铝板或亚克力 | 纸板容易弯曲,标定结果飘 |
核心原则:标定板的物理精度,直接决定了外参标定的上限。你算法再好,板子本身歪了,结果也是错的。
2.2.2 制作流程(以ChArUco为例)
我一般用OpenCV的aruco模块生成,然后找专业打印店输出。具体步骤:
- 确定格子大小和行列数(比如11x8,每格30mm)
- 用OpenCV生成ChArUco板图像
- 导出为PDF,保持原始尺寸
- 打印在哑光相纸上,覆膜防反光
- 粘贴到铝板上,确保平整无气泡
// 生成ChArUco板的示例代码(C++)
cv::aruco::Dictionary dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_6X6_250);
cv::aruco::CharucoBoard board(cv::Size(11, 8), 0.03f, 0.015f, dictionary);
cv::Mat boardImage;
board.draw(cv::Size(1980, 1080), boardImage, 10, 1);
cv::imwrite("charuco_board.png", boardImage);
避坑指南:我曾经用普通A4纸打印,贴在纸板上。结果标定出来的外参,每次拆装后都不一样。后来换成3mm铝板,问题立刻解决。记住——标定板必须刚性。
2.3 不同场景的选型建议
说了这么多,到底怎么选?我直接给结论:
- 单相机内参标定:棋盘格,简单够用
- 双目外参标定:ChArUco板,精度和鲁棒性平衡最好
- 多相机系统(3个以上):AprilTag,支持多板同时检测
- 大场景(5米以上):AprilTag,远距离检测更稳定
- 高精度(重投影误差<0.5像素):ChArUco板,必须用铝板基材
你想想看,如果标定板本身就有1mm的变形,那外参标定误差至少是0.5mm起步。对于高精度应用来说,这已经不可接受了。
2.4 本章小结
标定板的选择,不是随便挑一个就行。棋盘格适合简单场景,AprilTag适合多板系统,ChArUco板是精度和鲁棒性的最佳折中。制作时,记住三个关键词:刚性、平整、高精度打印。
嗯,这部分内容就到这里。下一节我们会聊标定数据采集的实操技巧,包括怎么拍、拍多少张、怎么判断数据质量——这些可都是实战中容易翻车的地方。