3、相机成像模型:针孔模型、内参矩阵、畸变模型(径向与切向)、外参矩阵与投影方程
相机成像模型是手眼标定的数学基石。无论是眼在手上(Eye-in-Hand)还是眼在手外(Eye-to-Hand)的机械臂视觉系统,最终都要将三维空间中的物体坐标与二维图像像素坐标建立精确的映射关系。如果成像模型理解不透彻,后续的标定计算、坐标转换和抓取定位都会产生系统性偏差。本章从针孔模型出发,逐步推导内参矩阵、畸变模型、外参矩阵与完整投影方程,并结合工业机械臂视觉引导场景,说明每个数学量在工程中的实际含义与标定方法。
3.1 针孔模型:从三维世界到二维像面的几何映射
针孔模型是相机成像的最基本近似。它假设光线沿直线传播,所有光线通过一个无限小的光心(投影中心),在像平面上形成倒立的实像。实际工程中,我们通常将像平面虚拟到光心前方,形成正立虚像,便于数学表达。设空间中一点 P 在世界坐标系下的坐标为 (Xw, Yw, Zw),经过外参矩阵变换到相机坐标系下为 (Xc, Yc, Zc),则根据相似三角形原理,该点在图像物理坐标系中的理想投影位置为:
x = f · Xc / Zc
y = f · Yc / Zc
其中 f 为相机焦距(单位 mm)。这个公式揭示了三个关键工程事实:第一,深度 Zc 在分母上,意味着距离越远,同样的三维尺寸在图像上占据的像素越少,这是透视效应的数学根源;第二,当 Zc 接近零时,投影点趋于无穷,因此相机前方存在最小工作距离;第三,针孔模型是线性的,但实际镜头存在畸变,需要后续非线性修正。
在工业机械臂视觉引导中,针孔模型决定了相机安装高度与视野范围(FOV)的关系。例如,一个 500 万像素相机(2448×2048),像元尺寸 3.45μm,焦距 12mm,当工作距离为 500mm 时,单像素对应的物理尺寸约为 0.144mm,视野范围约为 352mm×294mm。这个计算直接决定了机械臂抓取精度能否满足任务要求。
3.2 内参矩阵:像素坐标与归一化坐标的桥梁
内参矩阵 K 描述了从相机坐标系到像素坐标系的变换关系,其标准形式为:
K = [fx 0 cx]
[ 0 fy cy]
[ 0 0 1]
其中 (cx, cy) 为主点坐标,即光轴与像面的交点,理想情况下位于图像中心,但实际装配误差会导致偏移。fx、fy 分别为 x、y 方向的归一化焦距。内参矩阵将相机坐标系中的点 (Xc, Yc, Zc) 映射到像素坐标:
u = fx · Xc / Zc + cx
v = fy · Yc / Zc + cy
写成齐次坐标形式为:
s · [u, v, 1]ᵀ = K · [Xc, Yc, Zc]ᵀ
其中 s 为尺度因子,等于 Zc。内参矩阵只与相机自身结构有关,不随相机位置变化,因此只需标定一次。但需要注意,如果相机镜头变焦或更换传感器,内参必须重新标定。
| 参数 | 符号 | 单位 | 物理含义 | 典型值(500万像素工业相机) |
|---|---|---|---|---|
| 归一化焦距x | fx | pixel | f/dx,x方向焦距的像素度量 | 3478.2 |
| 归一化焦距y | fy | pixel | f/dy,y方向焦距的像素度量 | 3481.5 |
| 主点x坐标 | cx | pixel | 光轴与像面交点的u坐标 | 1224.3 |
| 主点y坐标 | cy | pixel | 光轴与像面交点的v坐标 | 1022.8 |
内参标定通常采用张正友标定法,使用棋盘格标定板在不同姿态下拍摄 15~20 张图像,通过角点检测和单应性矩阵求解,最终以重投影误差最小化为目标进行非线性优化。重投影误差的 RMS 值应小于 0.1 像素,这是衡量标定质量的核心指标。
3.3 畸变模型:径向畸变与切向畸变的数学表达与校正
实际镜头并非理想针孔,光线通过透镜时会发生折射,导致成像点偏离理想位置。畸变主要分为两类:径向畸变和切向畸变。
径向畸变源于透镜形状的制造误差,光线离光轴越远,弯曲越严重。表现为图像边缘的直线变弯曲,分为桶形畸变(负畸变)和枕形畸变(正畸变)。其数学模型用泰勒级数展开:
x_distorted = x · (1 + k₁·r² + k₂·r⁴ + k₃·r⁶)
y_distorted = y · (1 + k₁·r² + k₂·r⁴ + k₃·r⁶)
其中 r² = x² + y² 为归一化坐标到光轴的距离平方。对于工业镜头,通常取 k₁、k₂ 两项即可;对于广角镜头或鱼眼镜头,需要引入 k₃。
切向畸变源于镜头与像面不平行(装配误差),导致图像在某个方向上被拉伸。其数学模型为:
x_distorted = x + [2·p₁·x·y + p₂·(r² + 2x²)]
y_distorted = y + [p₁·(r² + 2y²) + 2·p₂·x·y]
完整的畸变模型将两者叠加,共需标定 5 个参数(k₁, k₂, p₁, p₂, k₃)。畸变校正在像素坐标转换之前进行,即先对归一化坐标去畸变,再应用内参矩阵。
3.4 外参矩阵与完整投影方程:从世界坐标到像素坐标的闭环
外参矩阵描述了世界坐标系与相机坐标系之间的刚体变换关系,由旋转矩阵 R(3×3)和平移向量 t(3×1)组成:
[Xc] [R₁₁ R₁₂ R₁₃ | t₁] [Xw]
[Yc] = [R₂₁ R₂₂ R₂₃ | t₂] · [Yw]
[Zc] [R₃₁ R₃₂ R₃₃ | t₃] [Zw]
[1 ] [ 0 0 0 | 1 ] [ 1 ]
外参矩阵将世界坐标变换到相机坐标,而内参矩阵将相机坐标变换到像素坐标。将两者串联,得到完整的投影方程:
s · [u, v, 1]ᵀ = K · [R|t] · [Xw, Yw, Zw, 1]ᵀ
这个方程是手眼标定的核心。在 Eye-in-Hand 系统中,相机安装在机械臂末端,外参矩阵随机械臂运动而变化;在 Eye-to-Hand 系统中,相机固定安装,外参矩阵保持不变。手眼标定的本质就是求解相机与机械臂末端(或基座)之间的固定变换关系。
投影方程中,尺度因子 s 的存在使得从单目图像无法直接恢复三维深度信息。要获得物体的三维坐标,需要借助已知的机械臂运动、多视角观测或深度传感器。在工业场景中,通常将物体放在已知高度的平面上(如传送带),利用平面约束来求解深度。
3.5 案例拆解:机械臂抓取中的投影方程应用与标定流程
以某汽车零部件装配线上的机械臂视觉引导抓取为例,说明成像模型的实际应用。任务要求机械臂从传送带上抓取螺栓,定位精度要求 ±0.5mm。系统配置:500万像素工业相机(2448×2048),8mm 镜头,工作距离 400mm,Eye-to-Hand 安装方式。
初始现象与目标:系统调试初期,机械臂抓取位置偏差达到 8~12mm,无法满足装配要求。初步排查发现,相机标定采用出厂默认内参,未进行现场标定;且传送带平面与相机光轴不垂直,存在约 3° 的倾斜角。
关键输入数据:使用 12×9 棋盘格标定板(方格边长 15mm),在传送带平面附近拍摄 18 张不同姿态的图像。通过 OpenCV 的 cv2.calibrateCamera() 函数标定,得到内参矩阵和畸变系数。标定结果中,重投影误差 RMS 为 0.08 像素,fx=1739.2,fy=1740.8,cx=1223.1,cy=1021.5,畸变系数 k₁=-0.112,k₂=0.083,p₁=0.0012,p₂=-0.0008。
分析判断过程:对比出厂内参(fx=1720,fy=1720,cx=1224,cy=1024),发现 fx、fy 偏差约 1.1%,这直接导致 400mm 工作距离下约 4.4mm 的定位误差。同时,传送带平面倾斜 3° 意味着物体在图像中的位置随其在传送带上的位置变化,需要将物体坐标投影到传送带平面坐标系。
实际操作步骤:
- 使用标定板在传送带平面多个位置拍摄,标定相机内参和畸变系数。
- 在传送带平面上放置一个已知尺寸的标定板,求解相机到传送带平面的单应性矩阵 H。
- 将图像像素坐标通过 H 变换到传送带平面物理坐标(单位 mm)。
- 在机械臂基座坐标系下测量传送带平面的位置和姿态,建立传送带平面到机械臂基座的变换矩阵。
- 综合 H 和平面变换矩阵,实现从像素坐标到机械臂基座坐标的完整映射。
结果对比:重新标定后,抓取定位误差从 8~12mm 降低到 0.3~0.6mm,满足 ±0.5mm 的装配要求。同时,由于畸变校正,图像边缘区域的定位精度提升尤为明显,从原来的 3mm 误差降低到 0.5mm 以内。
风险与代价:标定过程耗时约 40 分钟,且需要停机进行。后续每季度需要复标一次,以应对镜头松动、温度漂移等因素。此外,传送带平面高度变化超过 ±2mm 时,需要重新标定平面位置。
复盘经验:相机标定不是一次性工作,而是需要建立定期复标机制。内参标定精度直接影响手眼标定结果,两者误差会叠加。在项目验收时,应使用与生产相同的物体和路径进行验证,而不是仅用标定板验证。