摄像机的标定

摄像机标定就是求摄像机矩阵PP, 当我们知道足够多的XxX \leftrightarrow x, 我们如何计算PP?

7.1 基本方法DLT, 也叫代数误差

最基本的方法就是简历方程PX=xPX=x, 然后变成x×PX=0x \times PX = 0 取该矩阵前两行, 因为第三行是线性相关的. 这样可以写成Ap=0Ap=0,这就是一个2n×122n \times 12的矩阵.

最小解 因为PP3×4=123 \times 4 = 12个元素, 那么就有11个自由度, 理论上我们需要5.5对对应点就行, 0.5对对应点就是知道x或者y坐标就可以了 超定的情况 如果我们有多于6对点, 那我们就求minAp=0min||Ap||=0, 并且让他满足约束p=1||p||=1, p^3||\hat{p}^3||=1, p^3\hat{p}^3就p最后一行的前三个元素 退化的情况 有两种情况可以使我们不能唯一确定p

  1. 相机和点都在一个扭曲的立方体上
  2. 相机和点都在平面上, 且该平面一直线通过相机的中心

点的归一化 我们需要把所有点到直线的平均距离归一化到3\sqrt{3}

从线对应来计算P 如果我们能找到一对对应线, 那么我们就有以下方程lTPXj=0l^TPX_j=0, 其中XXll

7.2 几何损失函数

回忆我们在第四章提到的几何损失函数, 我们可以把它用在这里

minPd(x,PX)2\min_P \sum d(x,PX)^2

世界坐标系里得误差 我们考虑世界坐标系, 也就是标定板上的误差. 因为PXPX不可能完全等于xx, 反过来,xx对应的世界坐标系里的点, 也不会完全是XX, 那么我们就假设xx对应的世界坐标系里的点是X^\hat{X}, 然后我们同时考虑世界坐标系的误差, 和图像上的误差

dMah(x,PX^)2+dMah(X,X^)2\sum d_{Mah}(x, P \hat{X})^2 + d_{Mah}(X, \hat{X})^2

也就是说在图像上xx要靠近PX^P \hat{X}, 在世界坐标系里XX也要靠近PX^P \hat{X}

代数误差的几何解释

一句话: 代数误差找一个点XX'尽可能的接近XX

7.2.2 标定仿射摄像机

一句话: 上述所有方法都可以直接用在仿射摄像机上

7.3 标定时的一些已知条件

通常我们会对P矩阵做出一些限制

  1. 偏斜系数s时\是0
  2. 像素是正方形
  3. 主点已知
  4. K已知.

这几点假设不是同时成立的, 比方说我们可以只用1和2, 那么P矩阵就只剩下3+6=9个系数了

迭代方法的初始化, 如果我们求几何损失函数, 得用迭代的方法. 那么迭代得初值从哪里来? 可以用DLT 先解出一个值作为初始值.

7.4 对相机畸变的校正

相机畸变主要是径向畸变,所谓径向就是圆的直径的方向. 该畸变会使正方形变得接近于一个圆, 所以叫径向畸变.

校正的思想很简单. 所谓畸变, 就是给像素坐标(x,y)(x,y)乘上一个函数L(r)L(r), 该函数长什么样, 不太清楚, 但是我们用泰勒展开去近似它就好了, 剩下的工作就是确定泰勒展开的系数. 这个展开的系数作为内参, 把他们一起标定出来就可以.