在介绍针孔相机模型之前,我们先了解一些相机的相关知识。
光轴:是一条垂直穿过理想透镜中心的光线。
焦点:与光轴平行的光线射入凸透镜时,理想的凸镜应该是所有的光线会聚在透镜后面一点上,这个会聚所有光线的一点,就叫做焦点。
焦距:一般指镜片的中心到焦点为止的光轴上的距离,入射平行光线(或其延长线)与出射会聚光线(或其延长线)相交,就能确定折射主面,这个想象的平面与镜头光轴相交处就是主点。
光圈:光圈对照片的影响主要有两大项,一是镜头的进光量,二是相片的景深。
- 光圈越大(f 值越小),景深越浅(前景/背景看上去就像化掉一样)
- 光圈越小(f 值越大),景深越深(前景/背景看上去比较清楚)
景深:是指在一幅图像中清晰的范围,景深的深浅主要取决于以下元素:
- 镜头的光圈大小
- 镜头的焦距长短
- 摄影主体的远近
- 感光元件的大小
下面我们针对针孔相机模型的坐标转换和畸变校正两个方面做进一步讲解:
坐标转换
像素坐标系:以图像平面左上角为原点的坐标系 ,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,用(u, v)表示其坐标值。像素坐标系就是以像素为单位的图像坐标系。
图像坐标系:以光心在图像平面投影为原点的坐标系 ,X轴和Y 轴分别平行于图像平面的两条垂直边,用(x, y)表示其坐标值。图像坐标系是用物理单位表示像素在图像中的位置。
相机坐标系:以相机光心为原点的坐标系,X 轴和Y 轴分别平行于图像坐标系的 X 轴和Y 轴,相机的光轴为Z 轴,用(xc, yc, zc)表示其坐标值。
世界坐标系:是三维世界的绝对坐标系,我们需要用它来描述三维环境中的任何物体的位置,用(xw, yw, zw)表示其坐标值。
图像的成像过程经历了世界坐标系—>相机坐标系—>图像坐标系—>像素坐标系这四个坐标系的转换,如下图所示:
世界坐标系->相机坐标系:属于刚体变换,包括旋转和平移操作,通过六个自由度的外参矩阵反应了物体与相机的相对运动关系:
相机坐标系->图像坐标系:从3D的相机坐标系下的点(Xc, Yc, Zc)到2D的图像坐标系下的点(x, y)需要通过相机五个自由度的内参矩阵进行转换,其满足如下关系:
齐次表达式为:
其关系图如下:
图像坐标系->像素坐标系:图像平面和像素平面之间相差一个缩放和原点的平移,每个感光元件都有固定的尺寸大小(dx, dy),一个感光元件代表图像中的一个像素。理想情况下(忽略相机畸变),在u轴方向缩放1/dx倍,在v轴方向缩放1/dy倍,原点平移u0,v0;其转换关系为:
齐次表达式为:
其中(u0, v0)是图像坐标系原点在像素坐标系中的坐标,dx和dy分别是每个像素在图像平面x和y方向上的物理尺寸。
其关系图如下:
世界坐标系->像素坐标系:包含了5个内参和6个外参,假设在世界坐标系下有一个固定点P(Xw, Yw, Zw);由于相机的运动产生了R,t矩阵,在相机坐标系下P点转换成了
其中内参矩阵包含焦距、主点坐标,f/dx是x轴方向放大系数,f/dy是Y轴方向放大系数:
相机深度Zc乘以像素坐标Puv=相机内参K*相机外参RT*世界坐标Pw,像素坐标系下的一点可以被认为是三维空间中的一条射线,Zc就是像素点在相机坐标系下的深度。其关系图如下:
上面提到的归一化平面是一种假想平面,是指在相机前方z=1处的平面,它与物理像平面平行且距离相机光心距离为1,相当于在z方向上当z=1时用一个平面截断,这时光心与3D点的连线在该面上的点即为该3D点的归一化点。
在内参矩阵中还有个参数r(通常也可当成0),用来建模像素是平行四边形而不是矩形,与像素坐标系的u,v轴之间的夹角的正切值tan()成反比,因此当r=0时,表示像素为矩形。
畸变校正
针孔模型是一种理想的成像模型,物和像会满足相似三角形的关系,但是实际上光学系统加工和装配的过程中存在误差,透镜并不能满足物和像成像相似三角形的关系,所以在图像平面上的的成像会存在一定的畸变。这种几何失真是由于焦平面上不同区域对图像的放大率不同形成的画面扭曲变形的现象,失真的程度从画面中心至画面边缘依次递增,在画面边缘最为明显。
畸变分为两种:径向畸变和切向畸变
径向畸变通常由透镜的形状造成,越向透镜边缘移动径向畸变越严重,存在桶形失真或者枕形失真,如下图所示:
我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变,其中k1 k2 k3是径向畸变系数,
在上式中,对于畸变较小的图像中心区域,畸变纠正主要是k1 起作用;对于畸变较大的边缘区域,主要是k2 起作用。根据所用镜头,可以适当使用合适的校正系数。
切向畸变通常是在相机组装过程中透镜与成像平面不严格平行引起的,切向畸变需要两个额外的畸变参数来描述,切向畸变后的归一化坐标为:
综合所述,一共需要5个畸变参数(k1, k2, k3, p1, p2)来描述透镜畸变: