4. 图像采集与相机标定

在2D视觉引导贴合项目中,图像采集与相机标定是整个系统精度的基石。贴合精度要求通常在±0.05mm至±0.1mm之间,若图像采集环节无法稳定获取清晰、无畸变的图像,后续的定位算法和贴合控制将无从谈起。本章将围绕相机与光源的选型逻辑、GigE/USB3接口的工程特性、相机标定的数学原理以及Halcon标定板的标准操作流程展开,帮助学员建立从硬件选型到标定落地的完整知识闭环。

图像采集与相机标定工程链路图 硬件选型 相机:分辨率/靶面 镜头:焦距/畸变 光源:颜色/角度 控制器:触发/频闪 接口传输 GigE Vision USB3 Vision PoE供电/带宽 触发线/帧率 标定核心 内参:fx/fy/cx/cy 畸变:k1/k2/p1/p2 外参:旋转/平移 标定板:圆点/棋盘格 Halcon 标定助手 算子调用 误差评估 结果保存 标定流程:采集标定板图像 → 提取特征点 → 计算内参/畸变 → 计算外参 → 验证重投影误差 关键参数对照 分辨率:500万像素 @ 2/3" 靶面 像元尺寸:3.45μm → 理论精度0.02mm 标定板:30mm × 30mm 圆点阵列 工程注意事项 ① 标定板必须与工件处于同一焦平面 ② 光源亮度需稳定,避免过曝/欠曝 ③ 标定后需验证重投影误差 < 0.1像素

4.1 相机与光源选型:从贴合精度反推硬件参数

相机选型的核心逻辑不是“越贵越好”,而是从系统要求的贴合精度和视野范围反推所需的分辨率与镜头参数。假设贴合精度要求为±0.05mm,视野范围为50mm×40mm,则单方向所需像素数为:50mm / 0.05mm = 1000像素。考虑亚像素算法通常能达到0.1像素的定位精度,实际选型时可将基础分辨率乘以2~3倍的安全系数,即至少需要200万~300万像素的相机。若视野扩大至100mm×80mm,则需500万像素以上。

镜头选型需关注焦距、畸变和景深三个参数。焦距决定了工作距离与视野的匹配关系,公式为:焦距 = 工作距离 × 靶面尺寸 / 视野尺寸。例如,使用2/3英寸靶面(宽8.8mm),工作距离200mm,视野50mm,则焦距 = 200 × 8.8 / 50 ≈ 35mm。畸变方面,普通工业镜头在边缘区域常有0.5%~1%的畸变,而远心镜头可将畸变控制在0.1%以内,但成本较高。对于贴合精度要求高的场景,建议优先选用低畸变镜头或通过标定软件进行畸变校正。

光源选择需根据工件表面特性决定。常见光源颜色包括红色(波长620nm)、蓝色(470nm)和白色,其中红色光源对金属表面和PCB板有较好的对比度,蓝色光源适合透明或半透明物体检测。照明方式上,环形光源适合检测字符和划痕,条形光源适合大范围均匀照明,同轴光源适合高反光表面。在贴合场景中,Mark点定位通常采用红色环形光源加漫射板,以减少反光干扰。

选型维度 关键参数 推荐值/范围 工程说明
相机分辨率 像素数 ≥ 视野/精度 × 2 留出亚像素算法余量
镜头焦距 mm 工作距离×靶面/视野 需兼顾景深与畸变
光源颜色 波长 红/蓝/白 根据工件材质选择
照明方式 角度/结构 环形/条形/同轴 高反光用同轴,Mark点用环形
经验提醒:在贴合项目中,光源亮度稳定性比光源强度更重要。建议使用恒流驱动光源控制器,并定期检查光源衰减情况。若发现图像灰度值波动超过±10%,应优先排查光源老化或供电波动问题。

4.2 图像采集接口:GigE与USB3的工程选型对比

GigE Vision和USB3 Vision是目前工业相机最主流的两种数字接口。GigE接口基于千兆以太网,理论带宽为1Gbps(约125MB/s),实际有效带宽约100MB/s,支持PoE供电(Power over Ethernet),传输距离最长可达100米。USB3 Vision基于USB 3.0总线,理论带宽为5Gbps(约500MB/s),实际有效带宽约350MB/s,传输距离通常限制在3~5米(使用优质线缆)。在2D视觉引导贴合系统中,若相机与工控机距离较近(<3米),USB3接口在帧率和带宽上更有优势;若相机分布分散或需要长距离传输,GigE接口更为可靠。

触发同步是贴合系统的重要环节。GigE接口支持IEEE 1588精确时间协议,可实现多相机同步采集;USB3接口则依赖外部触发线(硬件触发)或软件触发,同步精度略逊于GigE。在实际项目中,建议使用硬件触发方式,将PLC的脉冲信号直接接入相机的Trigger IN引脚,确保每次拍照与运动控制严格同步。Halcon中可通过set_framegrabber_param设置触发模式,例如:

open_framegrabber('GigEVision2', 0, 0, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'Camera1', 0, -1, AcqHandle)
set_framegrabber_param(AcqHandle, 'TriggerMode', 'On')
set_framegrabber_param(AcqHandle, 'TriggerSource', 'Line0')

带宽计算方面,以500万像素相机(2448×2048)、8bit灰度、30fps为例,单帧数据量约为5MB,所需带宽为150MB/s,已超过GigE的有效带宽,因此需降低帧率或使用图像压缩。而USB3接口可轻松应对该场景。若使用彩色相机,数据量翻倍,需进一步评估接口带宽。

风险提示:USB3线缆对电磁干扰较敏感,在电机驱动、变频器等强干扰源附近,建议使用带屏蔽层的工业级USB3线缆,并尽量远离动力线。GigE接口则需注意网卡质量,推荐使用Intel或Realtek工业级网卡,避免使用板载低端网卡导致丢包。

4.3 相机标定原理:从像素坐标到物理坐标的数学映射

相机标定的本质是求解从三维世界坐标到二维像素坐标的投影矩阵。该矩阵由内参(Intrinsic Parameters)和外参(Extrinsic Parameters)组成。内参包括焦距fx、fy,主点坐标cx、cy,以及畸变系数(径向畸变k1、k2,切向畸变p1、p2);外参描述相机坐标系相对于世界坐标系的旋转矩阵R和平移向量T。标定过程即通过拍摄已知尺寸的标定板,提取特征点(如圆点中心或棋盘格角点),建立像素坐标与物理坐标的对应关系,然后通过最小二乘法求解上述参数。

Halcon中标定操作分为三个核心步骤:描述标定板、采集标定图像、计算标定结果。首先使用create_calib_data创建标定数据模型,并指定标定板的描述文件(如caltab_30mm.descr)。然后采集10~15张不同姿态的标定板图像,要求标定板覆盖视野的各个区域,且倾斜角度在±30°以内。最后调用find_calib_object自动提取特征点,并通过calibrate_cameras计算相机内参和外参。标定完成后,需检查平均重投影误差(Mean Error),通常应小于0.1像素。

在贴合应用中,标定不仅需要获得相机内参,还需建立图像坐标与机器人/运动平台坐标的映射关系。这通常通过手眼标定(Hand-Eye Calibration)实现,即求解相机坐标系与机器人基坐标系之间的变换矩阵。Halcon中可使用calibrate_hand_eye算子完成该过程,输入为多组机器人位姿和对应的标定板位姿。

标定操作流程清单:
  1. 准备标定板:确保表面清洁、无划痕,固定于平整平面。
  2. 设置光源:调整亮度至图像灰度值在150~220之间(8bit)。
  3. 采集图像:移动标定板至视野不同位置,拍摄10~15张,避免重复姿态。
  4. 提取特征点:使用find_calib_object自动识别圆点或角点。
  5. 计算参数:执行calibrate_cameras,获取内参和畸变系数。
  6. 验证精度:检查重投影误差,若大于0.1像素,需重新采集。
  7. 保存结果:使用write_cam_par保存相机参数文件。

4.4 Halcon标定板操作实战:从图像采集到误差验证

下面以一个典型的PCB贴合项目为例,演示Halcon标定板的完整操作流程。项目背景:视野范围60mm×45mm,贴合精度±0.05mm,使用500万像素GigE相机,镜头焦距25mm,工作距离150mm。标定板选用30mm×30mm的圆点阵列板,圆点间距5mm,圆点直径2.5mm。

