毕业论文-基于Kinect的视觉定位算法.docx_第1页
毕业论文-基于Kinect的视觉定位算法.docx_第2页
毕业论文-基于Kinect的视觉定位算法.docx_第3页
毕业论文-基于Kinect的视觉定位算法.docx_第4页
毕业论文-基于Kinect的视觉定位算法.docx_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

密级: NANCHANG UNIVERSITY学 士 学 位 论 文THESIS OF BACHELOR(20132017年)题 目 基于Kinect的视觉定位算法 学院: 信息工程学院 系 自动化系 专业班级: 测控技术与仪器131班 学生姓名: 起讫日期: 2017.2.28-2017.5.21 摘要基于Kinect的视觉定位算法摘要室内移动机器人的自主视觉定位是近年来机器人这个领域的研讨热点,视觉定位算法的完成对室内移动机器人的自主定位和导航具有十分重要的作用,视觉定位算法的结果是建立移动机器人的视觉里程计,通过相邻两帧图像之间的匹配和坐标系之间的转换实现Kinect传感器姿态的记录。传统的方法是使用激光雷达或使用双目相机来实现对空间中物体的深度信息的获取,成本非常高,而且计算量十分巨大。Kinect相机是微软公司发布的一款可以通过一组红外摄像机和红外投影仪实现对空间深度信息的获取的相机,采集到的信息不仅精度高而且价格便宜,所以本文决定运用Kinect相机作为关键传感器.Kinect相机可以采集空间中点的彩色信息和深度信息,然后分别利用SIFT算法和SURF算法对彩色图像进行特征点的采集,再利用迭代最近点算法(ICP)进行特征点的匹配,最后利用经典的PnP算法通过转换坐标系来求解Kinect相机的姿态的同时记录相机的姿态和位置,并取得了较好的效果。关键词:Kinect;视觉定位;特征点;视觉里程计IAbstractVisual positioning algorithm with Kinect cameraAbstractThe autonomous positioning navigation of mobile robot is a hotspot in the field of robotics in recent years. The realization of visual positioning algorithm has a very important role in mobile robot autonomous navigation. The visual positioning algorithm results in the establishment of a mobile robots visual odometry. The posture of the Kinect sensor is recorded by the matching between the adjacent two images and the conversion between the coordinate systems. The traditional method is to use a lidar or binocular camera to achieve the depth of the object in space to obtain information, the cost is very high, and the calculation is very large.Kinect camera is released by Microsoft Corporation can be a group of infrared cameras and infrared projectors. In order to achieve the depth information of interspace, the information gathered is not only of high precision and the camera is cheap. So this article uses Kinect camera as the sensor.Kinect camera can collect the color information and depth information of the point in space. Then the SIFT algorithm and the SURF algorithm are used to collect the feature points of the color images. And then the Iterative Closest Point algorithm is used to match the feature points. Finally, the classic PnP algorithm is used to convert the coordinate system to solve the attitude of the Kinect camera while recording the cameras attitude and position and achieved good results.Keyword:Kinect;Visual positioning;Feature points;Visual odometerIII目录目录摘要IAbstractII第一章 绪论11.1选题依据和意义11.2国内外研究现状11.3本课题研究内容2第二章 系统硬件设计及工作原理32.1 Linux系统介绍32.2 Kinect背景与结构32.3 Kinect的软件开发环境3第三章 导航控制算法研究53.1总体方案介绍53.2特征点检测53.3 SIFT特征点检测算法53.4 SURF特征点检测93.5特征点匹配12第四章 实验及结果分析164.1视觉里程计简介164.2确定相机姿态164.3视觉里程计的实现19第五章 结论与展望20参考文献21致谢23第一章 绪论第一章 绪论1.1选题依据和意义随着科学的快速发展,机器人这个行业发展十分迅速,我们可以预见到的是移动机器人在我们的日常生活中会占据越来越重要的地位,成为以后各行业不可或缺的一部分。现在机器人的研究成果已经广泛的应用到现实生活中的各个领域和行业中了,尤其是在一些具有危险性质的工作中有非常大的应用前景,例如消防救援、地震救灾、勘测矿井、核电厂的原料运输、太空中的科研探索等等。这些应用也对机器人的移动性能提出了更高要求。机器人领域的综合性十分强,汇集了包含自动控制学科、传感器技术学科、人工智能学科、计算机视觉学科、电子技术等学科,还包括了很多不同方向的研究课题,比如:三维地图重建、路径规划、视觉里程计、智能避障等。在户外开展工作的时候,移动机器人最基本也是最重要的功能是要实现对周围环境的感知,完成自主定位和导航以及路径规划等任务。全球定位系统(GPS)可以实现户外的大范围的定位,而相对小范围内的室内环境或GPS精度达不到要求的地方,则我们只能采用相对定位的办法来实现机器人在局部区域的定位。其中视觉定位算法是实现移动机器人真正自主定位的核心算法,视觉定位算法的最终目的是建立移动机器人的视觉里程计,只需要通过连续匹配两帧点云图就可以不断计算出当前时刻相机的姿态,从而完成移动机器人的相对位置的确定。所以关于移动机器人的视觉定位算法的研讨有相当重要的意义和价值。1.2国内外研究现状移动机器人的自主定位问题经过三十多年的发展,无论是理论方面还是实践方面都取得了相当大的进步。它的实践运用也越来越多,在危险场所救援等很多地方移动机器人表现出了越来越不可忽视的作用。在移动机器人的定位算法的学习过程中,它利用自己携带的深度图像传感器来对未知环境中的数据进行采集,再对数据进行处理和分析,然后通过一系列的算法来求解出它的姿态,然后通过连续的进行上述的操作,可以构建出它本身的相对运动距离和方向。作为人们活动功能的延伸,移动机器人能够达到一些人类无法到达的危险地区比如核反应堆内部、火山区域、地雷区域、火灾现场进行一些高危险的工作。也可以减轻人们的工作强度,可以帮助人们做一些很枯燥的工作,节约劳动力,也可以更加规范标准的完成生产线的工作。目前国外的Pierre Plantard等提出了基于Kinect的人机工程学评估方法的验证1。Billy Y.L. Li等研究了使用Kinect传感器的鲁棒性RGB-D人脸识别问题2。Elham Dolatabadi等研究了基于微软Kinect V2的兼容测量时空步态参数的有效性3。N. Namitha等使用Kinect RGB-D传感器和Kinect Fusion进行点云绘图测量4。M. Bueno等研究了KinectFusion的计量评估及其与Microsoft Kinect传感器的比较5。关于移动机器人的定位问题,研究者们进行了很多尝试,包括给机器人添加各种各样的传感器,这也说明了现在这个问题很受研究者们的重视,具有一定的研究价值。咱们国内的一些研究者们在这个问题上,也开展了很多研究。温熙等人研究了一种结合Kinect和惯性导航系统的方法来实现移动机器人的室内自主定位6。高云峰等人研究了一种视觉里程计方法具有非常高的精度7。李策等人提出了一种基于Kinect深度数据模拟激光扫描的SLAM算法8,对室内未知环境进行二维地图创建。许允喜等人想出了一种立体的视觉定位的算法是基于双目相机的运动估计9,该算法不使用运动后的特征点3D坐标,而直接利用其2D图像投影坐标。中国科学院研究生院的杨明操提出了基于FPGA的实时定位算法研究,该方法在实时数字摄影测量、机器人运动导航、飞行器主动视觉定位等领域具有重要的使用价值10。1.3本课题研究内容针对传统方法即使用双目相机中所用传感器昂贵并且获取深度信息获取难度较大的问题,提出采用Microsoft发布的一款深度相机Kinect作为传感器,该相机具有十分强大的人机交互能力,可以轻松获得场景中的深度信息,并且可以做到深度信息和彩色信息的严格对应,从而使后续工作中特征点的选择和匹配变得十分简单和方便,而且Kinect相机中带有强大的数据处理芯片,可以减轻计算机的运算负荷,加快运算速度使得该系统的实时性有了很大的提高,促进了移动机器人视觉定位系统中前端的快速发展。本文主要利用微软发布的Kinect相机作为传感器来采集周围环境中的彩色信息和颜色深度,并且能做到彩色信息和深度信息的严格一一对应,利用该方法不仅可以轻松的得到所需的数据,而且开发应用十分简洁方便,成本较低。得到数据之后首先分别利用SIFT和SURF特征点算法对彩色图像进行特征点采集,得到特征点之后,利用迭代最近点算法(ICP)进行特征匹配,通过PnP算法进行相机姿态的求解即世界坐标系与当前相机坐标系的转换矩阵,利用转换矩阵将上一帧点云图与当前帧点云图合成一幅图像,同时记录下此时相机的位置,并且估计它的移动距离。22第二章 系统硬件设计及工作原理第二章 系统硬件设计及工作原理2.1 Linux系统介绍本文的实验都是在Linux操作系统下进行的,Linux的各大版本中,Ubuntu及其衍生版本一直对用户很友好,Ubuntu是一个开源的操作系统,它的系统和软件在官方网站上都可以免费下载,并且为新学者提供了很详细的安装方式说明。本文使用的是Ubuntu14.04版本,该版本是Ubuntu系列比较通用和经典的一个版本。2.2 Kinect背景与结构Kinect是由微软公司为其Xbox 360开发的一个周边外设,是一个RGB-D相机,它能让玩家仅通过身体动作就可以操作游戏界面,而不需要传统的一些控制器来进行控制,能让玩家体验到体感游戏的乐趣。Kinect的硬件的生产和研制结合了声学、光学、传感器等多个学科的技术,它里面的配件有一百多个,其中最小的单元有一千多个。它包括三块独立的主板:Moving Touch传动电动机用于相机的仰角的控制,Kinect还具有追焦技术,底座的马达会随着对焦物体的移动而跟随移动;彩色摄像头是位于中间位置的RGB彩色摄像头,用来采集彩色图像提供红、绿、蓝三颜色通道,主要作用在于面部识别和动作追踪,中间的彩色摄像头最大支持1280*960分辨率成像;两边的分别是红外结构光发射器和接收器,左边的摄像头发射出红外线射线来检测物体的距离,右边的摄像头负责接收传递回来的信息,最大分辨率是640*480。除此之外,它还包含了14种关键的芯片。图2-1 Kinect结构图2.3 Kinect的软件开发环境Kinect相机在体感游戏方面的运用得到了广泛的认可,但是在其软件开发方面,却不尽如人意,它的官方网站并没有相应的软件开发环境,这也是其中一个不足的地方。但是这个简单的版本足以满足我们普通实验编程的需求了,可以运用C语言、C+或Visual Basic语言来进行软件开发。本文实验使用的是C+来进行开发的。2.4 Kinect相机校准原理Kinect相机的标定在移动机器人自主定位系统中有非常重要的作用,是实现定位的基础,相机摄像头标定的结果直接影响到相机位姿估计的结果,所以对相机摄像头进行准确的标定具有十分重要的意义。相机标定的实质是计算求解相机的内部参数和外部参数。相机的内部参数包含相机X,Y轴方向的焦距和投影中心点的坐标;外部参数就是相机的姿态(一个是旋转矩阵R和一个平移矩阵T)。相机摄像头标定的过程实质上是根据几组空间中已知位置的点和图像上对应的点来求解相机的内部参数的过程。相机的标定办法一般有:传统的相机标定方法、借助主动视觉的相机标定方法和依靠相机自身的标定方法。传统的相机标定方法是先求出待标定物上的已知的坐标点与其对应的图像坐标点之间的联系,然后由特定的算法可以计算得到相机的内外部参数。主动视觉相机标定法是根据相机的特殊运动的信息。这种方法不需要借助标定实现,仅需要控制相机进行一些特殊的运动。该方法具有算法相对简单,鲁棒性较高的优点,但同时有实验条件要求比较严格,成本较高不适合无法控制运动参数的场合的缺点。相机的自标定法是通过相机运动之间的约束关系来求解相机参数的。该方法主要利用场景中平行或正交的信息建立不同的图像之间的对应关系再由此来求解相机的相关参数,这种办法相对灵活可以让相机进行在线的标定,但鲁棒性比较差。本文运用传统的相机标定方法完成相机校准的硬件是通过Kinect作为传感器拍摄棋盘图片,得到校准所需要的数据。第三章 导航控制算法研究第三章 导航控制算法研究3.1 总体方案介绍实现移动机器人的视觉定位算法,首要的任务是检测出Kinect相机所拍摄的图片上的特征点,然后对相邻两帧图像上的特征点进行匹配,在匹配的过程中肯定会有一些误匹配的特征点对,就需要随机采样一致性算法(RANSAC)进行特征点对的筛选,过滤掉不正确匹配的特征点对。然后根据PnP算法进行相机的位姿估计,构建出视觉里程计的结果。3.2特征点检测图像的特征点是指图像中具有鲜明特性并能够有效反映图像本质特征且能标识图像中目标物体的点。在图像中选取一些比较具有代表性的点。这些点在相机的视角发生少量变化之后会保持不变,所以我们会在各个图像找出相同的点。然后在这些点的基础上,讨论相机位姿的估计问题,以及这些点的定位问题,在经典的理论中,也把这些点称作路标。大多数特征点检测方法是通过检测图像中具备某些特定的特征点,我们可以得到这些特征点的具体坐标,局部最大灰度梯度等信息,进而可以根据这些数据进行图像间的匹配。特征点的辨认是图像识别的前提,在图像识别、物体识别等领域对每一帧图像的检测不是检测图片中每一个点的信息,而是选择一些具有代表性的特征点,这些特征点往往比较容易识别,也更加能代表这张图片,然后可以通过对这些特征点周围的局部特征进行一些特定的分析和处理,最后得到可以代表整张图片的特征信息。现在常用的特征点检测算法有ORB特征点提取与匹配算法、SIFT特征点检测算法、SURF特征点检测算法、Harris角点检测算法、FAST特征点检测算法、CENSURE特征点检测算法等。本文中应用的是SIFT特征点检测算法和SURF特征点检测算法。3.3 SIFT特征点检测算法SIFT(Scale-invariant-feature-transform)算法的全称是即尺度不变特征转换,这个算法通过检测局部的特征得到一帧图片的特征点,再根据其所在的尺度空间和主方向获得该特征点的描述子,然后依据描述子进行特征点匹配。其应用范围包含物体辨识、机器人地图感知与导航、影像缝合、3D模型建立、手势辨识、影像追踪和动作比对。此算法有其专利,专利拥有者为英属哥伦比亚大学。局部影像特征的描述与侦测可以帮助辨识物体,SIFT 特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用 SIFT特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。SIFT算法的特点有:1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;2. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。SIFT算法可以解决的问题:目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。而SIFT算法在一定程度上可解决:1. 目标的旋转、缩放、平移(RST);2. 图像仿射/投影变换(视点viewpoint);3. 光照影响(illumination);4. 目标遮挡(occlusion);5. 杂物场景(clutter);6. 噪声。SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 Lowe将SIFT算法分解为如下四步:1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。SIFT算法的步骤如下:(1) 尺度空间的生成特征点的尺度空间的建立是初始化的一个操作,我们构建不同的尺度空间是为了让特征点能有尺度不变性,即使拍摄图片的角度或大小发生改变时依然能得出较好的检测结果。经过高斯核卷积运算,可以完成图像在不同尺度之间的变换,下式是二维的图像的尺度空间: (3-1)(3-2)上式中是高斯函数,它的尺度是可以改变的,其中是点在空间中的坐标,是决定因子用来实现尺度变换的,它的大小和图像的平滑程度有关,越大图像中的像素点越少分辨率越低,它越小图像中的像素点越多分辨率越高。我们构建高斯差分尺度空间(DOG-scale-space)的目的是为了能够在不同的尺度下检测到比较稳定的特征点如公式(3-3)所示: (3-3)其就是利用在不同尺度空间下的高斯核取差,然后和图像进行卷积生成。(2) 检测极值点为了找到极值点,我们需要把每个点与该尺度空间相邻的26点作比较,包括其中相同尺度的8个相邻的点和相邻上下尺度的18个点,如果该点比周围26个点的灰度值都大或者是都小的时候,则认为该点就是一个我们要找的特征点。(3) 过滤不可靠极值点要让图像具有较强的抗噪点能力,增强图像之间的匹配能力,我们需要删除一些对比度比较低的点和不太稳定的点。把尺度空间函数用泰勒级数展开为:(3-4) 将上式求导并令其结果为0,可以得到下式: (3-5) 若要删除掉对比度低的特征点只需要把公式(3-5)带入到公式(3-4)中进行运算,当时保留该极值点,否则去掉该点。在选择高斯差分核的时候如果差分算子选择不太合适的话,其极值在沿边缘的切向方向会出现较大的曲率,但垂直于边缘的方向会出现较小的曲率。主曲率可以通过一个2*2的Hessian矩阵来求出: (3-6) 公式(3-6)中D是曲率是和矩阵特征值成正比的,令、分别为最大、最小特征值,则,(3-7).(3-8)令则得到: (3-9) 一般情况()只需要计算: (3-10) 如果公式(3-10)成立,则该极值点事比较稳定的特征点,否则去掉该点。(4) 为每个特征点指定方向参数确定每个特征点的主方向是为了让SIFT算子具备旋转不变性,每个点的方向参数都是它领域的像素梯度方向指定的,让每一个点具有旋转不变性。坐标点处的梯度的模值可以表示为:(3-11)坐标点处的方向可以表示为:(3-12)根据公式(3-11)和(3-12)和特征点坐标就能计算出给的点的梯度和方向。(5) 关键点描述子向量的生成在每个特征点的周围划出一定的区域范围,把这块划分成4*4的16个小的方格,每个小方格中包括了8个像素点,分别计算出每个像素点梯度的大小和方向,并把特度的大小和方向用不同长度的箭头表示出来。示意图如下:图3-1 特征点描述子3.4 SURF特征点检测SURF(Speeded Up Robust Features)特征点检测全称为加速性的鲁棒性特征点检测,从本质上来说SURF算法是SIFT算法的加速版,其大大提高了算法的快速性,提高了系统的实时性,让实时定位成为可能。Surf是对David Lowe在1999年提出的Sift算法的改进,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。与Sift算法一样,Surf算法的基本路程可以分为三大部分:局部特征点的提取、特征点的描述、特征点的匹配。但Surf在执行效率上有两大制胜法宝一个是积分图在Hessian(黑塞矩阵)上的使用,一个是降维的特征描述子的使用。了解这两大法宝是如何出奇制胜前,先回顾一下传统Sift算法的基本思路及其优缺点。Sift是一种基于尺度空间的,对图像缩放、旋转、甚至仿射变换保持不变性的图像局部特征描述算子。一、特征点提取Sift的特征点是在DOG金字塔尺度空间中提取的,尺度空间的构建涉及到高斯卷积、图像下采样和高斯差分操作。在尺度空间中先初步提取出在尺度空间和二维图像空间上都是局部极值点的兴趣点,再滤除掉能量低的不稳定的和错误的兴趣点,得到最终稳定的特征点。二、特征点描述特征点描述包括特征点方向分配和128维向量描述两个步骤。特征的的方向分配:Sift求取特征点周围邻域内所有像素的梯度方向,生成梯度方向直方图,并归一化为0360的梯度方向直方图到36个方向内,取梯度直方图的主要分量所代表的方向作为特征点的方向。128维向量描述:这个仍然是基于梯度方向直方图展开的,去特征点周围邻域4*4个快,每块提取出8个梯度方向,共计128个方向作为特征的描述子。三、特征点的匹配特征点的匹配是通过计算两组特征点的128维的特征点的欧氏距离实现的。欧氏距离越小,则相似度越高,当欧式距离小于设定阈值时,可以判定为匹配成功。Sift算法的优点是特征稳定,对旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性;缺点是实时性不高,并且对于边缘光滑目标的特征点提取能力较弱。Surf改进了特征的提取和描述方式,用一种更为高效的方式完成特征的提取和描述,具体实现流程如下:1) Hessian矩阵构造尺度空间SURF算法与SIFT算法的不同地方在于SURF算法中利用Hessian矩阵的行列式来达到近似图像的目的,通过高斯平滑滤波生成金字塔,省略了降采样过程。Hessian矩阵是由自变量的二阶偏导数组成的矩阵。图片中像素点的Hessian矩阵为: (3-13) 则该矩阵的判别式为:(3-14)我们可以Hessian矩阵的判别式的正负来判别该像素点是或不是极值点。构造矩阵之前,需要先让特征点能够满足尺度不变性。得到矩阵后,保持金字塔的每层子八度中图片的尺度保持不变,然后利用高斯迷糊函数生成SURF金字塔,可以大大提高处理的速度,其他的步骤同SIFT算法。2)构造特征点描述子 SURF算法是根据特征点相邻域内像素点的梯度直方图确定的,把梯度直方图最高的方向当作主方向。再统计领域内Harr小波特征由水平方向和垂直方向的小波特征两者组成。再构造特征点描述子。将领域分成4*4的16个方格,分别统计格子中像素点的两个水平方向和两个垂直方向的参数,这样每个特征点描述子具有64维,数量只有SIFT算法描述子的一半,这样运算起来更加简单,匹配速度更快。本文分别用SIFT和SURF两种算法对同一张图片进行特征点检测,具体结果如下图3-2、图3-3所示:图3-2 SIFT算法特征点图3-3 SURF算法特征点3.5特征点匹配本文中采用的特征点匹配算法是经典的ICP算法,全称是Iterative Closest Point即迭代最近点算法。是由Besl和Mckey两人提出的,该算法阐述了一种点集与点集之间的配准思想,首先确定两个点集合之间对应的最近点的点集,通过由Faugerahe和Hebert提出的计算方法计算出新的点集,然后计算新的点集与原点集之间的残差平方和,通过上述方法进行迭代运算,知道残差平方和达到要求为止。迭代最近点(Iterative Closest Points, ICP)算法包括两部分:对应点搜索和位姿求解。它的目的是寻求点集之间的匹配关系,求解的结果是两点集之间的平移及旋转量。假设M、P是两个点集,P为待配准点集,M为基准数据点集(可以理解为两个不同坐标系中的点集),其基本原理如下:1、搜索最近点:取P中一点p(i),在M中找出距离p(i)最近的m(i),则(pi,mi)就构成了一组对应点对集,但是p(i)与m(i)之间存在着某种旋转和平移关系(R,T),这也就是我们要求的。2、求解变换关系(R,T):n对点(pi,mi)对于n个方程组,那么就一定能运用数学方法求解得出(R,T),但是为了求解更加精确的变换关系,采用了迭代算法。3、应用变换:对点集P中的每一个点pi运用变换关系得到点集P2,定义函数E,根据精度要求,定义终止迭代的条件,即E小于一个具体值时终止迭代。(可以把E理解为经过变换后的P2中每个点与M点集中对应点的距离和)。4、重复迭代:如果某次迭代满足要求,则终止迭代,输出最优(R,T),否则继续迭代,但是要注意一点:在每一次迭代开始时都要重新寻找对应点集。也就是说要把结果变换的Pn带入函数E中继续迭代。在OpenCV中用快速最近邻搜索函数来实现匹配过程,匹配结果如下所示:图3-4 SIFT算法特征点匹配结果图3-5 SURF算法特征点匹配结果由上图我们可以发现,这两种算法特征点匹配的结果都会出现很多误匹配的情况,因为以上两幅图像只进行过简单的左右平移而没有上下移动和旋转,因此匹配点相互之间的连线应该都是平行的。针对上述误匹配较多的问题,我们采用了RANSAC随机采样一致性算法(Random Sample Consensus)来优化匹配的结果。RANSAC算法思想的应用在很多领域内,该算法是具有统计学意义的,计算的次数越多该算法得到的结果的准确度就越高,该算法的主要思想是根据采用模型在原始数据上的检验结果来改变每个数据点的征用概率,让相对比较准确的数据点被利用的机会更大。RANSAC算法会在总体数据中进行随机采样,获得多个小的样本数据然后计算各小样本数据的模型,把这些模型依次对全部数据进行检验,获得最好的数据模型。RANSAC算法步骤简单介绍:1) 随机在我们之前得到的数据中选择比较多的数据,然后对这些选出来的数据进行计算,产生一个模型。然后用这个模型去计算其他的数据,通过对比选择出比较好多的模型;2) 利用上述产生的模型去测试计算其他的数据点,如果该点符合这个得到的模型,则把该点看成是局内点;3) 按照顺利依次评估其他所有的数据点,如果大部分数据点都评估为局内点的话,就可以认为该模型的选择很合理;4) 用上一步骤中得到的所有局内点去重新估计一个数学模型,得到一个新的模型;5) 反复进行以上的几步,如果局内点较少就舍弃该模型,如果得到的新模型比之前的模型拟合度更高则替代之前的模型。直到运行到指定的次数为止。我们在OpenCV中采用了该算法后得到的匹配结果如下图3-6、图3-7所示:图3-6 RANSAC算法优化后的SIFT算法匹配结果图3-7 RANSAC算法优化后的SURF算法匹配结果以上两幅图片可以表示在使用了RANSAC算法后,图像匹配的结果准确率提高了很多,减少了很多误匹配的特征点对。图3-8 特征点检测与匹配结果上述程序结果显示,两幅图片中各自的特征点个数分别是316和318,能够匹配到一起的特征点有72对,但是“内点”只有27对,即正确匹配的特征点只有27对。第四章 实验结果及分析第四章 实验及结果分析4.1视觉里程计简介在计算机视觉中视觉里程计是通过连续帧图片之间的关系来确定相机的位置和方向。视觉里程计关心的是相邻的图像之间的运动,最简单的情况当然是两张图像之间的运动关系。但是仅仅通过视觉里程计来估计相机的轨迹,将不可避免的出现累计漂移。这是因为视觉里程计在最简单的情况下只估计两个图像间的运动造成的,我们知道每次估计都会造成一定的误差,由于里程计的工作方式,先前时刻的误差将会传递到下一时刻,导致经过了一段时间后,估计的轨迹将不再准确。为了解决这个问题,我们还需要进行其他的工作:后端优化和回环检测,但在这里我们不再赘述。本质矩阵是归一化图像坐标下的基础矩阵的特殊形式,归一化图像坐标也就是用当前像素坐标左乘相机矩阵的逆。具体表示:已知摄像机矩阵P=KR|tP=KR|t,令XX为图像上一点,XX为该点对应的世界坐标,则x=PXx=PX,如果已经知道相机内参矩阵KK,则令x=K1xx=K1x,即x=R|tXx=R|tX为归一化图像坐标。则两幅图像的对应点xxxx对应的归一化图像坐标与本质矩阵EE满足如下定义xTEx=0xTEx=0.具体可以通过5点法进行求解,本文主要通过OpenCV3.0中cv:findEssentialMat方法进行计算,主要思想采用随机抽样一致性算法(RANSAC),由于所有的点不是完全的匹配,如果用最小二乘,难免因为很多误匹配的点导致最后的结果有很大的偏差,RANSAC的做法,随机抽取5个点用于估计两帧之间的本质矩阵,检测其它点是否满足该本质矩阵,得到满足该本质矩阵的个数(称为内点),然后进行多次迭代,得到内点最多的那组计算出的本质矩阵即为所求解。更详细的过程仍可参考OpeCV中的代码实现,后续会自行设计与实现该过程。4.2确定相机姿态随着移动机器人在空间中的运动,相机的姿态也跟着移动机器人在不断的变化,这里所描述的相机的姿态即相机坐标系与世界坐标系之间的转换关系。分贝可以表示为旋转矩阵R与平移矩阵T。求解相机姿态的问题实质是PnP(Perspective n Point)算法所描述的点与点之间在相机坐标系与世界坐标系中的变换关系。图4-1 求解相机姿态原理图点在相机坐标系与世界坐标系中转换可以通过构造一个4*4的的变换矩阵S,该变换矩阵既包含旋转信息也包含平移信息,通过变换矩阵,可以简单的实现坐标点在两个坐标系下转换。PnP(Perspective-n-Point)是求解3D到2D点对运动的方法。它描述了当我们知道n个3D空间点以及他们的投影位置时,如何估计相机所在的位姿。2D-2D的对极几何方法需要八个或八个以上的点对(以八点法为例),且存在着初始化、纯旋转和尺度的问题。然而,如果两张图像中,其中一张特征点的3D位置已知,那么最少只需要三个点对(需要至少一个额外点验证结果)就可以估计相机运动。特征点的3D位置可以由三角化,或者RGB-D相机的深度图确定。因此,在双目或RGB-D的视觉里程计中,我们可以直接使用PnP估计相机运动。而在单目视觉里程计中,必须先进行初始化,然后才能使用PnP。3D-2D方法不需要使用对极约束,又可以在很少的匹配点中获得较好的运动估计,是最重要的一种姿态估计方法。计算机视觉:1. 内参数标定2. 外参数标定即姿态估计问题。从一组2D点的映射中估计物体的3D姿态。3. 从三个对应点中恢复姿态,需要的信息是最少的,称为“三点透视问题”即P3P。同理,扩展到N个点,就称为“PnP”。4. 基于视觉的姿态估计根据使用的摄像机数目分为单目视觉和多目视觉。根据算法又可以分为基于模型的姿态估计和基于学习的姿态估计。5. OpenCV中有solvePnP以及solvePnPRansac用来实现已知平面四点坐标确定摄像头相对世界坐标系的平移和旋转。cvPOSIT基于正交投影,用仿射投影模型近似透视投影模型,不断迭代计算出估计值。此算法在物体深度相对于物体到相机的距离比较大的时候,算法可能不收敛。6. 从世界坐标系到相机坐标系的转换,需要矩阵R|t,其中R是旋转矩阵,t是位移向量。如果世界坐标系为X,相机坐标系对应坐标为X,那么X = R|t*X。从相机坐标系到理想屏幕坐标系的变换就需要内参数矩阵C。那么理想屏幕坐标系L = C*R|t*X。如何获得R|t,大致是已知模板上的几个关键点在世界坐标系的坐标即X已知,然后在摄像头捕获的帧里获得模板上对应点在屏幕坐标系的坐标即L已知,通过求解线性方程组得到R|t的初值,再利用非线性最小二乘法迭代求得最优变换矩阵R|t。7. 大多数情况下,背景是二维平面,识别的物体也是二维平面。对于ARToolkit,识别的Targets就是平面的(但是这种方法鲁棒性不好)。如果内参数矩阵是已知的,那么知道4个或者更多共面不共线的点就可以计算出相机的姿态。8. 相机姿态估计的问题就是寻找相机的外参数,即是最小化误差函数的问题。误差函数有的基于image-space,有的基于object-space。9. RPP算法基于object-space为误差函数提供了一种可视化的方法。误差函数有两个局部极小值。在无噪声条件下,第一个局部极小值跟正确的姿态对应。另外的误差函数的极小值就是标准姿态估计算法为什么会抖动的原因。由于姿态估计算法最小化误差函数总是要使用迭代算法,因此需要一个初值。如果初值接近第二个局部极小值,那么迭代算法就收敛到错误的结果。10. 估计第一个姿态,RPP算法使用任何已知的姿态估计算法,在这里里,使用迭代算法。从第一个姿态使用P3P算法估计第二个姿态。这个姿态跟误差函数的第二个局部极小值接近。使用估算的第二个姿态作为初值,使用迭代算法获得第二个姿态。最终正确的姿态是有最小误差的那个。11. 这类问题最终都是解线性方程组AX=b的问题。当bR(A)时,x=A的广义逆*b;当b不R(A)时,能否是Ax接近b呢,即是否有x使|Ax-b|最小,习惯上用2-范数即欧式范数来度量。最小二乘解常存在,然后这样的解未必是唯一的。当在方程无解的情况下,要找到最优解。就是要最小化所有误差的平方和,要找拥有最小平方和的解,即最小二乘。最小化就是把误差向量的长度最小化。本文中利用PnP算法求解相机姿态的结果如下:图4-2 相机姿态求解结果4.3视觉里程计的实现在前面的简介中已经提到过,视觉里程计关心的是相邻图像之间的相机运动。上一节中我们求解出来的相机姿态就是视觉里程计的起始的姿态,然后通过连续匹配两幅特征点匹配图就可以不断计算出相机当前的姿态,并且记录下相机当前的位置信息,即可以绘制出相机的运动轨迹和确定运动方向。本文中让Kinect相机走了一段直线距离,实现的结果如下图所示:图4-3 视觉里程计结果第5章 结论与展望第五章 结论与展望移动机器人的视觉定位算法即视觉里程计的构建是实现移动机器人自主定位导航需要解决的十分重要的问题,实现精确的定位对移动机器人自主导航具有十分重大的应用。能让该领域取得更大的突破和发展。本文就基于Kinect的视觉定位算法进行了以下工作:首先利用搭载在移动机器人上的Kinect相机采集具有彩色信息和深度信息的图像,然后运用SIFT算法和SURF算法对数据进行特征点检测和匹配,再由RANSAC算法去除掉一部分误匹配点对,提高特征点匹配的准确率。再利用PnP算法思想来求解相机的位姿信息,进而实现简单的视觉里程计。在本文的实验中移动机器人沿直线走了4米的长度,得到的视觉里程计结果与真实的路线偏离大概27cm,视觉里程计的偏移误差约为5.89%,获得了较好的实验结果。在实验的过程中也发现了一些亟待解决的问题,在移动机器人定位行走过程中,由于移动机器人拍摄照片的速度非常快,可以达到几十帧每秒,所以计算机的运算量十分大,而一般的电脑运算出结果需要一定的实践,这样就会导致定位的实时性较差,需要设计更加优化的算法,减少计算的时间。其次,移动机器人在进行90度以上角度转弯的时候,特征点匹配的数量很少,效果不是很好。而且在光线不好的地方进行实验时,图像的一些信息很难被准确的识别,会给图像的匹配带来很大的困难。这些问题都需要在后续的工作中进行进一步的改进。参考文献参考文献1 Plantard P, Shum H P H, Pierres A S L, et al. Validation of an ergonomic assessment method using Kinect data in real workplace conditionsJ. Applied Ergonomics, 2016.2 Li B Y L, Xue M, Mian A, et al. Robust RGB-D face recognition using Kinect sensor J. Neurocomputing, 2016, 214:93-108.3 Dolatabadi E, Taati B, Mihailidis A. Concurrent validity of the Microsoft Kinect for Windows v2 for measuring spatiotemporal gait parametersJ. Medical Engineering & Physics, 2016, 38(9):952-958.4 Namitha N, Vaitheeswaran S M, Jayasree V K, et al. Point Cloud Mapping Measurements Using Kinect RGB-D Sensor and Kinect Fusion for Visual Odometry J. Procedia Computer Science, 2016, 89:209-212.5 Bueno M, Daz-Vilario L, Martnez-Snchez J, et al. Metrological evaluation of KinectFusion and its comparison with Microsoft Kinect sensorJ. Measurement, 2015, 73:137-145.6 温熙,郭杭. 室内移动机器人自定位方法J. 测绘科学,2016,(06):97-101.7 高云峰,李伟超,李建辉. 室内移动机器人视觉里程计研究J. 传感器与微系统,2012,(02):26-29.8 李策,魏豪左,卢冰,陈晓雷. 基于深度视觉的SLAM算法研究与实现J. 计算机工程与设计,2017,(04):1062-1066.9 许允喜,蒋云良,陈方. 基于2D-3D双目运动估计的立体视觉定位算法J. 光电工程,2011,(09):104-110.10 杨明操. 基于FPGA的实时定位算法研究D.中国科学院研究生院(西安光学精密机械研究所),2015.11 Mentiplay B F, Perraton L G, Bower K J, et al. Gait assessment using the Microsoft Xbox One Kinect: Concurrent validity and inter-day reliabi

温馨提示

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

评论

0/150

提交评论