基于tsai方法的多项畸变模型单目摄像机标定

2015-10-21 19:28牛苗苗孙灿熊海涵
科技与企业 2015年12期

牛苗苗 孙灿 熊海涵

【摘要】在基于tsai一阶径向畸变标定方式的基础上,提出了一种改进算法。算法结合传统标定原理首先线性求解摄像机模型内外参数,作为初值,应用于带有二阶径向畸变,偏心畸变和薄棱镜畸变的图像矫正模型,通过最小二乘法求解6项畸变尺度因子。充分利用OpenCV视觉函数库对图像分步校正,避免了重复计算并判断透镜非线性映射。实验结果表明,改进算法提高了系统标定精度,降低了计算时间复杂度,可以实现较高精度的单目视觉标定及立体视觉匹配的应用需求。

【关键词】单目标定;畸变校正;立体匹配;tsai方法

计算机立体视觉技术的实现主要包括图像获取,摄像机标定,特征提取,立体匹配和三维重建五部分[1]。摄像机标定作为空间三维图景到成像二维平面的首要条件,是立体视觉系统图像深度测量的基础部分。而夹角,都不可避免的作用在摄像机透视成像过程上。对于以上镜头径向,切向畸变,目前标定方法主要分制造中所引起的光学镜头径向曲率变化,装配中导致 的多镜头光轴不同轴以及镜头与摄像机像平面存在的为传统标定方法[2],自标定方法[3]以及基于主动视觉的标定方法。典型的传统标定方法主要有abdel-aziz和karara提出的直接线性变换法(DLT),hallert提出的非线性优化法,tsai的两步法以及张正友的平面模板法[4]。这其中tsai[5]两步标定法的主要贡献是在RAC条件下,用DLT方法求解透镜矩阵系统参数,并以此作为初始迭代值,非线性优化估计畸变参数,减少了求解参数空间维数,提高了线性求解速度和非线性求解精度,并广泛应用于实时性较高的机器视觉场合。tsai的方法中只引入了一级径向畸变,对于一些精度要求高的场合,往往需要引入切向畸变。本文在tsai方法基础上,引入二级径向畸变,偏心畸变,薄棱镜畸变,全面分析摄像机透镜模型,结合OpenCV视觉函数库标定摄像机内外参数,并给出畸变校正后的棋盘格图像。

1.透镜成像及畸变校正

图1为广泛应用于工业非接触尺寸测量的基于径向畸变的摄像机针孔模型[6],O-XWYWZW为全局坐标系,摄像机透镜光心与坐标系O-XCYCZC的原点重合,xc轴和yc轴分别与xw轴yw轴平行,zc轴与zw轴平行,O-XY为像平面坐标系,以mm为单位,O-UV为像素坐标系,以pixels为单位,点P在像素坐标系O-UV下的离散坐标(u,v)恒为整数值,?表示摄像机焦距,标定点P的成像过程由以下几步坐标系转换完成:(1)全局坐标系到摄像机坐标系的刚体变换;(2)像平面坐标系到像素坐标系的变换;(3)摄像机坐标系到像平面坐标系的变换;经过上述坐标系齐次变换,得到点P全局坐标与像素坐标关系如下[7]:

式(1)中,M1为摄像机内参数矩阵,ax,ay分别为x轴y轴上尺度焦距,单位为pixels,u0,v0为图像中心坐标,M2为摄像机外参数矩阵,为3×3正交旋转矩阵,平移矩阵,M为摄像机投影矩阵。摄像机标定的目的就是精确求解内参数?x,?y,u0,v0和外参数矩阵R,T。由于无法避免透镜畸变,(1)式中的待求解参数并不能代表实际的透镜参数,因此需要引入非线性畸变校正摄像机投影矩阵各项参数。成像点 的坐标畸变转换如下[8]:

式中,(xu,yu)和(xd,yd)表示点p在像平面坐标系O-XY下的无畸变坐标和畸变坐标,ζx,ζy为投影畸变在像平面x轴和y轴上的映射,tsai的标定方法中只考虑了一阶径向畸变,限制了复杂背景下对摄像机标定的高精度要求,扩展带有二阶径向畸变,偏心畸变和薄棱镜畸变的校正模型如下:

式中r2=xd2+yd2,k1,k2为径向畸变尺度,p1,p2为切向畸变尺度,ε1,ε2为薄棱镜畸变尺度在成像平面上的径向和切向分量。通过求解(1),(3)式摄像机参数,空间点的三维坐标得以重建。

2.改进的标定方法

首先线性求解摄像机投影矩阵M,然后以M各项投影参数为初始迭代值,结合三项畸变模型,求解畸变系数,最后以中心点坐标区域局部最小值为数据拟合函数,全局优化所求摄像机内外参数初值和畸变因子。具体求解方法如下:(1)求解摄像机内外参数。对于空间i=1,2,3...n个标定坐标点,由式(1)可以得到:

其中,(Xwi,Ywi,Zwi,1)表示标定靶第i个点的三维坐标的齐次坐标, 表示第(ui,vi,1)个点的图像坐标的齐次坐标,为投影元素。为了消除摄像机坐标Zci的影响,可以将(4)式用线性方程表示如下:

根据线性模型的成像原理,每个已知的空间点全局坐标和像素坐标都不同的对应一个式(5)所表示的两个线性方程,由(5)式可知,线性方程一共有12个待求投影参数,通常认为空间两坐标系的变换并不受相乘系数的影响,因此对于(5)式,可令m12=1,当有足够数量的对应点个数i,满足2i≥11时,用最小二乘法对上述线性方程组求解,可在迭代过程中得到投影矩阵参数mj。为了进一步求解摄像机内参数,旋转矩阵和平移矩阵,将式(1)所表示的投影矩阵与摄像机内外参数矩阵的关系扩展如下:

