4、图像采集与标定基础:相机选型、镜头与光源选择、图像采集流程及Halcon图像数据格式
在2D视觉对位系统中,图像采集与标定是整个精度的基石。如果采集到的图像质量不佳或标定参数不准确,后续的算法处理、特征定位和坐标转换都将失去意义。本章将围绕相机、镜头、光源三大硬件选型,梳理标准化的图像采集流程,并深入解析Halcon中图像数据的底层格式与内存管理机制,帮助工程师建立从物理世界到数字图像的完整映射认知。
4.1 相机选型:从精度需求反推硬件参数
核心原理:相机选型的本质是建立“物理精度需求”与“像素分辨率”之间的数学映射。在2D对位系统中,我们通常关注的是重复定位精度和定位精度。根据采样定理(Nyquist),要可靠地检测一个特征边缘,至少需要2-3个像素覆盖该特征;而要实现亚像素级别的对位精度,实际工程中往往要求像素当量(即每个像素代表的物理尺寸)小于系统要求精度的1/3至1/5。
判断方法或操作流程:相机选型应遵循以下步骤:
- 确定视场(FOV):测量目标物体可能出现的最大范围,并预留10%-20%的余量。
- 计算像素当量:像素当量 = FOV宽度 / 相机水平分辨率。例如FOV为50mm,相机分辨率为2448×2048,则水平像素当量约为0.0204mm/pixel。
- 验证精度匹配:若系统要求定位精度为±0.02mm,则像素当量应≤0.0067mm/pixel,此时需要更高分辨率或缩小FOV。
- 考虑帧率与运动:若目标在运动中采集,需计算最大运动速度下的曝光时间限制,避免运动模糊。
- 接口选择:GigE Vision适合远距离传输(100m),USB3.0适合短距离高速传输,Camera Link适合极高带宽需求。
4.2 镜头与光源选择:成像质量的工程保障
核心原理:镜头决定了图像的清晰度、畸变程度和景深范围;光源则决定了图像的对比度和信噪比。在2D对位系统中,镜头的畸变会直接影响标定精度,而光源的角度和波长则决定了特征边缘的锐利程度。镜头选型的核心参数包括焦距、光圈、靶面尺寸、接口类型和畸变率;光源选型则需考虑颜色、角度、形状和驱动方式。
判断方法或操作流程:
- 镜头焦距计算:f = (工作距离 × 靶面高度) / FOV高度。例如靶面高度为6mm(1/2.5"传感器),工作距离200mm,FOV高度40mm,则f = 200×6/40 = 30mm,可选用25mm或35mm镜头。
- 光圈与景深:对位系统通常需要较大景深以容忍工件高度差异,建议光圈设置在F5.6-F8之间,兼顾进光量与景深。
- 畸变控制:普通工业镜头畸变在0.5%-1%之间,远心镜头可控制在0.1%以下。对于高精度对位,建议使用远心镜头或进行畸变标定补偿。
- 光源角度选择:低角度照明(<30°)适合突出轮廓和表面划痕;高角度照明(>60°)适合检测平面特征和反光表面;同轴光源适合镜面反射表面。
- 光源颜色:互补色增强对比度。例如检测红色PCB上的黑色标记,使用蓝色光源可增强对比度。
| 光源类型 | 适用场景 | 优势 | 局限 |
|---|---|---|---|
| 环形光源 | 通用外观检测、字符识别 | 安装方便、照明均匀 | 对高反光表面易产生光斑 |
| 条形光源 | 大视场、表面纹理检测 | 方向性强、可组合 | 均匀性需调试 |
| 同轴光源 | 镜面反射表面、晶圆、玻璃 | 消除反光、图像稳定 | 亮度较低、价格较高 |
| 背光源 | 轮廓测量、边缘定位 | 对比度极高、边缘锐利 | 无法检测表面特征 |
4.3 图像采集流程:从触发到内存的完整链路
核心原理:图像采集流程涉及硬件触发、数据传输、格式转换和内存管理四个环节。在2D对位系统中,采集的实时性和稳定性直接影响生产节拍。Halcon通过HImage对象封装图像数据,支持从不同接口(GigE、USB3、Camera Link)采集图像,并提供统一的图像访问接口。
操作流程:标准采集流程如下:
// Halcon图像采集核心代码示例
* 打开采集设备
open_framegrabber ('GigEVision', 0, 0, 0, 0, 0, 0, 'default', -1,
'default', -1, 'false', 'Camera1', 'default', -1, -1, AcqHandle)
* 设置采集参数
set_framegrabber_param (AcqHandle, 'ExposureTime', 2000) // 曝光时间2ms
set_framegrabber_param (AcqHandle, 'Gain', 1.0) // 增益
* 触发模式设置
set_framegrabber_param (AcqHandle, 'TriggerMode', 'On')
set_framegrabber_param (AcqHandle, 'TriggerSource', 'Line1')
* 循环采集
for i := 1 to 100 by 1
grab_image_start (AcqHandle, -1)
grab_image_async (Image, AcqHandle, -1)
* 此处进行图像处理
endfor
close_framegrabber (AcqHandle)
案例拆解:某贴合机项目,需要在外触发信号到达后5ms内完成图像采集并输出对位结果。初始方案使用软件触发,发现抖动达到±2ms,无法满足要求。改为硬件触发后,将相机设置为Line1上升沿触发,同时将曝光时间设定为1ms,采集稳定性提升至±0.1ms以内。关键优化点包括:
- 使用硬件触发而非软件触发,消除操作系统调度延迟。
- 将曝光时间与运动速度匹配,避免运动模糊。
- 启用相机的帧突发模式(Burst Mode),减少连续采集时的帧间隔。
4.4 Halcon图像数据格式:HImage的底层逻辑
核心原理:Halcon中的HImage对象是一个复合数据结构,包含图像矩阵、通道信息、域(Region of Interest)和元数据。理解HImage的内存布局对于高效处理图像至关重要。Halcon支持多种像素格式,包括byte(8位)、int1(8位有符号)、int2(16位)、uint2(16位无符号)、int4(32位)、real(32位浮点)等。
判断方法或操作流程:在Halcon中处理图像格式时,需注意以下要点:
- 通道顺序:彩色图像默认通道顺序为RGB,但某些相机输出BGR或YUV格式,需通过convert_image_type进行转换。
- 位深选择:8位灰度(byte)是2D对位最常用的格式,处理速度快且内存占用小。若需更高精度(如测量光斑强度),可使用16位格式。
- 图像域(Domain):HImage可以包含一个域(Region),表示图像中感兴趣的区域。处理时只对域内像素进行计算,可大幅提升速度。
- 内存管理:Halcon使用引用计数管理图像内存。当图像对象被复制时,仅增加引用计数,不复制像素数据。使用copy_image可强制深拷贝。
// 获取Halcon图像指针
Hlong pointer;
Hlong type;
Hlong width, height;
get_image_pointer1 (Image, &pointer, &type, &width, &height);
// 转换为OpenCV Mat(仅灰度图)
cv::Mat img(height, width, CV_8UC1, (void*)pointer);
4.5 标定基础:从像素到物理坐标的桥梁
核心原理:标定的目的是建立图像像素坐标与物理世界坐标之间的映射关系。在2D对位系统中,主要涉及两种标定:相机内参标定(焦距、主点、畸变系数)和手眼标定(相机坐标系与机器人/运动平台坐标系的关系)。Halcon提供calibrate_cameras和calibrate_hand_eye等算子完成标定。
操作流程:标准标定流程如下:
- 采集标定板图像:使用Halcon标准标定板(如30mm×30mm,7×7圆点),在不同位姿下采集15-20张图像。
- 提取标定板特征:使用find_calib_object算子自动检测标定板上的圆点中心。
- 执行标定:调用calibrate_cameras计算内参和畸变系数。
- 畸变校正:使用change_radial_distortion_image对图像进行校正。
- 手眼标定:若相机安装在运动轴上,需采集不同位置下的标定板图像,计算相机与运动平台的变换矩阵。
| 标定类型 | 输入数据 | 输出结果 | 精度验证方法 |
|---|---|---|---|
| 内参标定 | 标定板图像15-20张 | 焦距、主点、畸变系数 | 重投影误差 < 0.1像素 |
| 手眼标定(眼在手上) | 标定板固定,相机随轴移动 | 相机到工具坐标的变换矩阵 | 重复标定误差 < 0.05mm |
| 手眼标定(眼在手外) | 相机固定,标定板随轴移动 | 相机到基座坐标的变换矩阵 | 对已知点测量误差 < 0.03mm |
总结复盘:图像采集与标定是2D视觉对位系统中最基础也最关键的环节。硬件选型决定了系统的理论精度上限,而标定质量决定了实际能达到的精度水平。在实际项目中,建议先进行硬件选型评估,再搭建采集环境,最后执行标定和验证。整个过程中,应保持详细的参数记录,包括相机型号、镜头焦距、光源类型、曝光时间、标定板规格等,以便在系统出现精度问题时快速排查。记住一个原则:图像质量是算法的上限,标定精度是系统的下限。只有采集到高质量图像并完成精确标定,后续的视觉对位算法才能发挥应有的性能。