4. 系统标定基础
3D线扫在线尺寸测量系统之所以能输出真实世界的毫米值,而不是一堆像素坐标,靠的是标定把“像素—激光—运动—世界”这几套坐标系统一到同一参照下。本节围绕四个标定对象展开:相机模型、激光平面方程、运动方向标定、手眼标定与坐标系转换。它们不是四个孤立步骤,而是一条从二维图像到三维点云的参数链。
一、相机模型:把像素反投影成射线
线扫系统通常使用针孔模型加畸变模型。针孔模型用内参矩阵 K 描述像素坐标与相机坐标的关系:
K = [ fx 0 cx
0 fy cy
0 0 1 ]
u = fx * Xc/Zc + cx
v = fy * Yc/Zc + cy
其中 fx、fy 为等效焦距(像素),cx、cy 为主点。实际镜头存在径向畸变 k1、k2 和切向畸变 p1、p2,标定时用棋盘格或圆点靶标采集 15~25 张不同位姿图像,通过张正友法求解内参与畸变系数,重投影误差一般要求小于 0.2 像素。标定完成后,每个像素 (u,v) 对应相机坐标系下的一条射线,方向由 K⁻¹ 与畸变校正共同确定。这条射线是后续与激光平面求交的基础。
二、激光平面方程:给射线一个约束
线激光器投射出的光平面在相机坐标系下可写成平面方程:
a·Xc + b·Yc + c·Zc + d = 0
标定激光平面的常用做法是:把靶标放在多个已知位置,采集激光条纹在靶标上的像素坐标,结合相机模型反算出这些点在相机坐标系下的三维坐标,再用最小二乘拟合平面参数 (a,b,c,d)。示例中若拟合得到 a=0.02、b=-0.98、c=0.15、d=120.5(单位 mm),说明光平面近似垂直于 Yc 轴并略有倾斜。此时,图像上任意一个激光条纹像素对应的射线与该平面求交,就得到一个唯一的相机坐标三维点。这一步把“二维条纹”变成了“三维轮廓点”。
三、运动方向标定:把扫描轴纳入坐标
线扫系统靠相对运动把一条激光线“铺”成面。运动方向标定要解决两件事:一是脉冲当量 s,即编码器每发一个脉冲对应平台移动多少毫米;二是运动方向向量 T,即平台前进方向在相机坐标系下的单位向量。做法是:在平台上放置一个已知间距的标准件(例如 50.000 mm 量块),让平台匀速走过,记录首尾两次触发时编码器脉冲数 N,则 s = 50.000 / N。方向向量 T 则通过让同一特征点在两个不同运动位置成像,结合相机模型反算其相机坐标位移方向得到。示例中若 N=25000,则 s=0.002 mm/pulse;若 T≈(0.01, 0.02, 0.999),说明运动方向几乎沿相机 Zc 轴,但存在约 1° 的偏斜,这个偏斜必须在后续坐标转换中补偿,否则长距离扫描会产生明显形变。
四、手眼标定与坐标系转换
手眼标定求的是相机坐标系到世界坐标系的刚体变换:
Pw = R · Pc + t + s · T · n
其中 R 为 3×3 旋转矩阵,t 为 3×1 平移向量,n 为当前扫描行对应的编码器脉冲序号。标定方法常用“相机固定、靶标随平台运动”的 eye-to-hand 模式:把标定板放在平台上,在多个位置采集图像,利用已知的靶标位姿和平台位移构造 AX=XB 方程,求解 R、t。示例中若 R 接近单位阵、t=(12.3, -5.6, 480.2) mm,说明相机光心在世界坐标原点前方约 480 mm 处。完成这一步后,每个扫描行的三维点都能映射到统一世界坐标,点云拼接不再错位,测量结果直接以毫米输出。
把四个环节串起来看:相机模型给出射线,激光平面给出交点,运动方向给出扫描轴,手眼标定给出世界位姿。四组参数全部正确后,系统才能把一条条二维激光条纹稳定地还原成可测量的三维点云。实际调试时,建议用标准球或量块做端到端验证:若测量值与标准值偏差在 ±0.05 mm 以内,说明整条标定链闭合良好;若偏差随扫描长度线性增大,优先复查运动方向标定的脉冲当量和方向向量。