什么是相机标定?
几何相机标定(也称相机后方交会)用于估计图像或视频摄像头镜头与图像传感器的参数。这些参数可用于校正镜头畸变、以世界单位测量目标大小,或确定相机在场景中的位置。此类任务用于机器视觉等应用中,用于检测与测量目标。它们也用于机器人、导航系统和三维场景重新构造。
标定相机后可实现的功能示例:

相机参数包括内参、外参和畸变系数。要估计相机参数,您需要具备三维世界点及其对应的二维图像点。您可以使用标定模式(如棋盘)的多个图像获得这些对应关系。使用对应关系,您可以求解相机参数。在标定相机后,要评估估计的参数的准确度,您可以:
绘制相机与标定模式的相对位置
计算重投影误差。
计算参数估计误差。
使用相机标定器执行相机标定并评估估计的参数的准确度。
相机模型
Computer Vision Toolbox™ 包含针孔相机模型和鱼眼相机模型的标定算法。鱼眼模型可支持视野 (FOV) 最高达 195 度的相机。
针孔相机标定算法基于让-伊夫·博格特提出的模型 [3]。该模型包含针孔相机模型 [1] 和镜头畸变 [2]。针孔相机模型不考虑镜头畸变,因为理想针孔相机没有镜头。为了准确表示真实相机,算法使用的完整相机模型包含径向和切向镜头畸变。
由于鱼眼镜头产生的极端畸变,针孔模型无法模拟鱼眼相机。有关使用鱼眼模型进行相机标定的详细信息,请参阅Fisheye Calibration Basics。
针孔相机模型
针孔相机是一种没有镜头、只有单个小孔径的简易相机。光线通过孔径在相机另一侧投射出倒立的影像。您可以将虚拟图像平面视为相机前方包含场景正立影像的平面。

针孔相机参数用一个 3×4 矩阵(称为相机矩阵)表示。此矩阵将三维世界场景映射到图像平面。标定算法使用外参和内参计算相机矩阵。外参表示相机在三维场景中的位置。内参表示相机的光心和焦距。

世界点是使用外参变换为相机坐标的。相机坐标则是使用内参映射到图像平面的。
![World to camera to image, line of site showing that extrinsic vector [Rt] used for world to camera transformation, and intrinsics K is used for the camera to image transformation.](calibration-cameramodel-coords.png)
相机标定参数
标定算法使用外参和内参计算相机矩阵。外参表示从三维世界坐标系到三维相机坐标系的刚性变换。内参表示从三维相机坐标到二维图像坐标的投影变换。
外参
外参包含旋转 R 和平移 t。相机坐标系的原点位于其光心,其 x 和 y 轴定义图像平面。
内参
内参包括焦距、光心(即主点)和偏斜系数。相机内参矩阵 K 定义为:
像素偏斜定义为:

| - 光心(主点),以像素为单位。 |
| - 焦距,以像素为单位。 - 焦距,以世界单位表示,通常以毫米为单位。 - 像素大小,以世界单位表示。 |
| - 偏斜系数,当图像轴不垂直时该值不为零。 |
相机标定中的畸变
相机矩阵不考虑镜头畸变,因为理想的针孔相机没有镜头。为了准确表示真实相机,相机模型包含径向和切向镜头畸变。
径向畸变
当光线在镜头旁边比在光心处弯曲更明显时,会发生径向畸变。镜头越小,畸变越大。

径向畸变系数用于对此类畸变进行建模。畸变点表示为 (xdistorted, ydistorted):
xdistorted = x(1 + k1*r2 + k2*r4 + k3*r6)
ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6)
x、y - 未发生畸变的像素位置。x 和 y 采用归一化图像坐标。归一化图像坐标通过平移至光心并除以焦距(以像素为单位)从像素坐标计算得出。因此,x 和 y 为无量纲。
k1、k2 和 k3 - 镜头的径向畸变系数。
r2 = x2 + y2
通常,两个系数足以用于标定。对于严重畸变(如广角镜头),可选择包含 k3 的三个系数。
切向畸变
当镜头与图像平面不平行时,会发生切向畸变。切向畸变系数用于对此类畸变进行建模。

畸变点表示为 (xdistorted, ydistorted):
xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]
ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]
x、y - 未发生畸变的像素位置。x 和 y 采用归一化图像坐标。归一化图像坐标通过平移至光心并除以焦距(以像素为单位)从像素坐标计算得出。因此,x 和 y 为无量纲。
p1 和 p2 - 镜头的切向畸变系数。
r2 = x2 + y2
参考
[1] Zhang, Z. “A Flexible New Technique for Camera Calibration.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 22, No. 11, 2000, pp. 1330–1334.
[2] Heikkila, J., and O. Silven. “A Four-step Camera Calibration Procedure with Implicit Image Correction.” IEEE International Conference on Computer Vision and Pattern Recognition.1997.
[3] Bouguet, J. Y. “Camera Calibration Toolbox for Matlab.” Computational Vision at the California Institute of Technology.
[4] Bradski, G., and A. Kaehler. Learning OpenCV: Computer Vision with the OpenCV Library. Sebastopol, CA: O'Reilly, 2008.
另请参阅
App
主题
- Implement Visual SLAM in MATLAB
- Using the Single Camera Calibrator App
- Using the Stereo Camera Calibrator App
- Evaluating the Accuracy of Single Camera Calibration
- Fisheye Calibration Basics
- Configure Monocular Fisheye Camera (Automated Driving Toolbox)
- Calibrate a Monocular Camera (Automated Driving Toolbox)
- Measuring Planar Objects with a Calibrated Camera
- Structure from Motion from Two Views
- Structure from Motion from Multiple Views