【《双目视觉测距系统设计案例》5500字】_第1页
【《双目视觉测距系统设计案例》5500字】_第2页
【《双目视觉测距系统设计案例》5500字】_第3页
【《双目视觉测距系统设计案例》5500字】_第4页
【《双目视觉测距系统设计案例》5500字】_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双目视觉测距系统设计案例在进行该部分的设计内容之前,我先设计开发了一个简单的单目测距系统并对其进行测试分析,对系统原理有了更为深入的认识,也对系统的开发有了一定的知识储备与实际操作经验,这为双目系统的研究起到了了坚实的铺垫作用,接下来就进入本文的重点内容。在这部分,我会着重介绍阐述重难点环节,分析其原理、算法与选择条件。1.1摄像机标定相机标定是本文研究内容的第一个重难点,同时也是关键点,标定就要通过多次试验以及推导来求解所使用的摄像头的内参和外参,这就又涉及到了相机成像模型,如此,在这一部分,我们就来研究讨论成像模型,标定方法,并对所使用的的方法重点介绍,通过这样,得到我们最终想要的摄像机参数,并进行分析。1.1.1相机模型介绍对相机模型进行介绍了解是为了对摄像机取得图像的过程有更清晰的认知,在本质上来说,这是一种坐标变换的关系,是由三维空间到二维空间的一种对应关系。那么为了更加详细地研究这种对应关系,我们就需要建立一整套坐标系系统。包括图像坐标系,摄像头坐标系以及世界坐标系。其中,第一个又分为物理坐标系和像素坐标系,前者的单位是毫米,后者的单位是像素。两者之间最简单的关系就是两坐标轴都为直角坐标系时,其关系如下图所示:图1.1物理坐标系和像素坐标系其中(u,v)的值表示了这一点的灰度,是该点的像素坐标,假设dx和dy是像素在其方向上的单位长度,则两坐标系的映射关系可表示为:(1.1)(1.2)矩阵表现形式则为:(1.3)而关于摄像机坐标系,它也被称为光心坐标系,因为它是以光心为坐标原点。并且以(,,)来表示其坐标值,同时它的横轴与纵轴和图像坐标系的方向是一致的。Z轴为摄像机的光轴。通过相似三角形原理可以轻松获得该坐标系和上问提及的(x,y)坐标的对应关系:(1.4)最后一个就是世界坐标系,该坐标系的作用是来描述相机在空间中的具体位置,给予其一个基准,因此该坐标系可以比较自由地选取所在的位置,但为了试验的简便性和可操作性,要尽可能地选择对后续的计算和处理有帮助的位置,这样可以大大降低之后处理计算的复杂程度。世界坐标系与上一部分的坐标系关系可以表示为:(1.5)其中R表示的意思是旋转矩阵,t的含义则为平移向量。以c为下标的是相机坐标系的值,以w为下标的是世界坐标系的值。综上所述,这四个坐标系的关系可用下图来进行表示:图1.2四个坐标系间的关系从左到右,连接他们的分别是刚体变换,透视投影以及二次转换,且按顺序依次左乘得到。在理想情况下,即忽略摄像机本身的物理结构,将其视为一个点的时候,相机模型可以视为小孔成像模型,也叫线性模型。示意图如下:图1.3小孔成像模型图在该模型下,将x,y与和的关系带入公式1.5可得:(1.6)此时公式中的就是我们想要的相机的参数,前者为内参,后者为外参。内参的含义就是相机坐标系与像素坐标系之间的变换,另一个参数则是世界坐标系与相机坐标系间的变换,就是这两个参数,把外部世界与我们拍摄的相片内部相连接起来。求解这两个参数的过程就是相机的标定。然而,现实情况下,我们很难或者说几乎不可能在理想情况下进行该实验,更多的是会受到来自各方面的影响,因此该模型在实际应用时还要加以改进,以贴合实际情况,保证最终结果的准确性。因此,接下来就介绍另一种应用范围更广,更加符合现实,但计算复杂度更高,原理更难以理解的模型,非线性模型。首先来分析,现实情况下,我们会有来自哪些方面的影响,再逐一分析这些来源,以对症下药,通过各种方法来消除或者减少它,完善我们所使用的的模型。在小孔成像模型中,由于是“小孔”,所以透过的光是少量的,这就导致现实中这样会使得生成图像的速率非常慢,不过这是我们所不能接受的,所以要想快速生成图像,就要增加进光量,从而使用面积大、曲率高的透镜,保证曝光充足,这样就有足够多的光线汇聚到点上,大大提升图像生成的速度。可这样一来,就带来了另一个问题——畸变。我们要考虑的畸变主要有两种,其余的因其影响度不大,可以忽略,同时OpenCV中也没有相关的API,这两种分别是径向畸变和切向畸变。图1.4径向畸变的两种形式如上图所示,现实中的相机总会在成像仪上产生非常明显的畸变,或在中心,或在边缘的情况更加严重,这是由透镜的物理性质所决定的,是它的固有属性,很难进行彻底的消除。因此,我们需要用数学方式来对这些畸变进行校正,通常,我们是用以下公式进行调节:(1.7)(1.8)x,y表示该点的初始位置,加下标后的是矫正后的位置。另一种畸变则是切向畸变,这是在相机的制造过程中产生的,也是几乎没有完美的解决方案的。在制造过程中,准确说是组装时,透镜与成像平面没能呈现完美的平行关系。也就是说,光线通过透镜后并不是垂直入射成像平面的,是有一定的角度关系的。我们就需要额外的参数来校正。如下:(1.9)综上所述,我们一共要处理五个畸变参数。在OpenCV中,这几个参数都是必不可少的。1.1.2常用摄像机标定方法介绍摄像机标定作为测距过程中关键的一步,也是比较重要的一个步骤,许多学者都对此领域展开了详细深入的研究,截止目前已经提出了很多不同的标定方法,它们都有各自适用的场合,这些方法统共可大致分为三类:传统的相机标定方法、相机自标定方法还有基于主动视觉的标定方法,接下来就对这两类分别进行详细介绍。首先是传统方法,这种方法需要的已知条件很多,例如需要一个已知形状、大小参数的标定物,然后对其进行图像采集,然后经过处理,包括数学变换和推导计算,最终可以取得内参,即相机的与外界条件无关的固有属性,例如焦距,畸变参数,图像中心等,同时获取外参,即相机在空间中的位置和方位关系。(1)利用最优化算法的定标方法:这类算法的原理是对相机的光学成像建立一个复杂模型,然后通过对模型的研究分析、开发优化最终得到结果。但这种方法十分费时费力,难以及时地获得想要的结果,关于这一点,Faig在文献中提出的算法最能凸显出这一特征,他以小孔成像模型作为起点,对该结构进行了大量复杂的拓展,提出了一个十分复杂的模型,在对各种可能的影响因素进行完细致的分析计算后,采用这种方法,至少需要十七个参数才能详尽具体地描述目标物体与三维空间的对应关系。计算量可想而知,极大。另一个代表性方法则是直接线性变换法(DirectLinearTransformation,DLT),此方法由Abdel-Aziz和Karara在一九七一年提出,该方法只需对线性方程组进行求解即可获得参数,而这正是其优势所在。不过它也有一个很明显的缺陷,那就是DLT没有把非线性畸变问题考虑进去,也因此,在实际使用时,必须要搭配非线性优化算法。(2)利用透视变换矩阵的定标方法:联系相机测量的内容,我们都是对含有相机内参和外参的非线性方程组进行求解以获得最终数据,那么如果我们把其中的畸变因素暂时忽视掉,同时把透视变换矩阵当成这之中的未知因素。对这一部分进行求解,最终得到一组数据,从以上原理可以分析得出,从本质上来讲,这种方法与前文提到的DLT没有严格的区别。这类方法,因为没有使用最优化算法,所以它的计算速度被大大提高了,能够满足我们实时得到参数的需求,但同样地,它也没有考虑非线性畸变,这个方法的精确度与稳定性也不高。(3)考虑畸变补偿的两步法:仔细分析前两种方法,我们会自然而然地产生一个疑问:能否把这两种方案结合起来呢。而这就是两步法所要做的。由前文可知,使用最优化算法,那么其结果会受初始值设定的制约,很难保证精度与准度,而如果使用直接线性变换法或者透视变换矩阵法的话,就会因为忽视了非线性畸变的影响而降低结果的精确度。那如果我们把这两种方案结合,先求解参数,将结果作为初始值,代入模型,以最优化算法推导出最终的结果。这就是两步法的核心思想与具体的实施方案。到目前为止,最为常见的是Tsai提出的一种具有很大使用价值的两步法,在该方法中,他首先使用径向准直约束来对相机模型分析,推出其外参,之后再用非线性知识求出内部参数。很明显,这种方法相较于前两种有着不可比拟的优越性,精准度上了一个台阶,但它也有着自身的局限性。首先它对设备条件的需求会更高,而且也会明显增加计算量,延长处理时间。双平面标定法:还有一些学者试图在相机模型上寻找新的突破口,深入探索研究想要找到一种更加方便使用又贴合实际的模型。Martin首先提出了双平面模型,并提出了三种插值方法,即线性插值,二次插值和线性样条插值。该模型与前文介绍的小孔成像模型有着明显的区别:在双平面中,成像平面上的任意一个点都不是必须要通过光心的,而是根据这一个点,能够确定其在两个定标平面上所对应的点,这样就可以对这两个平面分别建立插值公式。该种方法的好处是,不再涉及非线性的方法,在精准度上会有优势,但其本身也有缺陷:涉及的参数个数大大增加,计算量会增加。上述几种方案都对实验环境有着较为苛刻的要求,上世纪末,Faugeras,Luong等人第一次提出了自标定的概念,这一概念的提出,使得我们在相机可以移动同时测量目标未知的条件下对相机进行标定成为了可能。对比之前的方法,显然该类方法的适用范围会更广。目前,常用的自标定方法有推导Kruppa方程标定法,逐级分层标记法和基于二次曲面的标定方法还有基于主动视觉的方法。以Kruppa方程为基础的标定法:这种方法的核心就是对Kruppa方程的求解,该方程是根据二次曲线和线变换的相关原理推导出来的,而关于解出结果的方式,有几种不同的算法。Faugeras的算法完全依赖于几何计算,对浮点计算的要求出奇地高,当时的普通计算机很难满足他的要求。Luong提出了另一种方案:基于连续同伦算法进行求解。这种方法对噪声的要求降低,但却对提取精度有着严苛的要求。这两种方案都有获取结果难度难度大的缺陷。逐级分层标定法:这类方法是对前一种的优化,目的是解决其难以计算的难点。具体方法是:首先对图像进行投影重建,然后施加曲面约束条件,最后使用仿射标定得出结果。一经提出,这类方法就掀起一股热潮。迅速取代了前一种方法,成为当时的标定主流方法。最著名的方案是由Hartley提出的对投射矩阵加以QR分解的解决方法。该方法大大减少了未知参数的数量至八个(内参加上三个平面参数)。基于二次曲面的标定法:这种方法是由Triggs于一九九四年提出,其本质与(1)中大差不差,但在某些情况下有着绝对的优势。原因在于它考虑了二次曲线的所有信息,又有所有图像的投影重建的基础,使得无限远平面对所研究的全部平面拥有一样的条件约束。这样,使用该方法对多个图像进行处理时,处理速度远超第一种方法。基于主动视觉的标定法:主动,含义是拍摄设备可以按提前设计好的轨迹进行移动,随后根据运动中拍摄的图像和运动轨迹的位置来最终确定内参和外参。不过,该方案对运动轨迹的精准度要求很高,也就是设备要精准控制相机的运动,同时也对场合有一定的要求,成本会比较高。根据摄像机移动方式的不同,常见的方法有两组三正交运动法,纯旋转法还有平面正交运动标定法。这种方法最突出的优势是计算量小,算法简单。可以使用线性方法进行求解。不同于上文介绍的几种方法,本文采用的是基于平面模板的标定方法。这是介于前文所述两类方法之间的方案。具体过程是使用拍摄设备对各种位置的标定板进行拍照,然后利用模型线性计算出优化解,随后使用非线性算法继续对相机求精。在得到畸变函数后,进一步获取最终结果,内参外参。这种方案操作量少,计算量小,不过对于类似广角镜头之类光学畸变大的镜头最后结果的误差会很大,对市面上绝大部分的摄像设备有较好的适应性。同样适用于本文研究内容。1.1.3摄像机标定具体操作首先介绍所使用的拍摄设备,这是一款分辨率为640*480的USB摄像头,具体如下图所示:图1.4所使用USB摄像头同时搭配了一个用于固定稳定的支架,以提高拍照时的稳定性,如图:图1.5支架使用标定板进行摄像机标定的方法总体可分为三类:人工标定法、MATLAB工具箱标定法和基于OpenCV的标定法。下面会使用后两种方法进行标定。并详细介绍其步骤。基于OpenCV的标定法。使用这种标定法,首先要准备的就是一张标定板,如下图所示:图1.6标定棋盘格这是一张宽度为九,高度为六的标定板,这里要注意,高度与宽度并不是指的黑白块的个数,而是图中两种颜色色块的交叉数目。随后在程序自带的camera_calibration配置文件中键入这两个数字,接下来要输入的是标定色块实际的宽度,这是需要手动测量的数据,输入方式选择inputcamera方式,这里0代表电脑自带的拍摄设备,1则表示外接相机,此处我使用的是外置的USB摄像头,所以选择1。如下图所示:图1.7opencv处理参数随后经过编译运行,程序就会调用摄像头,实时捕捉拍摄画面,此时按下键盘上的设置的按键,就会进行一次标定。然后就从不同的角度对棋盘格拍摄相片,标定足够次数后程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论