(6)

r3作为上述正交单位矩阵的第三行元素,|r3|=1。由等式两边左右对应关系可知,m12m3=r3,可以求出m12=1/|m3|,并结合(5)式所求投影参数,可以得到图像中心坐标点,,透镜尺度焦距在像平面坐标系X轴上的分量,在y轴上的分量,得到上述四项内部参数后,旋转矩阵和平移矩阵的各向量参数可以线性求出:

(2)求解畸变系数

综合(1),(2),(3)式可以得到下式畸变坐标到全局坐标的转换方程组:

对于图1中的共面标定靶,Zw=0,式中旋转及平移参数均已由第一步线性求出,将式(7)中的上下两方程相除可得:

式中包含有限个畸变参数,其中A1=r11Xw+r12Yw+tx,A2=r21Xw+r22Yw+ty,标定理想状态下的n个非共线图像坐标点和对应的全局坐标点,可知式(3)是一个关于各项畸变参数的线性方程组,畸变尺度因子可用最小二乘法通过某次的迭代求得。(3)标定过程程序化。利用 OpenCV(Open Source Computer Vision Library)强大的图像处理和矩阵运算能力,考虑上述摄像机透镜模型和三项畸变校正多项式,对摄像机标定过程进行深入研究,算法框图如图2。第一步处理采集到的多幅平面棋盘格图像,方法主要调用开放函数库中的cvFindChessboardCorners()角點提取函数,用cvFindCornerSubPix()函数结合Bouguet算法[9],再对提取到的角点进行亚像素求精。第二步调用cvCalibrateCamera2()函数可以得到各项标定参数。第三步分两步调用cvInitUndistortMap()和cvRemap(),其中cvInitUndistortMap()函数计算非线性映射,cvRemap()应用于映射结果校正图像。如果畸变映射不变,则直接利用cvRemap()矫正棋盘格图像。

3.实验与结果分析

3.1实验配置。由于3D标定物的精度难以保证,这里采用多个空间方位角度不同黑白交替排列棋盘格平面标定模板,如图3所示。目标棋盘格标定板尺寸270mm×210mm,每个棋盘格尺寸为30mm×30mm,中心距30mm,阵列9×7,摄像机与标定靶面距离控制在100mm以内

3.2实验数据与分析。实验时,摄像头一共采集6副不同空间方位的图像,应保证获取的棋盘格占据成像平面大部分区域。提取成功的图像如图4所示,前一行的最后一个角点与后一行的第一个角点由彩色直线相连,以判断是否找到所有角点,每一行角点都用不同颜色的圆圈区别。为了验证本文标定方法的可行性,实验对比tsai标定法,使用立体视觉系统左摄像机计算两种方法的摄像机内外参数以及畸变尺度系数,如表1所示。可以看出改进算法得到的光学中心坐标(u0,v0)与tsai的方法相近,而?x,?y的值比tsai的标定结果更接近真实值,标定算法的精度评价用空间真实坐标点与重建后对应的世界坐标点的均方差平均值表示:

由(9)得到的标定误差范围为±0.8mm,满足实际应用标定的精度需求。

3.3校正畸变图像。在验证了上述角点提取以及精确标定过程的可靠性之后,图像的枕形畸变,偏心畸变和薄棱镜畸变得到了适当的矫正,图5为经过修正后的图4棋盘标定格图像,与图4相比可以看出,算法可以显著纠正透镜成像时发生在图像边缘的径向畸变和切向畸变。

4.结论

试验方案结合参数对比,验证了改进算法的鲁棒性,试验设备及场合容易搭建,标定过程无需人工参与。算法在引入多项畸变参数的同时,充分考虑了OpenCV函数库最小二乘法的特性,通过对畸变图像分步校正,避免了重复计算并判断透镜非线性映射,降低了算法迭代次数,是一种简单,有效的标定算法,适用于各类视觉标定工程及立体视觉匹配中。

参考文献

[1]Stephen T. Barnard, Martin A. Fishchler. Computational stereo [J]. ACM Computing Surveys, 1982, 14(4): 553-572.

[2]Peter F. Sturm, Stephen J. Maybank. On plane-based camera calibration: a general algorithm, singularities, applications [C].// IEEE Conference on Computer Vision and Pattern Recognition. Fort Collins, USA, IEEE, 1999: 432-437.

[3]Ma S. D.. A self-calibration technique for active vision system [J]. IEEE Transactions on Robotics and Automation, 1996, 12(1): 114-120.

[4]Z. Zhang A flexible new technique for camera calibration [J]. IEEE Transactions on Pattern Analysia and Machine Intelligence, 2000, 22(11): 1330-1334.

[5]TSAI R Y. An effcient and accurate camera calibration technique for 3D machine visio [C].//IEEE Conference on Computer Vision and Pattern Recongnition Miami Beach: FL, 1986: 364-374.

[6]馬颂德,张正有.计算机视觉—计算理论与算法基础[M].北京:科学出版社,1997:52-56.

[7]赵宣铭.一种基于Tsai法的摄像机改进标定法.西安工程大学学报[J]. 2011,25(4):560-561.

[8]赵雪峰,仲晓敏,兰义华.标定靶面平行成像平面时Tsai算法的改进. 计算机工程与设计[J].2011,32(3):1019-1021.

[9]http:// www.vision.caltech.edu/bouguetj/calib_doc.