3、HALCON标定助手入门:打开标定助手、加载标定板描述文件、采集标定图像的基本流程

说实话,很多新手拿到 HALCON 第一件事就是写代码。但我个人习惯,标定这种活儿,先用助手跑通流程再说。标定助手就像个「向导」,把那些繁琐的参数配置、图像采集、角点提取都封装好了。你只要按步骤走,就能拿到一套可用的相机参数。

这一章,我就带你走一遍标定助手的标准流程。说白了就三步:打开助手、加载描述文件、采集图像。别小看这三步,每一步都有坑。我曾经在一个项目里,就因为描述文件版本选错,折腾了一下午。

3.1 打开标定助手

打开方式有两种,我一般用第一种,快。

  • 方法一:菜单栏 —— 点击 助手 → 打开新的 Calibration。这是最直接的路径。
  • 方法二:工具栏 —— 在工具栏找到标定助手图标(一个小棋盘格图案),直接点。

打开后,你会看到一个多标签页的界面。别慌,我们主要用前三个标签页:

标签页 作用
标定 核心操作区,加载描述文件、采集图像、标定计算都在这里
结果 显示标定后的相机参数、误差统计
代码生成 自动生成对应的 HALCON 代码,方便你后续集成
我的习惯: 每次打开助手,先看一眼左下角的「相机型号」和「接口」是否匹配。如果用的是 USB 相机,这里通常会显示 "DirectShow" 或 "GigEVision2"。不匹配的话,后面采集图像会报错。

3.2 加载标定板描述文件

这是最容易出错的一步。描述文件(.descr 或 .ps)告诉 HALCON 你的标定板长什么样——格子数量、尺寸、排列方式。

加载步骤:

  1. 在「标定」标签页,找到 标定板描述文件 输入框。
  2. 点击右侧的「...」按钮,选择文件。
  3. 确认文件路径显示正确。

描述文件通常放在 HALCON 安装目录下的 calib/ 文件夹里。比如:

C:\Program Files\MVTec\HALCON-22.05\calib\caltab_30mm.descr

文件名里的数字(比如 30mm)代表单个格子的物理尺寸。你想想看,如果你的标定板格子是 30mm,却加载了 25mm 的描述文件,那标定出来的结果肯定不准。

避坑指南: 我曾经在客户现场,用了一块非标准的标定板。HALCON 自带的描述文件都不匹配。后来我手动测量了格子尺寸,用 gen_caltab 算子重新生成了一个描述文件。所以,一定要确认描述文件与实物完全一致。

3.3 采集标定图像

描述文件加载好后,就可以采集图像了。助手提供了两种采集方式:

方式 适用场景 操作
实时采集 相机已连接,需要实时调整标定板姿态 点击「实时」按钮,图像会连续刷新
从文件加载 图像已提前拍好,或相机不在身边 点击「加载图像」按钮,选择图片文件

我个人建议,如果条件允许,尽量用实时采集。因为你可以边移动标定板边看效果,确保每张图像都满足要求。

采集图像时,有几个关键点要注意:

  • 覆盖全视场:标定板要出现在图像的各个位置——左上、右下、中心、边缘。别老放在中间不动。
  • 多种角度:倾斜、旋转、俯仰,至少 10-15 张。我一般拍 15-20 张,留点余量。
  • 光照均匀:避免反光或阴影遮挡标定板上的角点。
  • 标定板占画面 1/4 以上:太小了角点提取不准。
采集技巧: 每拍一张,助手会自动检测角点。如果检测失败(图像上会出现红色叉号),别急着继续拍。先调整标定板姿态或光照,直到角点全部被绿色圆圈标记。

下面这张图,就是整个标定助手操作流程的概览:

标定助手操作流程 打开标定助手 加载描述文件 采集标定图像 实时采集 从文件加载 自动角点检测 提示:每张图像检测成功后,绿色圆圈标记角点;失败则显示红色叉号

3.4 图像质量检查

采集完图像后,别急着点「标定」。先检查一下每张图像的质量。助手会在图像列表里显示每张图的状态:

  • 绿色对勾:角点检测成功,图像可用。
  • 红色叉号:检测失败,需要重拍。
  • 黄色感叹号:检测成功但质量偏低(比如标定板太靠边、角度过大)。

我一般会删掉所有带黄色感叹号的图像。为什么?因为质量低的图像会拉低整体标定精度。与其留着凑数,不如多花两分钟重拍一张好的。

小技巧: 如果某张图像角点检测失败,可以尝试手动调整「提取阈值」参数。在助手的「标定」标签页里,有个「参数」按钮,点进去可以调。但说实话,我很少调这个——调光照比调参数更靠谱。

3.5 保存与导出

图像采集和检查都完成后,建议先保存项目。助手的 文件 → 保存 会把所有设置、图像路径、描述文件信息都存成一个 .hdev 文件。下次打开直接继续,不用重新加载。

另外,如果你想把标定结果集成到自己的程序里,可以切换到「代码生成」标签页。助手会自动生成一段 HALCON 代码,包括读取描述文件、设置相机参数、执行标定等。直接复制粘贴就能用。