摘 要:针对目前鱼眼相机标定过程繁琐的问题,进行了鱼眼相机快速标定方法的研究。设计了一种由三块黑白棋盘组成、带有红色边界线的立体标定板;对标定图像依据棋盘所属平面进行图像分割,并对每部分分别检测角点,建立二维图像坐标与三维世界坐标的映射;选用折反射成像模型,提出了适用于立体标定法的参数求解方法。进行了该立体标定法与常用平面多图标定法的对比实验,通过图像畸变校正效果和图像坐标逆投影至世界坐标的精度,验证标定精度。实验表明:立体标定法可以实现与平面多图标定方法同样高的标定精度,且具有较好的鲁棒性;同时该标定法极大简化了标定操作流程,缩短了标定时间。
关键词:鱼眼相机;成像模型;标定方法;标定可靠性;图像分割;参数优化
近年来,鱼眼相机由于其超大的视场范围,在全景视觉、机器人导航、虚拟现实及视觉监控等领域中得到广泛应用。然而大视场同时也带来严重的图像畸变,影响人眼直观的视觉感受以及图像信息的利用。为了对图像畸变进行校正,需要进行鱼眼相机标定[1]。标定选用的成像模型方面,大多根据径向畸变和切向畸变建模,也有多项式逼近模型、抛物面投影模型、球面投影模型等等[2-5]。标定方法方面,主要分为传统标定法、主动视觉法和自标定法。其中传统标定法标定过程相对复杂,但精度最高[6-10]。鱼眼相机标定对精度要求较高,因而采用传统标定法。
用传统标定法对鱼眼相机进行标定时,由于鱼眼相机的大视场,单幅图像中标定板难以覆盖整幅图像从而导致标定误差增大。为弥补这一缺陷,一般采用多图标定法,将平面标定板放置于相机前不同的位置采集多张图像,以获得分布范围较大的标定原始数据。该方法需多次摆放棋盘并采集图像,对于某些需要快速安装并完成标定的场合并不适用,比如在生产线上批量装配车载相机时。针对这一问题,本文提出一种立体标定法,利用三块平面黑白棋盘搭建立体标定板,采集一幅图像即可实现快速标定。
1 鱼眼相机标定原理
1.1 成像模型
相机标定首先要建立成像模型。本文选用Scaramuzza提出的折反射模型[5]作为鱼眼相机成像模型。
折反射模型坐标系设定如图1。其中,(X, Y, Z)为世界坐标,(x, y, z)为相机坐标,(u", v")为感光面坐标,(u′, v′)为输出图像坐标。由世界坐标系至相机坐标系的映射模型为外部模型,与相机的安装位置有关,涉及参数称为外参;由相机坐标系至图像坐标系的映射模型为内部模型,与相机的内部构造有关,涉及参数称为内参。
图1 成像模型坐标系
Fig.1 Coordinate systems for imaging
世界坐标系中的一点P经相机成像落于感光面的P",由相机坐标系原点O至P点的向量记为p,折反射模型对于如何由P"逆投影至P做以下假设:
(1)
式中:λ为尺度变换因子,f(ρ)为包含相机畸变参数的非线性投影函数,用泰勒级数展开多项式表示为
f(ρ)=a0+a1ρ+a2ρ2+…+anρn
(2)
其中,表示投影点至成像面中心的距离; a0,a1,…,an为多项式系数,表示相机畸变参数。
成像面坐标到图像坐标的映射需经过仿射变换和中心偏移,关系式为
(3)
式中:c、d、e为仿射变换系数,uc、vc为图像中心偏移量。
以上参数为相机内参。
相机坐标(x, y, z)与世界坐标(X, Y, Z)间存在旋转和平移,其映射关系为
(4)
其中,旋转矩阵:
平移向量:
T=[]T
二者构成相机外参。
1.2 模型参数求取
要进行模型参数求取,首先需获取多个样点的世界坐标(X, Y, Z)和图像坐标(u′, v′)。对标定板拍摄图像,其上样点世界坐标已知,通过图像检测可获得样点图像坐标。
文献[4]中详细介绍了平面多图标定法的模型参数求解方法。参考文献中的方法,首先忽略仿射变换及图像中心偏移量,以(u, v)表示图像坐标,同时也可表示感光面坐标。以下标j代表样点序号。将式(1)两边叉乘并展开后得到如下公式:
vj(r31Xj+r32Yj+r33Zj+t3)-
f(ρj)(r21Xj+r22Yj+r23Zj+t2)=0
(5)
f(ρj)(r11Xj+r12Yj+r13Zj+t1)-
uj(r31Xj+r32Yj+r33Zj+t3)=0
(6)
uj(r21Xj+r22Yj+r23Zj+t2)-
vj(r11Xj+r12Yj+r13Zj+t1)=0
(7)
其中式(7)为线性方程,以此为突破口进行参数求解。由于旋转矩阵R内部存在约束关系,不能直接简单地对式(7)求解,需改进求解算法。
首先从标定板的三个平面中选取样点较多的一个平面,利用该平面内的样点坐标求外参初值。因为无论选定哪个平面,都只涉及r1、r2、r3中的某两个向量,不存在内部约束,可简单求解。然后令所有样点的三维坐标都参与计算,对外参进行优化。
以下按选定X-O-Y面为例进行说明。在该平面上,所有点的坐标Z=0,式(7)简化为
uj(r21Xj+r22Yj+t2)-vj(r11Xj+r12Yj+t1)=0
(8)
该式中包含r11、r12、r21、r22、t1、t2六个参数,可构建超定线性方程组并求解[11]。然后根据旋转矩阵R内部存在的约束关系,即r1、r2、r3两两相互正交,且|| r1||=|| r2||=1,求得除t3外的其他外参。
然后用所有样点数据根据式(7)对外参进行最小二乘迭代优化[11-13]。迭代步长为
δk=(JkTJk)-1JkTεk
(9)
式中:ε表示上一次的估计误差,J表示Jacob矩阵,下标k代表第k次迭代。以函数g表示式(7)左部,Jacob矩阵如式(10)所示,式中n代表样点数量:
(10)
每次迭代过程中,r11、r12、r21、r22、t1、t2由式(9)计算迭代步长后更新,而r13、r23则由更新后的r11、r12、r21、r22计算得到。
外参优化完成后,利用式(5)、(6),采用最小二乘法[12]求解畸变参数a0,a1,…,an以及t3。
最后,采用Levenberg-Marquardt迭代优化算法[14-15]对所有参数进行优化。其中,c、d、e初值为1、0、0,uc、vc初值分别为图像高宽的一半。至此,所有参数求解完成。
2 鱼眼相机快速标定方法
2.1 标定板设计
立体标定板由两两互相垂直的三块黑白棋盘模板构成,如图2所示。此标定板有如下优点:棋盘格成像后角点(即黑白方格的顶点,作为参数求取所需的样点)邻域内灰度梯度较大,易检测;立体标定板可包围相机,使棋盘角点遍布整幅图像;平面交界处绘有红色边界线,方便角点检测前进行所属平面划分,确定三维世界坐标。
2.2 标定过程
1) 图像采集
将标定板置于待标定相机前,调整标定板位置及角度,使图像中遍布棋盘角点,采集标定图像一张,如图3。
图2 立体标定板
Fig.2 Stereoscopic calibration board
图3 立体标定图像
Fig.3 Stereoscopic calibration image
2) 图像分割与角点检测
标定图像中没有复杂的干扰物,只有黑白方格与红色曲线,因而RGB三通道中,边界线处像素点的R通道灰度值明显高于G、B通道,其他区域三通道灰度值接近。求R通道与G或B通道的灰度差,采用自适应阈值进行二值化处理,可将边界线检测出来[16],结果如图4。
对三条边界线分别进行二次多项式拟合,依据边界线将原始图像分割为三个区域,形成三幅子图像,如图5。
图4 边界线检测
Fig.4 Boundary detection
图5 图像分割
Fig.5 Image segmentation
对三幅子图像分别进行角点检测并排序[3,6]。由于角点在子图像中的坐标与其在原始图像的坐标相同,因而可以得到原始图像中所有角点的图像坐标,如图6所示。
图6 角点检测结果
Fig.6 Corner detection result
3) 坐标映射建立
各区域的角点都有一维世界坐标为0,对应图5中三幅子图像分别为Y=0,X=0,Z=0。根据棋盘方格边长以及与世界坐标原点间隔的方格数,可得到所有角点的世界坐标。从而建立起二维图像坐标与三维世界坐标的一一映射,用于模型参数的求解。
4) 参数求解
依据标定原理,求解鱼眼相机参数。
以上标定过程在Visual Studio 2010平台下,用C/C++语言结合OpenCV编写标定程序,输入标定图像,得到鱼眼相机参数。
3 实验验证
图3的标定结果如下
a0=-1.536 2×102, a1=0,
a2=1.529 4×10-3, a3=-5.120 5×10-6
a4=1.846 7×10-8, c=0.999 2,
d=-1.301 2×10-5, e=2.750 1×10-3
uc=243.563 7, vc=323.453 1
上述相机参数中,只有平移向量T可以简单测得,旋转矩阵R由于旋转角较难测量而无法得到真实值,内参由于是抽象模型参数也无法获取真实值。因而难以通过所得参数本身来评价标定精度。
本文设计了四组对比实验对标定结果进行评价。
3.1 实验设计
3.1.1 标定实验设计
设计四组标定实验如下:
A、B两组采用立体标定法,标定板可在保证棋盘角点遍布整幅图像的前提下随意摆放;C、D两组采用平面多图标定法,各自用平面棋盘拍摄八幅图像进行标定,其中C组严格控制棋盘摆放位置,使棋盘绕相机光轴等角度旋转一周,D组棋盘摆放较为随意,如图7所示。
图7 四组对比标定实验
Fig.7 Four calibration experiments for contrast
3.1.2 验证实验设计
由于四组标定所获图像的场景各不相同,要进行结果对比,需设计一个统一的验证实验。在杂物较少的水平地面上摆放一张棋盘,棋盘长约1 m,宽约0.6 m,相机距地面高度1.2 m。采集鱼眼图像作为测试图像,如图8。
图8 测试图像
Fig.8 Test image
结合标定实验所得四组相机内参,对测试图像标定外参。此过程只需通过求解超定线性方程组即可得到外参[15]。由此获得同一场景的四组相机内外参数,用于对比分析。
3.2 实验结果及分析
3.2.1 鱼眼图像畸变校正
首先利用四组参数对测试图像进行畸变校正,从视觉效果上进行主观评价。为了便于分析校正效果,在校正基础上进行俯视投影。结果如图9所示。
在校正效果图中,A、B、C组的整体校正效果较好,将棋盘及地面的方格较好的还原;D组还原效果稍差,图像左下角和右下角可看出弯曲变形未完全校正。
3.2.2 世界坐标估计
利用标定所得相机参数,用角点的图像坐标逆投影得到其世界坐标的估计值,计算估计坐标与真实坐标的距离作为估计误差,如图10。世界坐标估计误差分析见表1。
由以上数据可看出四组实验中世界坐标的估计误差相近。粗略计算世界坐标估计值的相对误差,棋盘中心与相机距离取1 300 mm,估计误差取3 mm,则相对误差为0.23%,可认为误差较小,说明四组标定都有较高的标定精度。
图9 鱼眼图像校正效果
Fig.9 Fisheye image correction results
图10 世界坐标估计误差
Fig.10 World coordinates estimation errors
表1 世界坐标估计误差分析
Table 1 World coordinates estimation error analysis
其中,C组标定精度最高,A组与B组精度极为接近,D组精度相对略低。分析原因,A组与B组采用立体标定板,虽然标定板位置随意摆放,但都保证了棋盘角点遍布整幅图像,数据分布较好,因而求得的参数精度较高;C组标定板摆放位置经过精心设计以保证角点分布较均匀且遍布图像,D组为随意放置,角点分布散乱,无法保证获取的角点数据的分布情况,因而出现标定精度上的差异。
在标定过程的复杂程度上,A、B组采用的立体标定法,只需采集一幅图像,且因其标定板的立体设计,使得摆放棋盘时很容易将角点覆盖整幅图像,极易操作;C、D组采用的平面多图标定法,需多次采集图像,若要实现高精度标定,需要兼顾每幅图像中的棋盘位置,且若无辅助设备则人工操作较为繁琐。
4 结束语
本文提出了一种利用立体标定板对鱼眼相机进行快速标定的方法,根据鱼眼相机成像特点设计专用的立体标定板,并提出适用于立体标定的参数求解方法。经实验验证,与传统的平面标定法相比,该方法具有较高的标定精度和鲁棒性,同时简化了标定流程,操作简易,耗时较短。对于车载鱼眼相机安装等需要进行批量标定的场合,该方法具有实际应用意义。
无论是本文所述方法还是传统标定法,由于鱼眼图像边缘区域畸变较大,与图像中心区域相比样点较密集且棋盘方格变形较大,样点检测精度降低,对标定参数的精度存在一定影响。本文认为可以尝试样点非均匀分布的标定板,改善边缘样点检测精度以提高相机参数标定精度。