3. 标定基础概念

在机器视觉检测项目中,标定(Calibration)是决定系统测量精度与稳定性的第一道关卡。许多工程师在项目初期急于搭建图像采集环境、编写检测算法,却忽略了标定环节,导致后期反复调试仍无法满足公差要求。本章将系统梳理标定的核心概念,帮助读者建立从“像素坐标”到“物理世界坐标”的完整认知框架。

一、标定的定义与核心目的

标定,简而言之,是建立图像像素坐标系与真实物理世界坐标系之间映射关系的过程。在Halcon中,标定通常涉及两个层面的数学建模:一是描述相机内部光学特性的内参矩阵(焦距、主点、畸变系数),二是描述相机在空间中位姿的外参矩阵(旋转矩阵与平移向量)。

标定的根本目的可以归纳为以下四点:

  • 消除畸变:镜头制造与装配误差会导致图像边缘出现桶形或枕形畸变,标定可计算畸变系数并校正图像,使直线恢复为直线。
  • 建立度量基准:将像素尺寸转换为毫米、微米等物理单位,使测量结果具有实际工程意义。
  • 确定空间位姿:在机器人引导、三维定位等场景中,标定可确定相机与机械手、工件之间的相对位置关系。
  • 统一多相机坐标系:在多相机拼接或立体视觉系统中,标定可将各相机坐标系统一到同一世界坐标系下。
工程提示:在Halcon项目中,标定并非一次性任务。当镜头焦距、光圈、工作距离或相机分辨率发生变化时,必须重新标定。建议在项目启动阶段建立标定记录表,记录每次标定的环境参数与结果,便于后期追溯。

二、标定的分类体系

根据应用场景与标定对象的不同,视觉检测中的标定可分为三大类:相机标定、手眼标定与畸变校正。三者既有区别又相互关联,下表给出了它们的核心对比:

标定类型 标定对象 输出结果 典型应用
相机标定 单个相机内部参数 内参矩阵、畸变系数 尺寸测量、缺陷检测
手眼标定 相机与机械手坐标系关系 手眼变换矩阵(4×4) 机器人抓取、装配引导
畸变校正 镜头光学畸变模型 校正后的无畸变图像 图像预处理、高精度测量

1. 相机标定(Camera Calibration)

相机标定是视觉系统中最基础、最核心的标定步骤。它通过拍摄已知尺寸的标定板(如Halcon标准标定板、棋盘格、圆点阵列),提取特征点并建立像素坐标与物理坐标的对应关系,从而求解相机内参。Halcon中常用的标定算子包括:

* 创建标定模型
create_calib_data ('calibration_object', 1, 1, CalibDataID)
* 设置相机类型与初始参数
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', [0.008, 0, 0.000008, 0.000008, 640, 480, 0, 0])
* 设置标定板描述文件
set_calib_data_calib_object (CalibDataID, 0, 'calplate_100mm.descr')
* 读取标定板图像并查找标记点
find_calib_object (Image, CalibDataID, 0, 0, 0, [], [])
* 执行标定
calibrate_cameras (CalibDataID, Errors)
* 获取标定结果
get_calib_data (CalibDataID, 0, 'camera', 'params', CameraParam)

相机标定的精度受多个因素影响:标定板平面度、光照均匀性、拍摄角度、图像清晰度等。在Halcon中,标定误差通常以像素为单位输出,一般要求均方根误差小于0.1像素。

2. 手眼标定(Hand-Eye Calibration)

当视觉系统安装在机器人末端或固定于工作空间某处时,需要确定相机坐标系与机器人基坐标系(或工具坐标系)之间的变换关系,这就是手眼标定。根据相机安装位置的不同,分为两种经典构型:

  • 眼在手上(Eye-in-Hand):相机随机械臂运动,标定目标是相机与工具坐标系的关系。
  • 眼在手外(Eye-to-Hand):相机固定安装,标定目标是相机与机器人基坐标系的关系。

Halcon中手眼标定的核心流程为:

  1. 在机械臂末端安装标定板(或固定标定板),控制机械臂运动到多个不同位姿。
  2. 在每个位姿下,记录机械臂的位姿(通过机器人控制器读取)并拍摄标定板图像。
  3. 使用calibrate_hand_eye算子求解手眼变换矩阵。
