标定板的选择与制作:棋盘格与圆点阵列的对比、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:圆点直径与间距的比值 / 圆点半径
标定板参数设置:细节决定成败
参数设置这事,看着简单,但每个参数背后都有讲究。我按参数类型给你拆开讲。
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 级别:必须找专业厂家制作,用玻璃基板或陶瓷基板
为什么?普通打印纸会受温湿度影响变形,而且贴的时候容易起泡。我见过一个项目,用打印的标定板标定完,第二天精度就变了——因为车间湿度变了,纸板收缩了。
知识结构图:标定板选择与制作全流程
避坑指南:我踩过的那些坑
做标定板这块,我踩过的坑能写满一页纸。挑几个典型的跟你说说:
- 标定板不平:贴在弯曲的表面上,标定出来的外参全是歪的。解决办法:用玻璃板或铝板做基底,确保平面度在 0.1mm 以内。
- 描述文件参数写错:有一次我把 MarkDist 写成了 0.01(实际是 0.0125),标定结果差了 20%。后来我养成了一个习惯:每次生成描述文件后,用文本编辑器打开看一眼,确认参数没问题。
- 标定板太脏:油污、指纹都会影响角点检测。我见过有人用脏兮兮的标定板标定,结果标定完发现精度还不如不标。保持标定板清洁,这是最基本的。