1. 标定板设计基础:棋盘格、圆点阵、ChArUco板的设计原理与数学建模

做相机标定这么多年,我最大的感触是:标定板选得好,标定就成功了一半。很多人一上来就调算法参数,结果角点检测总出问题——其实根源往往在标定板本身的设计上。

这一章,咱们就聊聊三种主流标定板的设计原理和数学建模。我会结合自己踩过的坑,帮你把基础打扎实。

1.1 棋盘格标定板:最经典的选择

棋盘格(Checkerboard)是标定界的"老兵"。它结构简单,角点检测算法成熟,几乎所有的标定库都原生支持。

设计原理

棋盘格由黑白相间的方格组成。角点就是黑白格的交界点。为什么选这种结构?说白了,黑白交界处的梯度变化最剧烈,算法最容易定位。

设计时要注意几个关键参数:

  • 内角点数:比如 9×6,指的是内部角点数量,不是格子数。我见过有人把格子数当角点数用,结果标定失败——嗯,这个坑我踩过。
  • 方格尺寸:实际物理尺寸(mm),必须精确测量。误差 0.1mm 都会影响标定精度。
  • 长宽比:建议两个方向的内角数不要相等(比如 9×6 而不是 8×8),否则算法在方向判断上容易混淆。
核心原则:棋盘格必须保证平面度。我曾经用亚克力板打印棋盘格,结果板子有点弯曲,标定出来的畸变参数全是错的。后来换了 3mm 厚的铝基板,问题才解决。

数学建模

棋盘格的数学模型其实很简单。假设每个方格尺寸为 s mm,那么第 i 行第 j 列的角点坐标就是:

X = j * s
Y = i * s
Z = 0  (假设标定板在 Z=0 平面)

所有角点构成一个平面点阵。这个点阵在图像中的投影,就是我们要检测的目标。

1.2 圆点阵标定板:高精度的选择

圆点阵(Circle Grid)是棋盘格的替代方案。它的核心优势是:圆心定位精度可以做到亚像素级。

设计原理

圆点阵由一系列等间距排列的圆形组成。检测时,算法提取每个圆的轮廓,然后拟合椭圆,取椭圆中心作为特征点。

设计要点:

  • 圆直径:一般取方格尺寸的 60%-80%。太小了检测不到,太大了容易重叠。
  • 圆心距:至少是直径的 1.5 倍,保证圆与圆之间不粘连。
  • 非对称标记:通常会在某个角落去掉一个圆,用来确定方向。我习惯在左上角去掉一个,这样程序里好处理。
我的经验:圆点阵对光照不均匀的容忍度比棋盘格高。如果你在工业现场做标定,环境光复杂,优先考虑圆点阵。

数学建模

圆点阵的数学模型和棋盘格类似,只是特征点从角点变成了圆心:

X = j * spacing
Y = i * spacing
Z = 0

其中 spacing 是圆心距。注意,这里的 i 和 j 是从 0 开始的索引。

但有个关键区别:圆在透视投影下会变成椭圆。椭圆中心并不是圆心的真实投影,存在一个小的偏移。这个偏移在高精度标定时必须补偿。具体补偿公式我们会在第 5 章详细讲。

1.3 ChArUco 板:棋盘格与 ArUco 的结合

ChArUco 板是我个人最喜欢的一种设计。它把棋盘格的角点检测能力和 ArUco 码的 ID 识别能力结合在了一起。

设计原理

ChArUco 板的结构是:在棋盘格的每个白色方格内嵌入一个 ArUco 码。这样,每个角点周围都有唯一的 ID 信息。

这样做的好处很明显:

  • 自动识别方向:不需要手动指定标定板的朝向,算法自动识别。
  • 部分遮挡也能用:即使只拍到一部分角点,也能通过 ID 知道它们在世界坐标系中的位置。
  • 多板同时标定:可以在场景中放多个 ChArUco 板,算法自动区分。
注意:ChArUco 板的 ArUco 码字典要选对。OpenCV 默认用 DICT_6X6_250,但如果你板子小,建议用 DICT_4X4_50,码更小,不容易被遮挡。

数学建模

ChArUco 板的数学模型稍微复杂一些。它包含两层坐标:

  1. 棋盘格角点坐标:和普通棋盘格一样,基于方格尺寸计算。
  2. ArUco 码角点坐标:每个 ArUco 码的四个角点,相对于所在方格的位置是固定的。

举个例子,假设方格尺寸为 s,ArUco 码边长为 m(通常 m = s * 0.8),那么第 i 行第 j 列的 ArUco 码左上角坐标为:

X = j * s + (s - m) / 2
Y = i * s + (s - m) / 2
Z = 0

这样,每个 ArUco 码的四个角点坐标都能精确计算出来。

1.4 三种标定板的对比

我把三种标定板的核心差异整理成了表格,方便你选型时参考:

特性 棋盘格 圆点阵 ChArUco 板
特征点类型 角点 圆心 角点 + ArUco 码
检测精度 像素级 亚像素级 像素级
方向识别 需手动指定 需非对称标记 自动识别
遮挡鲁棒性 低 中 高
实现复杂度 低 中 高
适用场景 入门、快速标定 高精度、工业现场 多板、复杂场景

1.5 知识体系总览

下面这张图展示了本章的核心知识结构。你可以把它当作一个"导航图",后续学习时随时回来对照。

标定板设计基础 · 知识体系 标定板设计 棋盘格 圆点阵 ChArUco 板 角点检测 平面度要求 椭圆拟合 偏心补偿 ID 识别 字典选择 选型建议 精度优先 → 圆点阵 | 鲁棒性优先 → ChArUco | 快速验证 → 棋盘格

1.6 选型建议与避坑指南

说了这么多,到底该怎么选?我给出几条实战建议:

  • 如果你是初学者:从棋盘格入手。资料多,代码成熟,遇到问题容易找到答案。
  • 如果你做工业标定:优先考虑圆点阵。我做过对比测试,同样条件下圆点阵的标定重投影误差比棋盘格低 30% 左右。
  • 如果你要标定多相机系统:用 ChArUco 板。它能自动识别每个板子的 ID,省去手动匹配的麻烦。
避坑指南:我曾经用普通打印纸做标定板,结果纸张受潮变形,标定出来的内参全偏了。后来我改用铝基板覆膜打印,再也没出过这个问题。记住:标定板的平面度比精度更重要。