Camera Intrinsic & Extrinsic矩阵

camera的Intrinsic, Extrinsic矩阵以及calibration的基础知识。

Intrinsic Matrix (内在矩阵)

内在矩阵用来表示camera的内在属性,通过它可以将三维camera坐标转换为二维的图像坐标。这个投影变化可以用针孔相机(Pinhole Camera)模型来演示,如下图:

Camera的内在矩阵如下所示:

每一个参数都用来描述camera的一个几何属性,

  • 焦距(Focal Length) fx, fy

焦距是指针孔到胶片(film, 也可以称之为image plane),这里焦距的单位是像素(pixels). 在一个实际的针孔相机中,fx和fy的值是相等的,我们用f来表示,如下图所示:

  • Principal Point Offset, x0, y0

camera的‘principal axis’表示和胶片(image plane)相垂直并且通过针孔的那条线。它和胶片相交的点就是‘principal point’,如下图所示:

“principal point’偏移量是指‘principal point’相对于胶片原点的位置。具体的定义取决于胶片的原点位置为何定的,下图我们假设胶片的原点在其左下角:

如果我们增加x0的偏移量,那么会将‘针孔’(pinhole)相应的向右便宜:

这个等价于:我们保持‘针孔’不动,然后将胶片向左偏移:

  • Axis Skew, s

‘Axis Skew’用来减少在照片在投影时的变形,但是这个在‘针孔相机’中没有办法类比出来,所以不再展开介绍。

Extrinsic Matrix (外在矩阵)

camera的extrinsic矩阵用来描述camera在‘世界坐标系’中的位置以及其所指向的方向。这些喝OpenGL中的‘view matrix’很类似(如果对OpenGL中的坐标系有问题,可以看看我的这篇文章的前半部分)。该矩阵包含两部分:一个旋转矩阵R,以及一个位移向量t。

extrinsic矩阵的左边是个3x3的rotation矩阵,右边是个3x1 translation列向量:

Extrinsic Matrix可以用于camera坐标与世界坐标之间的转换。

calibaraion

why calibation?

‘针孔’相机会导致显著的图像变形,好在这些变形是恒定的所以可以矫正的。这就是这里要介绍的calibarion以及remapping。

Camera的几何calibration,又称为camera resectioning,可以用来估算出camera的镜头的参数。有了这些参数我们就可以修正照片变形,测量物体的尺寸,或者来计算出camera在场景中的位置等等,这些可以用于机器人,导航系统以及3-D scene reconstruction等。

Camera的参数包括intrinsics, extrinsics以及变形系数(distortion coefficients),为了预估出这些参数,我们需要将3-D的世界坐标内的点坐标以及这些点相对应的2-D图片内的点的坐标。
我们可以通过多个calibration模式(例如checkerboard)下的图片来得到这些坐标点。

Reference