相机内参标定(Camera Intrinsic Calibration)的目的是确定相机的内部参数,包括焦距、主点坐标和畸变系数等。这些参数描述了相机如何将三维世界中的点投影到二维图像平面上。以下是相机内参标定的原理和步骤。
1. 相机模型
相机的成像过程可以用针孔相机模型描述。相机内参包括以下参数:
- 焦距:相机在 和 方向上的焦距(以像素为单位)。
- 主点():图像平面的主点坐标(通常是图像中心)。
- 畸变系数:描述镜头畸变的参数,包括径向畸变和切向畸变。
相机内参矩阵 可以表示为:
2. 畸变模型
镜头畸变主要包括:
-
径向畸变:由镜头形状引起,通常用多项式模型描述:
其中 , 是径向畸变系数。
-
切向畸变:由镜头安装误差引起,通常用以下模型描述:
其中 是切向畸变系数。
3. 标定原理
相机内参标定通常使用已知几何形状的标定板(如棋盘格或圆点阵列)。标定过程包括以下步骤:
- 采集图像:从不同角度拍摄标定板的图像。
- 检测特征点:在图像中检测标定板的特征点(如棋盘格的角点)。
- 建立对应关系:将图像中的特征点与标定板的已知 3D 坐标对应起来。
- 优化求解:通过最小化重投影误差,求解相机内参和畸变系数。
4. 重投影误差
重投影误差是标定的关键指标,表示标定板的 3D 点投影到图像平面后与实际检测到的 2D 点之间的距离。标定的目标是最小化重投影误差:
其中:
- 是实际检测到的 2D 点。
- 是通过相机模型投影得到的 2D 点。
5. 标定步骤
以下是相机内参标定的具体步骤:
- 准备标定板:使用棋盘格或圆点阵列作为标定板。
- 采集图像:从不同角度拍摄标定板的图像(通常需要 10-20 张)。
- 检测特征点:使用 OpenCV 或其他工具检测标定板的特征点。
- 建立 3D-2D 对应关系:将标定板的 3D 坐标与图像中的 2D 点对应起来。
- 调用标定函数:使用 OpenCV 的
calibrateCamera
函数求解相机内参和畸变系数。 - 评估标定结果:检查重投影误差,确保标定精度。
6. 示例代码(OpenCV)
以下是使用 OpenCV 进行相机内参标定的示例代码:
1 | import numpy as np |
7. 输出结果
- 相机内参矩阵 :包含焦距和主点坐标。
- 畸变系数 :包含径向和切向畸变系数。
- 重投影误差:表示标定的精度,误差越小越好。
8. 注意事项
- 标定板的质量:标定板的角点检测必须准确。
- 图像数量:通常需要 10-20 张图像以确保标定精度。
- 图像角度:标定图像应覆盖不同的角度和位置,以提高标定鲁棒性。
通过上述方法,可以完成相机内参标定,并获得相机的内部参数和畸变系数。
v1.5.2