摄像机标定的基本原理、实现及性能分析

摄像机标定的基本原理、实现及性能分析
摄像机标定的基本原理、实现及性能分析

摄像机标定方法综述

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

基于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— 万方数据

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··

摄像机标定程序使用方法

一、材料准备 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 挑出出现次数最高的一组数据。

最新-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.360docs.net/doc/dc8270732.html,2005的支持。 1摄像机标定原理 1.1世界、摄像机与图像坐标系 摄像机标定中有3个不同层次的坐标系统:世界坐标系、摄像机坐标系和图像坐标系(图像像素坐标系和图像物理坐标系)。 如图1所示,在图像上定义直角坐标系 开发与应用

相机标定程序

/*环境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.摄像机标定技术的发展和研究现状 计算机视觉的研究目标是使计算机能通过二维图像认知三维环境,并从中获取需要的信息用于重建和识别物体。真实的3D场景与摄像机所拍摄的2D图像之间有一种映射关系,这种关系是由摄像机的几何模型或者参数决定的。求解这些参数的过程就称为摄像机标定。摄像机标定实质上是确定摄像机内外参数的一个过程,其中内部参数的标定是指确定摄像机固有的、与位置参数无关的内部几何与光学参数,包括图像中心坐标、焦距、比例因子和镜头畸变等;而外部参数的标定是指确定摄像机坐标系相对于某一世界坐标系的三维位置和方向关系。 总的来说, 摄像机标定可以分为两个大类: 传统的摄像机标定方法和摄像机自标定法。传统摄像机标定的基本方法是, 在一定的摄像机模型下, 基于特定的实验条件如形状、尺寸已知的参照物, 经过对其进行图像处理, 利用一系列数学变换和计算方法, 求取摄像机模型内部参数和外部参数。另外, 由于许多情况下存在经常性调整摄像机的需求, 而且设置已知的参照物也不现实, 这时就需要一种不依赖参照物的所谓摄像机自标定方法。这种摄像机自标定法是利用了摄像机本身参数之间的约束关系来标定的, 与场景和摄像机的运动无关, 所以相比较下更为灵活。 1966年,B. Hallert研究了相机标定和镜头畸变两个方面的内容,并首次使用了最小二乘方法,得到了精度很高的测量结果。1975年,学者W. Faig建立的一种较为复杂的相机成像模型,并应用非线性优化算法对其进行精确求解,但是仍存在两个缺点,一是由于加入了优化算法导致速度变慢,二是标定精度对相机模型参数的初始值的选择有严重的依赖性,这两个缺点就导致了该标定方法不适于实时标定。1986年Faugeras提出基于三维立方体标定物通过拍摄其单幅

张氏标定法原理及其改进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与图像平面的交点。此时有比例关系如下:

相关文档
最新文档