立体视觉系统的参数标定的M atlab实现

2011-04-20 07:27边后琴谭叶
上海电力大学学报 2011年4期
关键词:摄像机标定坐标系

边后琴,谭叶

(上海电力学院计算机与信息工程学院,上海 200090)

摄像机标定是计算机视觉研究领域中的一个重要课题,其主要任务是确定摄像机的内外参数,其内部参数包括几何和光学特性,外部参数包括相对世界坐标系的摄像机坐标的一个三维位置和方向.现有的摄像机标定方法主要可以分为传统的标定方法[1]、自标定方法[2]和基于主动视觉的标定方法[3]3类.传统的标定方法是基于一个精确测定的物体作为空间参照物的摄像机内标定方法[4];自标定方法不需要借助任何外在的信息,仅利用图像之间的点对应信息就可以获得摄像机的内部参数[5];基于主动视觉的标定方法是通过控制摄像机的运动来标定摄像机的内部参数[6].本文研究了基于平面板标定的传统的摄像机标定方法,利用MATLAB编程语言实现了这一标定方法,并给出了实验过程和结果,以期为标定方法在工程中的实际应用提供参考.

1 摄像机成像模型

摄像机在拍摄图像的过程中,涉及3个坐标系,即图像坐标系、摄像机坐标系和世界坐标系.图像坐标系有两个:一是以像素为单位的图像坐标系(u,v);二是以物理单位(例如毫米)表示的图像坐标系(x,y).在(x,y)坐标系中,原点O1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心处,但由于摄像机制作的原因,也会有些偏离,若原点O1在(x,y)坐标系中的坐标为(u0,v0),每一个像素在x轴与y轴方向上的物理尺寸为ku=1/dx,kv=1/dy,x轴与y轴方向的夹角为θ,则图像中任意一个像素在两个坐标系中的关系为:

一般取θ=π/2,图像坐标系关系如图1所示.在这一情况下,式(1)可以简单地表示为:

图1 图像坐标系示意

定义摄像机坐标系为(Xc,Yc,Zc),其坐标原点O称为摄像机的光心,Xc轴和Yc轴与图像的x轴与y轴平行,Zc轴为摄像机的光轴,它与图像平面垂直.光轴与图像平面的交点,即为图像坐标系的原点O1,O1为摄像机焦距.摄像机可安放在环境中的任何位置,在环境中选择一个基准坐标系来描述摄像机的位置,用以描述环境中任何物体的位置,该坐标系称为世界坐标系,它由Xw,Yw,Zw轴组成.用R和t分别表示摄像机坐标系和世界坐标系之间的旋转关系和平移关系.因此,空间中某一点X在世界坐标系与摄像机坐标系下的齐次坐标如果分别是(Xw,Yw,Zw,1)T与(Xc,Yc,Zc,1)T,则存在的关系为:

空间的任何一点X在图像上的成像位置可以用针孔模型近似表示,如图2所示,即任何点X在图像上的投影位置x为光心O与X点的连线OX和图像平面的交点.此种关系称为中心射影或透视投影.(x,y)为x点的图像坐标;(Xc,Yc,Zc)为空间点X在摄像机坐标系下的坐标.

图2 针孔摄像机模型

成立,所以:

那么,摄像机坐标和图像坐标间的变换关系为:

根据比例关系,则:

由此可见,在成像的过程中丢失了深度信息.此透视投影关系用齐次坐标与矩阵可以表示为:

代入式(7),得到以世界坐标系表示的X点坐标与其投影点x的坐标(u,v)的关系为:

式中:P——摄像机的投影矩阵,为3×4矩阵;

K——由坐标尺度k u和k v,中心u 0和v 0,焦距f,x和y方向的夹角θ确定,这5个参数称为摄像机的内部参数; Pt——由摄像机相对于世界坐标系的方位,即旋转矩阵R和平移向量t所对应的6个参数确定,这6个参数称为摄像机的外参数.

确定摄像机内外参数的过程,称为摄像机的标定.双目视觉中摄像机定标的基本方法是,在固定的摄像机模型下,基于特定的参照物,通过对左右两幅图像进行图像处理和数学变换计算,可以得到摄像机模型的内部和外部参数.对于使用日益广泛的非测量摄像机来说,标定是从二维图像中获取三维信息必不可少的步骤.

2 参数标定方法的实现过程

平面模板标定方法的基本原理为:

需要注意的是,这里我们假设模板平面是在世界坐标系中Z=0的平面上.由于摄像机有5个未知内参数,所以当所摄取的图像数目大于等于3时,就可以线性唯一求解出K.

基于Matlab的立体视觉系统的参数标定分为两个阶段:一是根据给定的图像标定每一台摄像机的内部参数;二是根据内标定的结果标定立体视觉系统的外部参数.平面标定方法包括以下5个步骤:

(1)打印一张黑白相间的格子纸,贴在一个平面板上;

(2)从不同角度拍摄若干张模板图像;

(3)检测出图像中的特征点;

(4)求出摄像机的内部和外部参数;

(5)求出畸变系数;

(6)优化求精.

实验平台如下:5×8的黑白相间的棋盘状标定块,每个栅格的规格为30 mm×30 mm,打印后固定于塑料泡沫板上.安装两台位置固定的CCD摄像机,从不同角度拍摄若干张模板的图像,然后用Matlab读入图像,提取标定模板的网格角点,标定参数,计算误差,最后将左右摄像机的标定结果联立得到外部参数矩阵.

整个标定系统的第一个运行界面见图3.