首先,在Halcon中创建标定数据模型并设置参数:

create_calib_data('calibration_object', 1, 1, CalibHandle)
set_calib_data_cam_param(CalibHandle, 0, 'area_scan_division', [0.008, 0, 0.000008, 0.000008, 1224, 1024, 1224, 1024])
set_calib_data_calib_object(CalibHandle, 0, 'caltab_30mm.descr')

然后,通过图像采集助手获取15张标定板图像。采集时注意:标定板平面应与相机光轴垂直,倾斜角度控制在±20°以内;每张图像中标定板应占据视野的1/3以上;避免标定板边缘被裁剪。采集完成后,使用find_calib_object提取特征点:

for I := 1 to 15 by 1
    read_image (Image, 'calib_images/calib_' + I$'02d')
    find_calib_object (Image, CalibHandle, 0, 0, I-1, [], [])
endfor
calibrate_cameras (CalibHandle, Errors)
get_calib_data (CalibHandle, 'camera', 0, 'params', CamParam)

标定完成后,Halcon会输出平均重投影误差。在本案例中,误差为0.08像素,满足要求。若误差超过0.1像素,可能原因包括:标定板表面不平整、光源不均匀导致特征点提取偏移、镜头畸变过大等。此时应检查标定板状态,调整光源角度,或更换低畸变镜头。

标定结果的应用:在贴合定位时,使用image_points_to_world_plane将像素坐标转换为物理坐标,再结合手眼标定结果,将物理坐标映射到机器人坐标系。例如:

image_points_to_world_plane (CamParam, Pose, Row, Col, 1, X, Y)

其中Pose为标定板位姿,Row/Col为Mark点像素坐标,X/Y为对应的物理坐标。

检查项 合格标准 异常处理
重投影误差 < 0.1像素 重新采集图像,检查标定板平整度
标定板覆盖范围 ≥ 视野的80% 增加采集图像数量,调整标定板位置
图像灰度值 150~220 调整光源亮度或曝光时间
特征点数量 ≥ 50个/张 更换标定板或调整工作距离
常见误区:很多工程师在标定时只拍摄正对相机的图像,忽略了倾斜姿态。实际上,倾斜图像对畸变系数的求解至关重要。建议至少包含3~5张倾斜角度在15°~30°之间的图像,否则畸变参数可能不准确,导致边缘区域定位偏差。

4.5 标定精度验证与工程复盘

标定完成后,必须进行精度验证,而不能直接投入生产。验证方法为:将标定板放置在视野的多个位置(中心、四角、边缘),使用标定结果计算标定板上已知间距的两个圆点之间的物理距离,与真实值对比。若误差在±0.03mm以内,则标定合格;若超出该范围,需排查以下因素:

  • 标定板平面度:使用陶瓷或玻璃基板标定板,避免纸质标定板受潮变形。
  • 镜头紧固:检查镜头是否松动,光圈是否锁定,避免焦距漂移。
  • 温度影响:相机长时间工作后发热会导致像面位移,建议标定前预热30分钟。
  • 光源一致性:确保标定时与生产时的光源亮度和角度一致。

在贴合项目中,标定结果通常需要与PLC进行交互。Halcon计算出的物理坐标通过TCP/IP或Profinet发送给PLC,PLC再控制运动平台执行贴合动作。此时需注意坐标系的统一:Halcon输出的坐标原点通常位于图像左上角,而PLC的坐标系原点可能位于平台机械零点,需通过手眼标定建立两者之间的偏移和旋转关系。

复盘建议:建议每次设备维护或更换光源后,重新执行标定流程。同时,将标定参数文件(.cal)和标定图像存档,便于后续追溯问题。若贴合精度出现波动,优先检查标定参数是否被意外修改,其次检查机械结构是否变形。

本章从相机与光源选型、接口传输、标定原理到Halcon实操,完整覆盖了2D视觉引导贴合系统中图像采集与标定的关键环节。掌握这些内容后,学员应能独立完成一套贴合系统的相机选型、安装、标定和精度验证工作,为后续的贴合算法开发和PLC信号交互打下坚实基础。