OMSCS-CV课程笔记06-Camera Calibration
这个系列是Gatech OMSCS 计算机视觉课程(CS 6476: Computer Vision)的同步课程笔记。课程内容涉及图像处理以及传统计算机视觉的相关理论和方法,本节主要介绍相机标定的相关内容。
Geometric Camera Calibration
在Camera Models一节中我们介绍了齐次坐标和相机的投影模型,从而将三维空间中的点投影到图像平面上。本节课中我们会把这个方法推广到更一般的情形中:我们不再假定世界坐标系的原点位于相机的投影中心,而是允许将任意坐标系下的点投影到图像平面上。我们把确定空间坐标与图像坐标之间关系的过程称为相机的几何标定(geometric camera calibration),简称相机标定。
相机标定包括2部分内容:
- 世界坐标到相机坐标的变换,这部分称为相机的外参数(extrinisic parameters)或位姿(pose)。
- 相机坐标到图像坐标的变换,这部分称为相机的内参数(intrinisic parameters)。
Extrinsic Camera Calibration
世界坐标到相机坐标的变换是三维空间点的刚体变换,一共有6个外参数:3个平移+3个旋转。

Translation
空间点

假设空间中还存在另一个坐标系
其中

我们利用齐次坐标来重写上式可以得到平移变换的矩阵形式:
Rotation
对于刚体旋转,我们分别取

因此我们可以得到刚体旋转的坐标变换公式:
其中
类似于平移变换,我们同样可以把刚体旋转用齐次坐标来表示,从而得到矩阵形式:
Rigid Transformations
我们把平移和旋转组合到一起就得到了刚体变换公式:

同样利用齐次坐标可以得到矩阵形式:
我们记矩阵
Instrinsic Camera Calibration
Real Intrinsic Parameters
接下来考虑相机坐标系投影到图像坐标系的过程。对于理想情况下的针孔相机模型,我们只需要知道相机的焦距就可以完成投影:

然而现实中相机的投影并不会这样完美。首先图像上的像素坐标没有物理意义也不代表现实中的长度,同时
另一方面,按照上式进行投影后图像的原点会位于图像的中心。但在图像处理中图像的原点并不在图像中心,因此我们需要考虑将投影后相机的原点进行平移:
此外,如果

我们将整个投影过程用齐次坐标来表达就得到了相机的内参数矩阵(intrinsic matrix)
利用齐次坐标的另一个好处是我们可以去掉矩阵的最后一列,得到更常见的内参数矩阵形式:
其中
Camera Parameters
我们把相机的外参数矩阵、投影矩阵以及内参数矩阵组合到一起就得到了相机矩阵

从前面的推导不难发现相机矩阵一共有11个自由度:其中6个来自于外参数矩阵(3个平移+3个旋转),另外5个来自于内参数矩阵。需要注意的是直接使用相机矩阵得到的坐标是图像平面上的齐次坐标,需要对最后一维进行归一化才能得到所需的像素坐标。
Calibrating Cameras
Direct Linear Calibration
本节最后我们来讨论如何对相机进行标定。如果不考虑相机矩阵
通过移项,我们可以把方程组改写成关于相机矩阵的方程:
对应的矩阵形式为:
即
上式说明相机标定可以通过求解一个齐次线性方程组来实现。由于相机矩阵具有12个变量,我需要至少6对对应点才能求解这个方程组。
为了避免平凡解,一般可以设置一个额外的约束条件
利用奇异值分解(singular value decomposition, SVD)可以证明上述最优化问题的解为矩阵
其中
令
由于
上式说明
另一种求解方程
不过需要注意的是相机矩阵本身对
直接法进行相机标定的主要缺陷在于它没有使用正确的误差函数。优化目标

由于投影过程是非线性的,我们无法像直接法那样显式地计算优化问题的解,一般情况下需要通过牛顿法(Newton method)等非线性优化算法来迭代求解。我们把直接法和非线性优化结合起来就得到了相机标定的Gold Standard算法:

Finding Camera Center from M
通过相机标定得到相机矩阵
将上式带入投影方程得到:
由于
Multi-Plane Calibration
除了直接法和Gold Standard算法外,实际应用中更常见的是使用棋盘格标定板的相机标定方法。使用棋盘格进行标定时,我们只需要拍摄不同角度下棋盘格的照片即可完成相机的标定工作。和前面介绍的方法相比,棋盘格标定操作简单、无需事先知道棋盘格的位姿、而且还能对镜头畸变进行矫正,因此棋盘格标定在大多数计算机视觉库(如OpenCV、MATLAB Computer Vision Toolbox)中都有现成的实现。
