搜档网
当前位置:搜档网 › 基于OpenCV的摄像机标定

基于OpenCV的摄像机标定

基于OpenCV的摄像机标定
基于OpenCV的摄像机标定

第28卷第1期计算机工程与设计2007年1月V01.28No.1ComputerEngineeringandDesignJan.2007

基于OpenCV的摄像机标定

尹文生,罗瑜林,李世其

(华中科技大学机械科学与工程学院,湖北武汉430074)

摘要:以增强现实系统中摄像机标定技术为研究对象,分析了开放计算机视觉函数库OpenCV中的摄像机模型,特别充分考虑了透镜的径向畸变和切向畸变影响及求解方法,给出了基于OpenCV的摄像机标定算法。该算法充分发挥了OpenCV的函数库功能,提高了标定精度和计算效率,具有良好的跨平台移植性,可以满足增强现实和其它计算机视觉系统的需要。

关键词:计算机视觉;增强现实;摄像机模型;透镜畸变;摄像机标定

中图法分类号:TP391文献标识码:A文章编号:1000.7024(2007)01—0197.03

CameracalibrationbasedonOpenCV

YINWel"1。sheng,LUOYu.1in,LIShi—qi

(SchoolofMechanicalScienceandEngineering,HuazhongUniversityofScienceandTechnology,Wuhan430074,China)Abstract:Fortheapplicationsoftechnologyofcameracalibrationtoaugustreality,thecameramodelinOpenCV(opensourcecomputervisionlibrary)isdiscussed,especiallyontheinfluencesandsolvingmethodsoflensradialdistortionandtangentialdistortion,andanarithmeticofcameracalibrationbasedonOpenCVisgiven.Thisarithmeticmakesuseofthefunctionsofthelibraryeffectively,improvesprecisionandefficiencyofcomputation,andhasagoodpropertyfortheapplicationtomulti-platform.Itcanmeettheneedsofaugustrealityandothercomputervisionsystems.

Keywords:computervision;augustreality;cameramodel;lensdistortion;cameracalibration

0引言

摄像机标定,是指建立摄像机成像几何模型,描述空间坐标系中物体点同它在图像平面上像点之间对应关系的过程。摄像机标定的目的就是确定几何模型参数即摄像机参数“1。摄像机标定是计算机视觉应用中的关键技术,在增强现实系统中也必须采用摄像机标定技术实现图像的注册眨”。摄像机标定技术在立体视觉研究中占有非常重要的地位。一个完整的立体视觉系统通常可分为图像获取、摄像机标定、特征提取、立体匹配、深度确定及内插等6大部分“1。精确标定摄像机内外参数不仅可以直接提高测量精度,而且可以为后继的立体图像匹配与三维重建奠定良好的基础。一】。

目前通常采用的标定方法是基于“两步法圳””的传统摄像机标定方法,该方法比主动视觉摄像机标定方法和摄像机自标定方法标定精度高,而且标定过程简单,经过多年的研究已经发展得比较成熟,鲁棒性高。OpenCV(Intel。opensourcecomputervisionlibrary)是Intel。开放计算机视觉函数库,它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法,具备强大的图像和矩阵运算能力。该函数库中实现的摄像机标定方法采用的是文献[11]中的两步标定方法,而且在2005年7月最新发布的beta5版本中,不只完全重写了摄像机标定函数,而且引入了文献[12】中的自动寻找角点的方法,进一步提高了标定的智能化程度,用户只需导入用于标定的图片,整个标定过程无需人工的介入。OpenCV中的摄像机标定模块为用户提供了良好的接口,同时支持MS.Windows、Linux平台,有效地提高了开发效率,并且执行速度快,具有良好的跨平台移植性,因此可以很好地应用于工程实际当中。

l标定原理

1.1摄像机模型

摄像机标定首先要选择合适的摄像机模型,确定内外部参数。OpenCV标定算法中的摄像机模型以针孔模型(pin—holemodel)为基础,引入透镜的径向畸变和切向畸变,该模型相比于只引入一阶径向畸变的Tasi模型和针孔模型更加真实地反映了透镜实际的畸变情况m1。在该模型中,将空间点P在世界坐标系中的坐标值呱,K,乙)变换为图像平面上像素坐标系中坐标值(“,v)的过程可分解为下述的4步变换”1:

收稿日期:2005-12?06E-marl:wsyin@mail.hust.edu.cn

基金项目:国家民用航天科研专项计划基金项目(科工技[2004]1530)。

作者简介:尹文生(1963一),男,湖南常宁人,博士,副教授,研究方向为智能CAD、虚拟现实技术、机器人遥操作系统;罗瑜林(1981一),男,江西吉安人,硕士研究生,研究方向为机器人遥操作系统、机器视觉;李世其(1965一),男,江西吉安人,博士,教授,研究方向为CAD/CAE、虚拟现实技术、机器人遥操作系统。

一197— 万方数据

K,乙)变换为摄像机坐标系中的坐标值只(疋,K,乙)如下

㈧…=㈠M㈤(2)将坐标值只(冠,K,zc)在针孔模型中进行规范化投影,得

只=[妻甜引∽(3)引入透镜的畸变,畸变后的规范化坐标值可以用雎如砌

阱Xdc,峨‰叫州黝;篙]㈤

将Pd(xa,ya)转换为图像上像素坐标系上的坐标值B(“,访

f吲:时‰(4)

够可=f/.劬sx/咖(5)像素之间的有效距离(mm/pixel);dpy为计算机图像在垂直方向

换)方法计算出摄像机的内部参数和外部参数的初值Ⅲ。该步虑透镜畸变的影响,得到的参数值并不准确。不过作为下一

