相机标定 camera calibration

1 认识几个坐标系

  • 世界坐标系
    物体在真实世界中的位置
  • 相机坐标系
    物体在以相机为原点的坐标系中的位置
  • 成像坐标系
    在二维成像平面的位置
  • 像素坐标系
    在实际数字相片中的坐标 只有最后一个坐标系的单位是px,为实际图像中的坐标位置, 比如1080 * 720的图像就可以看成一个以图像左上角为原点建立的坐标系。

1.1 世界坐标系 -> 相机坐标系

R是3 * 3 的旋转矩阵 T是3 * 1的平移矩阵

0是1 * 3 的全部为0的矩阵 1为1 * 1的矩阵

所以可以看到4 * 4的变化矩阵乘以4 * 1的齐次坐标,结果应该为4 * 1的齐次坐标,这里结果为3 * 1是因为丢掉了齐次坐标中的最后为1的那个维度。

矩阵也称为外参矩阵/相机的位姿

1.1.1 为什么需要齐次坐标呢?

就是为了能用一个矩阵表达变化,后面不需要齐次坐标了所以可以丢掉最后一维。

1.2 相机坐标系->成像坐标系

相当于投影到了相机坐标系中$z = 1$的平面

1.2.1进行正畸

几种畸变

  • 径向畸变
    • 透镜本身缺陷
  • 桶形畸变
    • 由于透镜摆放位置不平行光圈

1.3 成像坐标系->像素坐标系

其中

也被称为为相机的内参矩阵

成像平面的坐标系的原点是在中心的, 而像素平面的原点是在左上角的,向右边是u
向下是v,u和v的单位都是px

内参矩阵相当于进行了二者的一个映射,即先乘以分辨率进行放缩,然后加上偏移量移动原点

2 相机标定

相机标定需要确定的参数个数为9个
$(f_x, f_y, c_x, c_y, k_1, k_2, k_3, p_1, p_2)$
同时我们需要关注的是成像坐标系 -> 像素坐标系,这里是内参矩阵作用的地方

对于K个棋盘照片,每一个棋盘中的N个角点,我们都有一个x, y的坐标,也就是我们能够得到2NK个等式

K个棋盘照片意味着有K个相机的位姿,即K个外参矩阵,也就是6K个参数。
同时相机内参有4个参数,这意味着一共有6K + 4个参数。

2.1 如何确定标定板的三维坐标

根据K个棋盘照片, 我们可以求得每个角点的像素坐标

然后我们可以以标定板所在平面为z=0的平面建立世界坐标系,同时设定相邻角点的坐标差,就可以得到所有角点在世界坐标系下的坐标。

(世界坐标系嘛…人为设定一下就好)