卢 玥,刘 学 军,王 美 珍,甄 艳
基于数位的相机径向畸变参数计算
卢 玥,刘 学 军,王 美 珍,甄 艳
(南京师范大学虚拟地理环境教育部重点实验室,江苏 南京 210046)
相机畸变是影响基于图像的几何量测、三维重建精度的重要因素之一。空间中一条直线在透视投影作用下理应成为一条直线,但因畸变其构象发生弯曲,通过场景信息中共线点的透视投影不变性可以求解出相机径向畸变系数。考虑畸变的渐变特性,该文设计了基于数位的相机径向畸变参数解算方法:将相机一阶径向畸变系数k1用科学计数法X×10-m表示,依次确定其指数m及尾数X,直至满足精度的设定,最终求解出k1的值。最后通过模拟和实例数据对该方法进行了分析验证。
径向畸变;相机标定;场景信息;数位
基于图像的几何量测、三维重建需要高质量的图像。然而相机光学系统的设计、加工和装配中存在一定误差,导致所获取的图像包含着变形与失真,这些失真虽然不影响成像的清晰度,但却影响成像的几何位置精度,因此在成像几何模型描述中,需考虑相机镜头的畸变因素,特别是对于大视场、精度高的应用场合。
为消除镜头畸变所带来的误差,需要对图像进行畸变校正。目前相机畸变校正的方法主要有两种:一种是传统的基于畸变混合模型的标定方法,以Tsai、Heikkila等为代表,将相机内外参数与镜头畸变参数一起进行非线性优化,这样虽可获得高精度的结果,但缺点是需要通过特定的标定模板,获取特征点的三维坐标进行标定,且非线性优化过程复杂耗时,其结果难以保持一致性[1];另一种是畸变分离的标定方法,利用图像中的场景信息,如直线特征的投影不变性来标定相机的畸变参数,主要有Levenberg-Marquardt优化算法求解[1-3]、二分法逐渐逼近最短距离求解[4,5]、基于交比不变性的镜头畸变参数标定方法[6]等,该类方法仅仅利用图像信息,标定的过程简单,但非线性优化或二分求解一般不能获得稳定解,有时无解;基于交比的方法则对图像内容有较高要求。本文采用畸变分离的相机模型,利用图像畸变的渐变特性,提出了一种基于数位的相机径向畸变校正方法,以便快速、高效地标定相机的径向畸变参数,修正图像的畸变,进而提高三维量测与重建的效率和精度。
相机的光学畸变主要分为3类:径向畸变、偏心畸变和薄棱镜畸变。Tsai[7]认为考虑过多的畸变可能导致计算复杂性增加,计算结果不收敛反而得不到较高精度,在一般情况下,考虑一阶或二阶径向畸变是较好的选择[8-10],本文只考虑相机的一阶径向畸变;周富强等[1]证明,非广角镜头相机在其主点距图像中心偏移较小时,标定结果产生的误差不大,故本文假设相片的主点位于图像中心。径向畸变会引起图像点沿径向移动,离中心点越远,其变形量越大。正的径向畸变导致起点向远离图像中心的方向移动,其比例系数增大,称为枕形畸变;负的径向畸变导致点向靠近图像中心的方向移动,其比例系数减小,称为桶形畸变(图1)。
图1 径向畸变类型Fig.1 Radial distortion type
相机的径向畸变模型可由下列数学公式表示[1,11,12]:
1.2.1 原理 空间中一条直线在透视投影的作用下,理应映射为一条直线,但由于相机畸变的存在,同一条直线的像点呈曲线分布。给某个无畸变像点加一个径向畸变值k1,该点则会根据不同的值发生不同的径向畸变;同理,对有一定径向畸变的像点,总存在某个径向畸变值k1,使其能够恢复理论像点的位置。根据径向畸变的原理可知,这种像点的位移是渐变的,畸变点在渐变值k1的作用下,距理论点的距离从原始值开始不断缩小,直至为零后又不断增大。因此给定k1一个初始值,使其渐变,当畸变点与原始点的距离为零时,即得到该点的一阶径向畸变值。同理,若图像中存在一条直线,拟合出经过该点阵的直线,并计算出所有点距离该拟合直线的距离d。给定一个k1的初始值,使其渐变,当畸变点阵至拟合直线的距离的平方和达极小值(最小值)时,即可求出一阶径向畸变值k1(图2),而传统LM优化算法,其设定目标函数为每组共线点到拟和直线的距离之和,优化使其达到最小可估计镜头的畸变参数。
图2 畸变点阵的校正Fig.2 Distortion correction of collinear points
1.2.2 畸变参数的数位计算法 径向畸变值k1通常可表示为X×10-m,其中X为任意实数,m为正整数,表示径向畸变参数值k1的数位。畸变参数的确定就是计算X和m。按照代数知识,X可分解为X=x0+0.1x1+0.01x2+…,xi∈{0,1,2,…,9}。因而对X的计算可转化为对xi的确定。又由于xi只可能存在于0~9之间,故可枚举确定xi。考虑到m、xi间的独立性,在k1初始值给定情况下,首先确定m,然后依次确定x0,x1,x2,…,直到满足预设精度为止(根据精度需要设定)。如此可形成k1序列{X1,X2,…,Xn},由于k1的渐变性,在该序列中必然存在一个值Xn,使得畸变点阵到拟合直线的距离最小,该值即为k1(图3)。
图3 算法示意Fig.3 Algorithm diagram
可通过如下方法确定m和xi:
(1)确定m。当畸变值k1为0时,计算畸变点阵至拟合直线距离的平方和d1;取x0=1,m=5为畸变值的初始值(一般情况下,普通非量测型相机的畸变量级在10-8左右,即m=8),计算畸变点阵至拟合直线距离的平方和d2;观察d1和d2变化:如果d1<d2,说明量级m过大,须降低一个数位,d1不变,d2为m=m+1时对应的距离平方和,重复上述比较直至d1>d2;如果d1>d2,一种情况是此时d2还在最小值左侧,则m值确定为当前值,进入下一步计算,另一种情况是此时d2在最小值右侧,但仍比d1值小,此时对k1加一个微小值,判断距离平方和是否增加,如果是,m=m-1,否则m值确定为当前值,进入下一步计算。
(2)确定xi。m确定之后,xi所在的数位即可确定。首先计算x0,x0初始值为1,此时计算畸变点阵至拟合直线距离的平方和d1;取x0=x0+1,计算畸变点阵至拟合直线距离的平方和d2;观察d1和d2变化:如果d1>d2,按照已递增的x0重复以上步骤,计算出d1和d2并继续比较,直至d1<d2;如果d1<d2,则x0=x0-1。用相同方法依次计算x1、x2等值,直至满足精度需要。
表1给出了一个求得k1值的示例流程。
表1 示例流程Table 1 Example process
1.2.3 算法流程 根据以上原理,设计出的分数位畸变参数算法流程如下:
(1)在图像上提取某条直线上的若干特征点,得到这些特征点的像点坐标并用最小二乘法拟合过该点阵的直线。
(3)判断出畸变类型后,对每一幅图像,由先验知识为其设定畸变初始值及精度位数,将相机一阶径向畸变系数k1用科学计数法X×10-m表示(X=x0+0.1x1+0.01x2+…),利用畸变产生的渐变性,依次确定其指数m及尾数X。首先设定畸变初始值1×10-n(n>m),k1按初始数位的最小单位1×10-n逐渐累加,观察点阵距拟合直线的距离平方和d值的变化,若d较原始值缩小,则继续给k1一个1×10-n的增量,若d增大,则该数位前的系数确定,降低一个数位,并以同样方法求得该数位前的系数,直至满足精度的设定,最终求解出k1的值。
利用Visio 2003绘制两张10×9的表格,分别为400×300像素(图4)和800×600像素,编写算法对图片上各点增加不同的一阶径向畸变值,得到畸变图像(图5、图6)。利用分数位标定算法对畸变图像进行纠正,取30组样本(图4中每条标号直线取样三次),每组15个点,解算出的畸变值如图7、表2。由实验发现,分辨率一定的情况下,畸变值越大,其结果的精度越高;分辨率不同时,分辨率越高,同一数位的畸变值标定结果越好。
表2 仿真实验统计结果Table 2 The statistics of emulational results
使用Nikon D80型号数码相机进行拍摄,焦距18 mm,分辨率为3 872×2 592像素。取图像中的12条直线目标(图8),利用本算法和LM优化算法分别求解,结果见表3。从实验可以看出,该方法与传统非线性优化标定方法的标定精度相当,且结果非常稳定。
图8 真实场景图像Fig.8 Real environment image
表3 场景实验结果Table 3 Real environment results
分数位求解相机径向畸变方法原理简单:随着畸变系数值逐级累加,畸变量呈递增或递减的规律。与已有的算法相比,该方法更容易实现且结果更为稳定。二分法求解径向畸变须设定最小阈值,在阈值设定不当时容易产生无解的情况;交比法需要知道图像中一条直线目标上4个特征点形成的线段比值关系,不适用于比值关系未知或者直线目标不清晰的情况;而非线性优化法需要最小化复杂的代数函数,其结果也不稳定。分数位求解方法则具有以下优势:1)对场景的要求不高,只需一条直线目标就可以进行标定,具有多条直线目标的场景,通过多次计算取均值即能获得较为满意的结果;2)由于畸变系数是逐级累加的,该算法必然有解,且结果在不同分辨率的图像下均能保证一定的精度;3)该方法可以根据需求设定结果的精度,而且可以预估循环的次数范围及算法效率。
虽然本文采用畸变值累加的原理,但是基于数位的方法大大减少了循环次数。假设一幅图像的畸变系数为1.235E-8,给定的初始值为1E-6,则只需要16次循环判断即可解出。算法的效率与设定的精度位数n有关,最小循环次数为n+1(各数位系数都为0);最大循环次数为(n+1)×9左右(各数位系数都为9,根据k1初始值的不同循环次数有所偏差)。与非线性优化法与二分法相比,本算法不用求解复杂的非线性方程,虽然循环次数较多,但方程求解简单,计算量大大减少。
由一阶径向畸变模型可以得知,某像点所产生的畸变大小与其距离主点的长度有关。假设主点位于图像中心,一幅相片中畸变最大的点在其4个角点,此时,像点半径为图像对角线长度的一半。在计算过程中,像点距主点的距离以像素为单位计算,因此,图像的分辨率越高,其产生的像素位移就越大,由以上的仿真结果可以看出,相同的畸变真值,在分辨率更高时其标定精度越高。手动提取图像中的共线点时,以一个像素为最小位移单位,所以图像的分辨率一定程度上决定了标定结果的精度。
假设主点位于图像中心,即x0=0,y0=0时,由畸变系数k1带来的像素偏移量为:
故在x或y轴上产生一个像素的位移时,k1与像点的x坐标或y坐标的关系为:k1x3=1,或k1y3=1,由此可以算出,当k1确定为某个数位的值时,距离图像中心某个范围内的像素没有变化。例如,当k1=1E-8时,距图像中心464像素内的像点都不会产生形变,故如需标定1E-8数位的畸变系数,其相片的分辨率至少要达到1 000×1 000像素。
若相片的分辨率不能满足畸变值本身的精度,不论用任何方法都无法得到真实稳定的标定结果。由于一般非量测相机的一阶径向畸变值都在1E-8数位左右,分辨率较高(1 000×1 000像素以上)的图片或相片会获得较好的效果。
畸变分离的相机模型为分步相机标定奠定了良好的基础,尤其是基于场景的相机标定,通常图幅数量有限,或仅有单幅图像,该模型将畸变参数与相机内外参数分离,使得进一步的相机标定可以线性进行,简化了非线性优化的难度,也一定程度上提高了标定的精度。本文在现有相机径向畸变求解算法的基础上,利用相片产生畸变时的渐变性,分数位对相机的径向畸变进行求解,标定过程简单快捷。实验结果证明,该方法与传统非线性优化标定方法的标定精度相当,且结果非常稳定。针对畸变系数存在的渐变性,此种方法还可运用至除径向畸变以外的其他畸变,使得畸变求解的过程更加简单高效;同时,这种逐级累加的方法也为迭代算法提供了一个新的思路。
[1]周富强,蔡斐华.基于非量测畸变校正的摄像机标定方法[J].机械工程学报,2009,45(8):228-232.
[2]周富强,胡坤,张广军.基于共线特征点的摄像机镜头畸变校正[J].机械工程学报,2006,42(9):174-177.
[3]周富强,胡坤,张广军.基于共线特征点的摄像机畸变快速校正方法X[P].200710000174.2007-01-09.
[4]沙月进.基于相对控制的影像解析及三维测量技术研究[D].南京师范大学,2008.
[5]闾国年,沙月进,刘学军.一种与摄影设备无关的影像畸变标定方法X[P].200810024762.2008-05-05.
[6]郑榜贵,田炳香,段建民.基于交比不变量的摄像机标定方法[J].北京工业大学学报,2008,34(5):476-480.
[7]TSAI R.A versatile camera calibration technique for high accuracy 3D machine vision metrology using off-the-shelf TV cameras and lenses[J].Robotics and Automation,1987,3(4):323-344.
[8]林宗坚,崔红霞,孙杰,等.数码相机的畸变差检测研究[J].武汉大学学报(信息科学版),2005,30(2):122-125.
[9]康志忠,谭玉敏.一种根据曲率变化检校畸变差的方法[J].武汉大学学报(信息科学版),2006,31(9):777-780.
[10]卫征,方俊永,张兵.非量测相机镜头光学畸变的改正[J].光学技术,2007,33(6):885-888.
[11]WENG J,COHEN P,HERNIOU M.Camera calibration with distortion models and accuracy evaluation[J].IEEE Trans.Pattern Analysis Machine Intelligence,1992,14(10):965-980.
[12]DEVERNAY F,FAUGERAS O.Automatic calibration and removal of distortion from scenes of structured environments[A].Investigative and Trial Image Processing,1995[C].San Diego:SPIE,2567.62-72.
Camera Radial Distortion Parameters Calculation Based on Numerical Digit
LU Yue,LIU Xue-jun,WANG Mei-zhen,ZHEN Yan
(KeyLaboratoryofVirtualGeographicEnvironment,NanjingNormalUniversity,MinistryofEducation,Nanjing210046,China)
Camera distortion is one of the important factors which affect accuracy of geometric measurement and three-dimensional reconstruction based on image.The images of straight spatial lines become curves in perspective projection because of distortion,and we can calculate the radial distortion parameters through the invariability of collinearity of the points on the line.In view of the gradient characteristics of camera distortion,this paper presents a method of camera radial distortion parameters calculation based on numerical digit.First,express first-order radial distortion in scientific notation asX×10-m,then calculate its indexmand mantissaXsuccessively,until it meets the accuracy set before.Finally,simulation experiments and real experiments are presented and they confirmed the correctness and efficient of the method.
radial distortion;camera calibration;scene information;numerical digit
TP75
A
1672-0504(2011)06-0018-05
2011-06- 10;
2011-08-01
国家863计划资助项目(2007AA12Z238);江苏省高校自然科学研究重大项目(10KJA420025)
卢玥(1986-),女,硕士,主要研究方向为视频GIS、交通GIS等。E-mail:kiyota2@163.com