当前位置:文档之家› 摄像机标定的基本原理、实现及性能分析_正文

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

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

学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。

作者签名:年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

本学位论文属于

1、保密□,在_________年解密后适用本授权书。

2、不保密。

(请在以上相应方框内打“√”)

作者签名:邵娅年月日

导师签名:年月日

目录

摘要 (1)

前言 (2)

1 绪论 (3)

1.1 摄像机标定的背景 (3)

1.2 摄像机标定的意义 (4)

1.3 本文研究的内容 (4)

2 摄像机标定的基本原理 (5)

2.1摄像机成像模型 (5)

2.2坐标变换 (7)

2.3 摄像机成像公式 (9)

3 传统摄像机标定方法 (12)

3.1 直接线性变换(DLT变换) (12)

3.2 Tsai 的 RAC的定标算法 (14)

3.3 张正友的平面标定方法 (17)

3.4 孟晓桥、胡占义的圆标定方法 (19)

4.摄像机自标定方法 (21)

4.1 基于Kruppa方程的自标定方法 (21)

4.2基于绝对二次曲面、无穷远平面的自标定方法 (22)

5基于Matlab的摄像机标定的实现 (23)

5.1标定实现标定的流程 (23)

5.2标定的实现 (23)

5.3 实验误差分析 (27)

6总结和展望 (27)

6.1总结 (28)

6.2 展望 (28)

参考文献 (29)

附录 (31)

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

摘要:在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型, 并由此重建和识别物体。这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定。摄像机参数标定是光学非接触式三维测量的首要步骤,其结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。本文首先分析了摄像机标定的基本原理,然后重点讨论了摄像机标定的几种方法以及其实现的过程。摄像机标定的基本方法可以分为两个大类:传统的摄像机标定方法,如直接线性变换方法(DLT方法)、R. Tsai 的 RAC方法、张正友的平面标定方法、孟晓桥、胡占义的圆标定方法、吴毅红等的平行圆标定方法等,以及摄像机自标定方法,如基于Kruppa方程的自标定方法、分层逐步标定法、基于二次曲面的自标定方法等。还有一些方法难以归类到这两类中,如主动视觉摄像机标定方法。本文在研究摄像机成像的几何模型基础上,对这些方法的设计思想进行了分析,完成了摄像机标定的过程,并且分析了几种方法的优缺点以及使用领域。这些为像机标定的实际应用提供指导,也为进一步选择更合理的标定方法提供理论和实践参考。

关键字:摄像机标定;内参数;外参数;畸变;角点检测

Abstract:In the image measurement and machine vision applications, for determining three-dimensional geometry location of one point in the spatial objects’surface and its relationship between its corresponding points in the images, we need to build the geometric model of camera imaging and thus reconstruct and recognize objects. The geometric model’ parameters are camera parameters. In most conditions, these parameters must be obtained by experiment and calculation, and this process of solving the parameters is called camera calibration. Camera parameters calibration is the first step in the optical non-contact 3D measurement, and its results’ accuracy and stability of the alg orithm directly affect the accuracy of the result worked by the cameras. In this paper, the basic principles of camera calibration are first analyzed, and then we focus on several methods of camera calibration and the process of

its accomplishment. The basic methods of camera calibration can be divided into two categories: traditional camera calibration methods, such as direct linear transformation method (DLT method), R. Tsai’ RAC method, Zhang Zhengyou’ plane calibration, Meng Xiaoqiao and Hu Zhanyi’ roun d calibration method, Wu Y ihong’ parallel circular calibration method , as well as the camera self-calibration methods, such as self-calibration based on Kruppa equations method, stratified gradually calibration, self-calibration based on quadric method, etc. Hardly,some ways are not involved in these two types of methods, such as active vision camera calibration method. In the paper, based on the geometric model of camera imaging, the design of these methods is analyzed, the process of camera calibration is completed, and the advantages and disadvantages of several methods with their used field are presented. The camera calibration is provided reference in the practical application, and a more reasonable calibration method which will be further chosen is provided theoretical and practical reference.

Keywords: camera calibration; intrinsic parameter; external parameters; distortion; corner detection

前言

