三维重建学习(2):相机标定基础
前言
在相机标定过程中,我们会碰到一些概念,比如:摄像机模型、世界坐标系、图像坐标系等等。为便于理解推导,所以又整理了相关的笔记,介绍的都是些比较基础的概念,也比较容易。
相机模型
针孔相机模型
注:下面的两幅图片摘自:
http://blog.****.net/xuelabizp/article/details/50314633
上图是现实中针孔相机的成像模型,物体的投影与物体本身总是相反的。坐标也会是相反的,比较不方便。
正如前面所说的,实际的针孔相机模型,考虑起来不太方便,于是我们可以等效地表示成上图所示形式(相似三角形,比例相同)。
注:下图摘自:
https://www.cnblogs.com/Jessica-jie/p/6596450.html
如图是一个小孔模型。
- O点是相机中心,也就是小孔,同时也是整个相机坐标系的中心;
- z轴是相机的主轴;
- 坐标系oxyz构成了相机坐标系;
- q点是点Q在像平面上的投影,所在平面为图像坐标系;
- O1点为主点,主轴与像平面相交的点;
- 在像平面上的坐标系为图像坐标系,其x、y轴与相机坐标系的x、y轴相平行;
- O点到O1点的距离为相机的焦距f;
四个坐标系
摄像机中的坐标系有4个,均为右手坐标系,分别有:世界坐标系、相机坐标系、图像坐标系、像素坐标系。后面用几个简写字母分别表示:w、c、pic、pix。
- 世界坐标系:
(Xw,Yw,Zw) ,用户自己定义的三维空间坐标系,表示物体在空间的实际位置,用来秒速三维空间中物体与相机之间的坐标位置关系,度量值为米(m); - 相机坐标系:
(Xc,Yc,Zc) ,以相机的光心(前面的O点)为原点,Zc 轴与光轴重合,垂直于成像平面,度量值为米(m); - 图像坐标系:
(Xpic,Ypic) ,位于图像平面上,是个二维坐标系,Xpic 和Ypic 分别与相机坐标系中的Xc 和Yc 相平行,度量值为米(m); - 像素坐标系:
(Xpix,Ypix) ,同样位于图像平面上,与图像坐标系的区别:一、以左上角为原点;二、单位为像素。也经常表示为(u,v) 。
坐标系之间的转换
世界坐标系 -> 相机坐标系
设某点在世界坐标系中的坐标为
则两个坐标系之间的关系为:
其中:
表示成齐次形式:
确定
相机坐标系 -> 图像坐标系
以
注意到小孔模型中的相似三角形关系,我们可以得到:
写成矩阵形式:
图像坐标系 -> 像素坐标系
这里看下这个图,很好理解:
先设每个像素的物理尺寸为
那么对于点在像素坐标系中的坐标
写成矩阵形式:
世界坐标系 -> 像素坐标系
把前面几个步骤都综合一下:
化简一下:
其中:
- 第一个矩阵中的
fx 、fy 、u0 、v0 这4个参数称做相机的内部参数,因为他们只与相机有关,与其他因素无关; - 第二个矩阵中的
R 、T ,称作相机的外部参数,因为只要世界坐标系和相机坐标系的相对位置关系发生改变,它们就会改变,每一张图片的R 、T 都是唯一的; - 单目摄像机标定就是在已知像素坐标系下的坐标和世界坐标系的坐标,求解出内部参数的过程。
透镜畸变
到前面为止的内容都是有关针孔相机模型的,但是针孔可以透过的光线太少,成像慢且不清晰,所以往往都会加上凸透镜以汇聚更多的光线。但是加上凸透镜之后,不可避免地,就会产生透镜畸变。透镜畸变有两种:径向畸变、切向畸变。
径向畸变
对于某些透镜,光线在远离透镜中心的地方比靠近中心的地方弯曲更厉害,产生“筒形”或“鱼眼”现象。
一般来讲,成像中兴点的径向畸变为0,越向边缘移动,畸变越严重。通常,径向畸变通过下面的公式来校正,常用偶次幂的泰勒公式描述径向畸变:
其中:
切向畸变
切向畸变是由于摄像机制造上的缺陷使得透镜本身与图像平面不平行而产生的,可定量描述为:
其中:
现在的摄像机一般不会产生切向畸变,所以通常不考虑其影响。
透镜畸变校正
我们进行透镜畸变校正,就是要确定
相机标定
- 相机标定得到的是4个内部参数,相机畸变校正得到的是5个畸变校正参数;
- 单目相机标定常用的工具有OpenCV和MATLAB,下一篇博客再进行程序实现。
参考资料: