4. 相机成像模型:针孔相机模型、内参矩阵、畸变模型及去畸变原理
在3D视觉定位与手眼标定中,相机成像模型是连接三维世界坐标与二维像素坐标的数学桥梁。理解针孔模型、内参矩阵以及畸变校正原理,是后续进行特征提取、位姿估计和标定计算的基础。本章将系统梳理这些核心概念,并给出工程实践中的关键参数与处理流程。
4.1 针孔相机模型
针孔相机模型是理想化的线性成像模型,描述了空间点 P(X, Y, Z) 如何通过光心投影到成像平面上的点 p(x, y)。该模型假设光线沿直线传播,且所有光线均通过一个无限小的光心(孔径)。
根据相似三角形原理,成像关系可表示为:
x = f * (X / Z)
y = f * (Y / Z)
其中 f 为焦距(光心到成像平面的距离)。实际相机中,成像平面位于光心后方,但为简化数学模型,通常将成像平面对称到光心前方(虚拟成像平面),使图像保持正立。
4.2 内参矩阵
内参矩阵 K 描述了从相机坐标系下的三维点 (X, Y, Z) 到像素坐标系下二维点 (u, v) 的映射关系。它将物理焦距和主点偏移(光轴与成像平面交点的像素坐标)统一为矩阵形式。
内参矩阵的标准形式为:
K = | fx 0 cx |
| 0 fy cy |
| 0 0 1 |
| 参数 | 含义 | 单位 | 典型值范围(工业相机) |
|---|---|---|---|
| fx, fy | x、y 方向等效焦距(像素单位) | pixel | 500 ~ 3000 |
| cx, cy | 主点坐标(光轴与像平面交点) | pixel | 图像中心附近 ±50 |
完整的投影方程(齐次坐标形式):
s * [u, v, 1]^T = K * [X, Y, Z]^T
其中 s 为尺度因子(等于 Z 值)。
4.3 畸变模型
实际镜头由于光学设计和装配误差,会使成像产生非线性变形,主要包括径向畸变和切向畸变。
4.3.1 径向畸变
径向畸变由镜头形状引起,光线在远离光心处弯曲程度更大。分为:
- 桶形畸变:图像边缘向外膨胀,常见于广角镜头。
- 枕形畸变:图像边缘向内收缩,常见于长焦镜头。
数学模型(使用归一化坐标 (x, y)):
x_distorted = x * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6)
y_distorted = y * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6)
其中 r^2 = x^2 + y^2,k1, k2, k3 为径向畸变系数。通常 k1 和 k2 已足够,鱼眼镜头需额外使用 k3。
4.3.2 切向畸变
切向畸变由镜头与成像平面不平行(装配误差)引起,导致图像在某个方向上被拉伸或压缩。
数学模型:
x_distorted = x + [2 * p1 * x * y + p2 * (r^2 + 2 * x^2)]
y_distorted = y + [p1 * (r^2 + 2 * y^2) + 2 * p2 * x * y]
其中 p1, p2 为切向畸变系数。
4.4 去畸变原理与流程
去畸变的本质是:根据畸变模型,将畸变图像中的每个像素映射回理想的无畸变位置,从而恢复图像的几何保真度。这是3D视觉定位中不可或缺的预处理步骤。
标准去畸变流程包含以下步骤:
- 获取畸变参数:通过标定获得 k1, k2, k3, p1, p2。
- 建立映射表:对输出图像每个像素 (u_out, v_out),计算对应的归一化坐标 (x, y)。
- 应用畸变模型:将 (x, y) 代入径向和切向畸变公式,得到畸变后的归一化坐标 (x_dist, y_dist)。
- 转换回像素坐标:利用内参矩阵将 (x_dist, y_dist) 映射回输入图像像素坐标 (u_in, v_in)。
- 插值采样:在输入图像 (u_in, v_in) 处进行双线性插值,得到输出像素值。
下面用一张流程图直观展示去畸变的完整数据流:
4.5 畸变参数与内参的标定关系
在实际标定中,内参矩阵和畸变参数是同时求解的。常用的标定方法(如张正友标定法)通过拍摄多张不同位姿的棋盘格图像,利用角点对应关系联合优化所有参数。
| 参数类别 | 符号 | 数量 | 优化自由度 |
|---|---|---|---|
| 内参 | fx, fy, cx, cy | 4 | 4 |
| 径向畸变 | k1, k2, k3 | 3 | 3(通常只用 k1, k2) |
| 切向畸变 | p1, p2 | 2 | 2 |
| 外参(每张图像) | R, t | 6 | 6 × N(N为图像数) |
4.6 去畸变对3D定位的影响
去畸变是3D视觉定位的前置必要条件。未经校正的图像会导致以下问题:
- 特征点位置偏差:畸变使角点、边缘等特征在图像中的坐标偏离真实投影位置,直接影响PnP求解精度。
- 深度估计误差:在双目或多目系统中,畸变会破坏极线约束,导致立体匹配和三角化产生系统性偏差。
- 手眼标定精度下降:畸变引入的非线性误差会污染标定数据,使手眼矩阵解算结果不稳定。
因此,在手眼标定流程中,去畸变应作为图像预处理的第一步,确保后续所有视觉计算基于几何保真的图像数据。