单目相机标定
摄像机以一定的角度和位置安装在车辆上,为了将摄像机采集到的环境数据与现实环境中的真实物体相对应,即找到实际环境中的物体坐标与摄像机生成的图像像素坐标系中的点坐标之间的转换关系,我们需要对摄像机进行标定。
单目相机的标定主要是建立世界坐标系、摄像机坐标系和图像坐标系之间的关系。
图像坐标系分为图像像素坐标系和图像物理坐标系。
图像像素坐标系:图像都是由像素组成的,以图像左上角为原点建立以像素为单位的直接坐标系u-v即图像像素坐标系。像素点01的横坐标u0与纵坐标v0分别是在其图像数组中所在的列数与所在行数。(在OpenCV中u对应x,v对应y)
图像物理坐标系:由于(u,v)只代表像素的列数与行数,而像素在图像中的位置并没有用物理单位表示出来,所以,我们还要建立以物理单位(如毫米mm)表示的图像坐标系x-y。将相机光轴与图像平面的交点(一般位于图像平面的中心处,也称为图像的主点(principal point)定义为该坐标系的原点O1,且x轴与u轴平行,y轴与v轴平行,假设(u0,v0)代表O1在u-v坐标系下的坐标,dx与dy分别表示每个像素在横轴x和纵轴y上的物理尺寸,则图像中的每个像素在u-v坐标系中的坐标和在x-y坐标系中的坐标之间都存在如下的关系:
x=(u-u0)*dx
y=(v-v0)*dy
其中,我们假设物理坐标系中的单位为毫米,那么dx、dy的单位为:毫米/像素。
摄像机坐标系:相机成像的几何关系可由下图表示。其中O点为摄像机光心(投影中心),Xc轴和Yc轴与成像平面坐标系的x轴和y轴平行,Zc轴为摄像机的光轴,和图像平面垂直。光轴与图像平面的交点为图像的主点O1,由点O与Xc,Yc,Zc轴组成的直角坐标系称为摄像机的坐标系。OO1为摄像机的焦距。
世界坐标系:即系统坐标系中的车体坐标系,是为了描述相机的位置而被引入的,如上图中坐标系OwXwYwZw即为世界坐标系。车体与摄像机是刚性连接的,假设车体坐标系中的实物点P坐标为(Xw,Yw,Zw),实物点P在摄像机坐标系中的坐标为(Xc,Yc,Zc),通过平移向量T和旋转矩阵R可以用来表示相机坐标系与世界坐标系的关系。
实际上R和T表示相机相对于车体坐标系的安装角度和安装位置,因此把R和T定义为相机的外部参数。
相机模型
理想针孔相机模型(线性模型):针孔相机模型就是把相机简化成小孔成像,任一点 在像平面的投影点都是O(光心,即投影中心)与该点的连线与像平面的交点。通过透视变换投影将摄像机坐标系中的物点P(Xc,Yc,Zc)转换至理想非畸变的图像物理坐标系像点P(x,y),方程如下:
x=f*Xc/Zc
y=f*Yc/Zc
f为摄像头的焦距即OO1的距离。可以想见,这种简化对于精度要求高的情况或者广角相机是不适用的。对图像物理坐标系中像点P(x,y)转换至图像像素坐标系像点P(u,v),方程如下:
u=x/ dx + u0
v=y/ dy + v0
其中,(u0,v0)为图像像素中心的坐标,即相机光轴与图像平面的交点,dx与dy分别表示每个像素在横轴x和纵轴y上的物理尺寸,由摄像机厂家提供,可以在摄像机说明书上查到,为已知量。车体坐标系中的实物点P坐标为(Xw,Yw,Zw),由摄像机坐标系中物点P(Xc,Yc,Zc)与图像像素坐标系中的像点P(u,v)的变换关系如下:
其中,fx=f/dx,fy=f/dy,分别定义为x和y方向的等效焦距,fx、fy、u0、v0等参数只与摄像机和镜头的内部结构有关,因此把fx、fy、u0、v0定义为摄像机内部参数。
当相机为理想的针孔摄像机模型时,物点P(Xw,Yw,Zw)、光心、像点P(u,v)三点在同一直线上。根据这一特点,在摄像机内部参数确定的情况下,可以利用三维空间上的若干个特征点在车体坐标系中的坐标和图像像素坐标系中的坐标建立约束方程,从而求出摄像机的6个外部参数,即摄像机相对于车体的相对姿态(俯仰角、横滚角、航向角)和相对位置(X、Y、Z)。
在实际应用中,因为存在透镜畸变,物点在实际的相机成像平面上生成的像与理想成像之间存在一定光学畸变误差,相机并不能完全精确地按照理想的针孔摄像机模型进行透视投影。
透镜畸变
透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。
径向畸变:顾名思义,径向畸变就是沿着透镜半径方向分布的畸变。光线在真空条件下,没有物质折射和反射,光线的特质为随光源角度和物理特性的直射光。而经过物质参与和阻隔光学光线通道时,光线会随着共性物质的特性和所在环境产生衍射及光学通道扭曲,光线在透镜中心的地方比靠近中心的地方更加弯曲,就会产生径向畸变。这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:
成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:
其中(x,y)为理想状态下的像点P的坐标,(x0,y0)为考虑镜头径向畸变的像点P0的坐标。距离光心越远,径向位移越大,表示畸变也越大,在光心附近,几乎没有偏移。
切向畸变:是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:
其中(x,y)为理想状态下的像点P的坐标,(x0,y0)为考虑镜头切向畸变的像点P0的坐标。
前视单目相机考虑透镜畸变时通常用下面的方程进行表示。
车载相机参数标定
在实际的车载相机应用中,往往忽略摄像机镜头的畸变或者只考虑径向畸变。在车载应用中摄像机的成像误差要求相对宽松,而且待处理目标通常会在图像中心附近出现,因此其位置误差对于车载应用可以满足。另外,不考虑摄像机镜头畸变可以提高系统的实时性,考虑镜头畸变的摄像机模型比理想的摄像机模型复杂,物点和像点之间的转换计算量会大大增加,根据上述的摄像机模型可以把相机参数作为内部参数和外部参数,其中内部参数为fx、fy、u0、v0,外部参数为R和T,实际上R由偏航角θ、俯仰角φ、翻滚角ψ确定,其表达式为:
相机的内部参数可以通过各种相机标定工具箱完成,外部参数可以通过相机模型建立约束方程求解,通过提取多个定标物特征点来求解约束方程的外部参数,在图像像素坐标系中,提取到图像特征点为Pn(un,vn),其中n为定标物的特征点个数,利用这些特征点序列即可建立多个约束方程,特征点尽可能地均匀分布在图像分辨率范围内的各个位置,可以利用线性最小二乘法求出其外部参数的最优解。