计算机视觉的基本任务之一是从摄像机获取的图像信息出发计算三维空间中物体的几何信息。而空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由摄像机成像的几何模型决定的。摄像机标定是机器视觉技术[1]的基础, 应用于三维测量、三维物体重建、机器导航、视觉监控、物体识别、工业检测、生物医学、机器人手眼等诸多领域, 得到了国内外学者的广泛研究[2]。它是光学非接触式三维测量的首要步骤,是二维图像获取三维空间信息的关键和必要步骤。无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性如基于图像的物体重构、基于图像的测量等。对摄像机标定的研究来说,当前的研究工作应该集中在如何针对具体的实际应用问题,采用特定的简便、实用、快速、准确的标定方法[3]。

摄像机标定的分类根据是否需要标定参照物来看,可分为传统的摄像机标定方法和摄像机自标定方法[4]。传统的摄像机标定是在一定的摄像机模型下,基于特定的实验条件,如形状、尺寸已知的标定物,经过对其进行图像处理,利用一系列数学变换和计算方法,

求取摄像机模型的内部参数和外部参数[5]。不依赖于标定参照物的摄像机标定方法,仅利用摄像机在运动过程中周围环境的图像与图像之间的对应关系对摄像机进行的标定称为摄像机自标定方法。自标定方法非常地灵活,但它并不是很成熟。因为未知参数太多,很难得到稳定的结果。一般来说,当应用场合所要求的精度很高且摄像机的参数不经常变化时,传统标定方法为首选。而自标定方法主要应用于精度要求不高的场合,如通讯、虚拟现实等。然而,不同应用领域的问题对摄像机定标的精度要求也不同,也就要求应使用不同的定标方法来确定摄像机的参数。例如,在物体识别应用系统中和视觉精密测量中,物体特征的相对位置必须要精确计算,而其绝对位置的定标就不要求特别高;而在自主车辆导航系统中,机器人的空间位置的绝对坐标就要高精度测量,并且工作空间中障碍物的位置也要高度测量,这样才能安全导航本文主要研究的是传统的标定方法。本文对摄像机标定技术进行了全面地研究和总结,重点讨论了几种典型的摄像机标定的基本原理,以及实现方法。同时也进行使用标定工具箱来进行摄像机的标定的实验,并在实验完成后分析了误差出现的原因。另外针对Tasi不考虑畸变的标定方法,本文采用的是来源于《“计算机视觉”Linda G. Shapiro, George C. Stockman 著. 赵清杰,钱芳等译. 计算机视觉[M]. 北京:机械工业出版社.》一书中出现的数据,进行了标定,并出现相应的结果。

1 绪论

1.1 摄像机标定的背景

近年来,随着微电子技术和光学镜头技术的发展,廉价的高精度数码摄像器材逐渐普及,应用也越来越广泛,机器视觉技术日趋成熟,在社会生产生活方面日益发挥其重要作用。如视觉监控,零件自动识别与测量,三维重建,地形匹配,医学影像处理等。摄像机定标是大多数机器视觉应用必不可少的重要步骤,直接对后续的工作的精度产生重要影响[6]。而当今机器视觉界的研究热点之一就是研究各种方便实用、灵活和较高精度的相机标定系统。因此,如何最大限度地提高摄像机定标的精度,对于机器视觉有着重要的理论研究意义和实际应用价值。

摄像机定标技术早就应用于摄影测量学[7~9]。摄影测量学中所使用的方法是数学解析分析的方法, 在定标过程中通常要利用数学方法对从数字图像中获得的数据进行处理.通过数学处理手段, 摄像机定标提供了专业测量摄像机与非量测摄像机的联系. 而所谓的非量测摄像机是指这样一类摄像机, 其内部参数完全未知、部分未知或者原则上不稳定.

摄像机的内部参数指的是摄像机成像的基本参数, 如主点(图像中心)、焦距、径向镜头畸变、偏轴镜头畸变以及其它系统误差参数。

不同的应用背景也对定标技术提出了不同的要求.在立体计算机视觉中,如果系统的任务是物体识别, 则物体相对于某一个参考坐标系的绝对定位显得并不特别重要,更重要的是物体特征点间相对位置的精度.举例来说,在一个基于CAD的物体识别系统中, 所研究的物体上的特征的相对位置必须具有足够高的精度,才能进行有效的匹配和识别.如果系统的任务是物体的定位,相对于某一个参考坐标系的绝对定位精度就特别重要.例如, 在一个自主车辆导航系统中.自主式移动机器人必须准确地知道其自身的位置、工作空间中障碍物的位置、以及障碍物的运动情况,才能有效地、安全地进行导航.CCD摄像机[17]的上述特点和应用问题的要求使得定标技术、精度和实时性等问题的研究显得特别重要, 同时也导致了研究成果的多样性[10]。

