计算机测量与控制
主办单位:中国航天科工集团公司
国际刊号:1671-4598
国内刊号:11-4762/TP
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:25251 人次
 
    本刊论文
基于Matlab的计算机视觉测量中摄像机标定方法研究

  摘要:本文以视觉测量系统中的摄像机标定为研究对象,以物体在摄像机上所成的像与物体实际的形状之间具有一定的函数关系为基础,以获得该函数参数为目的用Matlab进行摄像机标定。该方法利用了Matlab的工具箱及VC++6.0编译软件,设计标定方法及软件程序,方便准确的完成了单摄像头标定和双摄像头的立体标定,得出摄像机的内部参数和外部参数,简化了标定求解过程, 提高了标定速率, 并具有良好的移植性, 适合于其他视觉测量系统。


  关键词:摄像机标定 视觉 单目 双目 计算机应用 测量中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2014)02-0053-03Abstract:Between the actual shape of the object and it’s camera image formed a certain function,for the purpose of obtaining the function parameters,in this paper using Matlab to camera calibration for vision measurement system.The method uses the Matlab toolbox and VC + +6.0 compiler software,designed calibration methods and software programs, conveniently and accurately complete the calibration of single camera and the dual camera,and obtained internal and external parameters of the camera,simplify the calibration procedure,improves the calibration rate,and has good portability,suitable for other vision measurement system.


  Key Words:Camera calibration Computer vision Monocular camera Binocular camera Computer application Measurement在机器视觉应用中,我们选择的摄像机都会有图像畸变。我们看到的物体在摄像机上所成的像与物体实际的形状是有一定的函数关系的。这些函数的参数都是未知或不准确的,我们需要通过实验与计算来得到这些参数,求解这些函数的参数的过程就称为摄像机标定。这一过程精确与否,会直接影响立体视觉系统的测量精度。Matlab是一款专业的数学矩阵处理软件,在现阶段是非常流行,深得人们的信任与喜爱。我们选择Matlab用来标定也是看重了它在数学与图形图像处理方面的超强处理能力。而事实证明,它计算出的结果精确度高、可信度强,正是我们机器视觉项目所需要的。


  Matlab提供了很多应用工具箱,其中就有标定工具箱toolbox_ calib供我们使用,其图形交互式的处理方式直观简单、结果快速精确,是标定这一重要步骤非常合适的工具。


  1 单个摄像机分别标定本文采用的是平面棋盘格,棋盘规格为27.5mm。用双目摄像头获得不同位置下的棋盘图片,理论上采集越多的图像,所求出的结果越精确。根据实验所需,一般采集20组左右,并记录标定板的位置信息。


  在双目立体视觉系统中,由于其它标定方法的不稳定性和局限性,我们最终决定用Bouguet算法的Matlab标定工具箱分别对左右两个摄像头进行标定,Matlab标定工具箱对单个摄像机标定步骤如下:


  首先在F:\Program Files中安装MATLAB R2012a主程序。下载Matlab标定工具箱,把Matlab工具箱的文件夹toolbox_calib复制到安装目录F:\Program Files\MATLAB R2012a\toolbox下,再把我们前面已经拍摄的标定棋盘图复制到F:\Program Files\MATLAB R2012a\toolbox\toolbox_calib下。启动Matlab程序,在Command Window内输入:


  》addpath('F:\Program Files\MATLAB R2012a\ toolbox\toolbox_calib')》cd('F:\Program Files\MATLAB R2012a\ toolbox\toolbox_calib')上述语句的意思是将Matlab工作空间设置在安装文件夹F:\Program Files\MATLAB R2012a\toolbox\toolbox_calib下。为了验证工作空间已经设置成功并且标定的棋盘图能正确识别,继续在Command Window内输入:


  》 which right1.jpg如果窗口内显示:


  F:\Program Files\MATLAB R2012a\toolbox\ toolbox_calib\right1.jpg则证明能在工作目录下找到标定所用图像right1.jpg。


  准备工作完毕,运行calilb_gui进行摄像机标定。选择Standard,出现如图1-1所示窗口。


  先标定右摄像机,点击Image names,在Matlab命令行窗口会提示你输入图片的basename(基础名称),实验的图片文件名是right1,right2,…,right12,basename就是right。我们输入rignt,按回车,接下来是让你输入图片的格式,实验中保存的是jpg格式,就输入jpg,按回车。Matlab工具箱自动读入实验中棋盘格图片,Matlab完成12幅右摄像头的棋盘图的读入。   回到calilb_gui,选择Extract grid corners,进行这12张棋盘图角点的提取。实验中是找最外面一圈的角点,回到Matlab的Command Window,命令行会出现如下提示:Extraction of the grid corners on the imagesNumber(s)of image(s)to process([]=all images) =Window size for corner finder(wintx and winty):


  它的意思是输入棋盘角点搜索窗口wintx、winty的长和宽,我们选77大小即可。


  角点提取界面会在选择完毕后自动弹出,我们按一定顺序分别提取棋盘的最边上的角点,工具箱会自动找到所有内部对应的角点,如图1-2,点击4个最外边的角点即可。


  然后回到Matlab的Command Window,输入棋盘格方格大小。这步定义了空间的尺度,在后面的物体测距、物体大小描述等信息方面起着重要作用。


  开始下一幅图的角点提取。完成后回车即可自动读入下一幅图,同理完成12幅图的提取。回到calilb_gui界面,点击Calibration,开始摄像头标定。等待30秒左右,Matlab计算得到了摄像头的本征参数和畸变参数,如下所示:


  Focal Length:fc=[984.22621 988.55599] ? [14.18888 14.22740]


  Principal point:cc=[356.08748 201.80653] ? [12.12838 10.94669]


  Skew:alpha_c=[0.00000] ? [0.00000]=>angle of pixel axes=90.00000 ? 0.00000 degreesDistortion:kc=[0.04377 0.06571 -0.01079 0.00196 0.00000] ? [0.05325 0.45593 0.00469 0.00398 0.00000]


  Pixel error:err=[0.11090 0.10129]


  回到calilb_gui面板点击Show Extrinsic查看标定3D效果,如图1-3所示。通过已经记录的实际标定板与摄像机的相对位置,验证标定结果是否符合要求。


  验证标定结果无误之后,点击面板上的Save按钮,程序会把标定结果放在F:\Program Files\MATLAB R2012a\%drive_F%文件夹下一个叫Calib_Results.mat的文件中,为了后面立体标定识别的方便性,把这个文件名改为Calib_Results_right.mat,复制到Matlab工作目录下方便后续使用,不复制的话程序会找不到相应文件。


  同理对左摄像头进行标定,又生成了新的Calib_Results.mat,将其文件名改为Calib_Results_left.mat并复制到Matlab工作目录下。


  2 立体标定用相同的方法对左右摄像头都进行标定之后,开始立体标定。退出calib_gui面板,回到Matlab的Command Window,在该行有》的情况下输入stereo_gui按回车键,出现图2-1所示界面,开始立体标定。


  点击Load left and right calibration files并在命令行中按两次回车键选择默认的文件名(Calib_Results_left.mat和Calib_Results_right.mat),回到stereo_gui面板点击Run stereo calibration开始立体标定,等待10s左右,左右摄像头的参数都计算出来了,也求出了两个摄像头之间的旋转和平移关系向量(om和T)。


  Intrinsic parameters of left camera:


  Focal Length:fc_left=[981.10666 982.53816] ? [9.19436 9.02776]


  Princi palpoint:cc_left=[276.37936 281.21468] ? [14.55475 8.38110]


  Skew:alpha_c_left=[0.00000] ? [0.00000]=>angle of pixel axes=90.00000 ? 0.00000 degreesDistortion:kc_left=[-0.14594 1.22238 0.00740 -0.01087 0.00000] ? [0.07311 1.03011 0.00193 0.00421 0.00000]


  Intrinsic parameters of right camera:


  Focal Length:fc_right=[979.65348 984.02580] ? [9.04324 9.18283]


  Principal point:cc_right=[361.22778 212.64918] ? [11.95349 9.48257]


  Skew:alpha_c_right=[0.00000] ? [0.00000]=>angle of pixel axes=90.00000 ? 0.00000 degreesDistortion:kc_right=[0.03619 0.08136-0.00818 0.00289 0.00000] ? [0.05344 0.48159 0.00376 0.00391 0.00000]   Extrinsic parameters (position of right camera wrt left camera):


  Rotation vector:om=[-0.06188 -0.04645 -0.00279] ? [0.01033 0.01794 0.00067]


  Translation vector:T=[-112.45166 0.84707 -2.84633] ? [0.17761 0.19990 2.27834]


  回到stereo_gui界面点击Show Extrinsics of stereo rig,弹出双目摄像机标定三维环境状态图,结果如图2-2所示,两个摄像头基本是前向平行并在一条直线上,摄像头之间的距离为112mm,计算得十分准确,标定板和摄像头的相对距离也非常精准,标定板自身放置姿态也基本符合。


  3 保存标定结果由立体标定得到了立体标定参数之后,就可以把参数放入xml文件,xml文件为以后的程序调用作准备。


  平移矩阵T得到的结果是基于右摄像头为向量起点的,在后面的cvStereoRectify( )函数得到视差图,再用cvReprojectImageTo3D( )函数得到深度图,其中都是以左摄像头为基准的,所以T向量都要反转才能再使用。


  要注意的是Matlab标定结果中的om向量,它代表的意义是右摄像头相对左摄像头的旋转角度。这个向量是旋转矩阵通过Rodrigues变换之后得出的结果,如果要在cvStereoRectify中使用的话,需要将这个向量用cvRodrigues转换成旋转矩阵。


  4 结语借助棋盘格标定板,应用Matlab工具箱及VC++6.0,准确的实现了单目摄像机及双目摄像机的标定工作。并对实验过程环境状态进行3D显示,可以清楚看出计算结果与实际位置十分吻合,本方法简单易行,可以应用与视觉测量系统中单、双摄像机的标定。


  参考文献[1]马颂德,张正友。计算机视觉-计算理论与算法基础[M].北京:科学出版社,1998:52-59.


  [2]Tsa i R Y.A versatile camera calibration technique for high accuracy 3D machine vision metro logy using of the-shelf TV cam eras and lenses[J].IEEE Journa l of Robotics and Automation,1987,3(4):323-344.


  [3]赵小松。摄像机标定技术的研究[J].机械工程学报,2002,38(3):149-151.


  [4]Zhang Z.A flexible new technique for cam era ca libration[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2000,22(11):1330-1334.


特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《计算机测量与控制》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《计算机测量与控制》编辑部  (权威发表网)   苏ICP备20026650号-8