3、相机成像模型:针孔模型、畸变模型、内参矩阵与外参矩阵的物理意义
视觉引导定位系统的核心任务,是回答“目标物体在机器人坐标系下处于什么位置”这一根本问题。而所有空间坐标转换的起点,都源于相机如何将三维世界投影为二维图像。理解相机成像模型,是连接像素坐标与世界坐标的桥梁,也是手眼标定、视觉定位算法设计的理论基础。本章将深入剖析针孔模型的几何原理、镜头畸变的数学描述,以及内参矩阵与外参矩阵的物理含义,帮助您建立从“像素”到“空间”的完整认知链路。
3.1 针孔模型:从三维世界到二维图像
核心原理
针孔模型(Pinhole Model)是相机成像的最基本近似。它假设光线沿直线传播,通过一个无限小的针孔后,在成像平面上形成倒立的实像。在实际工程中,我们通常将成像平面“虚拟”到针孔前方,形成正立虚像,从而简化数学表达。设空间中一点 P 在相机坐标系下的坐标为 (Xc, Yc, Zc),其投影到归一化平面(焦距 f=1)上的坐标为:
x' = Xc / Zc
y' = Yc / Zc
这一“除以深度”的操作称为透视除法,它使得近处物体在图像中显得更大,远处物体更小,这正是透视投影的本质。针孔模型是线性模型,不包含任何畸变,是后续所有标定与校正工作的基准。
判断方法与操作流程
在实际视觉系统中,判断是否适用针孔模型,主要看镜头畸变是否已校正。操作流程通常为:
- 采集标定板图像:使用棋盘格或圆点标定板,拍摄 10-20 张不同位姿的图像。
- 提取角点坐标:通过 OpenCV 的
findChessboardCorners或类似算法提取亚像素级角点。 - 计算单应性矩阵:利用已知的标定板物理尺寸,计算图像到标定板平面的单应性。
- 求解内参与畸变系数:使用张正友标定法或类似算法,迭代优化得到内参矩阵 K 和畸变系数。
案例拆解:视觉引导的精度瓶颈定位
某 3C 装配产线使用 500 万像素工业相机引导机械臂抓取手机中框,定位精度要求 ±0.15mm。初始调试时发现,视野边缘的定位误差达到 ±0.4mm,而中心区域误差仅 ±0.08mm。通过分析发现,问题根源在于镜头畸变未完全校正。团队使用 12mm 定焦镜头,在 300mm 工作距离下,边缘径向畸变达到 3-5 像素。操作步骤:
- 重新采集 25 张不同姿态的棋盘格图像,覆盖整个视野。
- 使用 OpenCV 的
calibrateCamera函数,得到内参矩阵和 5 个畸变系数(k1, k2, p1, p2, k3)。 - 对实时图像进行
undistort校正,再执行定位算法。
校正后,边缘误差降至 ±0.12mm,满足产线要求。此案例说明,针孔模型是理想基准,实际系统必须考虑畸变校正。
3.2 畸变模型:镜头非理想性的数学补偿
核心原理
实际镜头由于制造工艺和光学设计限制,会产生两类畸变:径向畸变(Radial Distortion)和切向畸变(Tangential Distortion)。径向畸变源于透镜形状,表现为图像点沿径向向内(桶形)或向外(枕形)偏移,用多项式模型描述:
x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)
其中 r² = x² + y²,x、y 为归一化平面坐标。切向畸变源于透镜与成像平面不平行,用 p1、p2 描述:
x_distorted = x + [2*p1*x*y + p2*(r² + 2*x²)]
y_distorted = y + [p1*(r² + 2*y²) + 2*p2*x*y]
畸变模型是针孔模型的非线性扩展,标定的核心任务之一就是精确估计这些系数。
判断方法与操作流程
判断畸变是否显著,可通过观察图像中直线是否弯曲。操作流程:
- 拍摄直线物体:如标尺、门框边缘。
- 视觉检查:在图像中观察直线是否变为曲线。
- 量化评估:使用标定结果中的畸变系数,计算最大偏移量。
- 选择校正策略:若最大偏移超过 0.5 像素,必须进行校正。
案例拆解:广角镜头的畸变补偿
某 AGV 导航系统使用 180° 鱼眼镜头进行视觉定位,畸变极大,边缘像素偏移超过 100 像素。团队采用以下方案:
- 使用
fisheye::calibrate函数(OpenCV 专门模块)标定鱼眼模型参数。 - 将鱼眼图像映射到透视图像,使用
fisheye::undistortImage生成校正图。 - 在校正后的图像上运行二维码检测算法,定位精度达到 ±5mm(AGV 导航可接受范围)。
此案例表明,畸变模型的选择必须与镜头类型匹配,鱼眼镜头需使用等距投影模型,而非标准针孔畸变模型。
3.3 内参矩阵:像素坐标与物理坐标的桥梁
核心原理
内参矩阵 K 描述了相机坐标系下的三维点如何投影到像素坐标系,其形式为:
K = [fx 0 cx
0 fy cy
0 0 1]
其中 fx、fy 分别为 x、y 方向的归一化焦距(单位:像素),cx、cy 为主点坐标(光轴与成像平面的交点)。内参矩阵的物理意义在于:它将归一化平面坐标 (x', y') 映射到像素坐标 (u, v):
u = fx * x' + cx
v = fy * y' + cy
fx、fy 的差异反映了像素在 x、y 方向的实际物理尺寸不同(如 CMOS 传感器像素非正方形)。cx、cy 通常接近图像中心,但制造误差会导致偏移。
判断方法与操作流程
内参矩阵的准确性直接影响定位精度。判断方法:
- 重投影误差:标定后计算所有角点的重投影误差,应小于 0.1 像素。
- 主点偏移:cx、cy 与图像中心偏差不应超过图像尺寸的 5%。
- 焦距一致性:fx 与 fy 的比值应接近 1(对于方形像素传感器)。
案例拆解:内参误差对定位的影响
某半导体封装设备使用 2000 万像素相机进行晶圆对准,要求定位精度 ±2μm。标定后发现 fx 与 fy 相差 0.3%,导致在视野边缘(距中心 2000 像素)产生约 6 像素的定位偏差,换算为物理尺寸约 3μm,超出规格。团队重新标定,发现是标定板平面与相机光轴不垂直所致。改进措施:
- 使用高精度陶瓷标定板,平面度优于 ±1μm。
- 使用三轴位移台精确调整标定板姿态,确保与光轴垂直。
- 重新标定后,fx 与 fy 差异降至 0.02%,定位精度达到 ±1.5μm。
3.4 外参矩阵:相机在空间中的位姿描述
核心原理
外参矩阵描述世界坐标系到相机坐标系的刚体变换,由旋转矩阵 R(3×3)和平移向量 t(3×1)组成:
[Xc] [R | t] [Xw]
[Yc] = [ ] [Yw]
[Zc] [ ] [Zw]
[1 ] [0 0 0 1] [1 ]
R 的列向量表示世界坐标系的三个轴在相机坐标系中的方向,t 表示世界坐标系原点在相机坐标系中的位置。外参矩阵的物理意义是:它建立了世界坐标与相机坐标之间的桥梁,是手眼标定的核心输出之一。
判断方法与操作流程
外参矩阵的获取通常通过 PnP(Perspective-n-Point)求解或手眼标定。操作流程:
- 准备已知尺寸的标定物:如棋盘格、二维码。
- 提取特征点:获取标定物上特征点的像素坐标。
- 求解 PnP:使用
solvePnP函数,输入 3D 点(世界坐标)和 2D 点(像素坐标),得到 R 和 t。 - 验证:将世界坐标点投影到图像,计算重投影误差。
案例拆解:机械臂手眼标定中的外参应用
某焊接机器人系统需要将相机检测到的焊缝位置转换为机器人基座坐标。系统采用“眼在手外”(Eye-to-Hand)布局,相机固定于工作台上方。标定过程:
- 将标定板固定在机械臂末端,控制机械臂移动 15 个不同位姿。
- 在每个位姿记录机械臂末端位姿(从控制器读取)和标定板在相机坐标系下的位姿(通过 PnP 求解)。
- 使用 AX = XB 方程求解相机到机器人基座的变换矩阵 X。
标定后,系统将焊缝像素坐标通过内参、外参和手眼矩阵转换到机器人基座坐标,定位精度达到 ±0.5mm,满足焊接工艺要求。
3.5 知识结构总结
| 参数类型 | 矩阵形式 | 物理意义 | 标定方法 | 更新频率 |
|---|---|---|---|---|
| 内参矩阵 K | 3×3 上三角 | 像素坐标与归一化坐标的映射关系 | 张正友标定法 | 低频(镜头/相机更换时) |
| 畸变系数 | 5-8 个标量 | 镜头非理想性的非线性补偿 | 同内参标定 | 低频 |
| 外参矩阵 [R|t] | 3×4 齐次 | 世界坐标到相机坐标的刚体变换 | PnP / 手眼标定 | 高频(相机移动后) |
3.6 常见误区与复盘
- 误区一:忽略畸变校正。即使使用低畸变镜头,在高精度应用中仍应进行校正。建议在标定后计算最大畸变量,若超过 0.3 像素则必须校正。
- 误区二:内参外参混淆。内参是相机固有属性,外参是相机在空间中的位姿。两者在标定流程中必须分开处理,不能混用。
- 误区三:标定板图像不足。少于 10 张标定图像会导致参数估计不稳定,建议至少 15-20 张,且覆盖不同角度和位置。
- 误区四:忽略温度影响。工业相机在长时间工作后温度升高,可能导致内参漂移。高精度应用中,建议在相机达到热平衡后再标定。