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视觉定位中不可或缺的预处理步骤。

标准去畸变流程包含以下步骤:

  1. 获取畸变参数:通过标定获得 k1, k2, k3, p1, p2。
  2. 建立映射表:对输出图像每个像素 (u_out, v_out),计算对应的归一化坐标 (x, y)。
  3. 应用畸变模型:将 (x, y) 代入径向和切向畸变公式,得到畸变后的归一化坐标 (x_dist, y_dist)。
  4. 转换回像素坐标:利用内参矩阵将 (x_dist, y_dist) 映射回输入图像像素坐标 (u_in, v_in)。
  5. 插值采样:在输入图像 (u_in, v_in) 处进行双线性插值,得到输出像素值。

下面用一张流程图直观展示去畸变的完整数据流:

去畸变处理流程图 畸变图像 获取畸变参数 建立映射表 应用畸变模型 转换像素坐标 插值采样 去畸变图像 双线性插值:根据周围4个像素加权计算输出像素值 映射表可预计算,提升实时处理性能

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为图像数)
标定实践建议:使用10~20张不同角度、不同距离的棋盘格图像进行标定。重投影误差应小于0.5像素,若超过1像素,需检查图像质量或剔除异常图像。

4.6 去畸变对3D定位的影响

去畸变是3D视觉定位的前置必要条件。未经校正的图像会导致以下问题:

  • 特征点位置偏差:畸变使角点、边缘等特征在图像中的坐标偏离真实投影位置,直接影响PnP求解精度。
  • 深度估计误差:在双目或多目系统中,畸变会破坏极线约束,导致立体匹配和三角化产生系统性偏差。
  • 手眼标定精度下降:畸变引入的非线性误差会污染标定数据,使手眼矩阵解算结果不稳定。

因此,在手眼标定流程中,去畸变应作为图像预处理的第一步,确保后续所有视觉计算基于几何保真的图像数据。

效率优化:在实时系统中,可预先计算整张图像的畸变映射查找表(LUT),运行时直接查表+插值,避免每帧重复计算畸变公式,显著提升处理速度。