图3 运行界面

图像是标定方法的直接对象,读入图像按钮用于读入需要标定的图像,可以选择图像格式、文件名等,通过调用子函数ima_read_calib实现,该函数可以将目标文件夹下的所有文件列出并读入.运行时先选择文件名,以左边摄像机文件名为例(左边摄像机所拍摄图片共有14幅,将其依次命名为left01,left02,left03,…,left14),输入left,在Image format一栏可以发现有不同可供选择的图片格式.若所用图片是jpg格式,就输入j.其他不同格式的图像对应的字母如下:

读入图像后,程序显示结果如图4所示.图4显示了由左边摄像机拍摄的14幅jpg格式的图像的缩略图.一般来说,图片越多,标定精度越高,可以根据实际需要的标定精度选择要标定的图像数量,如果不对数量进行选择,系统会默认是该文件名序列的全部图像(按照标定方法原理,用于标定的图像数量不能小于3).

图4 用于标定的图像

提取网格顶点按钮的操作要调用的子函数是click_calib,此时,默认平行于水平面方向为X轴,而垂直方向为Y轴.如果在上一个过程中图像未被正确读入,则此时会先提示:Cannot extract cornerswithout images!如果图像被正确读入,则提示需要设置操作界面的坐标系大小,并要求设置栅格的边长.用户在标定模板上用鼠标依次点击图像的4个顶点,次序为左上、右上、右下、左下.根据提示输入每一个方格的长(30 mm)与宽(30 mm).在选取4个顶点时,如果偏移过大,需要输入X轴和Y轴的栅格数量时,只需要按照实际操作输入即可.选择完毕以后,就可以依次提取网格角点.

网格网点提取过程如下.

标定左摄像机的参数,在标定前,一定要确定有多于3幅图片进行提取角点等操作,因为平面模板的标定方法规定必须要多于3幅图片,如果小于3幅,则会因为求解方程过少而无法得到结果.输出的内部参数有:有效焦距fc=f,主点(投影中心)cc=(u0,v0),偏斜角alpha_c=θ,畸变系数kc=[kukv],经过优化后可以得到计算的像素误差(Pixel error,单位是像素).

提取网格角点后,就可以计算出摄像机的内部参数,结果如下:

得到两个摄像机的内部参数后,就可以进行由这两个摄像机构成的立体视觉系统的标定,即得到两个摄像机的外部参数.立体视觉系统标定的界面如图5所示.

图5 立体视觉系统标定运行界面

首先需要载入左右摄像机的标定结果,单击该按钮,出现如下提示:

在原先得到左右摄像机内部参数的基础上,我们得到了该立体视觉系统的外部参数,即右摄像机相对于左摄像机的旋转矩阵R和平移矩阵T:

左右摄像机外部参数示意见图6和图7.

图6 左摄像机外部参数示意

图7 右摄像机外部参数示意

得到结果后,选择保存.该操作调用了saving _calib这一函数,目的是生成mat文件,为了后面操作方便,将得到的结果Calib_Results.mat重命名为后Calib_Results_left.mat,以区分随后对右摄像机参数标定的结果.

通过实验可以发现,这种基于Matlab的摄像机标定方法的优缺点很明显:一方面,友好的界面以及简易的操作方法能够被广泛应用到实际工程中;另一方面这种标定方法的精确性仍有待提高,在测量左摄像机的内部参数时,其误差约为0.6%,而右摄像机的内部参数误差也有0.2%,因此不合适运用于高精度的场合.

3 结语

本文通过Matlab编程实现了一种较为方便的立体视觉系统的标定方法.采用自标定方法实现摄像机的自标定,通过编写程序调用Matlab的子函数,可以很方便地实现标定的计算过程.由于已知模板的每一个栅格大小,对14对图像进行角点提取,反复迭代,可以较为精确地得到摄像机的有效焦距等参数.使用Matlab设计的标定程序的操作界面具有更好的交互性和实时性,我们所需要做的只是将左右摄像机标定完的结果作为初始数据,使用特定的程序计算得到外部参数,即旋转矩阵和平移矩阵.

通过实验充分证明,该方法有效且方便,具有良好的人机交互功能,便于操作,能够实时得到结果.

[1]ZHANG Z Y.Flexible camera calibration by viewing a plane from unknown orientations[C]//Proceedings of the International Conference on Computer Vision,Kerkyra,Corfu,Greece,1999:666-673.

[2]HARTLEY R.Estimation of relative camera positions for uncalibrated cameras[C]//Proceedings of the European Conference on Computer Vision,Santa Margherita Ligure,Italy,1992: 579-587.

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

[4]祝海江,吴福朝,胡占义.基于两条平行线段的摄像机标定[J].自动化学报,2005,31(6):853-864.

[5]傅丹,周剑,邱志强,等.基于直线的几何不变性标定摄像机内参数[J].中国图象图形学报,2009,14(6):1 058-1 063.

[6]夏艳,苏中,吴细宝.双目视觉测量系统的标定及三维测量[J].中国图象图形学报,2008,13(7):1 298-1 302.

(编辑胡小萍)

猜你喜欢
摄像机标定坐标系
使用朗仁H6 Pro标定北汽绅宝转向角传感器
解密坐标系中的平移变换
坐标系背后的故事
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定
基于重心坐标系的平面几何证明的探讨
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
船载高精度星敏感器安装角的标定
如何消除和缓解“摄像机恐惧症”
基于Harris-张正友平面标定法的摄像机标定算法