3、标定板设计与制作:棋盘格标定板、圆点标定板、Charuco标定板、标定板精度要求

说到双目测距,标定板这东西,我敢说每个工程师都绕不开。它就像一把尺子,尺子不准,后面测出来的距离全是扯淡。今天咱们就聊聊这几种常见的标定板,以及它们背后的门道。

3.1 棋盘格标定板:最经典,也最“坑”

棋盘格,说白了就是黑白相间的格子。它为什么流行?因为角点检测算法成熟,OpenCV里直接调函数就能用。我刚开始做双目的时候,第一块标定板就是棋盘格,打印出来贴在硬纸板上就开干了。

但这里有个坑——棋盘格对光照极其敏感。你想想看,如果光线不均匀,黑白格子的对比度下降,角点检测就会飘。我曾经在车间里标定,头顶的日光灯正好在板子上方,结果角点检测出来全是歪的,折腾了一下午才发现是反光问题。

避坑指南: 棋盘格标定板一定要用哑光材质打印,千万别用光面纸。我吃过这个亏,光面纸在强光下反光,角点直接检测不到。

另外,棋盘格的尺寸设计也有讲究。我个人习惯让格子边长在20mm到40mm之间,太小了相机看不清,太大了又占视野。具体选多大,得看你相机的分辨率和视场角。

3.2 圆点标定板:精度更高,但别搞错圆心

圆点标定板,顾名思义就是一堆圆点排列成阵列。它的优势在于——圆心的定位精度比棋盘格的角点更高。为什么?因为圆心可以通过椭圆拟合得到亚像素级精度,而棋盘格的角点受限于梯度计算。

我记得有一次做高精度测量,要求误差控制在0.1mm以内。棋盘格标定出来的参数,重投影误差总是0.3个像素左右,换用圆点标定板后,直接降到了0.08个像素。嗯,差距就是这么明显。

但圆点标定板也有个麻烦事:透视变形。当相机倾斜拍摄时,圆点会变成椭圆,这时候拟合圆心就需要考虑透视投影模型。OpenCV的cv::findCirclesGrid函数虽然能处理,但如果你用的是非对称圆点阵列,记得把参数CALIB_CB_ASYMMETRIC_GRID加上。

关键参数: 圆点直径与间距的比例建议在1:2到1:3之间。比如直径10mm,间距20mm。太密了容易粘连,太疏了又浪费分辨率。

3.3 Charuco标定板:棋盘格与ArUco的“混血儿”

Charuco标定板,说白了就是棋盘格里嵌入了ArUco码。它解决了两个痛点:

  • 部分遮挡也能标定——传统棋盘格如果被遮挡一部分,角点就全废了。但Charuco通过ArUco码的ID信息,可以只利用可见部分完成标定。
  • 自动识别板子方向——不用手动指定棋盘格的行列数,ArUco码自带方向信息。

我去年做一个机器人手眼标定的项目,现场空间狭小,标定板只能露出一半。用棋盘格死活标定不了,换成Charuco后,一次就过了。说实话,当时真有种“救星来了”的感觉。

生成Charuco标定板也很简单,OpenCV的cv::aruco::CharucoBoard类直接搞定。代码示例如下:

import cv2
import numpy as np

# 定义Charuco板参数
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)
board = cv2.aruco.CharucoBoard(
    size=(11, 8),          # 棋盘格内角点数
    square_length=0.03,    # 格子边长(米)
    marker_length=0.0225,  # ArUco码边长(米)
    dictionary=aruco_dict
)

# 生成并保存标定板图像
img = board.generateImage(outSize=(1200, 800))
cv2.imwrite('charuco_board.png', img)
小技巧: 打印Charuco标定板时,建议在板子四周留白边,方便手持。另外,ArUco码的字典选DICT_6X6_250就够了,太大反而容易误识别。

3.4 标定板的精度要求:别让板子拖后腿

标定板的精度,直接决定了双目测距的精度上限。你想想看,如果板子上的格子位置本身就有0.5mm的误差,那标定出来的相机参数能准吗?

这里我列一个精度对照表,供你参考:

应用场景 标定板精度要求 推荐制作方式
普通视觉测量(误差>1mm) ±0.1mm 高精度打印 + 玻璃基板
精密测量(误差0.1~1mm) ±0.02mm 光刻工艺 + 陶瓷基板
超精密测量(误差<0.1mm) ±0.005mm 激光刻蚀 + 石英基板

我个人建议,别在标定板上省钱。淘宝上几十块钱的亚克力标定板,精度通常只有±0.2mm,玩玩可以,做项目就别用了。我见过一个团队,花了两万块买高精度标定板,结果测距精度直接提升了一个数量级。嗯,这笔钱花得值。

注意: 标定板用久了会磨损,尤其是棋盘格的黑白交界处。建议每半年用显微镜检查一次,如果边缘模糊了,赶紧换新的。

3.5 本章知识体系

下面这张图,是我梳理的标定板选型逻辑。你可以对照着看,哪种板子适合你的场景:

标定板选型决策流程 开始选型 精度要求 > 0.1mm? 高精度场景 推荐:圆点标定板 光刻工艺,陶瓷基板 普通精度场景 推荐:棋盘格/Charuco 高精度打印,玻璃基板 可能部分遮挡? 可能部分遮挡? Charuco标定板 圆点标定板 Charuco标定板 棋盘格标定板

说白了,选标定板就三步:先看精度要求,再看遮挡情况,最后定材质工艺。别一上来就买最贵的,也别图便宜买最次的。适合你的场景,才是最好的。


公众号:蓝海资料掘金营,微信deep3321