计算机视觉————相机标定
针孔相机模型
相机将三维世界中的坐标点(单位:米)映射到二维图像平面(单位:像素)的过程能够用一个几何模型来描述,其中最简单的称为针孔相机模型 (pinhole camera model),其框架如下图所示:
其中,涉及到相机标定涉及到了四大坐标系,分别为:
像素坐标系:为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是我们真正从相机内读取到的信息所在的坐标系。单位为个(像素数目)。
成像平面坐标系:为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。单位为m。
相机坐标系:在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。单位为m。
世界坐标系:用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。单位为m。
下面,我们来详细推导从世界坐标系到像素坐标的过程。
世界坐标系到相机坐标系
从世界坐标系到相机坐标系, 这是一个刚体变换,只需对世界坐标系的三维点作用一个旋转R和平移t(R,t即为相机的外参),变换过程可以通过一下公式完成:
相机坐标系到成像平面坐标系
这一过程进行了从三维坐标到二维坐标的转换,也即投影透视过程(用中心投影法将物体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图,也就是使我们人眼看到景物近大远小的一种成像方式)。
成像过程如下图所示:针孔面(相机坐标系)在图像平面(图像坐标系)和物点平面(棋盘平面)之间,所成图像为倒立实像。
但是为了在数学上更方便描述,我们将相机坐标系和图像坐标系位置对调,变成下图所示的布置方式(没有实际的物理意义,只是方便计算):
此时,假设相机坐标系中有一点M,则在理想图像坐标系下(无畸变)的成像点P的坐标为(可由相似三角形原则得出):
f为焦距,整理,得:
成像平面坐标系到像素坐标系
如上图,成平面坐标系和像素坐标系之间存在一个缩放和平移:
整理得:
以fx、fy的方式表示为:
其中
α、β的单位为像素/米;
fx、fy为x、y方向的焦距,单位为像素;
(cx,cy)为主点,图像的中心,单位为像素。
那么,相机坐标系到像素坐标系的最终形式可写成:
将 Zc移到左边:
所以,在世界坐标系中的三维点M=[X,Y,Z]T 和像素坐标系中二维点m=[u,v]T的关系
即:
其中,s为缩放因子,A为相机的内参矩阵,[R t]为相机的外参矩阵,和分别为m和M对应的齐次坐标。
畸变模型
顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:
实际情况中我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变,矫正径向畸变前后的坐标关系为:
立体标定
对于多目相机系统或者RGBD 相机除了要对别对每个相机进行以上标定以外,还需要求传感器之间的变换T,以使同一时刻获取的数据能够“对齐”,以双目为例,左右两个相机的坐标系如下图:
计算出两个摄像机之间的旋转矩阵R和平移向量t,方法是分别计算出两个摄像机的R和T,再由以下公式计算: