第3章传感器标定 标定传感器是自动驾驶感知系统中的必要环节,是后续传感器融合的必要步骤和先决条件,其目的是将两个或者多个传感器变换到统一的时空坐标系,使得传感器融合更具有意义,并且为后续数据的处理与计算打下良好基础,是感知决策的关键前提。任何传感器在制造、安装之后都需要通过实验进行标定,以保证传感器符合设计指标,保证测量值的准确性。 3.1摄像机标定定义与分类 3.1.1摄像机标定定义 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称为摄像机标定(或摄像机标定)。 计算机视觉的研究目标是使计算机能通过二维图像认知三维环境,并从中获取需要的信息用于重建和识别物体。摄像机便是 三维空间和二维图像之间的一种映射,其中两空间之间的相互关系是由摄像机的几何模型决定的,即通常所称的摄像机参数,是表征摄像机映射的具体性质的矩阵。求解这些参数的过程称为摄像机标定。近年来,摄像机标定已成为计算机视觉领域的研究热点之一,目前已广泛应用于三维测量、三维物体重建、机器导航、视觉监控、物体识别、工业检测、生物医学等诸多领域。从定义上看,摄像机标定实质上是确定摄像机内外参数的一个过程,其中内部参数的标定是指确定摄像机固有的、与位置参数无关的内部几何与光学参数,包括图像中心坐标、焦距、比例因子和镜头畸变等; 而外部参数的标定是指确定摄像机坐标系相对于某一世界坐标系的三维位置和方向关系,可用3×3的旋转矩阵 R和一个平移向量T来表示。摄像机标定起源于早前摄影测量中的镜头校正,对镜头校正的研究在19世纪就已出现,第二次世界大战后镜头校正成为 热点研究问题,一是因为二战中使用大量飞机,在作战考察中要进行大量的地图测绘和航空摄影; 二是为满足三维测量需要立体测绘仪器开始出现,为了保证测量结果的精度足够高, 首先必须校正摄像机镜头。在这期间,一些镜头像差的表达式陆续提出并被普遍认同和采用,建立起了较多的镜头像差模型, Brown等对此作出了较大贡献,包括推导了近焦距情况下给定位置处径向畸变的表达式及证明了近焦距情况下测得镜头两个位置处的径向畸变情况就可求得任意位置的径向畸变等。这些径向与切向像差表达式正是后来各种摄像机标定非线性模型的基础。随着CCD器件的发展,现有的数码摄像机逐渐代替原有的摄像机,同时随着像素等数字化概念的出现,在实际应用中,在参数表达式上采用这样的相对量单位会显得更加方便,摄像机标定一词也就代替了最初的镜头校正。 3.1.2基于是否需要标定物分类 根据是否需要标定物可分为传统摄像机标定方法、摄像机自标定方法以及基于主动视觉的标定方法,这也是目前最被广为接受的分类方法。 1. 传统摄像机标定方法 传统标定方法需要基于特定的实验条件,如一个形状、尺寸已知的标定物,通过对其图像进行处理,再经过一系列的计算和数学变换,求取摄像机模型的内、外部参数。传统摄像机标定还可分为四类。 1) 利用最优化算法的标定方法 这一类摄像机标定方法可以将摄像机光学成像系统的模型假设得很复杂,但这也带来了问题,如果初始值给得不恰当,通过优化程序很难得到正确的标定结果,因为摄像机的标定结果取决于摄像机的初始给定值,优化程序非常费时,无法实时地获得标定结果。根据参数模型,最优化法又可分为: (1) 摄影测量学中的传统方法。Faig在文献中提出的方法最具代表性,利用针孔摄像机模型的共面约束条件,假设成像模型非常复杂,并合理细致地设计成像模型,考虑成像过程中的各种可能因素,采用至少17个参数来描述每幅图像与3D空间物体的约束关系,但计算的量比较庞大。 (2) 直接线性变换(direct linear transformation,DLT)法。此方法由AbdelAziz和Karara于1971年首次提出。只需通过求解线性方程便求得摄像机模型参数,这是 DLT的优势所在。Dainis和 Juberts 给出了利用DLT进行标定的结果。因在成像过程中DLT方法没有考虑非线性畸变问题,故其通过非线性最优化算法来提高精度。因此 DLT虽然是通过解线性方程求得参数,但求解的过程不排除使用非线性优化算法,可以说它是对摄像测量学中传统方法的一种简化。 2) 利用摄像机透视变换矩阵的标定方法 从摄影测量学中的传统方法可以看出,刻画三维空间坐标系与二维图像坐标系关系的方程一般来说是摄像机内部参数和外部参数的非线性方程。如果忽略摄像机镜头的非线性畸变并且把透视变换矩阵中的元素作为未知数,给定一组三维控制点和对应的图像点,就可以利用线性方法求解透视变换矩阵中的各个元素。严格来说,基于摄像机针孔模型的透视变换矩阵方法与直接线性变换方法没有本质的区别。 这一类标定方法不需通过最优化方法来求解摄像机参数,故可大大提高运算速度,能够实时地获得标定结果; 但是同样存在缺点,即标定过程中忽略了非线性畸变,从而影响标定的精度。 3) 考虑畸变补偿的两步标定法 摄影测量学中的传统方法是利用最优化算法求解未知数,其结果往往受给定初始值的影响,如果给定的初始值不恰当或不合适,就很难得到较为正确的结果。直接线性变换法或透视变换矩阵法忽略非线性畸变而直接用线性方法求未知参数,根据以上两种算法的特点,我们可以考虑先用直接线性变换法或透视变换矩阵法求解未知参数,并将其作为初始值,同时考虑畸变因素,再利用最优化算法进一步提高标定精度,这就是两步标定法。 目前最常用的两步标定法是Tsai在他的论文中提出的一种非常实用的两步标定法。此方法先用径向准直约束求解模型中的大部分参数,然后再用非线性搜索求解畸变系数、有效焦距等。 但是以上摄像机标定方法也存在问题: ①此方法还是具有一定的局限性,并不是对所有的系统都有效; ②为了提高标定精度,在提出摄像机模型时就要更多地考虑畸变产生的影响,导致计算量增加,计算时间延长; ③当对两台摄像机标定后,还必须确定两摄像机之间的相对几何位置关系,这也无形中增加了需要计算的参数。 4) 双平面标定方法 研究人员从另一方面对传统摄像机标定方法进行了深入的探索,他们在寻找更合理的摄像机模型,使之能全面而有效地体现整个成像过程。Martin首先提出了双平面模型,列出了3种插值方法,即线性插值、二次插值和线性样条插值。在此基础上,Mald运用双平面模型对摄像机标定做了大量的研究工作。双平面模型摄像机与针孔模型摄像机的区别在于: 双平面模型摄像机不必要求投影到成像平面上的光线通过光心,给定成像平面上任意一个图像点,就能计算出两标定平面上各自的对应点,因此可确定投影到成像平面上产生该图像点的光线。对每一个标定平面而言,可用一组标定点建立彼此独立的插值公式,尽管插值公式是可逆的,但这个可逆过程需要一个搜索算法,因此所建立的模型只能用于从图像到标定平面的映射过程。 双平面标定方法的优点是使用线性方法求解有关参数; 其缺点是它必须求解大量的参数,有过分参数化的倾向。 2. 摄像机自标定方法 20世纪90 年代初,Faugeras,Luong,Maybank等首先提出了自标定概念,使得在场景未知和摄像机任意运动的一般情形下标定成为可能。Faugeras等从射影几何的角度出发证明了每两幅图像间存在着两个形如 Kruppa方程的二次非线性约束,通过直接求解Kruppa方程组可以解出内参数。 目前自标定方法可以分为三类,即直接求解Kruppa方程的自标定、分层逐步标定和基于绝对二次曲面的自标定。 1) 直接求解Kruppa方程的自标定 该方法利用绝对二次曲线和极线变换的概念推导出了 Kruppa方程。围绕着求解Kruppa方程,文献中存在着不同的途径。Faugeras,Maybank 等最早提出的算法完全基于代数几何的概念,该算法对噪声极其敏感,普通计算机的浮点运算已不足以满足其要求。Luong提出了较实用的求解策略,降低了对噪声的敏感度,但该策略要求拐点的提取精度达到子像素级(0.2个像素)。这两种直接求解Kruppa方程的方法存在着共同的弊端: 求解困难,而且是针对两两图像之间列方程,当图像数目增加时,可能解的个数呈指数增长,使得直接求解失去意义。另一类求解Kruppa方程的途径是间接的非线性优化算法,Zeller 等利用Kruppa方程计算出多幅图像上的所有点到对应极线距离之和,再利用Levenberg2Marquardt优化算法减小该距离,并求出相应的内参数。上述优化算法的缺点在于,待优化参数过多,且容易陷入局部最优值。 2) 分层逐步标定 由于求解Kruppa方程有一定的困难,有学者通过对图像序列做射影重建,并利用绝对二次曲线(面)添加约束条件进行摄像机参数的求解,这就是分层逐步标定方法。该方法在实际应用中逐渐取代了直接求解Kruppa方程的方法。分层逐步标定法首先要求对图像序列做射影重建,再通过绝对二次曲线(面)施加约束,定出仿射参数(即无穷远平面方程)和摄像机内参数。其中最具代表性的方法是由Hartley提出的一种对摄像机投影矩阵进行QR分解的自标定方法。该方法是在射影标定的基础上,以某一幅图像为基准做射影对齐,从而将未知数缩减8个(无穷远平面参数3个和摄像机内参数5个,不包括总体常数因子),再通过非线性优化算法同时解出所有未知数。缺点在于如下两点: ①非线性优化算法的初值只能通过预估得到,不能保证收敛性; ②射影重建时均是以某参考图像为基准,参考图像的选取不同,标定的结果也不同,不满足一般情形下噪声均匀分布的假设。 3) 基于绝对二次曲面的自标定 绝对二次曲面最早由Triggs引入自标定研究中,虽然其本质同Kruppa方程一样运用了绝对二次曲线在欧氏变换下的不变性,但当多幅图像输入并且能得到一致射影重建的情况下,该方法将更具优势。其根源在于绝对二次曲线(面)包含了无穷远平面和绝对二次曲线的所有信息,且基于绝对二次曲线(面)的自标定方法又是在对所有图像做射影重建的基础上计算绝对二次曲线(面)的,从而保证了无穷远平面对所有图像的一致性。与此相比,基于Kruppa方程的方法是在两两图像之间建立方程,在列方程过程中已将支持绝对二次曲线的无穷远平面参数消去,所以当输入更多的图像对时,不能保证该无穷远平面的一致性。 3. 基于主动视觉的标定方法 基于主动视觉的方法是将摄像机精确安装于可控平台,主动控制平台作特殊运动来获得多幅图像,利用图像和摄像机运动参数来确定摄像机内外参数,鲁棒性比较强而且通常可线性求解。但当摄像机运动未知或者运动无法控制的场合不能使用该方法,且该方法所需运动平台精度较高,成本也较高。此方法最经典的是马颂德教授提出的基于两组三正交运动的线性法,后李华、杨长江等提出了基于四组和五组平面正交运动的方法,利用图像中的极点信息线性标定。此外,胡占义教授提出的基于平面单应矩阵的正交运动方法和基于外极点的正交运动方法更容易实现,相比马颂德教授的方法可多求出一个内参数,即5个内参数。 目前,常用的主动视觉标定方法有基于摄像机纯旋转的标定方法、基于三正交平移运动的标定方法、基于平面正交运动的标定方法、基于无穷远平面单应性矩阵的标定方法和基于射影重建的标定方法等。上述方法对摄像机运动提出了不同的限制条件,如至少两次互不平行的绕光心的旋转运动、三正交平移运动以及正交平移运动等,而目前主动视觉标定方法的研究焦点是在尽量减少对摄像机的运动限制的同时仍能线性求解。 基于主动视觉的标定方法算法简单,可以获得线性解; 不足之处在于必须有可以精确控制的摄像机运动平台,无法自由灵活地移动。 3.1.3基于不同标定物分类 根据标定物的不同可分为基于三维立体靶标摄像机标定和基于二维平面靶标摄像机标定。 1. 基于三维立体靶标摄像机标定 基于三维靶标通过以形状、尺寸已知的三维物体为标定物进行标定,此方法精度很高,但是成本高、标定物精度要求高且运用不灵活,只适用于工业测量,故未被广泛应用。常用的三维物体就是正立方体,如图3.1所示。其典型代表为Tsai的方法,利用标定物的三维形状知识与相应图像间的对应关系得到一个标定参数的函数,然后对此函数优化得到标定参数。 2. 基于二维平面靶标摄像机标定 二维靶标常使用平面方格点、矩形或二次曲线为模板图案,图3.2是平面方格点的二维标靶。典型代表是张正友标定法。 图3.1正立方体标靶 图3.2平面方格二维标靶 3.1.4基于模型的标定分类 基于模型的不同可以分为线性标定方法和非线性标定方法。 1. 线性标定方法 线性标定方法就是采用线性摄像机模型即小孔成像原理,并用线性方程来求解摄像机的内外参数的方法,目前已有大量研究成果,但由于未考虑镜头畸变,所以准确性不高。 2. 非线性标定方法 非线性标定方法则考虑了畸变参数,并使用非线性优化方法对标定初值进行优化,提高了标定的精度; 但由于计算过程较为繁琐,速度比较慢,且对初值的选择和噪声比较敏感,有时非线性搜索不一定能保证参数收敛到全局最优解。 3.1.5基于求解参数结果的标定分类 基于求解参数可以分为隐式标定方法和显式标定方法。 1. 隐式标定方法 隐式标定方法是指将三维空间物点与其对应二维像点间的关系用一个转换矩阵来表示,并将转换矩阵的元素作为标定参数。由于这些参数没有具体的物理意义,所以称为隐式(隐参数)标定法。典型的有直接线性变换 (direct linear transformation,DLT)方法,该方法不考虑具体的中间成像过程,直接用一个3×4的矩阵来表示三维空间物点与其对应二维像点间的关系。由于该方法只需求解线性方程,所以能获得较高的效率,适用于实时性强、标定精度不高的场合。 2. 显式标定方法 显式标定方法精确分析了摄像机成像的中间过程,构造了精密的摄像机成像几何模型,并设置了具有物理意义的标定参数,包括图像中心偏差、有效焦距偏差、帧存扫描水平比例因子、镜头畸变参数等,最后实现对这些未知参数的求解。该方法充分考虑了摄像机成像过程的各种因素,能有效地提高标定的精度。 3.1.6基于求解方法的标定分类 由于空间物点与其图像对应点之间是一种复杂的非线性关系,不能用图像的像元位置准确估算三维空间点间的实际距离,试图用线性方法找到这种对应关系几乎是不可能的。 1. 解析法标定 解析方法是用足够多的空间点和其对应的图像坐标点,通过解析公式来求解摄像机的内外参数以及畸变参数,再根据求得的内外参数和畸变系数值,将图像中的点通过几何关系得到空间物点的世界坐标。解析方法不能包含上述所有非线性因素,只能选择其中几种主要的畸变,而忽略其他不确定因素。 2. 神经网络法标定 神经网络法跳过了求解各种参数的复杂过程,将空间点及其相应的图像坐标点作为输入/输出样本集进行训练,利用网络实现给定的输入/输出映射关系。因此,它能以任意精度逼近任何非线性关系,对于非样本集中的图像坐标点也能得到相应的合适空间点坐标。 3. 遗传算法标定 由于传统的用于摄像机自标定的Kruppa方程不仅需要计算基础矩阵,还要计算图像的极点,而图像的极点又不是固定不变的,且会导致计算结果的不稳定,为此,引入遗传算法到Kruppa方程的摄像机自标定过程,将求解过程转化为通过代价函数最小化来求得摄像机的内参数,排除了极点的稳定因素。 3.2张正友摄像机标定法 相对于传统标定法、自标定法,处于其二者之间的另一方法就是张正友标定法。张正友摄像机标定法是张正友教授1998年提出的单平面棋盘格的摄像机标定方法,它需要摄像机从不同的方向对同一个标定模板拍摄,进而开始寻找标定板上的特征点 及其处于像平面中的映射点之间的相互对应关系来进行标定。此方法模板制作简单,鲁棒性高,精确度好,应用广泛。本 书就是采用张正友的标定方法。传统标定法的标定板 需要三维的,要求非常精确,因此难以制作,而张正友教授提出的方法介于传统标定法和自标定法之间, 克服了传统标定法需要高精度标定物的缺点,仅需使用一个打印出来的棋盘格 即可。相对于自标定而言,提高了精度,便于操作,因此张正友标定法被广泛应用于计算机视觉方面。 3.2.1单应矩阵的计算 设标定板上的某个特征点在世界坐标系和图像坐标系下的坐标分别为 M=(X,Y,Z) T和m=(u,v)T,由摄像机成像模型,可得如下公式: su v 1= A[Rt]X Y Z 1=A[r1r2r3t]X Y Z 1(31) 假定将标定模板所处面放置在世界坐标系Z=0的面上,则上式可变成 su v 1=A[r1r2r3t]X Y 0 1=A[r1r2r3t]X Y 0 1=A[r1r2t]X Y 1(32) 式(31)中旋转矩阵R=[r1 r2 r3]和平移向量t是摄像机的外部参数,r i表示旋转矩阵R的第i列向量,A为摄像机内参数矩阵,s为尺度因子。 A=αγ u0 0βv0 001(33) 规定单应矩阵H=A[r1 r2 t],设H=[h1 h2 h3],则有H=A[r1 r2 r3]=[h1 h2 h3]。 3.2.2摄像机内外参数求解 由于求解的H不会与真实值H完全一样,会有一个比值误差,所以把H写成如下形式: [h1 h2 h3]=γA[r1 r2 r3](34) r1与r2为单位正交向量,有rT1r1=rT2r2和rT1r2=0,因此能够获得求取摄像机内部参数的两个条件约束: hT1A-TA-1h2=0(35) hT1A-TA-1h1=hT2A-TA-1h2(36) 令B=A-TA-1,B是对称矩阵,可以用6维向量b定义: b=[B11B12B22B13B23B33]T 设H第i列向量为hi=[hi1hi2hi3]T,则 hTiBhi=VTijb,其中, Vij=[hi1hj1,hi1hj2+hi2hj1,hi2hj2,hi3hj1+hi1hj3,hi3hj2+hi2hj3,hi3hj3]T (37) 利用约束条件可得 VT12 (V11-V22)Tb=0(38) 如有N幅模板的图像,就能得到: Vb=0,其中,V为2N×6向量矩阵,若 N ≥3,能够求出b,继而可以获得如下几个内部参数: v0=(B12B13-B11B23)/(B11B22-B212)(39) γ=B33-[B213+v0(B12B13-B11B23)]/B11(310) fu=γ/B11(311) fv=γB11/(B11B22-B212)(312) S=-B12f2ufv/γ(313) u0=sv0/fv-B13f2u/γ(314) 再根据单应矩阵H与内部参数矩阵A,通过以下公式,计算每张图片的外 部参数: r1=γA-1h1(315) r2=γA-1h2(316) r3=r1×r2(317) t=γA-1h3(318) 3.2.3双目摄像机的相对外部参数求解 3.2.1节和3.2.2节所介绍的是单个摄像机内部参数和单个摄像机与标定模板间的外部参数的求解。本节介绍双目摄像机标定,第一步确定单个摄像机标定,第二步求解两个摄像机的相对外部参数。 假如某个三维物点处于左摄像机坐标系中的坐标表示是xI,处于右摄像机坐标系中的坐标表示是xr,位于世界坐标系中的坐标表示是xw。对于左右摄像机的外部参数来说, 设RI,TI代表左摄像机外部参数,Rr,Tr代表右摄像机的外部参数,可以得到 xI=RIxw+TI(319) xr=Rrxw+Tr(320) 合并两式得到 xw=RrR-1IxI+Tr-RrR-1ITI(321) 从而可以得到左右摄像机之间的相对外部参数为 R=RrR-1I(322) T=Tr-RrR-1ITI(323) R表示左右摄像机相互间的旋转关系,T表示左右摄像机相互间的平移关系。双目摄像机标定的实现需要对多个不同位置的标定模板进行拍摄,根据左右两张标定模板图片就能得出一组左右摄像机的相对外部参数。因为噪声会有影响,每一组标定结果就会出现极小差别,所以把每组数据的均值作为最后的标定结果。 3.3双目摄像机的标定实验 由上述理论可知,摄像机标定的核心步骤在于怎样精准计算摄像机内部参数,这里的摄像机标定过程分为三步处理: 标定左摄像机,标定右摄像机和标定双目摄像机。本课题的标定实验均在Matlab下参考了Camera Calibration Toolbox for Matlab来进行摄 图3.3标定板 像机的标定。标定过程用的标定板如图3.3所示,每个棋盘方格尺寸是30mm×30mm,角点的个数是11×8。要取得比较好的标定结果,一般采集10~20组标定图像,所以这里双目摄像机的标定均采集组标定模板的图像,采集的标定模板图像需清晰并大小合适。 3.3.1单目摄像机的标定 左、右摄像机在标定过程中处理的方式一样,所以这里只介绍左摄像机标定过程,单个摄像机的标定过程如下: 首先确定摄像机的位置,挪动或旋转标定模板让摄像机能够从不同方向或不同角度获取标定模板图片。要使标定板尽可能占据图像视场的最大可能,不能少于图像的1/6,且标定板要尽可能贴近图像边缘,使标定板分别向左向右旋转 30°~45°,并分别向上向下倾斜一定角度进行拍摄。采集图片如图3.4所示。 图3.4左右摄像机标定图片(见文前彩图)