标定板图案怎么选:棋盘格、ChArUco、圆点与 AprilGrid
对比棋盘格、ChArUco、带标记棋盘格、对称与非对称圆点、AprilGrid 六种标定图案的检测原理、遮挡容忍度、方向唯一性和精度特点,并按单目、双目、手眼、广角和红外等场景给出选型建议。
要点
- 单相机、能保证整块板都在画面内:棋盘格最简单,几乎所有标定软件都支持。
- 需要把特征点拍到画面边缘、可能被遮挡,或者做双目、多相机、手眼标定:优先选 ChArUco 或 AprilGrid。它们允许只拍到部分板面,每个角点都有唯一编号。
- 想保留纯棋盘格的外观,同时需要方向唯一:选带标记棋盘格。
- 圆点图案对噪声和轻微离焦不敏感,常用于背光,但存在透视偏差;对称圆点有 180° 方向歧义,非对称圆点需用奇数行。
- 图案确定后,还要定尺寸、方格大小(或字典、tag 尺寸)和基材,这些参数必须与软件中的设置完全一致。
六种常见图案各有什么特点?
棋盘格(checkerboard)
黑白相间的方格,特征点是四个方格交汇处的内角点。内角点是一个鞍点(saddle point):把灰度看成曲面,它在两条对角线方向上的弯曲方向相反。利用这一结构可以做亚像素定位。棋盘格结构简单,制作容易,几乎所有标定工具都支持。
它的局限有两点。第一,经典检测算法需要看到完整的内角点阵列,板子有一角出画或被遮挡就会失败,因此很难把特征点放到图像最边缘。第二是方向:如果横向和纵向方格数的奇偶相同(例如 10×8 或 11×9),棋盘旋转 180° 后外观完全一样,检测器无法判断哪一角是原点。
ChArUco
在棋盘格的白色方格里放置 ArUco 二进制编码标记。每个内角点周围的标记都有唯一 ID,检测到标记后,就能确定附近每个角点的编号。因此:
- 板子只拍到一部分也能使用,能把角点推到画面的四角和边缘;
- 方向唯一,不同相机看到的同一个角点编号一致;
- 定位精度来自棋盘格角点,与棋盘格相当。
代价是需要更高的成像分辨率——标记的每个编码位(bit)都必须能被分辨;同时字典、方格数、方格边长、标记边长和起始 ID 都必须与软件设置一致。另外,OpenCV 4.6 修改了 ChArUco 的排布规则:纵向方格数为偶数时,旧规则生成的板左上角是白格,新规则是黑格。用旧规则制作的板,在新版本中需要开启 legacy 模式才能识别。
带标记棋盘格
在普通棋盘格中心附近的几个方格里加入小圆形标记,检测器(如 OpenCV 的 findChessboardCornersSB 配合 CALIB_CB_MARKER 选项)据此确定原点和方向。它保留了棋盘格的简洁和精度,又解决了方向歧义,但一般仍要求整板可见。
对称圆点阵列
实心圆按正方形网格排列,特征点是圆心。圆心由整圈边缘共同确定,对噪声和轻微离焦不敏感,在背光照明下对比度很高。不过它旋转 180° 后与自身重合(行列数相同时旋转 90° 也重合),方向无法唯一确定,适合单目标定。
非对称圆点阵列
相邻两行错开半个间距排列。行数为奇数时,图案旋转 180° 后不再与自身重合,方向可以唯一确定;行数为偶数时仍然对称,这一点容易被忽略。它的点排布比对称圆点更紧凑。
AprilGrid
由 AprilTag(36h11 编码族)组成的网格。相邻 tag 之间的间隙交汇处放有小黑块,它们与 tag 的黑边在 tag 四角构成类似棋盘格的 X 形角点,便于亚像素细化。每个 tag 提供 4 个角点,ID 唯一,允许部分可见。它是 Kalibr 推荐使用的标定板,常用于多相机和相机–IMU 联合标定。
一张表看懂差异
| 图案 | 是否允许部分遮挡 | 方向唯一性 | 双目/多相机适用 | 检测精度特点 | 常用软件支持 |
|---|---|---|---|---|---|
| 棋盘格 | 否,通常需整板可见 | 行列方格数奇偶不同时可判定(取决于软件实现);奇偶相同则有 180° 歧义 | 有条件:需确认软件对方向的处理 | 鞍点角点,透视下无系统偏差,对称模糊基本不改变角点位置 | 几乎所有工具,如 OpenCV、Kalibr、BDB 相机标定工作台 |
| ChArUco | 是,每个角点可单独识别 | 唯一 | 很适合 | 与棋盘格相当;标记需有足够像素 | OpenCV(aruco 模块)、BDB 相机标定工作台 |
| 带标记棋盘格 | 否,一般需整板可见 | 唯一(由圆形标记确定原点) | 适合 | 与棋盘格相当 | OpenCV(findChessboardCornersSB)、BDB 相机标定工作台 |
| 对称圆点 | 否 | 180° 歧义 | 不推荐 | 圆心由整圈边缘求得,抗噪声;圆大、倾角大时有透视偏差 | OpenCV(findCirclesGrid)、Kalibr、BDB 相机标定工作台 |
| 非对称圆点 | 否 | 奇数行时唯一 | 适合(须奇数行) | 同对称圆点,点更密 | OpenCV、Kalibr、BDB 相机标定工作台 |
| AprilGrid | 是 | 唯一 | 很适合,也常用于相机–IMU | 每个 tag 4 个角点,精度取决于角点细化 | Kalibr、BDB 相机标定工作台;OpenCV 能检测 36h11 标记,但需自行建立角点对应 |
角点和圆心,哪种特征更准?
两类特征都能达到亚像素精度,差别主要在系统偏差和对成像条件的敏感程度:
- 角点(棋盘格、ChArUco、带标记棋盘格、AprilGrid):角点对应板面上的一个几何点,经过透视投影后仍是同一个点,因此不存在透视引起的系统偏差;对称的光学模糊也基本不改变鞍点的位置。不足之处是定位只用到角点附近的一小块区域,噪声大或严重离焦时,稳定性会下降。
- 圆点:圆心由整圈边缘共同决定,利用的像素多,对噪声更不敏感。但圆经透视投影后成为椭圆,椭圆的中心并不是圆心的投影。圆越大、倾斜越大,偏差越明显,镜头畸变还会加剧这一偏差。控制圆的成像尺寸、限制倾斜角,或使用能补偿该偏差的算法,可以减轻影响。
在常规机器视觉条件下,选择更多取决于遮挡、方向和软件生态,而不是单纯比较“谁更准”。
方向唯一性什么时候重要?
单相机标定内参时,每张图里点的编号只要自洽即可:从另一个角开始编号,相当于换了一个板坐标系,解出的内参不变。
但凡涉及“板在哪里”的任务就不同了:
- 双目和多相机:各相机必须对同一个物理角点给出相同编号,否则求出的相对位姿会差一个 180° 旋转,或者优化根本无法收敛;
- 手眼标定:每张图中板的位姿必须按同一个板坐标系定义;
- 用标定板定义工件坐标系或世界坐标系:原点必须固定在板上的同一位置。
ChArUco、AprilGrid、带标记棋盘格和奇数行非对称圆点都能唯一确定方向。如果只能用普通棋盘格,至少选择行列方格数奇偶不同的板,并确认所用软件确实利用了这一点。
不同场景怎么选?
| 场景 | 推荐图案 | 理由 |
|---|---|---|
| 单目内参,中等视场 | 棋盘格、ChArUco | 能整板入镜时棋盘格足够;想覆盖边角选 ChArUco |
| 广角、鱼眼镜头 | ChArUco、AprilGrid | 需要把特征点放到画面边缘,部分可见很关键 |
| 双目、多相机 | ChArUco、AprilGrid、带标记棋盘格 | 方向唯一,便于建立共视关系 |
| 相机–IMU 联合标定(Kalibr) | AprilGrid | Kalibr 推荐 |
| 机器人手眼标定 | ChArUco、AprilGrid | 机器人大角度运动时常常只能拍到部分板面 |
| 背光、小视场高精度 | 圆点或棋盘格(玻璃背光) | 背光下对比度高;圆点注意透视偏差 |
| 红外热像仪 | 大尺寸棋盘格或圆点 | 热像分辨率低,特征要大,见红外热像仪如何标定 |
| 使用 HALCON | HALCON 兼容标定板 | 按 HALCON 的标定板描述文件制作,见 Halcon 兼容标定板 |
常见的选型失误
- 用行列奇偶相同的棋盘格做双目标定:两台相机的角点编号可能相反,外参出现 180° 翻转。这类问题有时只在部分图像中出现,更难排查。
- 非对称圆点用了偶数行:看上去是“非对称”,实际旋转 180° 后与自身重合,方向仍然有歧义。
- ChArUco 参数与软件设置不符:字典选错、方格数横纵颠倒、标记边长填成方格边长、新旧排布规则不一致,常见表现是“能检测到标记,却得不到角点”,或者角点数量明显偏少。
- 标记太小:在最远、最倾斜的姿态下,ChArUco 或 AprilGrid 的编码位只有一两个像素,标记识别率骤降,部分可见的优势也就无从发挥。
- 大圆点配大倾角、近距离:透视偏差随圆的成像尺寸和倾角增大,精度要求高时尤其要注意。
- 图案与应用视场不匹配:板太小,单张图覆盖有限,需要拍很多图才能覆盖边角;板太大,整板可见类图案又很难拍到边缘。
选定图案后还要确定哪些参数?
- 尺寸:板的外形尺寸和方格(圆点、tag)大小,应按视场和分辨率计算,见标定板尺寸与方格尺寸怎么定。
- ChArUco 字典与标记比例:字典名称中的 4X4、5X5、6X6 表示标记的编码位数,后面的 50、100、250、1000 是字典容量,必须不少于板上的标记数。容量够用的前提下,位数少的字典每个编码位更大,低分辨率下更容易识别;位数多的字典码字之间差异更大,误识别更少。标记边长常取方格边长的 0.5–0.8 倍:比例大,编码位更大;比例过大,角点附近的白边太窄,可能干扰角点细化。
- AprilGrid 参数:tag 边长和间距比。间距比按 Kalibr 的定义为“tag 间隙 / tag 边长”,常用 0.3。
- 留白:棋盘格类图案四周要留有白边,检测器需要靠它把最外一圈黑格分割出来,不要把图案做到板的边缘。
想先打印出来试拍,可以用在线图案生成器生成与 BDB 标定板几何定义一致的图案文件。