张正友相机标定

计算机视觉分类

这算是本周博主要做的报告的一次腹稿。咱们先从计算机视觉讲起。
计算机视觉的定义就是用计算机模拟人的眼睛,让计算机可以通过拍照或视频的方式看到物体,然后通过特征点检测以及匹配等方式识别物体,进而进行追踪,重建等操作,主要就是图像处理。
我们从计算机使用的视觉传感器的数量可以将计算机视觉分为单目视觉,双目视觉,和三(多)目视觉。
单目视觉就是用一个摄像头,自动驾驶的路况判断大多就是用的单目。另外淘宝上有用身份证放在鞋子旁边测鞋码也是单目。
双目就是用两个摄像头,是通过两个摄像头之间的视差获得深度信息。
三目或者多目其实就是两两间形成多个双目系统,用来减小误差。
张正友相机标定
这两幅图呢是双目视觉的两种常见摆放方式,平行式就是两个摄像头平行放置,穿过透镜中心的线叫光轴,那就是光轴平行。汇聚式是光轴都朝里偏。
单从理论上讲,汇聚式是优于平行式的,首先它摆放随意,而且视角覆盖范围重复度高。假如我们就观测P点位置的物体。平行式所需要的视差不能大于T,而汇聚式随意。视差就是两个摄像头光心的距离,光心就是透镜的中心。这就意味着在观测近距离物体时,平行式的视差要足够小,但是双目又是依靠视差获取深度信息的,视差小了,可能会导致深度信息的不准确。

计算机视觉应用

张正友相机标定
这里简单列举了计算机视觉的一些典型应用。希望对于刚刚入门计算机视觉而不知道往哪方面努力的道友们能有一点点帮助。我简单介绍一下,人脸识别,不用多说,手机上就有,当然具体效果如何,就看你手机是啥牌子啦。SLAM是即时定位与地图构建,主要用于机器人方面研究,让机器人去一个陌生环境中能够一边移动一边扫描地形。手势识别估计会用到无人驾驶上用来判断交警的手势。OCR光学字符识别,简单说就是看图识字,通过检测像素明暗变化获得形状信息。超分辨率重建是通过算法提升分辨率,比如将720p变成1080p。视频运动放大就是运动显微技术。用算法将肉眼难以分辨的运动放大,像高速摄像机那样。

相机标定

好,科普完毕,进入正题。计算机视觉基本上都要进行相机标定。标定的目的一是矫正畸变,二就是获得三维空间不同点的位置关系。
张正友相机标定
畸变主要分为径向畸变和切向畸变。径向畸变又可以分为桶形畸变和枕形畸变。径向畸变的产生原因是镜头打磨时的不精确导致的。,切向畸变是由于镜头与成像平面的不平行导致的。我们可以看出来越是远离镜头中心的位置畸变的程度越大。

四种坐标系的转换

张正友相机标定

红色的坐标系是摄像机坐标系,绿色的坐标系是图像坐标系,图像坐标系的上面黑色的是像素坐标系,最靠右边的是世界坐标系。
张正友相机标定
等式左边是像素坐标,右边是世界坐标左乘三个矩阵。[R|T]是外参矩阵,R是旋转矩阵,T是平移向量。左乘外参矩阵就将世界坐标从世界坐标系转换到摄像机坐标系了。然后再左乘
[f000f0001] \begin{bmatrix} f& 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{bmatrix}
就可以从摄像机坐标系转换到图像坐标系了,然后再左乘
[1dx0u001dyv0001] \begin{bmatrix} \frac{1}{dx}& 0 & u_0\\ 0 & \frac{1}{dy} & v_0 \\ 0 & 0 & 1 \end{bmatrix}
就从图像坐标系转换到像素坐标系了。这样我们就完成了一个点从世界坐标系到像素坐标系的转换。请注意,我们无法将一个点从像素坐标系映射到世界坐标系,因为我们不知道Zc,这是一个放缩的比例因子。从三维到二维,我们可以舍弃一维,但从二维到三维却是无法确定的。张正友相机标定
这里Zc用s替代,为什么Zw变成了0呢,这是因为我们假设棋盘格处于世界坐标系的Zw=0的平面上,
张正友相机标定
你可以把λ\lambda当成s的倒数,反正它是任意的放缩因子。H是单应性矩阵,什么是单应性矩阵呢,就是从一个面到另外一个面的点对点的映射关系的体现。例如这样:张正友相机标定
请注意单应性矩阵只有8个*度,因为1等于H的第三行乘以
[XWYW1] \begin{bmatrix} X_W\\ Y_W\\ 1\\ \end{bmatrix} ,我们知道一个方程可以约束一个*度,但是Xw,Yw是任意的,所以只能H丢失一个*度。在计算的时候往往把最后一个元素置为1。一对点可以得到两个等式,那么四对点就可以得到8个等式,从而确定一个单应性矩阵。所以说棋盘格的角点数量不能少于四个。

求解内参

张正友相机标定
张正友相机标定
张正友相机标定
棋盘格上的点的坐标是已知的,像素坐标系上的角点可以用角点检测法求取。也就是说单应性矩阵是已知的了
张正友相机标定
这其实就是待定系数法求解方程系数。总之一个单应性矩阵可以确定两个等式,现在有5个内参加上一个过渡参量λ\lambda六个未知量需要求解,所以呢至少需要三个单应性矩阵,也就是三个处于不同位置的棋盘格来进行标定。实际实验中考虑误差问题,往往选择将棋盘格换十几二十个位置进行标定,然后用最大似然法取最优解。

求解畸变参量

张正友相机标定
现在已知发生了畸变的点的坐标,用棋盘格的点的坐标乘以单应性矩阵就可以得到未畸变的点的坐标。然后把畸变的,未畸变的点的坐标代入到上式,有五个未知量,至少需要三个点。
好了,到这里张正友的相机标定原理已经讲完了。有疑问的可以评论。
下面我们看一下实验结果。

实验结果

张正友相机标定
张正友相机标定
代码网上多的是,如果你嫌麻烦,请点这里