基于OpenCV的视觉测量技术中摄像机标定方法
- 格式:pdf
- 大小:493.12 KB
- 文档页数:5
技术创新《微计算机信息》(测控自动化)2009年第25卷第11-1期360元/年邮局订阅号:82-946《现场总线技术应用200例》软件天地基于OpenCV 的多视角视觉测量系统标定Calibration for Multi-Angles Vision Measuring System Based on OpenCV(天津科技大学)李旭王永强许增朴于德敏LI Xu WANG Yong-qiang XU Zeng-pu YU De-min摘要:分析了线结构光式多视角视觉测量系统的标定方法,给出了基于开源视觉库OpenCV 的多视角视觉测量系统标定算法的处理流程,实现了一个完整的多视角视觉测量系统标定模块的开发。
实验证明该方法简便,易行。
关键词:摄像机标定;多视角;视觉测量系统;OpenCV 中图分类号:TP391文献标识码:AAbstract:The principle of camera calibration method for multi -angles vision measuring system is analyzed.The processing flow of the calibration method is given based on Open Source Computer Vision library.The camera calibration software for multi-angles vi -sion measuring system is realized.The experiment proves that the method is easy and user-friendly.Key words:Camera calibration;Multi-angles;Vision measuring system;OpenCV文章编号:1008-0570(2009)11-1-0204-031引言在线结构光多视角视觉测量系统应用中,系统标定通常是既繁琐又关键的技术环节,由于算法复杂,目前还没有一种通用有效的标准方法。
基于OpenCV的视觉测量技术中摄像机标定方法
程建璞;项辉宇;于修洪
【期刊名称】《北京工商大学学报(自然科学版)》
【年(卷),期】2010(028)001
【摘要】以视觉测量系统中的摄像机标定为研究对象,分析了开源计算机视觉库OpenCV中的摄像机模型,并考虑了镜头的畸变及求解方法,得出基于OpenCV的摄像机标定方法.该方法利用了OpenCV的函数库,简化了标定求解过程,提高了标定速率,并具有良好的移植性,适合于其他视觉测量系统.
【总页数】5页(P38-42)
【作者】程建璞;项辉宇;于修洪
【作者单位】北京工商大学,机械工程学院,北京,100048;北京工商大学,机械工程学院,北京,100048;北京工商大学,机械工程学院,北京,100048
【正文语种】中文
【中图分类】TP242.6+2;TS976.9
【相关文献】
1.基于OpenCV的焊缝跟踪系统中摄像机标定方法 [J], 赖小波;朱世强;曹新星
2.基于OpenCV的车体覆盖件视觉测量的摄像机标定 [J], 程建璞;项辉宇
3.基于OpenCV的CCD摄像机标定方法 [J], 雷铭哲;孙少杰;陈晋良;陶磊;魏坤
4.基于OpenCV和本质矩阵的双目立体视觉摄像机标定方法 [J], 蓝福明;杨宜民
5.基于OpenCV的红外与可见光双摄像机标定方法研究 [J], 任贵文
因版权原因,仅展示原文概要,查看原文内容请购买。
MethodofCCDCameraCalibrationBasedOnOpenCVLEIMing-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做双⽬测距(相机标定+⽴体匹配+测距).最近在做双⽬测距,觉得有必要记录点东西,所以我的第⼀篇博客就这么诞⽣啦~双⽬测距属于⽴体视觉这⼀块,我觉得应该有很多⼈踩过这个坑了,但⽹上的资料依旧是云⾥雾⾥的,要么是理论讲⼀⼤堆,最后发现还不知道怎么做,要么就是直接代码⼀贴,让你懵逼。
所以今天我想做的,是尽量给⼤家⼀个明确的阐述,并且能够上⼿做出来。
⼀、标定⾸先我们要对摄像头做标定,具体的公式推导在learning opencv中有详细的解释,这⾥顺带提⼀句,这本书虽然确实⽼,但有些理论、算法类的东西⾥⾯还是讲的很不错的,必要的时候可以去看看。
Q1:为什么要做摄像头标定?A: 标定的⽬的是为了消除畸变以及得到内外参数矩阵,内参数矩阵可以理解为焦距相关,它是⼀个从平⾯到像素的转换,焦距不变它就不变,所以确定以后就可以重复使⽤,⽽外参数矩阵反映的是摄像机坐标系与世界坐标系的转换,⾄于畸变参数,⼀般也包含在内参数矩阵中。
从作⽤上来看,内参数矩阵是为了得到镜头的信息,并消除畸变,使得到的图像更为准确,外参数矩阵是为了得到相机相对于世界坐标的联系,是为了最终的测距。
ps1:关于畸变,⼤家可以看到⾃⼰摄像头的拍摄的画⾯,在看矩形物体的时候,边⾓处会有明显的畸变现象,⽽矫正的⽬的就是修复这个。
ps2:我们知道双⽬测距的时候两个相机需要平⾏放置,但事实上这个是很难做到的,所以就需要⽴体校正得到两个相机之间的旋转平移矩阵,也就是外参数矩阵。
Q2:如何做摄像头的标定?A:这⾥可以直接⽤opencv⾥⾯的sample,在opencv/sources/sample/cpp⾥⾯,有个calibration.cpp的⽂件,这是单⽬的标定,是可以直接编译使⽤的,这⾥要注意⼏点:1.棋盘棋盘也就是标定板是要预先打印好的,你打印的棋盘的样式决定了后⾯参数的填写,具体要求也不是很严谨,清晰能⽤就⾏。
之所⽤棋盘是因为他检测⾓点很⽅便,and..你没得选。
opencv的相机标定方法
OpenCV提供了多种相机标定方法,其中最常用的是棋盘格标
定法。
下面是使用棋盘格标定相机的步骤:
1. 准备一副棋盘格图片,棋盘格的每个方格必须是完整的黑白交替的。
2. 使用摄像机拍摄多幅图片,确保棋盘格图片处于不同的位置和角度,同时保持棋盘格在整个图像中都可见。
3. 初始化标定板格点的三维坐标数组和图像中对应点的二维坐标数组。
4. 使用OpenCV的函数`findChessboardCorners()`在每个图像中
查找棋盘格的角点,并将其保存在图像对应的二维坐标数组中。
5. 使用OpenCV的函数`drawChessboardCorners()`在每个图像
上绘制出检测到的角点。
6. 使用OpenCV的函数`calibrateCamera()`计算相机的畸变系数和相机矩阵。
7. 使用OpenCV的函数`undistort()`去除图像的畸变。
8. 使用OpenCV的函数`imshow()`显示校正前后的图像进行对比。
9. 使用OpenCV的函数`getOptimalNewCameraMatrix()`获取校正后图像的新相机矩阵。
10. 使用OpenCV的函数`initUndistortRectifyMap()`获取校正后图像的映射矩阵。
11. 使用OpenCV的函数`remap()`将原始图像映射到校正后图像。
通过以上方法,可以完成相机的标定和校正,得到更准确的图像处理结果。
基于OpenCV的双目立体视觉测距_摄像机标定论文导读::双目立体视觉模型。
摄像机标定。
立体匹配采用OpenCV库中的块匹配立体算法。
目前的测距方法主要有主动测距和被动测距两种方法。
论文关键词:双目立体视觉,摄像机标定,立体匹配,测距(一)引言基于计算机视觉理论的视觉测距技术是今后发展的一个重要方向,它在机器人壁障系统、汽车导航防撞系统等领域有着广泛的应用前景。
目前的测距方法主要有主动测距和被动测距两种方法。
论文采用的是被动测距法。
被动测距法是在自然光照条件下,根据被测物体本身发出的信号(如光信号)来测量距离,主要包括立体视觉测距法、单目测距法、测角被动测距法等[1]。
立体视觉测距法是仿照人类利用双目感知距离信息的一种测距方法,直接模拟人的双眼处理景物,简便可靠,但该方法的难点是选择合理的匹配特征和匹配准则[2]。
双目立体视觉系统采用两台摄像机同时从两个不同视点获取同一景物的多幅图像,即立体图像对,通过测量景物在立体图像对中的视差,再利用双目视觉成像原理就可以计算出目标到摄像机的距离。
立体匹配采用OpenCV库中的块匹配立体算法,在得到摄像机参数和匹配点后再利用最小二乘法即可算出三维信息。
(二)双目立体视觉模型首先介绍双目视觉所涉及到三个坐标系:世界坐标系、摄像机坐标系和图像坐标系。
世界坐标系中的点坐标记为,摄像机坐标系用表示。
图像坐标为摄像机所拍摄到的图像的二维坐标,一般有两种表示方法:是以像素为单位的图像坐标,是以毫米为单位的图像坐标。
建立以毫米为单位的图像坐标是因为坐标只表示了像素在数字图像中的行数和列数,并没有表示出该像素在数字图像中的物理位置[3]论文范文。
图1为平行双目视觉模型,即参数相同的两个摄像机平行放置,两光轴互相平行且都平行于z 轴,x 轴共线摄像机标定,两摄像机光心的距离为B(即基线距)。
图中O1、O2为左右两摄像机的焦点,I1 、I2为左右摄像机的像平面,P1 、P2 分别是空间点P(X,Y,Z)在左右像平面上的成像点,f是摄像机的焦距。
初学OpenCV之摄像机标定最近方向定下来是双目立体视觉,主要是做重建这块的研究。
大致过程是图像获取->摄像机标定->特征提取->匹配->三维重建,当然开始可以进行图像预处理,矫正,后期可以进行点云的进一步处理,如渲染表面使其更接近于现实物体。
图像获取相对来说比较简单,用相机拍摄目标物(大型场景或特定小型的室内物体)。
但有两点需要注意:1、双目重建所需的图像一般为两张,角度相差不应过大,否则公共部分太少以至于重建效果不佳;整个过程简便,成本也不高,但缺陷是只有两张图像的点云所表示的物体信息不会很全面;2、标定所需的图像又是另外拍摄的,用张正友标定法的话,把印有黑白棋盘格的图像粘至硬纸板上,然后左右摄像机各自进行拍摄,理论上获得角度(图像)越多,最终标定结果越精确;标定板见下图:这里主要结合OpenCV对左右摄像机标定做一个简单的介绍,望朋友们指正,一起交流、进步。
摄像机的标定问题是机器视觉领域的入门问题,可以分为传统的摄像机定标方法和摄像机自定标方法。
定标的方法有很多中常见的有:Tsai(传统)和张正友(介于传统和自定标)等,摄像机成像模型和四个坐标系(通用原理)。
摄像机模型采用经典的小孔模型,如图中Oc(光心),像面π表示的是视野平面,其到光心的距离为f(镜头焦距)。
四个坐标系分别为:世界坐标系(Ow),摄像机坐标系(Oc),图像物理坐标系(O1,单位mm),图像像素坐标系(O,位于视野平面的左上角,单位pix)。
空间某点P到其像点p的坐标转换过程主要是通过这四套坐标系的三次转换实现的,首先将世界坐标系进行平移和转换得到摄像机坐标系,然后根据三角几何变换得到图像物理坐标系,最后根据像素和公制单位的比率得到图像像素坐标系。
(实际的应用过程是这个的逆过程,即由像素长度获知实际的长度)。
ps:通过摄像头的标定,可以得到视野平面上的mm/pix分辨率,对于视野平面以外的物体还是需要通过坐标转换得到视野平面上。
基于OpenCV的摄像机标定研究摘要:根据摄像机标定原理,实现了vc 2010环境下基于opencv 的摄像机标定系统。
该系统以棋盘格标定板图像作为输入,计算出了摄像机的各内外参数及畸变系数。
通过图像矫正实验证明了系统的有效性。
关键词:摄像机标定;棋盘格;opencv;图像矫正中图分类号:tp391.41 文献标识码:a文章编号:1007-9599 (2013) 05-0000-021引言视觉测量、三维重建等是计算机视觉应用中较为重要的研究领域。
在这些研究中,都需要确定视觉图像中的点与现实世界中对应点的几何位置关系。
我们常用的图像,由摄像机拍摄得到,因此,确定这种关系,就要依靠成像系统即摄像机的几何模型。
几何模型的参数就是摄像机的参数。
但这些参数不能够直接获取,而是要利用摄像机拍摄的图像,通过实验来获取。
获取这些参数的过程我们称之为摄像机标定。
摄像机标定是计算机视觉应用中的关键技术。
摄像机标定精度直接影响视觉测量精度,也是做好立体图像匹配与三维重建工作的基础[1]。
摄像机标定方法有3类:基于标定物的方法,自标定方法和基于主动视觉的标定方法[2,3]。
其中,使用平面标定物的标定方法[4],因其标定物制作简单、标定方法灵活而广泛使用。
本文详细介绍了摄像机标定原理,及在vc++ 2010环境下,利用opencv 2.4.4实现摄像机标定的方法和步骤,并通过实验验证了其有效性。
2标定原理摄像机标定首先需要利用合适的数学工具来描述和表达空间中的点与图像中对应点之间的关系。
这个工具就是几何模型,它涉及到摄像机的光学参数如图像中心、镜头焦距和镜头畸变等,还涉及到摄像机坐标系与世界坐标系的相对位置和方位等。
常用的针孔模型是一种理想的成像模型,没有考虑摄像机透镜的厚度及畸变对成像的影响,不能很好地反映实际情况。
opencv中的标定算法,其摄像机模型以针孔模型为基础,同时考虑了透镜的径向畸变和切向畸变,引入了径向畸变和切向畸变两个参数。
(原创实用版4篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的4篇《opencv的相机标定方法》,供大家借鉴与参考。
下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(4篇)《opencv的相机标定方法》篇1相机标定是计算机视觉中一个重要的问题,它的目的是确定相机的内部参数和外部参数。
在 OpenCV 中,可以使用 cv::calibrateCamera() 函数进行相机标定。
该函数需要输入标定板的角点坐标和相机拍摄到的图像,然后可以计算出相机的内部参数(如焦距、主点坐标等)和外部参数(如相机的旋转和平移矩阵)。
具体地,相机标定的过程可以分为以下几个步骤:1. 准备标定板:标定板应该是一个平面板,上面有一些精确的几何形状(如圆形或棋盘格),以便于在图像中进行角点检测。
2. 拍摄标定板:使用相机拍摄标定板,并获取相机的内部参数和外部参数。
3. 角点检测:在获取到的图像中,使用角点检测算法(如 Harris 角点检测)检测出标定板上的角点。
4. 计算变换矩阵:根据标定板上的角点坐标和相机拍摄到的图像,可以计算出相机的旋转和平移矩阵。
5. 相机标定:使用 cv::calibrateCamera() 函数,将计算出的变换矩阵输入到函数中,即可计算出相机的内部参数和外部参数。
需要注意的是,相机标定的结果可能会受到多种因素的影响,如标定板的形状、大小、标定时的光照条件等。
《opencv的相机标定方法》篇2相机标定是计算机视觉中一个重要的问题,它的目的是确定相机内部参数和外部参数,以便于后续图像处理和计算机视觉任务。
在 OpenCV 中,相机标定可以采用多种方法,其中比较常见的包括:1. 张正友标定法(Zhang Z. et al. A flexible camera calibration method for non-coplanar cameras. ICCV 99):该方法适用于非平面相机标定,需要标定板放置在不同的位置和角度,通过解方程组来求解相机内部参数和外部参数。
基于OpenCV的摄像机标定⽅法实现2019-08-09摘要:为了实现在三维重建系统中的对摄像机进⾏标定的⽬的,采⽤理想摄像机成像模型为基础,在模型中引⼊透镜径向畸变和切向畸变影响的计算⽅法。
在VC++环境下开发了⼀种基于OpenCV算法库的摄像机标定算法,并同基于Matlab摄像机标定⼯具箱的标定结果进⾏了⽐较。
实验结果表明,该⽅法具有标定精度⾼、鲁棒性好等优点,可以满⾜增强现实和其他计算机视觉系统的需要。
关键词:摄像机标定; OpenCV;计算机视觉;透镜畸变中图分类号: TN919?34; TP391.9 ⽂献标识码: A ⽂章编号: 1004?373X(2013)08?0097?040 引⾔摄像机标定的⽬的,就是要建⽴三维世界坐标与⼆维图像坐标之间的⼀种对应关系。
在单⽬视觉中,这种对应关系是⼀对多的对应,即⼆维图像上的⼀个像素点对应着三维空间中的⼀条直线;⽽在双⽬视觉中,可以通过两幅⼆维图像上的对应像素点计算得到三维世界坐标与⼆维图像坐标的⼀⼀对应关系。
由此,便可以得到物体的三维坐标值。
⽬前常⽤的标定⽅法是由Tasi⾸先提出的基于“两步法”的传统摄像机标定⽅法[1]。
随后,张正友提出⽤⼆维平⾯模板来标定摄像机,他的⽅法⾸先利⽤线性和⾮线性⽅法求取摄像机内外参数的初值,然后再解⾮线性最⼩化⽅程,以求得内外参数的精确解[2]。
因此,其⽆论在精度⽅⾯,还是在简便⽅⾯都优于Tsai的⽅法,可以说它是两步法的代表,从⽽使摄像机标定技术⼤⼤前进了⼀步。
OpenCV(Open Source Computer Vision Library)是Intel开放计算机视觉函数库,具备强⼤的图像和矩阵运算能⼒[3]。
尽管有很多求解摄像机参数的⽅法,OpenCV函数库中提供的摄像机标定⽅法就是基于张正友的标定⽅法。
OpenCV中的摄像机标定模块为⽤户提供了良好的接⼝,并且执⾏速度快,具有良好的跨平台移植性,因此可以很好地应⽤于⼯程实际当中。
opencv相机标定原理
相机标定是计算机视觉领域中重要的一步,它是指确定相机内部参数和外部参数的过程。
内部参数包括焦距、光心等,它们是相机本身固有的参数。
外部参数包括相对位置和方向,它们是相机和被摄物体之间的相对关系。
OpenCV提供了一种简化的相机标定方法,称为棋盘格标定法。
它通过观察相机拍摄的棋盘格图像,求出相机的内部参数和外部参数。
具体做法是先拍摄多张棋盘格图像,然后提取每张图像中棋盘格内角点的坐标,以此建立相机坐标系和图像坐标系之间的映射关系。
最后使用非线性最小二乘法优化得到最优的相机参数。
要实现棋盘格标定,首先需要定义一个棋盘格模板,它是一个二维网格,每个格子内都是黑色和白色交替的正方形。
拍摄时需要保证棋盘格与相机成一个角度,这样才能够在图像中正确识别出每个角点的坐标。
而在识别角点时,OpenCV中提供了一个cornerSubPix函数,它可以对提取的角点坐标进行亚像素级别的精确处理。
总之,相机标定是计算机视觉领域中重要的一个步骤。
OpenCV提供了基于棋盘格标定的简便方法,它能够快速准确地确定相机内部参数和外部参数,从而实现更为精确的视觉识别与定位。
opencv的相机标定方法相机标定是计算机视觉中的一个重要步骤,它的目标是通过对相机进行一系列的测量来确定相机的内部参数和外部参数,从而提高图像处理和计算机视觉任务的精确度和稳定性。
OpenCV是一个广泛使用的计算机视觉库,提供了多种相机标定方法。
1.单目相机标定方法:单目相机标定是指使用一个相机拍摄多张不同的棋盘格图像,通过提取图像中的棋盘格角点来确定相机的内部参数和外部参数。
OpenCV中提供了函数`cv::calibrateCamera(`来进行单目相机标定。
该函数需要输入一组棋盘格图像,每幅图像中的棋盘格角点坐标,以及每个角点在现实世界中的坐标。
函数根据这些数据计算相机的内部参数矩阵、畸变系数和每幅图像的旋转矩阵和平移向量。
2.双目相机标定方法:双目相机标定是指使用一对相机拍摄同一场景的图像,并通过识别这些图像中的共享特征点来计算相机的内部参数和外部参数。
OpenCV中提供了函数`cv::stereoCalibrate(`来进行双目相机标定。
该函数需要输入两个相机拍摄的图像,每幅图像中的特征点坐标,以及每个特征点在现实世界中的坐标。
函数根据这些数据计算两个相机的内部参数矩阵、畸变系数和旋转矩阵、平移向量之间的转换关系。
3.深度相机标定方法:深度相机标定是指使用深度相机(如Kinect)拍摄不同的场景,并通过识别图像中的特征点来确定深度相机的内部参数和外部参数。
OpenCV 中提供了函数`cv::rgbd::calibrate(`来进行深度相机标定。
该函数需要输入一系列深度图像和对应的RGB图像,以及特征点的坐标。
函数根据这些数据计算深度相机的内部参数矩阵和旋转矩阵、平移向量之间的转换关系。
4.灰度相机标定方法:灰度相机标定是指使用灰度相机(只能获取灰度图像)进行标定。
与单目相机标定类似,灰度相机标定也是通过拍摄多张棋盘格图像,提取角点坐标进行计算。
OpenCV中提供了函数`cv::calibrateCamera(`来进行灰度相机标定,其使用方式与单目相机标定相似。
一种基于OpenCV 的摄像机标定方法*田克微 张爱武 王少敏(首都师范大学三维空间信息获取与应用教育部重点实验室,北京 100037)摘要针对双目立体视觉系统研制过程中的摄像机标定步骤,分析了计算机视觉函数库OpenCV 中的摄像机模型,其中的非线性畸变考虑到了切向畸变和径向畸变,采用Bouguet 角点提取算法,实现了基于OpenCV 的摄像机标定.该算法具有很高的标定精度和计算效率、良好的跨平台移植性,可以满足双目立体视觉系统的需要.关键词:计算机视觉,摄像机模型,OpenCV,摄像机标定,双目立体视觉.中图分类号:TP391收稿日期:2007 04 10*基金项目:国家自然科学基金(40601081);北京市教委科技发展计划(KM200610028012)立体视觉系统的设计目标是从摄像机获取的图像信息出发,计算三维空间物体的位置、形状等信息,并由此识别环境中的物体.图像上每一点的亮度反映了空间物体表面某点反射光的强度,而该点在图像上的几何位置则与空间物体表面相应点的几何位置有关.这些位置的相互关系,由摄像机成像的几何模型所决定.该几何模型的参数称为摄像机参数,这些参数必须由实验与计算来确定,实验与计算的过程称为摄像机标定.至今已经有许多摄像机标定的方法,如Tsai 提出的基于三维标定参照物的标定方法[1],标定参照物一般由两块互相垂直的平面模板组成,标定前需要知道参照物表面标定点的空间三维坐标,因而这种方法需要一套昂贵的精密标定设备.张正友提出了基于二维平面模板的标定方法[2],张氏标定法只要求从不同角度拍摄的同一标定平面(标定板)2幅以上的图像,就可以求出摄像机的内外参数,由于该方法不需要知道平面模板移动的具体方位和位移信息,而且平面模板的制作简单,因此这种方法更简单、灵活[3].OpenC V(Open Source Computer Vision Library)是Intel 公司开发的开源计算机视觉库,由一系列C 函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法.其中的计算机视觉函数库包含图像处理、结构分析、运动分析与对象跟踪模式识别照相机定标和三维重建等算法.在最新发布的OpenCV 1 0中实现的摄像机标定方法采用的是张氏标定法[3],并且提供了一个基于的DirectSho w 的过滤器CalibFilter,使用户可以直接在组件的层次上实现个性化的标定应用.1 标定原理1 1 摄像机模型摄像机模型的选择直接影响最后的标定结果.常用的针孔模型[4,8]忽略了透镜的厚度和畸变的存在,因此不能很好的反映实际情况.OpenC V 提供的标定算法中的摄像机模型考虑了摄像机镜头的径向和切向畸变,该模型比只引入一阶径向畸变的Tasi 模型[1]更接近透镜的实际情况,但又没有引入Weng 模型[5]的薄棱镜畸变,从而加大算法的运算量.三维空间点P (X ,Y ,Z ),它的齐次坐标为(X ,Y ,Z ,1),在世界坐标系中投影到图像平面上象素坐标系(u ,v )的过程如下:z cu v l= u 000 v 0001R T1x wy w z w 1(1)=A M X w =P X w其中 =f dx , =f dy , =s f , 、 分别为图像u 轴和v 轴上的尺度因子, 为描述两图像坐标第29卷 第2期2008年4月首都师范大学学报(自然科学版)Journal of Capital Normal University(Natural Science Edition)No.2Apr.2008轴倾斜程度的参数,称为倾斜因子,(u 0,v 0)为摄像机主点.R 为摄像机坐标系相对于世界坐标系的3 3的旋转矩阵,T 为摄像机坐标系相对于世界坐标系的3 1平移矩阵.由于实际成像系统中存在着各种误差因素,如透镜和成像平面与透镜光轴并不垂直等,因此,像点、光心和物点在同一条直线上的假设并不成立.实际中的成像模型并不满足线性关系,而是一种非线性关系,需要引入透镜畸变如下:x =x d +!x (x ,y )y =y d +!y (x ,y )(2)其中,!x 和!y 表示非线性畸变值的X 、Y 轴分量.OpenC V 中的非线性畸变采用下述公式描述:!x (x ,y )=k 1x (x 2+y 2)+(p 1(3x 2+y 2)+2p 2xy )!y (x ,y )=k 2y (x 2+y 2)+(p 2(3x 2+y 2)+2p 2xy )(3)其中,!x 或!y 的第一项k 1、k 2称为径向畸变,第二项p 1、p 2称为切向畸变,确定畸变系数是摄像机标定的重要步骤之一.1 2 标定方法张氏标定法要求一个精确定位点阵的平面模板,如图1所示.然后通过自由移动摄像机或标定模板,使得摄像机至少在2个不同的位置(相对标定模板)拍摄模板图像,通过模板上的点和其图像的单应性(Homograph)来确定摄像机的内参,可以进一步解出摄像机的外参.然后再以这些参数为初始值,在考虑畸变的同时应用Levenberg Marquardt 算法对图像点与再投影点间的距离之和进行非线性最小优化,以得到一组精度更高的值.图1 平面标定模板和成功提取2 标定系统实现由于OpenC V 提供的cvCalibrateCamera2()只适用于n n 的图像,因此设计的标定模板为图1的88棋盘格图像,并打印出来.使用Matrox I ma ging Library 接口编程实现对摄像机的实时控制,并且由于对I O 设备的调用需求远多于对C PU 的占用,因此使用多线程技术控制摄像机的采集,采用多线程后,两路视频数据的采集分别进行,同时我们在内存中开辟了两块缓存来存放视频数据,有效地避免了内存的竞争,同时也保证了两个摄像头采集数据的同步性.同步采集界面如图2所示:图2 同步采集先将评估用的棋盘格图像读入计算机,再采用Jean Yves Bouguet 提出的角点提取算法[6],对每个格点分别利用高精度角点探测器进行精确定位.文中提取到的格点像素坐标可达到亚像素精度.拍摄过程中要求保持一定的光照,这样cvFindChessboard Corners()才能有效的提取到棋盘内侧的角点.成功提取到49个角点如图1所示.3 实 验实验使用两台B ASLER A102kc CCD 相机,焦距为14mm 的镜头和两个METE OR2 CL 32图像采集卡.所采集图像的分辨率为1392 1040像素.标定模板采用Bouguet 方法的模板(如图1所示),模板离摄像机的距离约为500mm 左右.实验分两步进行:第一步是标定摄像机,首先将双摄像机置于两个不同的位置拍摄3对处于不同方位的平面模板的图像(如图3所示),然后根据这3对图像对摄像机进行标定:图3 用于标定摄像机的3对图像第2期田克微等:一种基于OpenCV 的摄像机标定方法第二步是检验标定结果,利用上面标定好的摄像机对第一幅平面模板图像进行重建,根据立体视觉中的三角测量原理重建模板中49个角点的空间位置,重投影回二维平面,平均重投影误差如表1所示,可以看出采用OpenCV 实现的标定和张正友的标定例程具有相当的精度.恢复7 7共49个匹配点所对应的空间的三维坐标,实验结果是一组离散的空间点.图4和图5分别给出在OpenGL 下显示的点云图以及纹理映射,可以看出,根据标定结果重建出的离散点视觉效果良好,基本可以反映原物体的原貌.表1 平均重投影误差重投影误差左摄像机右摄像机重建后X 轴0 206130 323320 33597Y 轴0 225210 3546844193图4重建后的空间离散点图5 纹理映射结果4 结 论OpenC V 采用张氏标定法和Jean Yves B ouguet 角点提取算法,在些基础上开发的摄像机标定程序标定结果精确,而且其中的函数在设计和汇编时被Intel 公司对其所生产的处理器做了优化,因而具有很高的性能,并可以移植到Linux 平台.本文的结果表明OpenC V 开发的标定程序可以有效的应用在双目立体视觉系统的标定中.参考文献[1] Tsai R Y.A versatile camera calibration technique for high accuracy 3D machine vision metrology using off the shelf TV camerasand lenses[J].IEEE Journal of Robotics and Automation,1987,3(4):323-344.[2] Zhngyou Zhang.A flexible new technique for camera calibration[J].Technical Report MSR TR 98 71,Microsoft Research,December 1998.[3] Zhang Z.A flexible new technique for camera calibration[J].IEEE transactions on pattern analysis and machine intelligence,200,22(11):1330-1334.[4] 马颂德,张正友.计算机视觉-计算理论与算法基础[M].北京:科学出版社,2003[5] Weng J Y,Cohen P,Herniou M.Camera Calibration with distorti on models and accuracy evaluation[J].IEEE Trans on PAMI,1992,14(10):965-98[6] Jean Yves Bouguet.Camera calibration toolbox for Matlab[DB OL].2004.http: www.vision.cal Bouguetj calib !doc.[7] Zhengyou Zhang.A flexible new technique for camera calibration[EB OL].2007.http: %7Ezhangcalib #Application.首都师范大学学报(自然科学版)2008年第2期田克微等:一种基于OpenCV的摄像机标定方法A Camera Calibration Method Based on OpenCVTian Ke wei Zhang Ai w u Wang Shaomin(M i nistry of Educati on Key Laboratory of3D Information Acquisi ti on and Application,Capital Normal Universi ty,Beiji ng 100037,China)AbstractConsidering the calibration process steps for binocular stereo vision system,the camera model in OpenC V(open source computer vision library)was discussed,the non linear distortion of the tangential and radial distortion aberration is considered,the Bouguet corner e xtraction algorithm was used,and an arithmetic of camera calibration based on OpenCV was given.The algorithm has a very high standard of accuracy and computational efficiency,a good cross platform portability,is able to meet the needs of binocular stereo vision system.Key words:Computer vision,camera model,OpenC V,camera calibration,double CCD stereo vision(上接第10页)参考文献[1] 武康平.高级玫观经济学[M].北京:清华大学出版社,2001:103-114,103-114,55-56.[2] Markowi tz H M.资产选择!投资的有效分散化[M](1991).刘军霞,一弛译.北京:首都经济贸易大学出版社,2000:267-284.[3] Chi fu Huan g,Li t zenberger R H.金融经济学[M](1998).宋逢明译.北京:清华大学出版社,2003:1-10.[4] Fi shburn P C.Utili ty theory for deci sion making[M].New York:Wiley,1970.[5] Debreu G.Theory of value[M].New York:Wiley,1959:50-73[6] Hildenbrand W,Sonnenschein H.Introduction to Volu me VI,in:Hildenbrand W,Sonnenschein H,Handbook of Maths Eco.,Vol VI[C].Elsevier Science Publshers B.V.,1991:15-19.[7] Barten A P,Volker B hm.Consumer theory[C].Ch9,in:Arrow K,Intriligator M D,Handbook of Maths Eco.,Vol II.Elsevier Science Publshers B.V.,1984.[8] Karni E,Schmeidler D.Utility theory with uncertainty[C].i n:Hildenbrand W,Sonnenschein H,Handbook of Maths Ec.,Vo.VI[C].Elsevier Science Publshers B.V.,1991:1763-1771[9] 毛二万.金融经济学[M].沈阳:辽宁教育出版社,2002:4-12.The Other Proof of Existence Theorem of Expected Utility FunctionLiu Zongqian1 Fu Weiqiang1 Feng Sufen1,2(1. 2.School of Mathematical Science,Capital Normal Uni versity,Beini ng 100037,China;2.Beijing Polytechnic College,Beijing 100042,China)AbstractThis paper introduces the set of selection under risk and the e xpected utility properties through lottery that is based on WuSang ping(2001),and gives the concept of expected utility ing expected utility func tion and preference relation,and expec ted utility axioms which is different to Markowits(1991,2000)or Chi fu Huang and Litzenberger(1998,2003),it proves some natures.Its main result is that obtains the other proof of sufficient and necessary condition,uniqueness of existence theorem of expected utility functions by probability distribution being one to one to distribution function,and using the set of selection under risk being taken a bounded,closed and convex subset in Euclidean space R m,and it has applied the above properties.Key words:risk choice,e xpectation utility,preference.。
opencv3 标定概述在计算机视觉领域中,标定(calibration)是一个重要的过程,用于矫正图像或视频中的畸变。
在使用相机进行图像处理或计算机视觉任务时,相机的畸变会影响图像几何形状的精度和准确性。
因此,标定过程可以根据相机内外参数的估计,对相机的畸变进行校准和矫正。
本文将介绍如何使用OpenCV3实现相机标定。
什么是相机标定相机标定是指为了获取相机的内外参数,以校正和矫正相机的畸变效果,从而提高图像几何形状的精度和准确性的过程。
相机内参数包括焦距、主点坐标和畸变系数等,而相机外参数包括相机的旋转矩阵和平移向量等。
相机标定的应用相机标定在计算机视觉和机器视觉中具有广泛的应用。
以下是一些常见的应用场景:1.三维重建:通过多个相机的标定结果,可以实现更精确的三维重建。
2.目标跟踪:标定可以纠正图像中的畸变,提高目标跟踪的准确性。
3.机器人导航:标定可以帮助机器人进行精确的定位和导航。
4.虚拟现实:标定可以为虚拟现实提供更真实的视觉效果。
使用OpenCV3进行相机标定的步骤下面将介绍使用OpenCV3进行相机标定的具体步骤。
1. 收集标定图像首先需要准备一组标定图像。
这些图像应该包含不同角度和距离下的平面棋盘格。
为了获得更准确的标定结果,建议使用不同角度和距离下的至少10张棋盘格图像。
2. 提取棋盘格角点将标定图像加载到OpenCV中,利用函数findChessboardCorners()来检测图像中的棋盘格角点。
该函数将返回检测到的角点的像素坐标。
3. 标定使用函数calibrateCamera()对相机进行标定。
该函数需要输入棋盘格角点的像素坐标、棋盘格的物理尺寸和图像的分辨率等参数。
函数将返回相机的内外参数。
4. 评估标定结果标定完成后,可以使用函数getOptimalNewCameraMatrix()来获取优化后的相机内参数。
同时,还可以使用函数undistort()对图像进行畸变矫正。