3. 图像采集与相机标定

在 HALCON 工业视觉项目中,图像采集与相机标定是整条处理链的起点。采集决定了“拿到什么质量的原始数据”,标定决定了“像素坐标如何映射到真实物理世界”。两者一旦存在系统性偏差,后续的测量、定位、缺陷检测都会带着误差运行,且很难通过算法弥补。本节围绕面阵与线阵相机的采集方式、主流接口协议、标定板选择、内外参标定、畸变校正以及手眼标定展开,重点说明实际工程中如何配置、如何计算、如何判断结果是否可用。

面阵相机与线阵相机的采集差异

面阵相机一次曝光获得一幅二维图像,适合静态或准静态场景,例如零件定位、字符识别、表面缺陷检测。它的采集逻辑是“整帧曝光—整帧传输”,HALCON 中通过 open_framegrabber 打开采集接口,再用 grab_image 或 grab_image_async 取图。异步采集允许在上一帧处理的同时触发下一帧,是提高节拍的关键。

线阵相机每次只采集一行像素,必须配合物体与相机之间的相对运动,逐行拼接成完整图像。它适合连续卷材、传送带上的长条物体,例如布匹、金属带、印刷品。线阵采集的核心参数是行频(line rate)与运动速度的匹配:若物体运动速度为 v(mm/s),单行对应的物理宽度为 w(mm/line),则行频 f = v / w。例如物体速度 500 mm/s、单行覆盖 0.1 mm,则行频需设为 5000 Hz。行频设置不当会导致图像被拉伸或压缩,表现为圆形变椭圆、正方形变矩形。HALCON 中通常使用 open_framegrabber 指定 'LineScan' 类接口,并通过 set_framegrabber_param 设置 'lines_per_scan' 等参数。

面阵与线阵采集链路对比 面阵相机 整帧曝光 整帧传输 二维图像 适用:静态/准静态、定位、OCR、缺陷 线阵相机 单行曝光 逐行拼接 长条图像 适用:连续卷材、传送带、长条物体 线阵行频匹配关系 物体速度 v 单行物理宽度 w 行频 f = v / w 500 mm/s 0.1 mm/line → f = 5000 Hz 行频偏低→图像拉伸 行频偏高→图像压缩 判断:圆变椭圆即失配

GenICam、GigE Vision、USB3 Vision 接口

工业相机接口的标准化极大降低了 HALCON 的集成成本。GenICam 是通用相机编程接口标准,它定义了相机功能的描述方式(XML 描述文件)和访问方式,使不同厂商的相机可以用统一的 API 访问。GigE Vision 基于千兆以太网,传输距离可达 100 米,支持 PoE 供电,适合多相机、远距离部署;USB3 Vision 基于 USB 3.0,带宽高、即插即用,适合单相机、短距离、高帧率场景。

在 HALCON 中,这三类接口通常通过 open_framegrabber 的 Interface 参数区分,例如 'GigEVision2'、'USB3Vision'。实际配置时需关注:GigE 的包大小(packet size)与网卡巨帧(Jumbo Frame)设置,包大小过小会导致丢包;USB3 的带宽分配与供电稳定性。判断采集是否正常,可观察 grab_image 返回的图像是否完整、是否有丢行或撕裂。

标定板选择与内外参标定

标定板是标定的物理基准。HALCON 常用的是圆点阵列标定板(如 calplate 系列)和棋盘格标定板。选择时需考虑:标定板尺寸应覆盖相机视场的 1/3 以上,圆点间距与相机分辨率匹配,标定板平整度要高。标定板文件(.descr)必须与实物一致,否则标定结果会系统性偏移。

相机内参标定确定焦距、主点、像素尺寸和畸变系数;外参标定确定相机相对于世界坐标系的位置和姿态。HALCON 中通过 find_calib_object 提取标定板上的标记点,再用 calibrate_cameras 计算内外参。实际操作中,需要拍摄 10~20 张不同位姿的标定板图像,覆盖视场各个区域和倾斜角度。标定完成后,用 get_calib_data 读取参数,并用 calibrate_cameras 返回的平均误差判断质量:误差通常应小于 0.1 像素,若大于 0.3 像素则需检查标定板图像质量或位姿分布。

畸变校正与手眼标定

镜头畸变主要表现为径向畸变(桶形或枕形)和切向畸变。HALCON 通过 change_radial_distortion_cam_off 或 gen_radial_distortion_map 生成校正映射,再用 map_image 对图像进行校正。校正后的图像中,直线应保持直线,这是判断畸变校正是否有效的直观依据。

手眼标定解决的是相机坐标系与机器人(或运动平台)坐标系之间的变换关系。常见形式有两种:眼在手(eye-in-hand),相机安装在机器人末端;眼在外(eye-to-hand),相机固定在外部。HALCON 中通过 calibrate_hand_eye 完成,需要机器人带动标定板或相机运动多个位姿,同时记录机器人位姿和标定板在相机中的位姿。标定结果是一个 4×4 的齐次变换矩阵,用于将相机坐标下的目标位置转换到机器人坐标下。判断手眼标定质量,可检查标定误差和重投影误差,通常要求误差小于 0.5 mm(具体取决于应用精度要求)。

标定不是一次性的工作。相机移动、镜头更换、温度变化都可能使标定参数失效。建议在设备维护后重新标定,并在程序中保存标定文件版本,便于追溯。

采集与标定的工程检查要点

环节关键参数/对象判断依据
面阵采集曝光时间、增益、触发模式图像不过曝、不欠曝,运动物体无拖影
线阵采集行频、物体速度、单行宽度圆形不变形,行频与速度匹配
接口配置GigE 包大小、USB3 带宽无丢包、无撕裂、帧率稳定
内参标定焦距、主点、畸变系数平均误差 < 0.1 像素
畸变校正径向畸变映射直线校正后仍为直线
手眼标定4×4 变换矩阵重投影误差满足精度要求

采集与标定的每一步都直接影响后续算法的输入质量。实际项目中,建议先固定相机与镜头的物理安装,再完成内参标定和畸变校正,最后进行手眼标定。标定文件应随项目版本管理,避免因参数错配导致测量结果漂移。