摘要:由于加工误差和装配误差的存在,摄像机光学系统与理想的小孔透视模型有一定的差别,致使物体点在摄像机平面上实际所成的像与理想成像之间存在不同程度的非线性光学畸变。为了提高图像检测、模式匹配等定量分析的准确性,必须对这一类畸变进行修正。该文以针孔摄像机模型为基础,综合考虑了摄像机的透镜畸变效应,并借助于开放计算机视觉函数库OPENCV,实现了一种基于张正友摄像机标定的改进算法。利用检测得到的角点,获得物体的世界坐标和图像坐标。结果证明该文中的标定算法实现简单,精度高,稳定性好。
关键词:摄像机标定;非线性畸变;针孔模型;角点检测;坐标
中图分类号:TP751文献标识码:A文章编号:1009-3044(2008)34-1728-02
A Method of Nonlinear Calibration of Camera
WANG Chun-lei, ZHU Jin
(Department of Information and Electronics Engineering, Tongji University, Shanghai 201804)
Abstract: Because of having processing error and assembling error the difference exists in the model of the camera optical system and pinhole model, which results to nonlinear distortion between real image and ideal image to some extent. To improve the accuracy of such quantitative analysis as image measuring and pattern matching, it must be corrected. Based on the pinhole model and considered on the nonlinear distortion, this paper presented a method, which was based on the improving method of Zhang on the platform of OPENCV. On the basis of the detecting corners, the world points and image points can be got. The result proved the method is easy and accurate.
Key words: camera calibration; nonlinear distortion; pinhole model; detecting corners; axis
1 引言
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定。无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性[1]。因此,做好摄像机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
目前已提出了很多标定方法,按其求解算法大致可分为线性法、非线性法、两步法。传统的线性法采用最小二乘法求解线性方程组获得转换参数,算法速度快但没考虑摄像机镜头的畸变,准确度欠佳[2]。非线性摄像机标定问题的基本思想是首先测量一组基准控制点在图像平面上的投影,计算它们与实际测量位置之间的偏移量,将这些偏移量代入摄像机模型方程中,利用非线性优化算法求解出摄像机参数。本文分两步实现非线性标定。第一步是基于针孔模型,采用线性方法直接得到大部分外部参数和一些主要内部参数的初始逼近值。第二步是基于非线性畸变模型,在第一步的基础上利用非线性优化算法得到余下参数在最小二乘意义下的优化解。
2 摄像机标定原理
2.1 考虑畸变的摄像机模型
摄像机的成像过程可以通过一个数学模型来大致地模拟,通过它可以获得被测物体与图像之间的几何关系。本文采用的成像模型基础是小孔透视模型。由于实际的成像过程是一个复杂的光学过程,而小孔透视模型是理想的线性模型,它并不考虑镜头畸变的影响,所以难以精确地描述这一光学过程。为了使模型更客观地反映数码相机的成像过程,需要对小孔透视模型进行必要的修正,引入反映畸变影响的修正系数[3]。
设(Xw,Yw,Zw)为世界坐标系中物体点P的三维坐标;(X,Y,Z)是P在摄像机坐标系中的三维坐标;(Xp,Yp)是理想Pin-hole摄像机模型下P点的图像坐标;(Xd, Yd)为P点的实际图像坐标,d为透镜畸变;(u,v)是P点的计算机图像(帧存)坐标,以象素为单位;(UO,VO)为计算机图像(帧存)中心坐标,以象素为单位。摄像机模型的建立就是从(Xw,Yw,Zw)到(u,v)的过程,其变换步骤为:
1) 世界坐标系(Xw, Yw, Zw)到摄像机坐标系(X,Y,Z)的变换。
■ (1)
式中:R为旋转正交矩阵,T为平移矩阵。
■(2)
2) 摄像机坐标(X, Y, Z)到图像平面坐标(Xp, Yp)的理想投影变换。
■(3)
3) 从理想平面坐标(Xp, Yp)到实际平面坐标(Xd, Yd)的变换(考虑了透镜畸变)。
■(4)
式中:r2=x2+y2; kl,k2为径向畸变系数;k3, k4为切向畸变系数。
4) 从Pd(Xd, Yd)实际平面坐标到到计算机(帧存)坐标(u, v)的变换。
■ (5)
其中:■ (6)
各参数的意义:f为摄像机的有效焦距;sx为比例因子,用来适应在计算机图像(帧存)水平方向(X方向)上取样带来的种种不确定因素;dpx为计算机图像在水平方向上相邻两象素之间的有效距离;dpy为计算机图像在垂直方向上相邻两象素之间的有效距离[1]。
2.2 特征点提取
摄像机标定在机器视觉中有着重要的应用,如三维重建以及机器人空间位置的确定等。常用的标定方法都需要从拍摄的标定模板图像中选取特征对应点。数据的测量值往往会因为实际操作中这些对应点选取的不精确性而引入较大的误差。如果仅用手工的方法来选择特征点,不仅麻烦,而且手工选取的特征点是不能保证数据的精确性的。
本文使用棋盘格的图片作为标定的模版,获取角点的图像坐标,而且很容易得到角点的世界坐标。具体步骤如下:1) 对采集到的图片进行灰度化;2) 对灰度图做一个像素的腐蚀滤波,分离连接点;3) 用平均值二值化方法,对图像做二值化处理;4) 对二值化图像进行边界搜索,连接,查找闭合曲线,记录角点;5) 查找四边形;6) 利用临近点,计算棋盘格标定物成像的角点。
2.3 摄像机标定过程
摄像机参数分内参数和外参数,其中外参数4个、内参数6个。外部的6个参数是相应于R中的3个独立参数(3个欧拉角)和相应于平移向量的3个分量Tx, Ty, Tz;内部的4个参数是(fx,fy,UO,VO)。还需求解的有形变参数(k1,k2,k3,k4)。
整个标定过程可以分为两步:第一步是不考虑透镜畸变的影响,在小孔透视模型基础上直接利用线性方程组求解出摄像机参数的内参数和外参数初值。为保证精确性,应多建立线性方程,利用最小二乘法求解参数。由于没有考虑畸变,得到的参数并不准确。第二步考虑畸变的影响,建立数据拟合目标函数如下式[4]。
min F=■(Ui-ui)■+■(Vi-vi)■(7)
其中(Ui,vi)是从待标定图像中拾取N个目标点的图像坐标,(ui,vi)是对应的实际物体的N个三维点通过上面得到的内外参数计算出来的图像坐标。从结果可以看出,目标函数是由一组平方和组成,若得到的目标函数值越小,则表示数据拟合的越好,求得的参数越精确。迭代的初值有第一步求得,其中的形变参数初值可设为0。
2.4 算法实现
在上述理论的指导下,在算法设计过程中采用了以下思路:由于系统要得到标定物图像上特征点的坐标,如果采用手工采集图像坐标的方式,则精度很难得到保证,所以我们采用棋盘格图片作为模版,利用角点检测技术,确定棋盘格图像上的内角点的图像坐标,而且我们很容易得到相应点的世界坐标(其中我们规定Z=0)[5]。这样不仅保证了图像点坐标的精度,也提高了最终标定结果的精度。算法实现步骤:
1) 采集图像资源。我们选择黑白棋盘为平面模板,用CCD摄像机对棋盘拍摄3张以上不同照片。数量越多,结果越准确。选取其中几张照片作为待标定的一组图像。
2) 检测图像中的内角点。首先对图像根据上面的所描述的方法进行预处理,然后可以得到模版中角点的像素级坐标。
3) 对所选取的图像进行摄像机标定。输人特征角点的世界坐标后,根据我们研究得到的摄像机坐标模型,计算后得到该摄像机的内外参数以及径向畸变参数和切向畸变参数。
3 结论
实验中采集640*480的图片10张,对这些图片做标定后得到的结果如图1、图2、表1。 (下转第1732页)
(上接第1729页)
参考文献:
[1] 马颂德,张正友.计算机视觉——计算理论与算法基础[M].北京:科学出版社,1998.
[2] 邱茂林,马颂德,李毅.计算机视觉中摄像机定标综述[J].自动化学报,2000,26(1):43-55.
[3] 杨必武,郭晓松.摄像机镜头非线性畸变校正方法综述[J].中国图像图形学报,2005,10(3):270-274.
[4] 王晖.一种考虑透镜畸变的高效摄像机标定方法[J].武汉科技学院学报,2007,20(11):36-39.
[5] Zhang Z Y. A flexible new technique for camera calibration[J]. IEEE Trans. Pattern Analysis and Machine Intelligence, 2000,22(11):1330-1334.