* 收集多组机械臂位姿与对应标定板位姿
* PoseRobot:机械臂末端位姿(4×4齐次矩阵)
* PoseCalib:标定板在相机坐标系下的位姿
calibrate_hand_eye (PoseRobot, PoseCalib, PoseToolInCam)
常见误区:手眼标定中,机械臂位姿的读取精度直接影响标定结果。许多工程师只关注图像处理部分,却忽略了机器人控制器中TCP(工具中心点)坐标的准确性。建议在标定前先验证机器人自身的重复定位精度,并确保TCP标定无误。

3. 畸变校正(Distortion Correction)

畸变校正是相机标定的直接应用,也是图像预处理的重要环节。镜头畸变主要分为径向畸变(由透镜形状引起)和切向畸变(由镜头与成像平面不平行引起)。Halcon支持多种畸变模型,常用的有division模型和polynomial模型。

畸变校正的工程意义在于:未经校正的图像在边缘区域会产生明显的测量误差。例如,一个100mm的标准量块在图像中心测量为100.02mm,而在图像边缘可能偏差达0.5mm以上。通过畸变校正,可将全视场测量误差控制在0.05mm以内。

* 使用标定结果校正图像
change_radial_distortion_image (Image, ImageRectified, CameraParam, CameraParamRectified)

三、标定在视觉检测中的重要性

标定不是视觉系统的“可选优化项”,而是硬性前提。其重要性体现在以下三个维度:

第一,测量精度的基石。在半导体、精密制造等领域,检测公差常达微米级。未标定系统的像素当量(mm/pixel)在视场不同位置存在差异,直接使用像素尺寸换算物理尺寸将产生不可接受的误差。标定后,系统可精确计算每个像素对应的物理尺寸,并补偿畸变影响。

第二,算法稳定性的保障。许多检测算法(如边缘提取、模板匹配)对图像质量敏感。畸变严重的图像会导致边缘位置偏移、形状失真,进而影响特征提取的准确性。标定后的图像更接近真实几何关系,算法参数更具通用性。

第三,多系统协同的基础。在自动化产线中,视觉系统往往与机器人、运动控制平台协同工作。只有通过标定建立统一的坐标基准,才能实现精准的定位引导与轨迹规划。

四、标定方法流程与工程实践

一个完整的标定流程通常包含以下步骤:

  1. 环境准备:固定相机与镜头,确保工作距离、光圈、焦距与正式生产一致;清洁镜头与标定板。
  2. 标定板选择:根据视场大小与精度要求选择合适尺寸的标定板。Halcon标定板有陶瓷、玻璃、金属等多种材质,精度等级从±0.01mm到±0.001mm不等。
  3. 图像采集:拍摄15~25张不同位姿的标定板图像,覆盖视场的不同区域与角度。注意避免反光、阴影和运动模糊。
  4. 特征提取与标定计算:在Halcon中执行find_calib_object与calibrate_cameras,观察标定误差。
  5. 验证与优化:使用标定结果测量已知尺寸的标准件,验证精度是否满足要求。若误差超差,需检查图像质量、标定板状态或重新采集。
案例:某PCB板尺寸检测项目
项目要求检测PCB板上焊盘间距,公差±0.05mm。初始未标定时,直接使用像素当量换算,测量结果波动达±0.2mm。经分析,主要原因是镜头畸变导致视场边缘误差放大。实施Halcon相机标定后,使用calibrate_cameras获得畸变系数,并通过change_radial_distortion_image校正图像。标定后测量重复性提升至±0.02mm,完全满足客户要求。该项目中,标定耗时仅30分钟,却解决了持续两周的精度难题。

五、标定中的常见误区与复盘

在多年项目实践中,以下误区反复出现,值得工程师警惕:

  • 误区一:标定板图像越多越好。实际上,超过20张后精度提升有限,反而可能引入低质量图像。关键在于图像位姿的多样性,而非数量。
  • 误区二:忽略温度影响。相机与镜头在长时间工作后温度升高,可能导致焦距漂移。高精度项目应在设备热机稳定后再标定。
  • 误区三:标定后随意调整镜头。一旦标定完成,镜头的光圈、焦距、工作距离均不可变动,否则标定结果失效。
  • 误区四:混淆手眼标定与相机标定。两者解决不同问题,不可互相替代。手眼标定依赖相机标定的内参结果,但还需额外求解外参。

复盘一个失败案例:某项目在机器人抓取定位中,手眼标定误差始终在5mm以上。排查发现,机械臂运动时标定板发生轻微振动,导致图像模糊。改进措施为:降低机械臂运动速度、使用外部触发采集图像、增加标定板固定刚性。重新标定后误差降至0.5mm以内。这一案例说明,标定过程中的每一个环节都需严格控制,任何微小扰动都可能被放大为显著的坐标误差。