数据拟合目标函数““如式6所示。既要将图像上Ⅳ个角点的坐标值(U,K)(f=1,…朋拾取出来,还要利用上述畸变模型计算出这Ⅳ个标志点的坐标值(‰vJ)(f=1,…朋,然后利用式6进行数

转化为求解非线性最小二乘的问题,通过非线性优化算法“”多次迭代,最后得到使目标函数的值最小的参数值,降低了求解难度。迭代的初值由第①步的DLT方法算出,DLT方法不

2基于OpenCV的摄像机标定

基于OpenCV的摄像机标定采用平面棋盘格标定模板,一198一

为了提高角点提取的成功率,在标定方块的外围,还要求保留一个方块宽的白色空白区域,如图1所示。摄像机只需在不同的角度抓取几张平面标定模板的图片,就可以实现对摄像机的标定。显然,由于采用最小二乘法,抓得图越多,标定的结果就越精确。

图1平面棋盘格标定模板

虽然OpenCV中自动寻找角点函数提取角点的成功率很高,但是若碰到光线被遮挡等情况,使得标定模板上的标定块在图像上不清晰或提取的角点数目与设定的数目不相符的状况,就会导致角点提取失败,如图2所示:因此OpenCV并不保证能够提取所有图像上的角点。所以在设计标定算法时必须要考虑角点不能被提取的情况:一方面,如果角点提取成功的图过少,则标定出来的结果就不一定能满足精度的要求,需要重新采图;另一方面,由于摄像机外部参数的个数与标定图像的个数相关联,所以在最后计算标定结果时,应将提取角点失败的图像舍弃,再根据剩下图像的数目,动态地分配参数在内存中的储存空间,如果没有这么一个筛选的过程,盲目得在内存中分配参数的储存空间,则在提取角点失败的图像上,不能找到与角点在世界坐标系中的坐标值相对应的像素坐标系上的坐标值,在这种情况下强行计算的话,很容易出现程序报错,得不到标定结果的情况。因此,本文提出以下摄像机标定算法:

(1)读取一组标定用图像数据;

(2)用cvFindChessboardComers()筛选图像;将读入的一组图像数据分别代入cvFindChessboardComers0函数,如果返回值是1,则表示在该幅图像上提取的角点数目和设定的相同,提取角点成功;若为0,则表示角点提取失败,该幅图要抛弃;

(3)如果可用的标定图的数目满足设定的最少标定用图的数目,继续步骤(4);否则,则应重新采图,返回步骤(1);

(4)根据筛选剩下图像的数目用cvCreateMat0为摄像机的内外部参数、角点在世界坐标系的坐标值以及在图像坐标系中的坐标值分配内存存储空间;

(5)将筛选剩下的图像代入cvFindChessboardComers0,得到角点在图像像素坐标系中坐标值;再将图像和得到的图像像素坐标系中坐标值代入FindComerSubPix()函数,进一步精

(a)角点提取失败(b)角点提取成功

图2角点提取图像

 万方数据

确得到角点亚像素级的坐标值;

(6)将角点在世界坐标系的坐标值以及在图像坐标系中的坐标值代入cvCalibrateCamera20函数,最后得到摄像机的内外部参数值;

(7)最后注意要用cvReleaseMat0函数释放cvCreateMat()函数分配的内存空间,防止内存泄露。

3实验结果

根据上述标定原理和开发步骤,在Windows2000pro平台下利用VC++6.0开发了一个基于OpenCVbeta5版本的摄像机标定程序,程序界面如图3所示。程序经过严格测试,运行稳定,没有出现内存泄露的情况,寻找角点成功率高,标定一组9幅768x512像素的图像,用时O.3秒,可以达到实用的要求。

图3标定程序界面

为了验证该标定程序的标定结果,利用文献[12】中的图像数据进行标定,并将计算得到的结果与文献[12]中提供的基于相同原理的标定程序得到的标定值进行比较。比较结果如表1所示,其中计算值表示本文程序计算的值;给定值为文献[12】中程序的计算值。从表中可以看到,两者的值是非常接近的。

4结束语

利用OpenCV开发的摄像机标定程序具有标定结果精确、运算效率高、跨平台移植性好等特性,可以有效地应用于基于增强现实的机器人遥操作系统和其它计算机视觉系统应用中。

参考文献:

[1]邱茂林,马颂德,李毅.计算机视觉中摄像机定标综述[J].自动化学报,2000,26(1):43—55.[2】ChunyuGao,HongHua,AhujaN.Easycalibrationofahead-mountedprojectivedisplayforaugmentedrealitysystems[C].ProceedingsIEEEVirtualReality,2003.53—60.

[3]GibsonS,CookJ,HowardT,eta1.Accuratecameracalibrationforoff-line,video—basedaugmentedreality[C].ProceedingsoftheIEEEandACMInternationalSymposiumonMixedandAugmentedReality,2002.37-46.

【4】DavidAForsyth,JeanPonce.计算机视觉——一种现代方法[M].北京:电子工业出版社,2004.

[5】RashmiSundareswara,SchraterPR.Bayesianmodelingofca—meracalibrationandreconstruction[C].ProceedingsFifthInter-nationalConferenceon3-DDigitalImagingandModeling,2005.394.401.

[6]RodriguezT,SturmP,WilczkowiakM,eta1.VISIRE:Photorea—listic3Dreconstructionfromvideosequences[C].ProceedingsIntemationalConferenceonImageProcessing(03CH37429),2003.

[7]Jean—YvesBouguet.CameracalibrationtoolboxforMatlab【DB/OL].2004.http://www.vision.caltech.edu/Bouguetj/calib_doc.[8】ZhangZ.Aflexiblenewtechniquefor

cameracalibration[J】.IEEETransactionsonPatternAnalysis

andMachineIntelli—gence,2000,22(11):1330-1334.

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

【10】毛剑飞,邹细勇,诸静.改进的平面模板两步法标定摄像机[J】中国图象图形学报,2004,9(7):846-852.

[11]Jean.YvesBouguet.Visualmethodsforthree—dimensionalmode.1ing【D].Pasadena,Califomia:CaliforniaInstituteofTechno-logy,1999.

[12]VezhnevetsVladimirakaDeadMoroz.OpenCVandMatLabcameracalibrationtoolboxesenhancement[DB/OL].2005.http://graphics.CS.msu.su/en/research/calibration/.

[13】刘明晶,叶懋冬,刘国栋,等.一种基于视觉感知的图像质量评价方法[J].计算机工程与设计,2005,26(2):470-472.

[14】李斌,史忠科.基于计算机视觉的行人检测技术的发展[J】.计算机工程与设计,2005,26(10):2565-2568.

[15]黄楠,刘光昌.基于LabVIEW的PCBA计算机视觉检测系统[J].计算机工程与设计,2005,26(10):2783-2784.

表1标定结果

第1组数据第2组数据第3组数据

相机参数.9x768×51214x320x2407X320x24

计算值给定值计算值给定值计算值给定值』1056.474l056.566411.619411.634401.241401.249

Z1045.054l045.191409.638409.676400.80l400.811

U0339.479339.533133.257133.239174.231174.20l

v0182.205181.946110.74l110.688121.564121.577

k1.O.131258—0.13165l0.0711320.07l

6040.0913850.09158l恕0.0907950.0927240.0049860.004764.O.215481—0.218500

岛.O.005815.0.005889.0.014430.O.014532.0.003153.0.003121

k.0.007832.0.007818.O.019006.O.0190320.0099110.009859

—199— 万方数据

基于OpenCV的摄像机标定

作者:尹文生, 罗瑜林, 李世其, YIN Wen-sheng, LUO Yu-lin, LI Shi-qi

作者单位:华中科技大学,机械科学与工程学院,湖北,武汉,430074

刊名:

计算机工程与设计

英文刊名:COMPUTER ENGINEERING AND DESIGN

年,卷(期):2007,28(1)

被引用次数:6次

参考文献(15条)

1.邱茂林.马颂德.李毅计算机视觉中摄像机定标综述[期刊论文]-自动化学报 2000(01)

2.Chunyu Gao.Hong Hua.Ahuja N Easy calibration of a headmounted projective display for augmented reality systems 2003

3.Gibson S.Cook J.Howard T Accurate camera calibration for off-line,video-based augmented reality 2002

4.David A Forsyth.Jean Ponce计算机视觉--一种现代方法 2004

5.Rashmi Sundareswara.Schrater P R Bayesian modeling of camera calibration and reconstruction 2005

6.Rodriguez T.Sturm P.Wilczkowiak M VISIRE:Photorealistic 3D reconstruction from video sequences 2003

7.Jean-Yves Bouguet Camera calibration toolbox for Matlab 2004

8.Zhang Z A flexible new technique for camera calibration 2000(11)

9.赵小松摄像机标定技术的研究[期刊论文]-机械工程学报 2002(03)

10.毛剑飞.邹细勇.诸静改进的平面模板两步法标定摄像机[期刊论文]-中国图象图形学报 2004(07)

11.Jean-Yves Bouguet Visual methods for three-dimensional modeling 1999

12.Vezhnevets Vladimir aka Dead Moroz OpenCV and MatLab camera calibration toolboxes enhancement 2005

13.刘明晶.叶懋冬.刘国栋一种基于视觉感知的图像质量评价方法[期刊论文]-计算机工程与设计 2005(02)

14.李斌.史忠科基于计算机视觉的行人检测技术的发展[期刊论文]-计算机工程与设计 2005(10)

15.黄楠.刘光昌基于LabVIEW的PCBA计算机视觉检测系统[期刊论文]-计算机工程与设计 2005(10)

相似文献(10条)

1.学位论文陆宽计算机视觉与增强现实技术的研究2001

该论文通过对计算机视觉和增强现实技术的研究,在PC机平台上建立一套增强现实系统.首先通过计算机视觉方法获取配准参数.该系统的配准参数主要是手部位置、资态和运动参数.为此首先对指定处理区域内的真实场景图像应用基于颜色特征的分割方法,分割出手部图像,然后通过基于搜索算法的手部位置和姿态参数提取算法获取位置和姿态参数,最后通过视觉运动估计算法获取手部运动参数.处理区域由视觉跟踪方法给出.然后根据配准参数和真实场景中的物理规律,基于质点-挡板模型对虚拟景物的运动进行分析,计算出每一帧图像中虚拟景物的位置.最后将虚拟景物叠加到真实场景中,得到增强现实场景.

2.期刊论文丁海洋.DING Hai-yang基于计算机视觉的增强现实演示系统-北京印刷学院学报2009,17(4)

实现一种基于计算机视觉的增强现实演示系统.通过摄像设备实时采集真实场景图像,检测运动目标,通过对运动目标的运动跟踪获取运动目标位置,生成虚拟物体,根据运动目标的运动状态采用碰撞模型控制虚拟物体的运动,将虚拟物体和真实场景图像合成,并显示在通用显示器上,实现用运动目标控制虚拟物体运动的增强现实演示效果.实验证明,该系统能实现增强现实的演示效果.

3.学位论文陈静增强现实中基于两视图的三维医学图像重建2007

增强现实(Augmented Reality,AR)是在虚拟现实技术基础上发展起来的一种新的跨学科的技术,它将计算机产生的虚拟图像融合到使用者所看到的真实世界景象中,使用者可以从虚拟模型中获得额外的信息,从而对真实环境进行增强。AR技术可以用作外科手术可视化的辅助工具,通过AR技术将CT或MR等医学图像三维重建的虚拟模型实时融合到病人相应的身体部位,从而对外科手术进行指导。为了把虚拟信息和真实信息融合起来,我们需要知道真实的手术场景的信息,这样就需要对外科手术场景和手术对象进行三维重建。

通过不同视角拍摄的图像恢复物体的形状是计算机视觉的分支,传统上称为从运动恢复结构(Structure from Motion,SFM),主要用于新视图的合成、相机的标定、导航、识别、虚拟现实、增强现实等等。我们利用计算机视觉的知识,用不同视角的两视图来实现手术外科场景和手术对象的三维重建。首先利用Harris角点检测器实现的特征点的检测,然后用基于互相关的技术实现特征点的匹配。

基础矩阵F包含了关于相机运动参数和相机内部参数的所有信息,场景和物体的三维重建可以从这些信息中推导出来,所以基础矩阵的估计过程是三

维重建的关键之一。我们研究并实现了估计基础矩阵的迭代加权最小二乘方法、线性和非线性方法,并在MAPSAC算法的基础上,提出了MAPSACNL算法

,实验证明,用该方法估计基础矩阵,对于迭代次数、角点数量、ζ值的变化,都具有更强的鲁棒性和更小的Sampson误差值。

增强现实系统需要实时地检测出摄像机相对于真实场景的位置和方向,以便能够根据这些信息实时确定所需要添加的虚拟三维模型在真实世界中的正确位置,这就是增强现实系统中配准所要完成的任务。三维配准定位技术是实现增强现实的基础,是决定增强现实系统性能优劣的关键,而求解摄像机的位置和方向属于计算机视觉中像机标定的内容。我们研究了摄像机传统的标定技术和自标定技术,并重点实现了Zhang的平面模板的标定技术,求出了像机的内外参数。还实现了Sturm的自标定技术,在假定内参数只有焦距未知的像机的简化模型中,求解出焦距,进而求出内参数矩阵。最后研究实现了SFM算法,求解出像机的外参数,计算出像机的投影矩阵,然后运用三角化法求出空间点的三维坐标,实现三维重建。

4.期刊论文黄有群.李志鹏.胡超博.HUANG You-qun.LI Zhi-peng.HU Chao-bo采用视觉注册的户外增强现实技术

的研究-工程图学学报2010,31(1)

目前户外增强现实技术多采用硬件跟踪的注册方法解决浏览展示方面的问题.为了户外规划设计方面的应用需求,需要使用更加便于交互的基于视觉的注册方法.利用计算机视觉的方法并辅助于测距仪器便可以计算出视觉注册中必备的标定点空间坐标,从而使得增强现实技术可以应用到图像级的户外规划设计领域,并通过将摄像机坐标系和世界坐标系重合设置简化了注册过程.这些工作将有助于用户在景区规划设计等领域做出更好的决策.

5.期刊论文施琦.王涌天.陈靖一种基于视觉的增强现实三维注册算法-中国图象图形学报A辑2002,7(7)

为了提高增强现实系统三维注册的精度和效率,提出了一种基于计算机视觉的增强现实三维注册算法,并已将其用于采用透射式头盔显示器的增强现实系统中.该算法有如下特点:①构架简单,实用性强,一般情况下只需4个平面标志物就可实现三维注册;②工作范围大,甚至可以应用到室外的增强现实系统中;③数值求解过程是线性过程,误差小,可以满足增强现实系统高精度三维注册的要求.另外,应用这种算法所需要作的图象处理计算量很小,其典型系统包括一个彩色CCD和几个不同颜色的标志点,由于很容易获得标志点的对应像面位置,而且不需要计算图象对,因此实时性好,是一般图形工作站和PC机上的增强现实系统进行实时注册的算法基础.

6.学位论文历萌投影系统中曲面的光度补偿2009

随着技术的不断进步,个人计算机有体积越来越小,而功能越来越多的发展趋势。在计算机视觉(Computer Vision)领域,增强现实(Augmented Reality)是一项极具潜力的技术。投影式增强现实由于其空间显示范围广、可操作性以及适用性强的特点而得到越来越广泛的关注。投影式增强现实系统多采用的是投影仪-相机系统,目前基于投影仪-相机的投影式增强现实领域已经有了一些深入的研究与具体的应用,包括投影墙的自动校准、交互式投影表面、智能环境与艺术表现等方面。

在投影仪-相机系统中,由于投影仪与相机本身仪器性能的特点以及投影面存在几何不规则性和带有色彩的纹理,投影的效果往往不能达到预期的显示要求。我们就需要针对仪器本身属性和环境属性对投影图像施行光度补偿算法。本文提出了一种曲面上的光度补偿方法,使投影在有纹理的曲面上成为可能,同时该方法基于视点变化实时地对投影图片进行几何矫正。该算法在光度补偿领域的贡献和创新点主要包括以下几个方面:

1.基于辐射度光照模型,改进原有的光度补偿模型,提出系统颜色混合矩阵的概念。由于该矩阵对于已经选定的投影仪-相机系统是固定不变的特点,可以在对图像做光度补偿之前,预先计算得到,从而加速了光度补偿算法。

2.为了获得投影仪和相机之间的几何映射,我们总结前人的经验,采用了快速打点的二进制点阵结构光方法。该方法具有精度高、稳定性好的特点,并且获得的几何映射信息可以运用到跟踪视点的交互中去。

3.在交互方面,我们分析了多种视点跟踪方法,选择使用双相机(标定相机和视点相机)系统作为交互系统。该系统在视点变化范围不大的情况下

,可以达到较高的精度,并且给出了针对视点变化剧烈和投影面存在自遮挡的情况,实验的进一步解决方案。

实验结果表明,本文提出的曲面光度补偿算法,已经可以在不存在自遮挡的曲面上实时、准确、稳定的进行光度补偿。在速度上,该算法已经可以对视频进行实时的光度补偿。

7.学位论文朱杰杰增强现实中多视图几何问题的研究2007

计算机视觉中的多视图几何技术构建了一套完整、成熟的从不同视点观察物体表面的理论。该理论囊括了许多几何知识,尤其是多幅视图之间存在的复杂而又美妙的几何关系已成为计算机理解客观世界的重要途径之一。本论文针对该技术在增强现实中的需求开展研究工作,取得的研究成果包括: (1)提出了基于数据不确定性的约束求解模型:数据是客观实体信息的载体,由于采样的不精确性,使得它包含了不确定性。在大多数视觉几何约束求解方法中,都忽略或简化了它对精度的影响。本文从数据不确定性出发,分析出图像不确定性的因素,提出了一个基于数据不确定性的约束求解模型(DUCRM)。该模型推导出4种不同层次的二维数据不确定性,并定义了图像不确定性的表达及其几何含义;通过迭代求解时不确定性的非线性扩散结果

,DUCRM对观测向量进行了逐步求精,并提高了求解精度。

(2)提出了改进的平面单应约束与对极几何约束的求解算法:针对低分辨率图像的兴趣点检测难、匹配精度低的问题,本文采用基于Harris角点检测与高阶曲线内部约束的混合算子来提高检测与匹配的精度,并结合DUCRM模型提高平面单应约束的求解精度。对极几何约束的线性求解方法对噪声敏感、精度较低;而非线性方法虽然精度高,但计算量大;另外,通用DUCRM模型求解时的奇异矩阵容易导致数值不稳定。针对这些问题,本文提出了一种常数项消除的方法避免了奇异矩阵,该方法根据观测向量的权值中心推导出待求参数矢量的最后一个元素与前8个元素的关系,从而分离出最后一个元素。实验结果表明,结合扩展DUCRM模型,该方法能较大地提高求解精度。

(3)提出了一种视频增强现实中虚实物体遮挡处理的加速算法:虚实物体之间正确、快速、鲁棒的遮挡处理一直是增强现实的难点之一。基于深度图求解方法的关键是如何快速地求出真实物体的深度,本文针对普通PC机提出了一种深度近似的快速方法:先用全局与局部高斯核对前景物体进行提取

;接着用提取的物体轮廓线上的点进行立体匹配,立体匹配采用对极几何约束缩小搜索范围;再用三角法将匹配结果反投到空间中,并求出深度均值作为前景物体的深度值;最后根据深度图以及物体的重叠区域进行遮挡处理。该方法具有速度快、精度高的优点。

(4)提出了一种基于反光球的快速真实光照检测与阴影绘制方法:针对双向反射分布函数、基于图像的重光照等方法恢复真实光源计算量大,且必须已知部分场景几何的问题,本文提出一种基于反光球的快速方法:假设真实光源离散地分布在半空间中,根据光源在反光球上的分布情况,可以快速地估计出真实光源的位置和方向。本文将该方法应用于开发的视频增强现实原型系统中,实现了虚拟物体的快速阴影绘制。

本文最后开发了一个增强型海底世界交互系统。它是一个可以容纳多个体验者共同参与,并能与各种虚拟海洋生物进行交互的系统。它综合实现了上面提出的几个算法,并实现了主体人与虚拟化身之间的和谐交互。该原型系统的开发探索了类似系统在科技馆中展出的可能性,具有潜在的商业应用价值。

8.期刊论文黄有群.姬永成.李丹.HUANG You-qun.JI Yong-cheng.LI Dan基于ARToolKit工具的增强现实交互操作

研究-计算机与现代化2008,""(9)

增强现实是把计算机生成的虚拟图像或其它信息叠加到用户所看到的真实世界中的一种技术.ARToolKit为增强现实技术的应用提供了一种方便快捷的开发工具,但多针对于浏览展示方面.本文在ARToolKit工具下针对AVI录像文件进行增强现实的应用开发,增加了用户和现实以及虚拟物体的交互操作,通过计算机视觉的方法着重解决把虚拟物体放置到用户在视频帧上指定的点.这些将为用户使用增强现实技术进行设计和规划提供方便.

9.学位论文黄侃计算机立体视觉中的摄像机标定算法的研究与应用2007

计算机视觉的基本任务之一就是从摄像机捕获的二维图像信息出发来计算三维空间中物体的几何信息,并由此重建和识别物体。空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个过程被称为是摄像机标定。总的来看,现有的摄像机标定技术大体可以归结为两类:传统的摄像机标定方法和摄像机自标定方法。

本课题通过研究计算机视觉中的摄像机的标定方法,并将标定的方法应用在基于录像的ARToolKit应用中。ARToolKit是由日本广岛城市大学与美国华盛顿大学联合开发的增强现实系统二次开发包。通过剖析ARToolKit关于摄像机标定的过程,发现其过程是利用两张特定的图片,并对图片进行手工移动来进行摄像头标定的实时计算,这种对图像手工移动的交互方式在录像中难以实现。在基于一段录像数据的增强现实的研究中,如果默认的摄像机参数不满足要求,ARToolKit就无法对其进行摄像机的标定工作。在计算机视觉中,摄像机标定参数的求解方法可以分为两种情况:一种是直接求解摄像机

模型的整体矩阵,一种是分别求解摄像机的内部参数和外部参数。前一种方法的好处是计算相对简单,而后一种方法虽然麻烦一些,但在应用具体参数时增加了灵活性。由于在ARToolKit中所需的参数是摄像机的内部参数,本文利用。Tsai两步法对包含了标定物的录像进行摄像机的标定,分别求出了摄像机的内部参数和外部参数。ARToolKit的工作是自成体系的,计算出的标定参数需要嵌入ARToolKit的数据流程,本文将Tsai两步法的标定结果中的内部参数传递给ARToolKit,最后利用ARToolKit对标志的识别、跟踪和图像合成技术实现虚实的结合,实现了ARToolKit向面向视频录像应用的扩展。

10.期刊论文全红艳.王长波.林俊隽.QUAN Hong-yan.WANG Chang-bo.LIN Jun-juan基于视觉的增强现实技术研究

综述鲻-机器人2008,30(4)

增强现实技术是当前计算机视觉领域中的热点问题之一,本文系统综述了基于视觉的增强现实技术的研究现状.首先,对基于视觉的增强现实技术的研究现状进行了概述:其次,详细地阐述了该领域目前出现的新技术,包括三维注册技术、摄像机标定技术、跟踪技术、虚实光照的一致性以及AR实空间建模技术,继而论述了该领域在研究中存在的问题,并对该领域中需要进一步解决的问题进行了讨论;最后,对增强现实技术的进一步研究进行了展望.

引证文献(6条)

1.何富运.罗晓曙.闭金杰.周虹基于图像检测技术的光纤插针内孔几何参数测量仪[期刊论文]-传感器与微系统2009(12)

2.李健.陈长明基于极线几何的改进多约束图像立体匹配[期刊论文]-微型机与应用 2009(24)

3.黄承韬.WANG Feng OpenCV中标定函数的源码详解和改进[期刊论文]-微计算机应用 2009(4)

4.高文娟.李健基于 OpenCV 的摄像机标定问题研究[期刊论文]-计算机与数字工程 2008(12)

5.曾祥樟.卢道华一种基于OpenCV和Tsai的摄像机两步标定新方法[期刊论文]-机电工程 2008(12)

6.谢明华.刘辉.王新辉基于OpenCV的实验室视频签到系统的设计[期刊论文]-计算机与现代化 2010(3)

本文链接:https://www.sodocs.net/doc/1e7597258.html,/Periodical_jsjgcysj200701064.aspx

授权使用:中国科学院自动化研究所(中科院自动化研究所),授权号:ecd62fb4-5094-4fec-beab-9ddd011a1d40

下载时间:2010年8月25日

基于OpenCV的摄像机标定

第28卷第1期计算机工程与设计2007年1月V01.28No.1ComputerEngineeringandDesignJan.2007 基于OpenCV的摄像机标定 尹文生,罗瑜林,李世其 (华中科技大学机械科学与工程学院,湖北武汉430074) 摘要:以增强现实系统中摄像机标定技术为研究对象,分析了开放计算机视觉函数库OpenCV中的摄像机模型,特别充分考虑了透镜的径向畸变和切向畸变影响及求解方法,给出了基于OpenCV的摄像机标定算法。该算法充分发挥了OpenCV的函数库功能,提高了标定精度和计算效率,具有良好的跨平台移植性,可以满足增强现实和其它计算机视觉系统的需要。 关键词:计算机视觉;增强现实;摄像机模型;透镜畸变;摄像机标定 中图法分类号:TP391文献标识码:A文章编号:1000.7024(2007)01—0197.03 CameracalibrationbasedonOpenCV YINWel"1。sheng,LUOYu.1in,LIShi—qi (SchoolofMechanicalScienceandEngineering,HuazhongUniversityofScienceandTechnology,Wuhan430074,China)Abstract:Fortheapplicationsoftechnologyofcameracalibrationtoaugustreality,thecameramodelinOpenCV(opensourcecomputervisionlibrary)isdiscussed,especiallyontheinfluencesandsolvingmethodsoflensradialdistortionandtangentialdistortion,andanarithmeticofcameracalibrationbasedonOpenCVisgiven.Thisarithmeticmakesuseofthefunctionsofthelibraryeffectively,improvesprecisionandefficiencyofcomputation,andhasagoodpropertyfortheapplicationtomulti-platform.Itcanmeettheneedsofaugustrealityandothercomputervisionsystems. Keywords:computervision;augustreality;cameramodel;lensdistortion;cameracalibration 0引言 摄像机标定,是指建立摄像机成像几何模型,描述空间坐标系中物体点同它在图像平面上像点之间对应关系的过程。摄像机标定的目的就是确定几何模型参数即摄像机参数“1。摄像机标定是计算机视觉应用中的关键技术,在增强现实系统中也必须采用摄像机标定技术实现图像的注册眨”。摄像机标定技术在立体视觉研究中占有非常重要的地位。一个完整的立体视觉系统通常可分为图像获取、摄像机标定、特征提取、立体匹配、深度确定及内插等6大部分“1。精确标定摄像机内外参数不仅可以直接提高测量精度,而且可以为后继的立体图像匹配与三维重建奠定良好的基础。一】。 目前通常采用的标定方法是基于“两步法圳””的传统摄像机标定方法,该方法比主动视觉摄像机标定方法和摄像机自标定方法标定精度高,而且标定过程简单,经过多年的研究已经发展得比较成熟,鲁棒性高。OpenCV(Intel。opensourcecomputervisionlibrary)是Intel。开放计算机视觉函数库,它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法,具备强大的图像和矩阵运算能力。该函数库中实现的摄像机标定方法采用的是文献[11]中的两步标定方法,而且在2005年7月最新发布的beta5版本中,不只完全重写了摄像机标定函数,而且引入了文献[12】中的自动寻找角点的方法,进一步提高了标定的智能化程度,用户只需导入用于标定的图片,整个标定过程无需人工的介入。OpenCV中的摄像机标定模块为用户提供了良好的接口,同时支持MS.Windows、Linux平台,有效地提高了开发效率,并且执行速度快,具有良好的跨平台移植性,因此可以很好地应用于工程实际当中。 l标定原理 1.1摄像机模型 摄像机标定首先要选择合适的摄像机模型,确定内外部参数。OpenCV标定算法中的摄像机模型以针孔模型(pin—holemodel)为基础,引入透镜的径向畸变和切向畸变,该模型相比于只引入一阶径向畸变的Tasi模型和针孔模型更加真实地反映了透镜实际的畸变情况m1。在该模型中,将空间点P在世界坐标系中的坐标值呱,K,乙)变换为图像平面上像素坐标系中坐标值(“,v)的过程可分解为下述的4步变换”1: 收稿日期:2005-12?06E-marl:wsyin@mail.hust.edu.cn 基金项目:国家民用航天科研专项计划基金项目(科工技[2004]1530)。 作者简介:尹文生(1963一),男,湖南常宁人,博士,副教授,研究方向为智能CAD、虚拟现实技术、机器人遥操作系统;罗瑜林(1981一),男,江西吉安人,硕士研究生,研究方向为机器人遥操作系统、机器视觉;李世其(1965一),男,江西吉安人,博士,教授,研究方向为CAD/CAE、虚拟现实技术、机器人遥操作系统。 一197— 万方数据

摄像机标定方法综述

摄像机标定方法综述 摘要:首先根据不同的分类方法对对摄像机标定方法进行分类,并对传统摄像机标定方法、摄像机自标定方法等各种方法进行了优缺点对比,最后就如何提高摄像机标定精度提出几种可行性方法。 关键字:摄像机标定,传统标定法,自标定法,主动视觉 引言 计算机视觉的研究目标是使计算机能通过二维图像认知三维环境,并从中获取需要的信息用于重建和识别物体。摄像机便是3D 空间和2D 图像之间的一种映射,其中两空间之间的相互关系是由摄像机的几何模型决定的,即通常所称的摄像机参数,是表征摄像机映射的具体性质的矩阵。求解这些参数的过程被称为摄像机标定[1]。近20 多年,摄像机标定已成为计算机视觉领域的研究热点之一,目前已广泛应用于三维测量、三维物体重建、机器导航、视觉监控、物体识别、工业检测、生物医学等诸多领域。 从定义上看,摄像机标定实质上是确定摄像机内外参数的一个过程,其中内部参数的标定是指确定摄像机固有的、与位置参数无关的内部几何与光学参数,包括图像中心坐标、焦距、比例因子和镜头畸变等;而外部参数的标定是指确定摄像机坐标系相对于某一世界坐标系的三维位置和方向关系,可用3 ×3 的旋转矩阵R 和一个平移向量t 来表示。 摄像机标定起源于早前摄影测量中的镜头校正,对镜头校正的研究在十九世纪就已出现,二战后镜头校正成为研究的热点问题,一是因为二战中使用大量飞机,在作战考察中要进行大量的地图测绘和航空摄影,二是为满足三维测量需要立体测绘仪器开始出现,为了保证测量结果的精度足够高,就必须首先对校正相机镜头。在这期间,一些镜头像差的表达式陆续提出并被普遍认同和采用,建立起了较多的镜头像差模型,D.C.Brown等对此作出了较大贡献,包括推导了近焦距情况下给定位置处径向畸变的表达式及证明了近焦距情况下测得镜头两个位置处的径向畸变情况就可求得任意位置的径向畸变等[2]。这些径向与切向像差表达式正是后来各种摄像机标定非线性模型的基础。随着CCD器件的发展,现有的数码摄像机逐渐代替原有的照相机,同时随着像素等数字化概念的出现,在实际应用中,在参数表达式上采用这样的相对量单位会显得更加方便,摄像机标定一词也就代替了最初的镜头校正。

opencv摄像机标定代码

// cvCalib.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #include void InitCorners3D(CvMat *Corners3D, CvSize ChessBoardSize, int Nimages, float SquareSize); int image_width = 768; int image_height = 576;//待标定图片的大小 const int ChessBoardSize_w = 7; const int ChessBoardSize_h = 7;//图片中可标定的角数 const CvSize ChessBoardSize = cvSize(ChessBoardSize_w,ChessBoardSize_h); const int NPoints = ChessBoardSize_w*ChessBoardSize_h;//角点个数 const int NImages=6;//待标定的图片数 int corner_count[NImages] = {0}; float SquareWidth = 10; //棋盘格子的边长,可任意设定,不影响内参数 CvMat *intrinsics; CvMat *distortion_coeff; CvMat *rotation_vectors; CvMat *translation_vectors; CvMat *object_points; CvMat *point_counts; CvMat *image_points; void main() { IplImage *current_frame_rgb; IplImage *current_frame_gray; IplImage *chessBoard_Img; CvPoint2D32f corners[NPoints*NImages]; chessBoard_Img =cvCreateImage(cvSize(image_width, image_height), IPL_DEPTH_8U, 3); current_frame_gray = cvCreateImage(cvSize(image_width, image_height), IPL_DEPTH_8U, 1); current_frame_rgb = cvCreateImage(cvSize(image_width, image_height), IPL_DEPTH_8U, 3); int captured_frames=0;

基于OpenCV的CCD摄像机标定方法_雷铭哲_孙少杰_陈晋良_陶磊_魏坤

MethodofCCDCameraCalibrationBasedOnOpenCV LEIMing-zhe1,SUNShao-jie2,CHENJin-liang1,TAOLei1,WEIKun1 (1.North Automation Control Technology Institute ,Taiyuan 030006,China ; 2.Navy Submarine Academy ,Qingdao 266042,China )Abstract: Computervisionhasbeenwidelyusedinindustry,agriculture,military,transportationareaandsoon.Cameracalibrationisveryimportantandalsothekeyresearchfieldofvisionsystem.ThispapermainlyresearchesonthemethodofCCDcameracalibration,thepin-holemodelhasbeenintroducedandappliedinprocessofcalibration.Specially,inordertoimprovetheaccuracy,bothradialandtangentiallensdistortionhavebeentakenintoaccountduringtheimplementofcalibrationbasedonOpenCV.Thiskindofarithmetichaspracticalvalueontheapplicationdesignofimageprocessingandcomputervision,andexperimentresultsshowgoodprecision,whichcanmeettheapplicationneedofvisualinspectionorothervisionsystemswell. Keywords: pin-holemodel,cameracalibration,lensdistortion,OpenCV摘要: 计算机视觉在工业,农业,军事,交通等领域都有着广泛应用。摄像机标定是视觉系统的重要环节,也是研究的关键领域。以摄像机标定技术为研究对象,选取针孔成像模型,简述了世界坐标系、摄像机坐标系和图像坐标系及其相互间的位置关系,对标定过程进行了深入研究。特别地,为提高标定精度,充分考虑了透镜径向和切向畸变影响及其求解方法,制作了棋盘格平面标定模板,基于开放计算机视觉函数库(OpenCV)实现了摄像机标定。该标定算法能够充分发挥OpenCV函数库功能,对于图像处理与计算机视觉方面的应用设计具有实用价值。实验结果表明该方法取得了较高精度,能够满足视觉检测或其他计算机视觉系统的应用需要。 关键词:针孔模型,摄像机标定,透镜畸变,OpenCV中图分类号:S219 文献标识码:A 基于OpenCV的CCD摄像机标定方法 雷铭哲1,孙少杰2,陈晋良1,陶 磊1,魏坤1 (1.北方自动控制技术研究所,太原030006;2.海军潜艇学院,山东青岛266042 )文章编号:1002-0640(2014) 增刊-0049-03Vol.39,Supplement Jul,2014 火力与指挥控制 FireControl&CommandControl第39卷增刊 引言 摄像机标定是计算机视觉系统的前提和基础,其目的是 确定摄像机内部的几何和光学特性(内部参数)以及摄像机 在三维世界中的坐标关系(外部系数) [1] 。考虑到摄像机标定在理论和实践应用中的重要价值,学术界近年来进行了广泛的研究。 摄像机标定方法可以分为线性标定和非线性标定,前者简单快速,精度低,不考虑镜头畸变;后者由于引入畸变参数而使精度提高,但计算繁琐,速度慢,对初值选择和噪声敏感。本文将两者结合起来,采用由粗到精策略,以实现精确标定。 1摄像机模型 本文选取摄像机模型中常用的针孔模型[2-3],分别建立三维世界坐标系(O w X w Y w Z w ),摄像机坐标系(O c X c Y c Z c )及图像平面坐标系(O 1xy ) 如下页图1所示。其中摄像机坐标系原点O c 为摄像机光心,Z c 轴与光轴重合且与图像平面垂直,O c O 1为摄像机焦距f 。图像坐标系原点O 1为光轴与图像平面的交点,x ,y 轴分别平行于摄像机坐标系X c 、Y c 轴。设世界坐标系中物点P 的三维坐标为(X w ,Y w ,Z w ),它在理想的针孔成像模型下图像坐标为P (X u ,Y u ),但由于透镜畸变引起偏离[4-5],其实际图像坐标为P (X d ,Y d )。图像收稿日期:2013-09-20修回日期:2013-11-10 作者简介:雷铭哲(1977-),男,湖北咸宁人,硕士。研究方向:故障诊断系统。 49··

最新-01-30相机标定的原理与意义及opencv、matlab实现差异小结汇总

2011-01-30相机标定的原理与意义及O p e n C V、M a t l a b实现差异小结

2011-01-30 相机标定的原理与意义及OpenCV、Matlab实现差异小结 分类:OpenCV点滴2011-01-30 20:35 2292人阅读评论(3) 收藏举报本文是一篇关于相机标定意义和原理的个人总结,包含了OpenCV和Matlab中常用的相机标定函数的注解。 相机标定是机器视觉的基础,标定结果的好坏直接决定了机器视觉的系统精度,作用可见一斑。在这一年半的时间里,我个人也是随着实验和程序的进一步理解,对标定的原理和意义有了更多的想法。同样,由于博文的关系,仍有一些朋友会常常询问标定的程序问题。本人的2010-05-17OpenCV标定程序的问题也多次被朋友询问,由于当时对标定的认识还不够系统,因此现在认为该文对标定的意义和原理有很多误解,并在此推荐一些较好的博文拱大家学习:双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目标定; 双目测距与三维重建的OpenCV实现问题集锦(二)双目标定与双目校正; 双摄像头测距的OpenCV实现; 分享一些OpenCV实现立体视觉的经验; 下面结合本人的毕业论文及一年半来对机器视觉的学习,对相机标定的意义和原理进行叙述。 1.单目相机模型

单目相机模型中的三种坐标系关系如图1所示,相机坐标系即是以光轴中心O为原点的坐标系,其z轴满足右手法则,成像原点所代表平面即为像平面坐标系(实际应用中,均以图像左上角为坐标系原点),实际物体坐标系即为世界坐标系。 图1 单目相机模型的三坐标系统关系其中,在世界坐标系的值为,是在像平面坐标系的投影点,其相机坐标系的值为。是相机坐标系轴与像平面夹角,一般情况下轴与像平面垂直,值为。且相机坐标系与像平面平行, 为相机的焦距。 对于从相机坐标系到像平面坐标系的变换,像平面坐标系是用像素单位来表示的,而相机坐标系则是以毫米为单位来表示,因此,要完成改变换过程就需要先得到像平面的像素单位与毫米单位之间的线性关系。在图1中,相机光轴中心z轴方向上与像平面的交点称为投影中心,坐标为,是像素单位,而每个像素在和的物理尺寸为和,单位是像素/毫米,则像平面的像素与毫米间的线性关系如式(1):

基于OpenCV的摄像机标定的应用研究

38562009,30(16)计算机工程与设计Computer Engineering and Design 0引言 机器视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体,而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的,这些几何模型参数就是摄像机参数。在大多数条件下,这些参数必须通过实验与计算才能得到,这个过程称为摄像机标定(或定标)。标定过程就是确定摄像机的几何和光学参数,摄像机相对于世界坐标系的方位。标定精度的大小,直接影响着机器视觉的精度。迄今为止,对于摄像机标定问题已提出了很多方法,摄像机标定的理论问题已得到较好的解决[1-5]。对摄像机标定的研究来说,当前的研究工作应该集中在如何针对具体的实际应用问题,采用特定的简便、实用、快速、准确的标定方法。 OpenCV是Intel公司资助的开源计算机视觉(open source computer vision)库,由一系列C函数和少量C++类构成,可实现图像处理和计算机视觉方面的很多通用算法。OpenCV有以下特点: (1)开放C源码; (2)基于Intel处理器指令集开发的优化代码; (3)统一的结构和功能定义; (4)强大的图像和矩阵运算能力; (5)方便灵活的用户接口; (6)同时支持Windows和Linux平台。 作为一个基本的计算机视觉、图像处理和模式识别的开源项目,OpenCV可以直接应用于很多领域,是二次开发的理想工具。目前,OpenCV的最新版本是2006年发布的OpenCV 1.0版,它加入了对GCC4.X和Visual https://www.sodocs.net/doc/1e7597258.html,2005的支持。 1摄像机标定原理 1.1世界、摄像机与图像坐标系 摄像机标定中有3个不同层次的坐标系统:世界坐标系、摄像机坐标系和图像坐标系(图像像素坐标系和图像物理坐标系)。 如图1所示,在图像上定义直角坐标系 开发与应用

摄像机标定程序使用方法

一、材料准备 1 准备靶标: 根据摄像头的工作距离,设计靶标大小。使靶标在规定距离范围里,尽量全屏显示在摄像头图像内。 注意:靶标设计、打印要清晰。 2图像采集: 将靶标摆放成各种不同姿态,使用左摄像头采集N幅图像。尽量保存到程序的debug->data文件夹内,便于集中处理。 二、角点处理(Process菜单) 1 准备工作: 在程序debug文件夹下,建立data,left,right文件夹,将角探测器模板文件target.txt 复制到data文件夹下,便于后续处理。 2 调入图像: File->Open 打开靶标图像 3 选取角点,保存角点: 点击Process->Prepare Extrcor ,点击鼠标左键进行四个角点的选取,要求四个角点在最外侧,且能围成一个正方形区域。每点击一个角点,跳出一个显示角点坐标的提示框。当点击完第四个角点时,跳出显示四个定位点坐标的提示框。 点击Process->Extract Corners ,对该幅图的角点数据进行保存,最好保存到debug->data-> left文件夹下。命名时,最好命名为cornerdata*.txt,*代表编号。 对其余N-1幅图像进行角点处理,保存在相同文件夹下。这样在left文件夹会出现N 个角点txt文件。 三、计算内部参数(Calibration菜单) 1 准备工作: 在left文件夹中挑出5个靶标姿态差异较大的角点数据txt,将其归为一组。将该组数据复制到data文件夹下,重新顺序编号,此时,文件名必须为cornerdata*,因为计算参数时,只识别该类文件名。 2 参数计算: 点击Calibration->Cameral Calibrating,跳出该组图像算得的摄像机内部参数alpha、beta、gama、u0、v0、k1、k2七个内部参数和两组靶标姿态矩阵,且程序默认保存为文件CameraCalibrateResult.txt。 3 处理其余角点数据文件 在原来N个角点数据文件中重新取出靶标姿态较大的5个数据文档,重复步骤1和2;反复取上M组数据,保存各组数据。 注意:在对下一组图像进行计算时,需要将上一组在data文件夹下的5个数据删除。 四、数据精选 1 将各组内部参数计算结果进行列表统计,要求|gama|<2,且gama为负,删掉不符合条件的数据。 2 挑出出现次数最高的一组数据。

相机标定程序

/*环境OpenCV2.3.1+visual studio2010 *calibdata.txt 保持标定图片的路径(根据实际设置) */ #include "stdafx.h" #include "cv.h" #include "highgui.h" #include #include #include using namespace std; int main() { IplImage * show; //RePlay图像指针 cvNamedWindow("RePlay",1); int number_image_copy=7; //复制图像帧数 CvSize board_size=cvSize(5,7); //标定板角点数 CvSize2D32f square_size=cvSize2D32f(10,10); //假设我的每个标定方格长宽都是1.82厘米 float square_length=square_size.width; //方格长度 float square_height=square_size.height; //方格高度 int board_width=board_size.width; //每行角点数 int board_height=board_size.height; //每列角点数 int total_per_image=board_width*board_height; //每张图片角点总数 int count; //存储每帧图像中实际识别的角点数 int found;//识别标定板角点的标志位 int step; //存储步长,step=successes*total_per_image; int successes=0; //存储成功找到标定板上所有角点的图像帧数 int a=1; //临时变量,表示在操作第a帧图像 const int NImages = 7;//图片总数

2011-01-30相机标定个人总结

本文是一篇关于相机标定意义和原理的个人总结,包含了OpenCV和Matlab中常用的相机标定函数的注解。 相机标定是机器视觉的基础,标定结果的好坏直接决定了机器视觉的系统精度,作用可见一斑。在这一年半的时间里,我个人也是随着实验和程序的进一步理解,对标定的原理和意义有了更多的想法。同样,由于博文的关系,仍有一些朋友会常常询问标定的程序问题。本人的2010-05-17OpenCV标定程序的问题也多次被朋友询问,由于当时对标定的认识还不够系统,因此现在认为该文对标定的意义和原理有很多误解,并在此推荐一些较好的博文拱大家学习: 双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目标定; 双目测距与三维重建的OpenCV实现问题集锦(二)双目标定与双目校正; 双摄像头测距的OpenCV实现; 分享一些OpenCV实现立体视觉的经验; 下面结合本人的毕业论文及一年半来对机器视觉的学习,对相机标定的意义和原理进行叙述。 1.单目相机模型 单目相机模型中的三种坐标系关系如图1所示,相机坐标系即是以光轴中心O为原点的坐标系,其z轴满足右手法则,成像原点 f O所代表平面即为像平面坐标系(实际应用中,均以图像左上角为坐标系原点),实际物体坐标系即为世界坐标系。 光轴中心O 图1 单目相机模型的三坐标系统关系 其中,P在世界坐标系的值为() W W W X,Y,Z,P u 是P在像平面坐标系的投影点,其相机 坐标系的值为(X,Y,Z) u u u 。θ是相机坐标系Z轴与像平面夹角,一般情况下Z轴与像平面垂直,θ值为90 。且相机坐标系x y O与像平面 f f f x y O平行,f为相机的焦距。

标签摄像机标定

标签:摄像机标定 opencv标定程序的代码(完全测试好的) 这个是我在win32 平台下写的程序,测试完全通过: 不过要注意下面的问题: (1)opencv库是1.0的,我在vc6.0的平台使用 (2)软件的设置要正确 (3)图片载入的时候,使用的是批处理文件(其实就是建一个txt文件,里面写的和dos下面的操作代码一样的输入) (4)里面现在还有个问题没有解决:在得到角点坐标的时候,cvFind CornerSubPix里面的搜索区域还不明白 (05)下面是我在网上搜的别人的代:测试通过的: ===================== 下面是我的代码: /*标定的过程: 图片的加载 角点的检测 提取角点精确坐标 参数求解 利用参数对图像进行矫正 */

#include #include"cv.h" #include"highgui.h" #include //函数声明 void PrintMat(CvMat *matrix,BOOL save_or_show,FILE *fp); int main(int argc,char **argv) { int i=1; char k=0; int CurrentImage = 0; int CurrentRow = 0; //行 int CurrentColumn = 0; //列 int findcorner_result=0; FILE *fp; //文件指针 int ChessBoardSize_w =6; //角点个数 int ChessBoardSize_h =7; int width_pixel =1280; //像素 int high_pixel =1024; float SquareSize=10; //棋盘大小 int NImages=16; CvSize ChessBoardSize; CvSize image_pixel; int NPoints=0; int *corner_counter; float *temppoints; //这里可以使用内存动态存储管理。。。 CvPoint2D32f *corners; //存储角点坐标的数组

张氏标定法原理及其改进1

张正友算法原理及其改进 由于世界坐标系的位置可以任意选取,我们可以假定世界坐标系和摄像机坐标系重合,故定义模板平面落在世界坐标系的0W Z =平面上。用i r 表示R 的每一列向量,那么对平面上的每一点,有: [][]12312 0111W W W W X u X Y s v A r r r t A r r t Y ?? ?? ?? ?? ??????==?????????????? ?? ?? 这样,在模板平面上的点和它的像点之间建立了一个单应性映射H ,又称单应性矩阵或投影矩阵。如果已知模板点的空间坐标和图像坐标,那么就已知m 和M ,可以求解单应性矩阵H 。)1,,(w w Y X )1,,(v u 因为11W W u X s v H Y ????????=????????????,其中11 121321222331 32 1h h h H h h h h h ?? ??=?????? ,可推出: 111213 21222331321 W W W W W W su h X h Y h sv h X h Y h s h X h Y =++?? =++??=++? 故, 1112133132212223313211W W W W W W W W h X h Y h u h X h Y h X h Y h v h X h Y ++?=?++? ? ++?=?++? 将分母乘到等式左边,即有 3132111213 31 32212223W W W W W W W W uX h uY h u h X h Y h vX h vY h v h X h Y h ++=++??++=++? 又令[]T h h h h h h h h h 3231232221131211 =',则 1 00000 01W W W W W W W W X Y uX uY u h X Y vX vY v --???? '=????--??? ? 多个对应点的方程叠加起来可以看成Sh d '=。利用最小二乘法求解该方程,即1()T T h S S S d -'=,进而得到H 。 摄像机内部参数求解 在求取单应性矩阵后,我们进一步要求得摄像机的内参数。首先令i h 表示H 的每一列向量,需要注意到上述方法求得的H 和真正的单应性矩阵之间可能相差一个比例因子,则H 可写成: [][]1 2 312h h h A r r t λ=

基于OpenCV的摄像机标定

万方数据

K,乙)变换为摄像机坐标系中的坐标值只(疋,K,乙)如下 ㈧…=㈠M㈤(2)将坐标值只(冠,K,zc)在针孔模型中进行规范化投影,得 只=[妻甜引∽(3)引入透镜的畸变,畸变后的规范化坐标值可以用雎如砌 阱Xdc,峨‰叫州黝;篙]㈤ 将Pd(xa,ya)转换为图像上像素坐标系上的坐标值B(“,访 f吲:时‰(4) 够可=f/.劬sx/咖(5)像素之间的有效距离(mm/pixel);dpy为计算机图像在垂直方向 换)方法计算出摄像机的内部参数和外部参数的初值Ⅲ。该步虑透镜畸变的影响,得到的参数值并不准确。不过作为下一 数据拟合目标函数““如式6所示。既要将图像上Ⅳ个角点的坐标值(U,K)(f=1,…朋拾取出来,还要利用上述畸变模型计算出这Ⅳ个标志点的坐标值(‰vJ)(f=1,…朋,然后利用式6进行数 转化为求解非线性最小二乘的问题,通过非线性优化算法“”多次迭代,最后得到使目标函数的值最小的参数值,降低了求解难度。迭代的初值由第①步的DLT方法算出,DLT方法不 2基于OpenCV的摄像机标定 基于OpenCV的摄像机标定采用平面棋盘格标定模板,一198一 为了提高角点提取的成功率,在标定方块的外围,还要求保留一个方块宽的白色空白区域,如图1所示。摄像机只需在不同的角度抓取几张平面标定模板的图片,就可以实现对摄像机的标定。显然,由于采用最小二乘法,抓得图越多,标定的结果就越精确。 图1平面棋盘格标定模板 虽然OpenCV中自动寻找角点函数提取角点的成功率很高,但是若碰到光线被遮挡等情况,使得标定模板上的标定块在图像上不清晰或提取的角点数目与设定的数目不相符的状况,就会导致角点提取失败,如图2所示:因此OpenCV并不保证能够提取所有图像上的角点。所以在设计标定算法时必须要考虑角点不能被提取的情况:一方面,如果角点提取成功的图过少,则标定出来的结果就不一定能满足精度的要求,需要重新采图;另一方面,由于摄像机外部参数的个数与标定图像的个数相关联,所以在最后计算标定结果时,应将提取角点失败的图像舍弃,再根据剩下图像的数目,动态地分配参数在内存中的储存空间,如果没有这么一个筛选的过程,盲目得在内存中分配参数的储存空间,则在提取角点失败的图像上,不能找到与角点在世界坐标系中的坐标值相对应的像素坐标系上的坐标值,在这种情况下强行计算的话,很容易出现程序报错,得不到标定结果的情况。因此,本文提出以下摄像机标定算法: (1)读取一组标定用图像数据; (2)用cvFindChessboardComers()筛选图像;将读入的一组图像数据分别代入cvFindChessboardComers0函数,如果返回值是1,则表示在该幅图像上提取的角点数目和设定的相同,提取角点成功;若为0,则表示角点提取失败,该幅图要抛弃; (3)如果可用的标定图的数目满足设定的最少标定用图的数目,继续步骤(4);否则,则应重新采图,返回步骤(1); (4)根据筛选剩下图像的数目用cvCreateMat0为摄像机的内外部参数、角点在世界坐标系的坐标值以及在图像坐标系中的坐标值分配内存存储空间; (5)将筛选剩下的图像代入cvFindChessboardComers0,得到角点在图像像素坐标系中坐标值;再将图像和得到的图像像素坐标系中坐标值代入FindComerSubPix()函数,进一步精 (a)角点提取失败(b)角点提取成功 图2角点提取图像  万方数据

摄像机标定程序中用到的OpenCV函数

摄像机标定程序中用到的OpenCV函数 FindChessboardCorners 寻找棋盘图的内角点位置 int cvFindChessboardCorners( const void*image, CvSize pattern_size, CvPoint2D32f* corners,int* corner_count=NULL, int flags=CV_CALIB_CB_ADAPTIVE_THRESH ); image 输入的棋盘图,必须是8位的灰度或者彩色图像。 pattern_size 棋盘图中每行和每列角点的个数。 corners 检测到的角点 corner_count 输出,角点的个数。如果不是NULL,函数将检测到的角点的个数存储于此变量。 flags 各种操作标志,可以是0或者下面值的组合: CV_CALIB_CB_ADAPTIVE_THRESH - 使用自适应阈值(通过平均图像亮度计算得到)将图像转换为黑白图,而不是一个固定的阈值。 CV_CALIB_CB_NORMALIZE_IMAGE - 在利用固定阈值或者自适应的阈值进行二值化之前,先使用cvNormalizeHist来均衡化图像亮度。 CV_CALIB_CB_FILTER_QUADS - 使用其他的准则(如轮廓面积,周长,方形形状)来去除在轮廓检测阶段检测到的错误方块。 函数cvFindChessboardCorners试图确定输入图像是否是棋盘模式,并确定角点的位置。如果所有角点都被检测到切它们都被以一定顺序排布(一行一行地,每行从左到右),函数返回非零值,否则在函数不能发现所有角点或者记录它们地情况下,函数返回0。例如一个正常地棋盘图右8x8个方块和7x7个内角点,内角点是黑色方块相互联通地位置。这个函数检测到地坐标只是一个大约地值,如果要精确地确定它们的位置,可以使用函数cvFindCornerSubPix。

摄像机标定方法综述

摄像机标定方法综述 李 鹏 王军宁 (西安电子科技大学,陕西西安710071) 摘 要:首先介绍了摄像机标定的基本原理以及对摄像机标定方法的分类。通过对最优化标定法、双平面标定法、两步法等传统摄像机方法的具体分析,给出了各种方法的优劣对比;同时对多种自标定方法的研究现状、发展情况以及存在问题进行了探讨。最后给出了发展传统摄像机标定方向、提高摄像机自标定精度的一些参考建议。 关键词:摄像机标定;传统标定;自标定;优化算法;成像模型 中图分类号:T N948.41 文献标识码:A 0 引言 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定[1]。无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。因此,做好摄像机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。 1 标定分类 摄像机标定的目的是利用给定物体的参考点坐标(x, y,z)和它的图像坐标(u,v)来确定摄像机内部的几何和光学特性(内部参数)以及摄像机在三维世界中的坐标关系(外部参数)。内部参数包括镜头焦距f,镜头畸变系数(k、s、p),坐标扭曲因子s,图像坐标原点(u0,v0)等参数。外部参数包括摄像机坐标系相对于世界坐标系得旋转矩阵R和平移向量T等参数。 传统摄像机标定的基本方法是,在一定的摄像机模型下,基于特定的实验条件如形状、尺寸已知的参照物,经过对其进行图像处理,利用一系列数学变换和计算方法,求取摄像机模型内部参数和外部参数。另外,由于许多情况下存在经常性调整摄像机的需求,而且设置已知的参照物也不现实,这时就需要一种不依赖参照物的所谓摄像机自标定方法。这种摄像机自标定法是利用了摄像机本身参数之间的约束关系来标定的,与场景和摄像机的运动无关,所以相比较下更为灵活。 总的来说,摄像机标定可以分为两个大类:传统的摄像机标定方法和摄像机自标定法。2 传统的摄像机标定方法 传统的摄像机标定方法按照其算法思路可以分成若干类,包括了利用最优化算法的标定方法,利用摄像机变换矩阵的标定方法,进一步考虑畸变补偿的两步法,双平面方法,改进的张正友标定法以及其他的一些方法等。 2.1 利用最优化算法的标定方法 这一类摄像机标定方法的优点是可以假设摄像机的光学成像模型非常复杂。然而由此带来的问题是:1)摄像机标定的结果取决于摄像机的初始给定值,如果初始值给得不恰当,很难通过优化程序得到正确的结果;2)优化程序非常费时,无法实时地得到结果。 根据参数模型的选取不同,这一类的方法主要以下两种: 1)摄影测量学中的传统方法:Faig在文[2]中提出的方法是这一类技术的典型代表。分析F aig给出的方法,可以看到在他的标定方法中,利用了针孔摄像机模型的共面约束条件,假设摄像机的光学成像模型非常复杂,考虑了摄像机成像过程中的各种因素,精心设计了摄像机成像模型,对于每一幅图像,利用了至少17个参数来描述其与三维物体空间的约束关系,计算量非常大。 2)直接线形变换法:直接线性变换方法是A bde-l A ziz 和Karara首先于1971年提出的[3]。通过求解线性方程的手段就可以求得摄像机模型的参数,这是直接线性变换方法有吸引力之处。然而这种方法完全没有考虑摄像机过程中的非线性畸变问题,为了提高精度,直接线性变换方法进而改进扩充到能包括这些非线性因素,并使用非线性的手段求解。 2.2 利用透视变换矩阵的摄像机标定方法[4] 从摄影测量学中的传统方法可以看出,刻划三维空间坐标系与二维图像坐标系关系的方程一般说来是摄像机内部参数和外部参数的非线性方程。如果忽略摄像机镜头的非 山西电子技术 2007年第4期 综 述 收稿日期:2006-12-18 第一作者 李鹏 男 28岁 硕士研究生

opencv标定模板

竭诚为您提供优质文档/双击可除 opencv标定模板 篇一:摄像机标定原理及源码 计算机视觉摄像机标定实验报告 [实验名称]基于opencV的摄像机标定 [实验项目] 1、学会使用opencV 2、利用opencV进行摄像机标定,编程实现,给出实验结果及其分析。 [实验仪器设备]电脑 +Visualstudio20xx+opencV.2.4.8。 [实验原理] 1、理论知识 如图,(u、v)表示以像素为单位的图像坐标系的坐标,(x、y)表示以mm为单位的图像坐标系的坐标,在x、y坐标系中,原点o1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心,但是由于制造原因,很多情况下会有偏移,若o1在u、V坐标系中坐标为(u0,v0),每一个像素在x轴与y轴方向上的无力尺寸为dx、dy,则图像任意一

个像素在两个坐标系下的坐标有如下关系: 如图, oc点为摄像机光心,xc轴和yc轴与图像的x轴与y轴平行,zc轴为摄像机光轴,它与图像平面垂直。光轴与图像平面的交点,极为图像坐标系的原点,由点oc与xc、yc、zc轴组成的直角坐标系称为摄像机坐标系,ooc为摄像机焦距: 由于摄像机可以安放在环境中任意位置,所以在环境中选择一个基准坐标系来描述摄像机位置,并用它描述环境中任何物体的位置,该坐标系为世界坐标系。它有xw、yw和zw轴组成,摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵与平移向量t来描述。 总体来说,世界坐标系到图像坐标系的关系可总结如下:摄像头成像几何关系,其中oc点称为摄像头(透镜) 的光心,xc轴和yc轴与图像的x轴和y轴平行,zc轴为摄像头的光轴,它与图像平面垂直。光轴与图像平面的交点o1,即为图像坐标系的原点。由点oc与xc、yc、zc轴组成的坐标系称为摄像头坐标系,oco1的距离为摄像头焦距,用f表示。 又称为线性摄像机模型,任何空间点m在图像中的投影位置m,为光心oc与m的连线ocm与图像平面的交点。此时有比例关系如下:

实验报告:摄像机标定

北京联合大学 实验报告 摄像机标定 班级:14级软件工程学号:140803502 姓名:郑永荣 2015年 6 月 28 日

1 实验任务 (原始任务)使用个人摄像机拍摄一组标定图片,完成对拍摄设备进行标定的任务。 为了更加便捷方便,开发一个程序实现自动开启摄像机,并且自动拍摄标定图片以及完成摄像机标定,得到摄像机的内外参数,均需XML文件保存。 2 实验原理 2.1 摄像机内外参数定义(或说明) 摄像机内参数:主点(图像帧存的中心点)、实际焦距、镜头畸变(径向镜头畸变和切向镜头畸变)以及系统计算误差参数等。 摄像机外参数:将给出摄像机坐标相对于世界坐标系的位置和方向,即摄像机相对于外部世界坐标的方位。如旋转参数和平移参数。 2.2 摄像机标定原理 2.2.1 摄像机光学成像过程的四个步骤:

2.2.2坐标系 2.2.2.1 世界坐标系--摄像机坐标系 世界坐标系 摄像机坐标系 世界坐标系与摄像机坐标系的转换关系为: R和T分别为从世界坐标到摄像机坐标系的旋转变换系数和平移变换

系数,反映的是摄像机坐标系与世界坐标系之间的位置关系,因此称为外参数。 摄像机将三维空间点P 经过摄像机中心C 投影到像平面上为点p ,其中点p 为摄像机中心O C 和三维空间点P 的连线与图像平面的交点。 其中,),,(C C C Z Y X 是点P 在摄像机坐标系中的三维坐标, ),(u u y x 是针孔摄像机模型下p 点的物理图像坐标,单位为mm 。 2.2.2.2 物理坐标系--像素坐标系 令p 为归一化的理想物理坐标,相当于摄像机的焦距f 为1。 像素坐标系 图像物理坐标与像素坐标之间的关系如下:

相关主题