3. 相机成像与镜头畸变基础
在机器视觉测量项目中,Halcon 2D标定助手的核心任务就是求解相机成像模型中的各项参数,并利用这些参数对图像进行畸变校正和世界坐标重建。如果对成像模型和畸变原理缺乏系统理解,标定过程就会变成“黑盒操作”——即使标定报告显示误差很小,实际测量结果仍可能出现系统性偏差。本章从针孔模型出发,逐步拆解内参、外参的物理含义,深入分析径向畸变与切向畸变的成因与数学表达,最后通过一个实际案例说明畸变对高精度测量的具体影响。
上图展示了从世界坐标到像素坐标的完整链路:世界坐标先通过外参(旋转矩阵 R 和平移向量 t)变换到相机坐标系,再经针孔投影得到理想像素坐标,最后叠加镜头畸变得到实际像素坐标。Halcon 标定助手的作用,就是通过拍摄不同位姿的标定板,反向求解出这些参数。下面逐一展开。
3.1 针孔模型:理想成像的数学描述
针孔模型是相机成像的最基本近似。它假设光线沿直线传播,所有光线通过一个无限小的“针孔”(即光心),在传感器平面上形成倒立的实像。实际镜头虽然由多片透镜组成,但在数学上可以等效为一个针孔加上畸变修正。
针孔模型的投影公式为:
λ * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T
其中 K 为内参矩阵:
K = [fx 0 cx]
[ 0 fy cy]
[ 0 0 1]
fx、fy 分别为 x、y 方向的等效焦距(单位:像素),通常 fx = f / dx,其中 f 为物理焦距(mm),dx 为像素物理尺寸(mm/pixel)。cx、cy 为主点坐标,即光轴与传感器平面的交点。对于大多数工业相机,fx 与 fy 非常接近,但并非完全相等——这取决于传感器像素是否为正方形。
CamParam 数据结构表示,包含焦距 f(mm)、像素尺寸 Sx/Sy(mm/pixel)、主点 Cx/Cy(像素)、畸变系数 Kappa(或多项式系数)。标定助手会自动计算这些值,但理解其物理含义有助于判断标定结果是否合理。
3.2 内参与外参:标定要解决的两类参数
内参描述相机自身的几何光学特性,包括焦距、主点、像素尺寸和畸变系数。内参一旦确定,在镜头和相机相对位置不变的情况下保持不变。外参描述相机在世界坐标系中的位置和姿态,即旋转矩阵 R 和平移向量 t。每次移动相机或标定板,外参都会改变。
| 参数类型 | 包含内容 | 物理意义 | 标定中的获取方式 |
|---|---|---|---|
| 内参 | f, cx, cy, Sx, Sy, 畸变系数 | 相机内部光学与传感器特性 | 多姿态拍摄标定板,Halcon 优化求解 |
| 外参 | R (3×3), t (3×1) | 相机坐标系与世界坐标系的相对位姿 | 每张标定板图像单独计算 |
在 Halcon 标定助手中,内参和外参是同时求解的。标定板上的圆形标记点(或棋盘格角点)提供了已知的世界坐标,通过检测图像中的对应点,建立 2D-3D 对应关系,使用非线性优化算法(如 Levenberg-Marquardt)最小化重投影误差。
3.3 径向畸变与切向畸变:成因与数学模型
实际镜头并非完美针孔,光线经过透镜时会发生折射,导致成像点偏离理想位置。畸变主要分为两类:
- 径向畸变(Radial Distortion):由透镜表面曲率引起,光线离光轴越远,折射越强。表现为图像边缘的桶形畸变(负畸变)或枕形畸变(正畸变)。数学模型为:
x_dist = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_dist = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)
其中 r² = x² + y²,x、y 为归一化图像坐标(以主点为中心,除以焦距)。k1、k2、k3 为径向畸变系数,通常 k3 仅在鱼眼镜头或高畸变广角镜头中使用。
- 切向畸变(Tangential Distortion):由透镜与传感器平面不平行引起,导致图像在某个方向上被拉伸。数学模型为:
x_dist = x + [2*p1*x*y + p2*(r² + 2*x²)]
y_dist = y + [p1*(r² + 2*y²) + 2*p2*x*y]
p1、p2 为切向畸变系数。在工业镜头中,切向畸变通常远小于径向畸变,但在高精度测量中不可忽略。
3.4 畸变对测量的影响:从“看起来正常”到“实际偏差”
畸变对测量的影响是渐进的。在图像中心区域,畸变很小;越靠近边缘,畸变越显著。对于高精度测量(如公差 ±0.01mm),即使 0.5 像素的畸变也可能导致不可接受的误差。
以一个实际案例说明:某电子元件引脚间距测量项目,使用 500 万像素相机(2448×2048),视场 50mm×40mm,像素当量约 0.02mm/pixel。未校正畸变时,在图像边缘(距离主点约 1200 像素)测量两个引脚间距,结果比实际值偏大 0.15mm。经标定后,畸变系数 k1 = -0.08,校正后测量偏差降至 0.005mm 以内。
这个案例的关键在于:畸变不是固定偏移,而是随位置变化的非线性误差。如果只在中心区域测量,可能完全察觉不到问题;一旦测量区域扩展到边缘,误差就会急剧增大。
3.5 标定操作流程与常见误区
在 Halcon 2D 标定助手中,标准操作流程如下:
- 准备标定板:选择高精度陶瓷或玻璃标定板,确保表面平整、图案清晰、对比度高。
- 采集图像:拍摄 10-20 张不同位姿的标定板图像,覆盖视场各个区域,包括中心、边缘、倾斜角度(建议 15°-30°)。
- 加载图像:在标定助手中加载图像序列,设置标定板描述文件(.descr)。
- 检测标记点:助手自动检测标定板上的圆形标记点或棋盘格角点。
- 标定计算:点击“标定”按钮,Halcon 优化求解内参和外参。
- 验证结果:查看重投影误差(RMS),通常应小于 0.1 像素;检查内参是否在合理范围内。
| 常见误区 | 后果 | 正确做法 |
|---|---|---|
| 标定板只放在中心区域 | 边缘畸变无法准确估计 | 确保标定板覆盖视场边缘 |
| 标定板倾斜角度过大(>45°) | 标记点检测不稳定,标定失败 | 控制在 15°-30° 之间 |
| 光照不均匀或反光 | 标记点定位精度下降 | 使用漫射光源,避免强反光 |
| 标定后未保存参数 | 后续测量无法校正 | 导出为 .cal 文件或写入程序 |