4. 相机标定(一)
在Halcon三维测量工具链中,相机标定是连接二维图像像素坐标与三维空间物理坐标的桥梁。无论是单目视觉引导、双目立体匹配,还是结构光三维重建,标定结果的精度直接决定了后续测量、定位、检测环节的可靠性。本章聚焦于Halcon环境下相机标定的完整链路:从标定板选型、图像采集规范,到内参外参求解原理,再到误差评估与重投影验证,帮助读者建立一套可量化、可复现的标定工作流。
4.1 标定板选择:精度与场景的权衡
标定板是相机标定的物理基准,其制造精度直接决定了标定结果的上限。Halcon支持多种标定板类型,包括经典的棋盘格(Checkerboard)、圆点阵列(Circle Grid)以及高精度陶瓷板。在实际工程中,选择标定板需要综合考虑测量精度要求、工作距离、镜头视场角以及现场环境光照条件。
圆点标定板在Halcon中通过gen_caltab算子生成描述文件,其优势在于圆心提取算法对透视变形和图像噪声具有较好的鲁棒性。Halcon的标定板描述文件(.descr)中记录了圆点间距、排列方式、标记点位置等先验信息,标定时通过find_caltab和find_marks_and_pose算子自动定位。棋盘格标定板则更适合于角点检测,但在图像模糊或大倾斜角度下,角点定位精度可能不如圆心的椭圆拟合精度。
| 标定板类型 | 材质 | 平面度 | 适用场景 | Halcon支持 |
|---|---|---|---|---|
| 陶瓷圆点板 | 陶瓷基板+铬层 | <5μm | 高精度三维测量、双目视觉 | 完整支持 |
| 玻璃棋盘格 | 钠钙玻璃 | <10μm | 透射光照明场景 | 完整支持 |
| 亚克力圆点板 | PMMA+印刷 | <50μm | 低精度定位、快速验证 | 完整支持 |
| 投影虚拟标定板 | 无实体 | 取决于投影仪 | 大视场、柔性标定 | 需额外开发 |
选择标定板尺寸时,应确保标定板在图像中占据视场面积的1/3至1/2。过小的标定板会导致外参求解不稳定,过大的标定板则可能超出景深范围或产生边缘畸变。对于远心镜头或大靶面相机,需要定制大尺寸高精度标定板。
4.2 标定流程:从图像采集到参数求解
Halcon相机标定的标准流程分为五个阶段:标定板描述生成、图像采集、标定板检测、初始参数估计、非线性优化。每个阶段都有对应的算子支持和参数控制要点。
- 生成标定板描述文件:使用
gen_caltab生成标定板本身(可选)和描述文件。描述文件中包含圆点数量、间距、坐标系原点位置等关键信息。 - 图像采集规范:采集15~20张标定板图像,要求标定板在视场中呈现不同位置、不同倾斜角度(绕X/Y轴旋转±30°以内)、不同距离。避免标定板与相机光轴完全垂直,否则无法解算焦距和主点。
- 标定板检测:使用
find_caltab定位标定板区域,再用find_marks_and_pose提取每个圆点的亚像素坐标,并初步估计每张图像的外参。 - 初始内参估计:通过
camera_calibration算子的初始化模式,基于多张图像的同名点对应关系,线性求解内参初值(焦距、主点、畸变系数)。 - 全局非线性优化:以重投影误差最小化为目标,使用Levenberg-Marquardt算法对所有内参和每张图像的外参进行联合优化。Halcon中通过
calibrate_cameras算子完成。
Halcon标定核心代码片段:
// 创建标定板描述文件
gen_caltab(7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps')
// 读取标定板图像
read_image (Image, 'calib_image_' + I)
// 查找标定板
find_caltab(Image, Caltab, 'caltab.descr', 3, 112, 5)
// 提取圆点中心及位姿
find_marks_and_pose(Image, Caltab, 'caltab.descr', 128, 10, 18, 0.9, RCoord, CCoord, StartPose)
// 收集所有图像数据后执行标定
calibrate_cameras(CalibData, 'all', 'false', Errors)
在实际操作中,find_marks_and_pose的阈值参数需要根据图像对比度调整。如果标定板图像存在反光或阴影,建议使用预处理算子emphasize或illuminate增强圆点与背景的对比度。
4.3 内参外参求解原理与Halcon实现
相机内参描述的是相机内部光学成像几何关系,包括焦距f(或fx、fy)、主点坐标(cx, cy)、径向畸变系数k1、k2以及切向畸变系数p1、p2。Halcon默认使用多项式畸变模型,也支持division模型用于广角镜头。外参则描述标定板坐标系相对于相机坐标系的旋转矩阵R和平移向量T,每张标定板图像对应一组独立的外参。
求解过程本质上是一个非线性最小二乘问题:给定N张图像、每张图像M个圆点,已知标定板上圆点的物理坐标(X, Y, Z=0),通过初始内参和外参将物理点投影到图像平面,计算投影点与检测到的像素坐标之间的残差,然后迭代优化所有参数使残差平方和最小。
Halcon的calibrate_cameras算子内部实现了完整的稀疏光束法平差(Sparse Bundle Adjustment),能够同时处理多相机标定(如双目系统)。对于单目系统,标定结果存储在CalibData句柄中,可通过get_calib_data提取内参矩阵和畸变系数。
经验提示:在Halcon中,标定板坐标系的原点通常定义在标定板左上角第一个圆点中心,X轴沿圆点排列方向,Z轴垂直于标定板平面向外。外参中的平移向量T表示标定板原点在相机坐标系下的三维坐标,旋转角度则通过欧拉角或旋转矩阵表示。在三维测量应用中,通常需要将外参转换为4×4齐次变换矩阵,便于后续点云拼接或机器人手眼标定。
4.4 标定误差评估:量化与诊断
标定完成后,必须对结果进行量化评估,而不是仅凭肉眼观察标定板检测是否成功。Halcon提供两类误差指标:单张图像的重投影误差和全局RMS误差。重投影误差是指将标定板物理点通过当前内外参投影到图像平面后,与检测到的像素坐标之间的欧氏距离,单位是像素(px)。
评估标准建议如下:RMS误差小于0.3px为优秀,0.3~0.5px为可接受,大于0.5px则需要检查标定流程。此外,还应检查每张图像的最大误差点,通常最大误差出现在图像边缘,这提示畸变模型可能不充分或标定板倾斜过大。
| 误差指标 | 优秀 | 合格 | 不合格 | 排查方向 |
|---|---|---|---|---|
| 全局RMS重投影误差 | <0.2 px | 0.2~0.4 px | >0.5 px | 标定板平面度、图像质量 |
| 单张图像最大误差 | <0.5 px | 0.5~1.0 px | >1.0 px | 该图像是否离焦、反光 |
| 焦距相对标准差 | <0.5% | 0.5%~1% | >1% | 图像数量不足或位姿分布差 |
| 主点偏移量 | <5 px | 5~15 px | >15 px | 镜头安装偏心或图像裁剪 |
在Halcon中,可以通过get_calib_data算子获取每张图像的误差分布,并绘制误差直方图。如果发现某张图像的误差显著大于其他图像,应剔除该图像并重新标定。此外,还可以通过交叉验证方法:将采集的图像分为两组,分别标定后比较内参一致性,若差异较大则说明标定过程不稳定。
4.5 案例拆解:高精度三维测量系统的标定优化
某精密电子元件生产线需要测量连接器引脚的三维共面度,测量精度要求±0.02mm,工作距离300mm,使用500万像素工业相机(2448×2048)搭配12mm定焦镜头。初始标定后RMS误差为0.45px,换算到三维空间约为0.035mm,无法满足精度要求。
问题诊断过程:首先检查标定板类型,原使用亚克力印刷圆点板,平面度约50μm,在300mm工作距离下引入的误差约为0.05mm,已超出预算。其次检查图像采集质量,发现部分图像存在环形光源反光,导致圆心提取偏差约0.3px。最后检查标定板位姿分布,发现倾斜角度均小于10°,导致Z方向约束不足。
优化措施:更换为陶瓷基板铬层圆点标定板(平面度3μm),调整光源角度并增加偏振片消除反光,重新采集20张图像,其中包含大倾斜角度(25°~30°)图像5张。标定后RMS误差降至0.18px,三维测量验证实验表明共面度测量重复性达到±0.012mm,满足产线要求。
复盘要点:标定板平面度误差会直接映射到三维测量结果中,在高精度场景下必须选用陶瓷板;光源均匀性对圆心提取精度影响显著,建议使用漫射光源或同轴光源;标定板位姿应包含足够的倾斜变化,否则Z方向标定精度不足。
常见误区提醒:不要使用打印在普通纸张上的标定板进行高精度标定,纸张的热胀冷缩和表面不平整会引入不可控误差。另外,标定完成后应固定镜头光圈和焦距,任何机械调整都需要重新标定。在Halcon中,如果更换了相机分辨率或裁剪了图像区域,也必须重新标定。
4.6 标定质量提升策略与总结
综合上述内容,相机标定的核心在于控制误差源。标定板精度、图像采集质量、算法参数设置三者缺一不可。在实际项目中,建议建立标准化的标定作业指导书,明确标定板型号、光源设置、图像数量、位姿要求以及验收指标。
对于Halcon用户,还可以利用calibrate_cameras的扩展功能进行多相机联合标定,例如双目系统中同时优化两个相机的内参以及它们之间的相对外参。此外,Halcon 20.11以上版本支持自标定技术,可在无标定板情况下利用场景特征进行在线标定,但精度低于离线标定,适用于动态调整场景。
最后,标定不是一次性工作。在设备运输、温度变化、镜头松动等情况下,内参可能发生漂移。建议在三维测量系统中定期执行标定验证,使用标准量块或高精度球体进行精度复核,确保系统长期稳定运行。