1.2 摄像机标定的意义

摄像机定标是从摄影测量学中发展出来的,传统的摄影测量学使用数学解析的方法对获得的图像数据进行处理,随着镜头和电子技术的发展,各种摄像机像差表达式陆续提出并得到认同和采用,摄影测量学日趋成熟,廉价且精度较高的摄像器材不断出现,上述的技术发展最终产生了摄像机定标这一个新技术的诞生与发展,适用于各种工业及日常使用。

目前摄像机定标的方法较多,但能够具有较好的定标精度的方法寥寥无几。随着实际应用的发展,对进一步提高摄像机定标的精度有了更高的要求。因此,科学的发展呼唤有着更高定标精度的定标方法。研究提高摄像机定标精度的方法符合机器视觉发展的要求。

1.3 本文研究的内容

本文就目前普遍常用的标定方法进行了综合阐述,介绍了摄像机标定的基本原理和几种比较常见的标定方法。最后实现了基于Matlab使用标定工具的半自动获取标定结果,该方法以棋盘格作为标定板图样, 对于每一幅标定图像, 需要人工界定4个角点,完成标定过程,另外在Tasi[11]的理论基础上,进行了不考虑摄像头畸变的标定简单实验,得出了摄像机的参数。

2 摄像机标定的基本原理

2.1 摄像机成像模型

三维重建是人类视觉的主要目的,也是计算机视觉的最主要的研究方向。所谓三维重建就是指从图像出发恢复出空间点三维坐标的过程。三维重建的三个关键步骤:图像对应点的确定、摄像机标定、二图像间摄像机运动参数的确定。

摄像机成像模型是摄像机定标的基础,确定了成像模型,才能确定摄像机内外参数的个数和求解的方法。在计算机视觉中,利用所拍摄的图像来计算出三维空间中被测物体几何参数。图像是空间物体通过成像系统在像平面上的反映,即空间物体在像平面上的投影。图像上每一个像素点的灰度反映了空间物体表面某点的反射光的强度,而该点在图像上的位置则与空间物体表面对应点的几何位置有关。这些位置的相互关系,由摄像机成像系统的几何投影模型所决定。计算机视觉研究中,三维空间中的物体到像平面的投影关系即为成像模型,理想的投影成像模型是光学中的中心投影,也称为针孔模型。针孔模型假设物体表面的反射光都经过一个针孔而投影到像平面上,即满足光的直线传播条件。针孔模型主要有光心(投影中心)、成像面和光轴组成。小孔成像由于透光量太小,因此需要很长的曝光时间,并且很难得到清晰的图像。实际摄像系统通常都由透镜或者透镜组组成。两种模型具有相同的成像关系,即像点是物点和光心的连线与图像平面的交点。因此,可以用针孔模型作为摄像机成像模型。

在推导成像模型的过程中,不可避免的要涉及到空间直角坐标系,直角坐标系分右手系和左手系两种。如果把右手的拇指和食指分别指向x 轴和 y 轴的方向,中指指向 z 轴的方向,满足此种对应关系的就叫做右旋坐标系或右手坐标系;如果左手的三个手指依次指向 x 轴、y 轴和 z 轴,这样的坐标系叫做左手坐标系或者左旋坐标系。本文为简便起见,使用的坐标系均为右手坐标系。

图2.1.1 针孔成像

对于仅有一块理想薄凸透镜的成像系统,要成一缩小实像,物距u,像距v 焦距f 必须满足下式:

111

u v f

+= (2.1.1)

当u 远大于 f 时,可以认为 v 与 f 近似相等,若取透镜中心为三维空间坐标系原点,则三维物体成像于透镜焦点所在的像平面上,如上图所示。

图中(X,Y,Z )为空间点坐标,(x, y,-f )为像点坐标,(),,c c c X Y Z 为以透镜中心即光学中心为坐标原点的三维坐标系。成像平面平行于c c c O X Y 平面,距光心距离为f 。则有下列关系成立:

(2.1.2)

