汤小伟,杨玉萍,张 磊,2,邢 强
(1.南通大学机械工程学院,江苏 南通 226019;2.约克大学拉德松学院机械工程系,加拿大 多伦多,M4C 1A1)
计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体,而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。摄像机对靶标上的特征点的图像进行采集,再利用这些图像坐标和特征点对应的世界坐标建立方程,解方程获得摄像机参数[1-4]。
常用摄像机标定方法有Faugeras 标定法[5],Tsai 两步法[6]和张正友平面标定法[7]和其它非线性优化法[8]等。Faugeras 标定法是线性标定方法的代表,其实现简单。但该方法未考虑摄像机特性,对于摄像机标定模型只当成一般数学问题求解,并且将不同量级的参数进行混合求解,使得一些参数的求解受到了本无关联的已知参量的影响,导致误差放大,尤其是求解的图像中心点与实际的图像中心有一定偏差,有时偏差较大,这些偏差还会继续传递下去。非线性优化类的方法虽然可获得高的标定精度,但此类方法对初值要求高,选取不当容易使得误差变大,另外其算法繁琐耗时。Tsai 标定法和张正友标定法是前面两者之间的妥协方法,这两种方法主要依靠更多幅图和非线性的优化提高精度;其次这两种方法由于程序包封装,使得用户难以自行用C 语言编程用在实时场合,一般只能按其规定进行离线扩展优化。而简单的Faugeraus 线性标定方法比较方便,可自行编程应用于实时场合,如对于焦距等参数随时改变且需要实时标定参数的交通保安视频监控、机器人视觉等场合。但是Faugeraus 方法存在精度偏低的问题,因此探讨精度高的线性标定方法仍有积极的意义。
较多文献针对标定精度不高的问题开展了研究工作:文献[9]在根据Tsai 两步法得到初始标定值的基础上,再对所有参数进行非线性优化,得到最终参数值。文献[10]提出一种新的畸变模型,将多种镜头畸变考虑在其中,并用迭代法解出精确解。文献[11]利用非线性优化算法结合线激光焦点优化求精。上述文献中,可以发现大多是后期考虑畸变并进行非线性的优化,而在线性标定阶段进行改善的不多。事实上,线性标定阶段的结果对于后期的非线性优化有着很大影响。
根据上述分析,针对Faugeras 标定存的在问题,提出了一种新型的摄像机线性标定方法,先将与横、纵坐标相关的参数分开求解,而后将剩余参数进行混合求解,最后考虑畸变进行线性优化,避免了传统方法将所有参数过早混合求解的弊端,大大提高了线性标定阶段的精度。
文献[5]在1986 年提出的线性模型摄像机标定方法对摄像机内外参数进行标定。该方法在摄像机前方放置一个立体靶标,该目标物上有一系列位置预知的点可作为特征点,摄像机获取目标物上特征点的世界坐标和相应的图像坐标建立方程即可计算出摄像机的内外参数。
根据公式:
式中:(u,v)—特征点在摄像机图像坐标系中的坐标;(xw,yw,zw)—景物点在世界坐标系中的坐标,且:
将式(1)消去zc,对于n 个在世界坐标系已知坐标的空间点,可得2n 个方程构成的方程组,方程组分式上下同除以m34,并不影响结果,方程可简化表达为:Am′=B。
根据R 是单位正交矩阵,利用其性质,从M 矩阵分解出摄像机参数:
通过上述求解过程,可发现该方法未考虑摄像机特性,对于摄像机标定模型只当成一般数学问题求解,并且将不同量级的参数进行混合求解,使得一些参数的求解受到了本无关联的已知参量的影响,导致误差放大,这些偏差还会继续传递下去,尤其是求解的图像中心点与实际的图像中心偏差较大。Faugeras 方法先行求解m34,而后许多参数依赖于该值精度,造成对m34求解值精度的敏感,结果总体上精度低。
Faugeras 的方法未利用在标定时,已经存在的现成条件或者近似条件。比如,根据摄像机模型的特性,可以近似把图像中心作为主点位置,即认为u0,v0已知,这样内参数只剩下kx与kv,求解参数时先将与横、纵坐标分别相关的参数分开求解,然后将剩余参数混合求解,避免了传统方法将所有参数过早混合求解的弊端。
根据式(1)列出基本方程组:
将m14及m24单独放在右边,考虑m14,m24不带其它参数,虽然其本身带的内外参数不少,但在下面的推导中可以将其进行处理,利于问题的求解。
式中:Au—n×7 矩阵;Bu—n 行的列向量。
这组方程只与像素的u 坐标有关,减上不必要的干扰可提高精度。通过最小二乘法解出mu向量后,根据式(4)与式(11)可知:
由于此处已获得m34,应根据式(17)与式(18)更新m14,m24。然后再根据式(14),式(16)更新kx,ky。又:
由上可知,r31,r32,r33不仅与mu31,mu32,mu33,也与mv31,mv32,mv33有关,因此不宜使用前述独立式求r1,r2的方法求解,需要综合u和v 两方向的参数求解,减小整体误差。对于式(13),式(15)建立超定方程组:
运用广义逆矩阵的解法,得最小二乘解:
实验中使用的实际图像坐标并非理想图像坐标,摄像机的镜头是存在畸变的,这意味着利用新方法求取的内外参数模型中的线性参数具有一定误差。由研究可知,畸变主要分为径向畸变和切向畸变。
摄像头径向畸变采用四阶畸变模型,并且假设摄像机坐标系的x 轴,y 轴的畸变相同,其数学模型为:
其中r2=x′2+y′2,(x′,y′)为成像点在归一化成像平面上无畸变的理想坐标;(x,y)为归一化成像平面上的实际坐标;k1和k2分别为二阶和四阶径向畸变系数。
由摄像机内参模型得:
在图像的各种形式的畸变中,图像径向畸变占据着主导地位。而切向畸变在实际的相机中几乎不会引入明显的切向畸变。所以只考虑径向畸变。
将式(25)带入式(24),得:
式中:(u′,v′)—无畸变的理想图像坐标;(u,v)—实际图像坐标;(u0,v0)—光轴中心点图像坐标;(x′,y′)—成像点在归一化成像平面上无畸变的理想坐标;(x,y)—归一化成像平面上的实际坐标。
将式(26)改写成矩阵形式:
利用最小二乘法,可以求解出畸变系数k1和k2。
为了验证标定方法的正确性,选用标准三维棋盘格立体靶标,黑白格尺寸统一为(27×27)mm。摄像机采用CCD SR-200AP-250AP 型数字摄像机,选用的采集卡为大恒图像采集卡,保持每次拍摄时镜头不变,只是对三维棋盘格立体靶标位置进行变化,在不同的位置共拍摄6 张图片,如图1 所示。摄像机距离标定模块大约(500~700)mm,图像大小为640*480 个像素点,经过角点检测算法提取特征点,通过计算机测定得到角点图像像素坐标,每幅图像采集10 组特征点。
图1 标定图像Fig.1 Calibrated Images
实验中选取主点坐标值为:u0=320/pixel,v0=240/pixel。并对其进行VC 程序实现。根据提取的角点及靶标的三维世界坐标,利用摄像机线性模型,建立靶标空间点坐标与图像像素坐标之间的关系。利用新方法进行标定,然后利用标定参数求取畸变系数,选取的其中3 组内参数结果,如表2 所示。
表2 摄像机标定内参数结果对比Tab.2 Comparison of the Results of Internal Parameters in Camera Calibration
同样也可以对标定的外部参数进行对比,采用基于张正友标定法Matlab 标定工具箱标定得到经过非线性优化的外部参数作为参考精确值,计算这里方法和Faugeras 方法旋转矩阵与平移矩阵参数相对误差。计算6 张图像内外参总体平均相对误差,如表3 所示。结果表明新方法标定结果具有更高的精度。线性标定完成以后,用解得摄像机内外参数结合标定点坐标重新投影,计算反推像素点坐标值和实测图像坐标误差,并将平均像素误差来衡量标定结果精度高低。
表3 多张图像内外参数误差对比Tab.3 Error Comparison of Internal and External Parameters of Multiple Images
带有畸变的线性标定完成以后,用解得摄像机内外参数结合标定点坐标重新投影,计算反推像素点坐标值和实测图像坐标误差,并将平均像素误差来衡量标定结果精度高低。
平均像素误差为:
平均像素误差Δr¯的值越小[12],则表明所得结果越好,误差越小。经计算,Faugeras 标定法的平均像素误差为10.47 个像素,新方法的平均像素误差可达到1.80 个像素,如表4 所示。结果表明,改进的线性方法的精度明显高于传统的Faugeras 标定法。
表4 多张图像反投影误差Tab.4 Projection Error of Multiple Images
根据表2 可发现Faugeras 方法标定出的图像中心点u0,v0有时偏差较大,显然不符合实际在(320,240)附近的情况。而新方法这种假设与实际情况更符合,其也带来其它标定参数精度的提高。但是为了获得更精确的结果,今后的工作将以多幅图像进行标定,然后对结果进行全局非线性优化迭代。提出的新方法,未进行全局非线性优化,便已得到了较高精度,为以后全局非线性优化奠定了良好的基础。
当前诸多摄像机标定方法没有在前期线性标定阶段进行改善,大多在后期考虑非线性优化。而线性标定的结果是后期非线性优化的基础,初值求解不当可能无法获得全局最优解,因此线性标定的精度相当重要。经典的Faugeras 线性标定法把标定过程当成一般的数学问题求解,未能利用摄像机的特性加以利用与约束,造成精度偏低。针对该问题,提出了一种线性标定方法。新方法充分考虑摄像机的特性,把图像中心作为主点位置,同时将与横、纵坐标分别相关的参数分开求解;而后将剩余参数进行混合求解,最后考虑畸变进行线性优化,得到畸变系数。新方法避免了传统方法将所有参数过早混合求解的弊端,是精度提高的关键,同时新方法也考虑畸变纠正,在线性标定阶段实现了精度的尽可能提升。最后的实验结果表明新方法比经典Faugeras 方法标定精度明显提高。这里的方法相比较Tsai 方法和张正友方法比较简单,可由研究人员自己编程实现,只需要一幅标定图像,可实现初值求解,因此可应用于在线实时标定场合,克服了Tsai 方法和张正友方法软件包基本只能进行离线标定的局限。新方法也可使用多幅图像,精度有望更高。主要研究线性标定方法的改进和畸变系数初值求解,今后将进一步研究在新方法中考虑镜头畸变的非线性优化,有望在此基础上得到更精确的解。