4. 相机内参标定原理:针孔模型、畸变模型、内参矩阵与畸变系数
在 Eye-to-Hand 标定流程中,相机内参标定是第一步,也是最基础的一步。内参标定的精度直接决定了后续手眼矩阵求解的准确性。本节从物理模型出发,系统讲解针孔成像模型、镜头畸变模型,以及如何通过标定获取内参矩阵与畸变系数。
4.1 针孔成像模型
针孔模型是理想化的线性成像模型,描述了三维空间点投影到二维图像平面的几何关系。虽然真实相机存在畸变,但针孔模型是所有标定算法的数学基础。
核心公式: 空间点 P(X, Y, Z) 投影到图像点 p(u, v) 的齐次坐标变换关系为:
s * [u, v, 1]^T = K * [R | t] * [X, Y, Z, 1]^T
其中 K 为内参矩阵,[R | t] 为外参矩阵,s 为尺度因子。
关键理解: 针孔模型将三维世界到二维图像的映射分解为两步:
① 外参变换:将世界坐标系下的点转换到相机坐标系;
② 内参投影:将相机坐标系下的点投影到图像像素平面。
① 外参变换:将世界坐标系下的点转换到相机坐标系;
② 内参投影:将相机坐标系下的点投影到图像像素平面。
4.2 内参矩阵
内参矩阵 K 将相机坐标系下的三维点投影到像素坐标系,包含 5 个关键参数(通常简化为 4 个自由度):
| 参数符号 | 名称 | 物理含义 | 单位 |
|---|---|---|---|
| fx | x 方向等效焦距 | f / dx,焦距在像素宽度上的度量 | 像素 |
| fy | y 方向等效焦距 | f / dy,焦距在像素高度上的度量 | 像素 |
| cx | 主点 x 坐标 | 光轴与图像平面的交点在像素列方向的位置 | 像素 |
| cy | 主点 y 坐标 | 光轴与图像平面的交点在像素行方向的位置 | 像素 |
| s | 倾斜因子 | 像素传感器 x-y 轴不垂直导致的畸变(现代相机通常为 0) | 无量纲 |
内参矩阵的标准形式为:
K = [ f_x s c_x ]
[ 0 f_y c_y ]
[ 0 0 1 ]
标定注意事项: 对于工业相机,s 通常假设为 0。如果标定结果中 s 显著非零(如 > 0.1),说明标定板图像质量差或标定流程有误,应重新采集数据。
4.3 畸变模型
真实镜头存在光学畸变,导致实际成像点偏离针孔模型的理想位置。畸变主要分为径向畸变和切向畸变两类。
4.3.1 径向畸变
由镜头形状不完美引起,光线在镜头边缘弯曲程度更大。径向畸变关于光轴对称,分为桶形畸变(负畸变)和枕形畸变(正畸变)。
径向畸变数学模型(通常使用前 3 项):
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² = x² + y²,(x, y) 为归一化图像坐标,(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 畸变系数与标定流程
完整的相机内参标定输出包含以下参数:
- 内参矩阵 K:4 个自由度(fx, fy, cx, cy)
- 畸变系数向量 D:通常为 5 个参数 [k1, k2, p1, p2, k3]
- 重投影误差:标定质量的评价指标,通常要求 < 0.5 像素
标准标定流程(以 OpenCV 为例):
- 采集标定板图像:拍摄 15~30 张不同位姿的棋盘格或圆点阵图像
- 提取角点/圆心:检测标定板特征点的亚像素坐标
- 初始化内参:基于针孔模型估算内参矩阵初值
- 非线性优化:使用 Levenberg-Marquardt 算法最小化重投影误差
- 输出结果:内参矩阵 K 和畸变系数 D
标定质量检查清单:
✅ 标定板覆盖图像四个角落和中心区域
✅ 标定板与图像平面夹角在 30°~60° 之间变化
✅ 标定板距离从近到远覆盖工作距离范围
✅ 重投影误差 < 0.3 像素(高精度)或 < 0.5 像素(可接受)
✅ 主点 (cx, cy) 接近图像物理中心(偏差 < 5% 图像尺寸)
✅ 标定板覆盖图像四个角落和中心区域
✅ 标定板与图像平面夹角在 30°~60° 之间变化
✅ 标定板距离从近到远覆盖工作距离范围
✅ 重投影误差 < 0.3 像素(高精度)或 < 0.5 像素(可接受)
✅ 主点 (cx, cy) 接近图像物理中心(偏差 < 5% 图像尺寸)
4.5 内参标定对 Eye-to-Hand 标定的影响
| 内参误差类型 | 对 Eye-to-Hand 标定的影响 | 典型表现 |
|---|---|---|
| 焦距误差 (fx, fy) | 导致深度方向尺度缩放错误 | 机器人末端与标定板距离计算偏差 |
| 主点偏移 (cx, cy) | 引入平移偏差,影响手眼矩阵的平移分量 | 标定后抓取位置整体偏移 |
| 畸变校正不足 | 图像边缘特征点位置偏差,降低外参求解精度 | 标定板角点重投影残差大 |
| 畸变过度校正 | 引入非线性扭曲,破坏针孔模型假设 | 标定结果在不同位姿下不一致 |
工程建议: 在 Eye-to-Hand 标定前,务必先完成相机内参标定,并使用标定结果对图像进行畸变校正。校正后的图像再用于特征点提取,可以显著提高手眼标定的鲁棒性和精度。建议每 3~6 个月或相机受到振动后重新标定内参。