上述成像模型即为光学中的中心投影模型,也称为针孔模型。针孔模型主要由光心投影中心、成像面和光轴组成。模型假设物体表面的部分反射光经过一个针孔而投影到像平面上,也就是就成像过程满足光的直线传播条件,为一个射影变换过程;而相应地,像点位置仅与空间点坐标和透镜焦距相关。由于成像平面位于光心原点的后面,因此称为后投影模型,此时像点与物点的坐标符号相反;为简便起见,在不改变像点与物点的大小比例关系的前提下,可以将成像平面从光心后前移至光心前,如下图所示,此时空间点坐标与像点坐标之间符号相同,成等比例缩小的关系,此种模型称为前投影模型。本文使用前投影模型,在实际生活中,大部分摄像机都可以用此模型近似模拟其成像过程。

图2.1.2 针孔成像前投影模型

f x X Z

f y Y Z ?

=-????

?=-??

?

2.2坐标变换

在实际使用摄像机的过程中,人们为了方便计算,常常设置多个坐标系,因此,空间点的成像过程必然涉及到坐标系之间的相互转化。 下面将逐步推导坐标变换的公式以及坐标变换的相关特性[23]。

首先考虑相对简单的二维坐标变换,考虑如下图所示的两个坐标系Oxy 和'''O X Y ,其中()00,x y 表示点O ’点在坐标系 Oxy 中的坐标,两坐标系之间的夹角设为θ。则两坐标系之间的变换可以看作是通过两步完成的:或者是先旋转,再平移;或者是先平移,后旋转。两种方法得到的最终的表达式是一致的,在这里选择第一种。

图 2.2.1 二维坐标变换示意图 经过简单的推导,可以得出以下同一点新旧坐标之间的关系式:

(2.2.1)

将其转化为矩阵的形式,可以推出下式:

(2.2.2) 为更进一步简化公式,这里引入齐次坐标形式。简单地说,给原有的坐标表示添加一个元素,用 1表示该点为非无穷远点,0表示该点为无穷远点,更深入的内容可以参考空间解析几何的相关内容。引入齐次坐标后,上式可以变为以下形式:

00

'cos 'sin 'sin 'cos x x y x y x y y θθθθ=-+??

=++?00cos sin 'sin cos 'x x x y y y θθθθ-????????=+????????????????

(2.2.3)

坐标变换矩阵由三个列向量组成,前两个列向量表示旋转,第三个列向量表示平移。可以看出旋转向量满足正交性,用r1 表示第一列,用 r2 表示第二列,则有下式成立:

(2.2.4)

将坐标变换从二维扩展到三维,情况将稍微复杂一些,但依然可以将坐标变换分解为旋转和平移两个部分,此时旋转角将是一个空间角而不是一个平面角,平移量是一个三维空间向量而不是一个平面二维向量。对于旋转的空间角,可以将其分解为三个平面旋转角,分别表示绕 x 轴,y 轴和z 轴旋转的角度。每一种旋转所对应的变换矩阵如下所示:

(2.2.5)

图 2.2.2 三维坐标变换示意图

这里设新坐标系的原点O ’在旧坐标系中的坐标为(,,)x y z O O O ,则可以得出最终的、坐标变换的齐次坐标形式:

0cos sin 'sin cos '10

01x x x y y y θ

θθθ

-????????????

=??????????????????

22

121210r r r r ?==?

?=?()()()1

00,0cos sin 0sin cos cos 0sin ,010sin 0cos cos sin 0,sin cos 0001Rot x Rot y Rot z αααααβββββγγγγγ??????

=??????-???

-???

???=???????????????=-????????

?

(2.2.6) 类似地,旋转向量满足正交性,令[]12

3R r r r =表示旋转矩阵,其中

()1112131,,T

r r r r =,()2122232,,T

r r r r = ,()3132333,,T

r r r r = ,令()123,,T

T t t t =表示平移向量,

O=(0,0,0),则上述公式可以简化为:

(2.2.7)

对于旋转向量,有下式成立:

(2.2.8)

2.3 摄像机成像公式

有了前述的相关知识,现在可以在忽略畸变影响的前提下推导摄像机成像公式。在摄像机成像过程中,通常涉及到多个坐标系。它们分别是世界坐标系、摄像机坐标系和图像坐标系,图像坐标系又分为图像物理坐标系和图像像素坐标系。

图 2.3.1 摄像机成像模型

世界坐标系是可由用户任意定义的三维空间坐标系,一般的三维场景都用这个坐标系来表示。在摄像机定标中,世界坐标系常设在定标物的表面或在与标定物有着确定的变换

''01'11x x y R T y z z ????

????

?

?????=??????

??????????222

12312231310

r r r r r r r r r ?===???=?=?=?

?000cos cos cos sin sin 'sin sin cos sin sin sin cos cos sin cos 'cos sin cos cos sin sin sin cos cos cos '100011x x x y y y z z z βγ

βγβαβγαβγαγαβαβγαβγαγαβ-????????????

+???

???=??????-????????????

关系的位置,从而标定物上特征点的空间世界坐标仅需简单的推导即可得到。

摄像机坐标系是以摄像机光心为原点, 以垂直于成像平面的摄像机光轴为 Z 轴建立的三维直角坐标系。其中该坐标系的X 轴和 Y 轴一般与图像物理坐标系的相应x 轴和y 轴平行,两轴所在平面平行于成像平面。

图像坐标系分为图像物理坐标系和图像像素坐标系两种。 图像物理坐标系的原点为透镜光轴与成像平面的交点,X 与 Y 轴分别平行于摄像机坐标系的 x 与 y 轴,是平面直角坐标系,长度单位为毫米。

图像像素坐标系为固定在图像上的以像素为单位的平面直角坐标系, 其原点位于图像左上角,坐标轴平行于图像物理坐标系的X 和 Y 轴。对于数字图像,图像像素坐标系为直角坐标系,长度单位为毫米。

图 2.3.2 成像平面的不垂直性示意图

摄像机成像可以分为三个阶段,第一个阶段是空间点坐标从世界坐标系变换为摄像机坐标系,第二个阶段为空间点坐标经过镜头的射影变换转化为像点坐标,在这个过程中由于光学系统的畸变误差,会使像点坐标产生一定的畸变,从而会对最终的图像造成一定的畸变。为了校正畸变,对应不同的校正方法,人们提出了许多不同的校正模型。第三个阶段为图像的形成,通过 CCD 完成。它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要和想象来修改图像。CCD 由许多感光单位组成,通常以百万像素为单位。当 CCD 表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。CCD 每个像素在 x 和 y 方向上分别有着确定的物理尺寸x d 和y d ,表示一个像素为多少毫米,这两个参数近似相等,但由于制造精度的问题,将会有一定差异。同样地,CCD 的坐标轴的夹角接近90度,但不是完全垂直。

下面来推导理想情况下的摄像机成像公式,首先是第一个阶段:

(2.2.9) 其中,(),,,1T

w w w x y z 为空间点的世界坐标系齐次坐标。(),,,1T

c c c x y z 空间点的摄像机坐标系齐次坐标,R 和 T 分别为旋转矩阵和平移向量。

在第二个阶段,空间点变换为像点:

(2.2.10)

其中(),,1T

x y 为像点图像物理坐标系齐次坐标。 在第三个阶段,像点坐标将转化为像素坐标:

(2.2.11) 其中

为像点的图像像素坐标系齐次坐标。()00,u v 为摄像机光学中心在CCD 成像平面上的投影位置。

这样就依靠摄像机各参数,建立了空间点与像素点之间的联系。因此我们可以根据检测到的点坐标,进而求得摄像机的焦距f ,物理尺寸x d 和y d ,主点位置()00,u v ,纵横坐标轴的夹角θ。

总的来说,理想前提下,摄像机的参数可分为内外两种,用于世界坐标系向摄像机坐标转换的三个旋转角和三个平移量参数为外参数,总共为六个未知量,摄像机的焦距f ,物理尺寸x d 和y d ,主点位置()00,u v ,纵横坐标轴的夹角θ,和起来也是六个未知量。但是,将成像第二阶段和第三阶段的公式中的矩阵合并到一起,通过简单的变量替换,可以将六个内参数化为五个内参数。

0111c w c w c w x x y y R T z z ????????

??????=????????????????000100010001c c c c

x x f y y f z z f ??

??????

??????

=??????

????????????()00cot 110sin 11001x

x y u d d u x v v y d θθ-??

????????????=??????*??????????

????(),,1T

u v

(2.2.12)

令 , ,

,则最后的成像公式可变为:

(2.2.13)

因此,理想情况下摄像机定标就是要求解这内外总共11个未知量。

3 传统摄像机标定方法

根据是否需要标定参照物来看,可分为传统的摄像机标定方法和摄像机自标定方法。还有一些方法难以归类到这两类中,如主动视觉摄像机标定方法。

传统的摄像机标定方法包括直接线性变换方法(DLT 方法)[20]

、R. Tsai 的 RAC 方法、

张正友的平面标定方法[22]、孟晓桥、胡占义的圆标定方法[24]、吴毅红等的平行圆标定方法等。这些方法的特点是利用已知的景物结构信息。常用到标定块。其优点是可以使用于任意的摄像机模型,标定精度高。但也存在不足之处,如标定过程复杂,需要高精度的已知结构信息。在实际应用中很多情况下无法使用标定块。

3.1 直接线性变换(DLT 变换)

直接线性变换是将像点和物点的成像几何关系在齐次坐标下写成透视投影矩阵的形式:

(3.1.1) 其中(),,1u v 为图像坐标系下的点的齐次坐标,(),,w w w X Y Z 为世界坐标系下的空间点的欧

()00cot 0sin 11001x x y f f u d d u x

f v v y d θθ-??

??????

????????=????*????????????????0

0010001100011w w c w

x u u y R T v v z z αγβ??

??????????????=????????????????????

??()34111w w w w w w X X u Y Y s v K R t P Z Z ?????

????????????==??????????????

????

()sin y

f d βθ=*x f d α=cot x f d γθ=-

氏坐标,P 为34?的透视投影矩阵,S 为未知尺度因子。()34ij P p ?=,消去S,可以得到方程组:

(3.1.2)

当已知N 个空间点和对应的图像上的点时,可以得到一个含有2* N 个方程的方程组: AL=0 (3.1.3) 其中A 为

()

212N *的矩阵,L 为透视投影矩阵元素组成的向量

[]111213142122232431323334,,,,,,,,,,,,T

p p p p p p p p p p p p 。

像机定标的任务就是寻找合适的L,使得AL 为最小,即

给出约束: (3.1.4)

L ’为L 的前11个元素组成的向量,C 为A 前11列组成的矩阵,B 为A 第12列组成的向量.

约束341p =不具有旋转和平移的不变性,解将随着世界坐标系的选取不同而变化。证明如下:

世界坐标系作刚性坐标变换

(3.1.5)

则'3431132233334p p t p t p t p =+++。显然在一般的情况下,'

3434

p p ≠ 另一个约束222

3132331p p p ++=具有旋转和平移的不变性

1112131431323334212223143132333400

w w w w w w w w w w w w p X p Y p Z p p uX p uY p uZ p u p X p Y p Z p p uX p uY p uZ p u +++----=??

+++----=?()3411

'T T

p L C C C B -=???=-??

'

01R t P P ??=????

min L

AL

图3.1.1 向量位置关系

向量1R ,2R ,3R 是两两垂直的单位向量,有222123cos cos cos 1θθθ++=。

3.2 Tsai 的 RAC 的定标算法

80年代中期Tsai 提出的基于RAC 的定标方法是计算机视觉像机定标方面的一项重要工作,该方法的核心是利用径向一致约束来求解除(像机光轴方向的平移)外的其它像机外参数,然后再求解像机的其它参数。基于RAC 方法的最大好处是它所使用的大部分方程是线性方程,从而降低了参数求解的复杂性,因此其定标过程快捷,准确。

RAC 的定标算法主要内容有像机模型、径向一致约束、定标算法. 像机模型如下页图3.2.1:

图3.2.1像机模型

2

)

3323,,r r )

3222,,r r )

33p c

z o c x

世界坐标系和摄像机坐标系的关系:

(3.2.1) 在Tsai 的方法中,K 取作:

(3.2.2)

理想图像坐标到数字图像坐标的变换(只考虑径向偏差[18,19]),如下页图3.2:

(3.2.3) (u,v)为一个点的数字化坐标,(x,y )为理想的数字化坐标,(),c c u v 为畸变中心。

(1)径向一致约束

()11X x Y y K R t Z ??

?? ? ? ?≈ ? ? ? ???

??

00,0,0,,0,0,1f s u K f v ?? ?= ? ???22

1221()(1())()(1())c c c c x u k u v u u y v k u v v v -++=--?++=-????

在图像平面上,点(),c c x y ,(x,y ),(u,v)共线,或者直线(),c c x y (x,y)与直线(),c c x y (u,v)平行或斜率相等,则有:

(3.2.4)

通常把图像中心取作畸变中心和主点的坐标,因此:

(3.2.5) (2)定标算法

定标步骤一:求解像机外参数旋转矩阵R 和向x,y 方向上的平移1t ,2t 根据:

(3.2.6) 其中, , 得到: (3.2.7) 再根据式(3.2.5)得到:

(3.2.8) 由至少7组对应点,可以求得一组解:

(3.2.9) 对0M

除以c =则得到一组解()12314562,,,,,,,sr sr sr st r r r t 。由2221231r r r ++=可

求出S ,从而1t 也可以被解出。

()()()789123456,,,,,,r r r r r r r r r =? 或 ()()()789456123,,,,,,r r r r r r r r r =?

c c c

c

x u u u y v v v --=

--0000

x u

u u y v v v --=

--[]11X x Y y K R t Z ??

????????≈??????????

??

123145623789,r r r t R r r r t t t r r r ???? ? ?

== ? ?

? ?

????

00,0,0,,0,0,1s f u K f v ??

?

= ? ?

??()()123107893

456207893fs r X r Y r Z t x u r X r Y r Z t f r X r Y r Z t y v

r X r Y r Z t +++?=+?

+++??+++?=+?+++?()12310

4

5

6

2

s r X r Y r Z t u u r X r Y r Z t v v

+++-=+++-()()01234567812314562,,,,,,,,,,,,,,M m m m m m m m m sr sr sr st r r r t =≈

根据 det(R)=1,来选择()789,,r r r 。

定标步骤二:求解有效焦距f 、z 方向上的平移3t 和畸变参数k ; 令k=0作为初始值,则式(3.2.7)为: 00

00x u u u y v v v -=--=- (3.2.10)由式

(3.2.7)中x,y 的表达式,可以将第一步求出 R ,1t ,2t 的值代入得:

(3.2.11) 由此可以解出f, 3t .将求出的f, 3t .以及k=0作为初始值,对下式进行线性优化:

(3.2.12)

估出估计3t ,f 和k 的真实值。

张正友标定成像模型

()()()()078931231078934562()

()

u u r X r Y r Z t fs r X r Y r Z t v v r X r Y r Z t f r X r Y r Z t -+++=+++???

-+++=+++??()()

()()

22

1231078932245620

7

893()1()1fs r X r Y r Z t k u v u u r X r Y r Z t

f r X r Y r Z t k u v v v

r X r Y r Z t +++?++=-?+++??

+++?++=-?+++?w

基本原理:

(3.3.1) 在这里假定模板平面在世界坐标系Z=0的平面上,其中,K 摄像机的内参数矩阵,

为模板平面上点的齐次坐标,

为模板平面上的点投影到 图像平面上对应点的齐次坐标。[1r 2r 3r ]和t 分别是摄像机坐标系相对于世界坐标系的旋

转矩阵和平移向量。12312[][]H h h h K r r t λ==,11112211

,r K h r K h λλ--==,根据旋转矩阵

的性质,即120T

r r =和121r r ==,每副

图像可以获得以下两个对内参数矩阵的基本约束:

(3.3.2) 由于摄像机有5个未知内参数,所以当所摄取得的图像数目大于等于3时,就可以线性唯一求解出。

张正友方法所用的平面模板如下:

图3.3.2 张正友标定模板

算法描述为:

1. 打印一张模板并贴在一个平面上

2. 从不同角度拍摄若干张模板图像

12312[][]0111X u X Y s v K r r r t K r r t Y ??

????????????==????????????????

??

T Y X M ]1[~=T v u m ]1[~=112111122

0T T T T T T h K K h h K K h h K K h ------?=??=?

?

摄像机标定方法综述

摄像机标定方法综述 摘要:首先根据不同的分类方法对对摄像机标定方法进行分类,并对传统摄像机标定方法、摄像机自标定方法等各种方法进行了优缺点对比,最后就如何提高摄像机标定精度提出几种可行性方法。 关键字:摄像机标定,传统标定法,自标定法,主动视觉 引言 计算机视觉的研究目标是使计算机能通过二维图像认知三维环境,并从中获取需要的信息用于重建和识别物体。摄像机便是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.doczj.com/doc/1d13231663.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与图像平面的交点。此时有比例关系如下:

相关主题
文本预览
相关文档 最新文档