4. 3D标定基础

在3D机器视觉系统中,标定的本质是建立“像素坐标—物理坐标”之间的可计算映射。没有标定,相机只是一个二维成像器件;完成标定后,它才成为可测量、可定位、可重建的三维传感器。本节围绕四个核心问题展开:相机模型由哪些参数构成、HALCON标定板如何提供约束、标定流程如何组织、标定结果如何评估与补偿。

一、相机模型:内参、外参与畸变

HALCON采用针孔模型加畸变修正来描述成像过程。世界坐标系中的点 Pw 先经外参变换到相机坐标系,再由内参投影到图像平面,最后叠加畸变得到实际像素坐标。

内参描述相机自身的成像几何,包括焦距 f(以像素为单位)、主点 (cx, cy)、像元尺寸 sx, sy。焦距决定视场角与放大倍率,主点是光轴与像平面的交点。内参一旦标定完成,在镜头与相机相对位置不变时可重复使用。

外参描述相机坐标系相对于世界坐标系的位置与姿态,由旋转矩阵 R 和平移向量 T 组成,共6个自由度。外参决定了“相机在哪里、朝哪里看”。在多相机系统中,外参还用于统一各相机到同一世界坐标系。

畸变模型修正实际镜头偏离理想针孔模型的部分。HALCON常用径向畸变系数 K1, K2, K3 和切向畸变系数 P1, P2。径向畸变使直线在图像边缘弯曲,表现为桶形或枕形;切向畸变由镜头与传感器不平行引起。畸变修正公式可简写为:

u' = u + (u - cx) * (K1*r² + K2*r⁴ + K3*r⁶) + 2*P1*(u-cx)*(v-cy) + P2*(r² + 2*(u-cx)²)
v' = v + (v - cy) * (K1*r² + K2*r⁴ + K3*r⁶) + P1*(r² + 2*(v-cy)²) + 2*P2*(u-cx)*(v-cy)
其中 r² = (u-cx)² + (v-cy)²

需要强调:内参、外参、畸变系数共同构成一个完整的相机参数集。只标内参不标外参,无法做三维测量;只标外参不标内参,投影关系不成立。

HALCON 相机标定参数与坐标变换链 世界坐标系 Pw (Xw, Yw, Zw) 外参 R, T 6 自由度 相机位姿 相机坐标系 Pc (Xc, Yc, Zc) 内参 f, cx, cy sx, sy 投影关系 畸变模型 K1,K2,K3 P1,P2 像素坐标 (u, v) HALCON标定板 圆点阵列 已知间距 标定流程与精度评估 采集多姿态 标定板图像 提取标定板 标记点坐标 优化求解 内参+外参+畸变 评估重投影 误差 RMS 误差补偿 或重标定 重投影误差 RMS 是判断标定质量的核心指标,通常要求 < 0.1 pixel

二、HALCON标定板与标定流程

HALCON标定板是一块印有已知几何图案的平板,常见为圆点阵列或棋盘格。其核心价值在于:图案上每个标记点的世界坐标是已知的,相机拍摄后提取到的像素坐标与已知世界坐标构成一一对应,从而为参数求解提供约束。HALCON标定板文件(.descr)中记录了标记点数量、行列间距、圆点直径等元数据,标定前必须正确加载。

标定流程可概括为以下关键步骤:

  1. 准备标定板与相机:选择合适尺寸的标定板,确保在最小工作距离下仍能完整成像,且标记点直径在图像中不少于约10像素。
  2. 采集多姿态图像:通常采集10~20张,标定板需覆盖图像不同区域,并具有不同倾斜角度。建议倾斜角在±30°范围内变化,避免所有图像姿态过于相似。
  3. 提取标记点:使用 find_calib_object 或 find_calib_object 系列算子,得到每个标记点的图像坐标及标定板姿态。
  4. 设置初始参数:给出焦距、像元尺寸的初始估计值,以及畸变系数的初始值(通常设为0)。
  5. 执行标定:调用 calibrate_cameras,HALCON通过非线性优化同时求解内参、外参和畸变系数。
  6. 获取结果:得到相机参数 CameraParam,包含焦距、主点、畸变系数等。
标定板姿态应尽量覆盖整个视场,尤其是图像四角。若只在中心区域采集,边缘畸变系数将无法被有效约束,导致标定结果在边缘区域误差偏大。

三、标定精度评估

标定完成后,必须评估结果是否可用。HALCON提供两类主要指标:

  • 重投影误差(Reprojection Error):将标定得到的三维点重新投影到图像平面,与实际提取的像素坐标比较,计算均方根误差。该值直接反映标定参数对训练数据的拟合程度。工程中通常要求 RMS 小于 0.1 像素;若大于 0.3 像素,说明标定质量不足。
  • 参数标准差:calibrate_cameras 会输出各参数的标准差。若某参数标准差过大,说明该参数未被充分约束,常见原因是标定板姿态变化不足或图像数量太少。

此外,还应进行交叉验证:用一部分图像标定,用另一部分图像评估重投影误差。若训练误差很小但验证误差明显偏大,说明存在过拟合,需要增加姿态多样性或减少畸变系数数量。

四、误差补偿与工程处理

当重投影误差偏大时,可从以下方向排查与补偿:

  1. 检查标定板提取质量:标记点提取偏差是常见误差源。可查看 find_calib_object 返回的标记点残差,剔除提取质量差的图像。
  2. 增加标定图像数量与姿态多样性:尤其增加倾斜和边缘区域图像,使畸变系数得到充分约束。
  3. 调整畸变模型阶数:若镜头畸变较大,可启用 K3 或更高阶项;若图像数量不足,则应减少畸变系数,避免过拟合。
  4. 使用 change_radial_distortion_cam_off:在标定后对图像进行径向畸变校正,将畸变图像转换为无畸变图像,再用于后续测量。
  5. 多相机联合标定:若系统包含多个相机,应使用 calibrate_cameras 同时标定所有相机,获得统一外参,避免分别标定后拼接误差累积。
标定不是一次性的。温度变化、镜头松动、相机碰撞都会导致外参漂移。在精密测量场景中,建议定期用标准件复检,或在工作现场放置固定标定参照物进行在线校验。

五、关键参数速查

参数含义典型初值/范围影响
f焦距(像素)由镜头焦距与像元尺寸估算视场角、放大倍率
cx, cy主点坐标图像中心附近投影中心位置
K1, K2, K3径向畸变系数0 或小量边缘弯曲修正
P1, P2切向畸变系数0 或小量镜头倾斜修正
R, T外参旋转与平移由标定板姿态求解相机位姿

掌握上述参数与流程后,标定就不再是“黑盒操作”,而是一个可诊断、可优化、可复现的工程环节。后续的3D测量、手眼标定和点云重建,都建立在这一步的精度之上。