标定板的选择与制作:棋盘格与圆点阵列的对比、HALCON标定板描述文件、标定板参数设置

标定板选不对,后面全白费。这话听起来有点,但我在项目里确实见过不少因为标定板没选好,导致标定精度差、甚至标定失败的案例。今天咱们就把标定板这事彻底聊透。

棋盘格 vs 圆点阵列:到底怎么选?

HALCON 支持两种主流标定板:棋盘格(Checkerboard)和圆点阵列(Circle Grid)。它们各有各的脾气,选哪个得看你的实际场景。

对比维度 棋盘格 圆点阵列
角点检测精度 亚像素级,精度高 圆心拟合,精度更高
抗畸变能力 边缘处角点易偏移 圆心对畸变不敏感
光照适应性 对光照均匀度要求高 对局部反光更鲁棒
制作成本 普通打印即可 建议专业制作
HALCON 支持 经典,文档丰富 推荐用于高精度场景

我个人习惯是:普通精度要求(比如抓取定位)用棋盘格,高精度测量或大视场标定用圆点阵列。为什么?

棋盘格的角点检测虽然快,但有个问题——在镜头畸变严重的边缘区域,角点位置会跟着图像变形一起跑偏。圆点阵列就不一样了,它检测的是圆心,圆心在透视变换下仍然保持几何不变性。说白了,圆点阵列更「扛造」。

我的经验: 有一次在产线上做眼在手标定,现场光照条件很差,棋盘格角点老是跳。换成圆点阵列后,标定一次通过。从那以后,但凡现场环境不太理想,我优先考虑圆点阵列。

HALCON 标定板描述文件:你的标定板「身份证」

标定板不是随便拍就能用的。HALCON 需要一份描述文件,告诉它你的标定板长什么样。这个文件通常以 .descr 结尾。

描述文件里包含什么?说白了就是标定板的「体检报告」:

  • 标定板类型:棋盘格还是圆点阵列
  • 物理尺寸:每个格子或圆点的实际大小(单位:米)
  • 行列数量:标定板上有多少行多少列
  • 标记点位置:用于确定标定板方向的特殊标记

HALCON 提供了两个算子来生成描述文件:

* 生成棋盘格描述文件
gen_caltab(
    XNumCells, YNumCells, 
    MarkDist, DiameterRatio, 
    CalPlateDescr, CalPlatePSFile
)

* 生成圆点阵列描述文件
gen_circle_caltab(
    XNumCircles, YNumCircles, 
    MarkDist, CircleRadius, 
    CalPlateDescr, CalPlatePSFile
)

这里要注意参数的含义:

  • XNumCells / XNumCircles:X 方向的格子/圆点数量
  • YNumCells / YNumCircles:Y 方向的格子/圆点数量
  • MarkDist:标记点之间的距离(物理单位:米)
  • DiameterRatio / CircleRadius:圆点直径与间距的比值 / 圆点半径
我曾经踩过的坑: 第一次做标定时,我把 MarkDist 设成了格子边长,结果标定出来的外参全是错的。后来才发现,MarkDist 指的是标记点之间的中心距,不是单个格子的尺寸。这个细节很容易搞混。

标定板参数设置:细节决定成败

参数设置这事,看着简单,但每个参数背后都有讲究。我按参数类型给你拆开讲。

1. 尺寸参数

标定板的物理尺寸直接决定了标定精度。有个经验公式:标定板尺寸 ≈ 视场大小的 1/3 到 1/2。太小了,标定板在图像里占的面积不够,角点检测不稳定;太大了,标定板边缘超出视场,那些角点就浪费了。

2. 圆点参数(针对圆点阵列)

圆点直径和间距的比例很关键。HALCON 官方推荐 直径:间距 = 1:2。为什么?

  • 圆点太小:圆心拟合不稳定,噪声影响大
  • 圆点太大:相邻圆点可能粘连,检测失败
  • 间距太小:标定板上的圆点数量少,标定精度下降

3. 棋盘格参数

棋盘格的格子数量建议 7×7 或 9×9。格子太少,角点数量不够,标定方程欠定;格子太多,边缘角点受畸变影响大,反而降低精度。

核心参数速查表:
参数 推荐值 说明
标定板尺寸 视场的 1/3 ~ 1/2 太小精度差,太大边缘浪费
圆点直径:间距 1:2 HALCON 官方推荐比例
棋盘格数量 7×7 或 9×9 平衡精度与稳定性
标记点数量 至少 3 个 用于确定标定板方向

标定板制作:自己打印还是专业制作?

这个问题我经常被问到。我的建议很直接:

  • 精度要求 ±0.1mm 以上:普通激光打印 + 贴在平整硬板上,够用
  • 精度要求 ±0.01mm 级别:必须找专业厂家制作,用玻璃基板或陶瓷基板

为什么?普通打印纸会受温湿度影响变形,而且贴的时候容易起泡。我见过一个项目,用打印的标定板标定完,第二天精度就变了——因为车间湿度变了,纸板收缩了。

省钱小技巧: 如果只是做算法验证,用普通打印 + 亚克力板压平就行。但正式交付的项目,我建议直接买 HALCON 官方认证的标定板,省心。

知识结构图:标定板选择与制作全流程

标定板选择与制作知识结构 标定板选择 棋盘格 圆点阵列 描述文件 角点检测 光照敏感 7×7 或 9×9 圆心拟合 抗畸变强 直径:间距=1:2 gen_caltab gen_circle_caltab MarkDist 参数 核心原则 标定板尺寸 = 视场的 1/3 ~ 1/2 高精度场景用圆点阵列 + 专业制作 描述文件参数必须与实际标定板一致

避坑指南:我踩过的那些坑

做标定板这块,我踩过的坑能写满一页纸。挑几个典型的跟你说说:

  • 标定板不平:贴在弯曲的表面上,标定出来的外参全是歪的。解决办法:用玻璃板或铝板做基底,确保平面度在 0.1mm 以内。
  • 描述文件参数写错:有一次我把 MarkDist 写成了 0.01(实际是 0.0125),标定结果差了 20%。后来我养成了一个习惯:每次生成描述文件后,用文本编辑器打开看一眼,确认参数没问题。
  • 标定板太脏:油污、指纹都会影响角点检测。我见过有人用脏兮兮的标定板标定,结果标定完发现精度还不如不标。保持标定板清洁,这是最基本的。
重要提醒: 标定板描述文件生成后,一定要保留好。每次标定都要用同一个描述文件,否则标定结果无法复现。我习惯把描述文件和标定图像放在同一个文件夹里,命名带上日期和版本号。