您好,欢迎访问三七文档
视觉SLAM介绍1.视觉SLAM概述2.相机与图像3.视觉里程计4.后端优化5.回环检测6.地图构建提要第一讲视觉SLAM概述Chapter1:Introduction第一讲视觉SLAM概述•Question机器人自主运动两大基本问题•我在什么地方?——定位•周围长什么样子?——建图•机器人的“内外兼修”:定位侧重对自身的了解,建图侧重对外在的了解•准确的定位需要精确的地图•精确的地图来自准确的定位第一讲视觉SLAM概述•HowtodoSLAM?——Sensors两类传感器•安装于环境中的:•二维码Marker•GPS•导轨、磁条•携带于机器人本体上的•IMU•激光•相机第一讲视觉SLAM概述•相机•以一定速率采集图像,形成视频•分类•单目Monocular•双目Stereo•深度RGBD•其他鱼眼全景EventCamera,etc.第一讲视觉SLAM概述•相机的本质•以二维投影形式记录了三维世界的信息•此过程丢掉了一个维度:距离•各类相机主要区别:有没有深度信息•单目:没有深度,必须通过移动相机产生深度MovingViewStereo•双目:通过视差计算深度Stereo•RGBD:通过物理方法测量深度第一讲视觉SLAM概述仅有一个图像时:•可能是很近但很小的物体•可能是很远但很大的物体它们成像相同必须在移动相机后才能得知相机的运动和场景的结构第一讲视觉SLAM概述•当相机运动起来时•场景和成像有几何关系•近处物体的像运动快•远处物体的像运动慢•可以推断距离第一讲视觉SLAM概述•双目相机:左右眼的微小差异判断远近•同样,远处物体变化小,近处物体变化大——推算距离计算量非常大第一讲视觉SLAM概述•深度相机•物理手段测量深度•结构光ToF•主动测量,功耗大•深度值较准确•量程较小,易受干扰第一讲视觉SLAM概述•视觉SLAM框架•前端:VO•后端:Optimization•回环检测LoopClosing•建图Mapping第一讲视觉SLAM概述•视觉里程计VisualOdometry•相邻图像估计相机运动•基本形式:通过两张图像计算运动和结构•不可避免地有漂移•方法•特征点法•直接法第一讲视觉SLAM概述•后端优化•从带有噪声的数据中优化轨迹和地图状态估计问题•最大后验概率估计MAP•前期以EKF为代表,现在以图优化为代表第一讲视觉SLAM概述•回环检测•检测机器人是否回到早先位置•识别到达过的场景•计算图像间的相似性•方法:词袋模型第一讲视觉SLAM概述•建图•用于导航、规划、通讯、可视化、交互等•度量地图vs拓扑地图•稀疏地图vs稠密地图第二讲相机与图像Chapter2:CamerasandImages第二讲相机模型•小孔成像模型原始形式翻转到前面整理之:第二讲相机模型•成像平面到像素坐标代入得第二讲相机模型矩阵形式展开形式左侧是齐次坐标右侧是非齐次坐标中间矩阵称为内参数内参通常在相机生产之后就已固定传统习惯第二讲相机模型•除内参外,相机坐标系与世界坐标系还相差一个变换:•这里R,t或T称为外参•外参是SLAM估计的目标先把P从世界坐标变到相机坐标系下第二讲相机模型•RGB-D相机:物理手段测量深度•ToF或结构光两种主要原理•通常能得到与RGB图对应的深度图第二讲图像•相机成像后,生成了图像•图像在计算机中以矩阵形式存储(二维数组)•需要对感光度量化成数值,例如0~255之间的整数(彩色图像还有通道)实践点云拼接第三讲视觉里程计Chapter3:VisualOdometry3.1特征点法•经典SLAM模型中以位姿——路标(Landmark)来描述SLAM过程•路标是三维空间中固定不变的点,能够在特定位姿下观测到•数量充足,以实现良好的定位•较好的区分性,以实现数据关联•在视觉SLAM中,可利用图像特征点作为SLAM中的路标3.1特征点法•特征点:图像当中具有代表性的部分•可重复性•可区别性•高效•本地•特征点的信息•位置、大小、方向、评分等——关键点•特征点周围的图像信息——描述子(Descriptor)•主流方法:SIFT/SURF/ORB(OpenCVfeatures2d模块)特征描述应该在光照、视角发生少量变化时仍能保持一致3.1.1ORB特征•例子:ORB特征•关键点:OrientedFAST•描述:BRIEF•FAST•连续N个点的灰度有明显差异•OrientedFAST•在FAST基础上计算旋转•BRIEF•BRIEF-128:在特征点附近的128次像素比较3.1.1ORB特征•特征匹配•通过描述子的差异判断哪些特征为同一个点•暴力匹配:比较图1中每个特征和图2特征的距离•加速:快速最近邻(FLANN)实践:特征提取和匹配3.2对极几何•特征匹配之后,得到了特征点之间的对应关系•如果只有两个单目图像,得到2D-2D间的关系——对极几何•如果匹配的是帧和地图,得到3D-2D间的关系——PnP•如果匹配的是RGB-D图,得到3D-3D间的关系——ICP3.2对极几何•几何关系:•P在两个图像的投影为•两个相机之间的变换为•在第二个图像上投影为•记,称为极线,反之亦然•称为极点•实践当中:•通过特征匹配得到,P未知,未知•待求(本质矩阵、单应矩阵)𝑝1,𝑝2𝑇12𝑂1𝑃𝑒2𝑝2𝑙2𝑒1,𝑒2𝑝1,𝑝2𝑒1,𝑒2𝑇123.3三角化•已知运动时,求解特征点的3D位置•几何关系:•求时,两侧乘•反之亦然•或者同时解•求的最小二乘解𝑠2𝑥1∧𝑠1,𝑠2−𝑅𝑥2,𝑥1𝑠1𝑠2=𝑡𝑥=𝐴𝑇𝐴−1𝐴𝑇𝑏3.4PNP•已经3D点的空间位置和相机上的投影点,求相机的旋转和平移(外参)•代数的解法/优化的解法•代数的•DLT•P3P•EPnP/UPnP/…•优化的:BundleAdjustment3.4PNP•DLT(直接线性变换)•设空间点•投影点为:•投影关系:•展开:•将它看成一个关于t的线性方程,求解t𝑃=𝑋,𝑌,𝑍,1𝑇𝑥=𝑢,𝑣,1𝑠𝑥=𝑅|𝑡𝑝归一化坐标•注意最下一行为•用它消掉前两行中的s,则一个特征点提供两个方程:•为求解12个未知数,需要12/2=6对点。(超定时求最小二乘解)𝑠=𝑡9,𝑡10,𝑡11,𝑡12𝑋,𝑌,𝑍,1𝑇3.5光流3.5光流•一般分为稀疏光流和稠密光流•稀疏以Lucas-Kanade(LK)光流为代表•稠密以Horn–Schunck(HS)光流为代表•本质上是估计像素在不同时刻图像中的运动3.5光流•设t时刻位于x,y处像素点的灰度值为•在t+dt时刻,该像素运动到了•希望计算运动dx,dy•灰度不变假设:•注意:灰度不变是一种理想的假设,实际当中由于高光/阴影/材质/曝光等不同,很可能不成立。3.5光流•对t+dt时刻的灰度进行Taylor展开并保留一阶项:•由于灰度不变,所以•希望求解dx/dt,dy/dt因此=x方向梯度y方向梯度随时间变化3.5光流•但本式是一个二元一次线性方程,欠定•需要引用额外的约束•假定一个窗口()内光度不变:•通过超定最小二乘解求得运动u,vw´w3.5光流最后,我们可以通过光流跟踪的特征的,用PnP、ICP或对极几何来估计相机运动。总而言之,光流法可以加速基于特征点的视觉里程计算法,避免计算和匹配描述子的过程,但要求相机运动较慢(或采集频率较高)。实践光流可以发现,光流法在跟踪过程中一部分特征点会丢失,在第一帧时有1749个特征点,而在第10帧时大约还有1640个特征点,相机的视角在发生改变,所以我们使用光流法时要注意特征点的重新采集。第四讲后端Chapter4:Backend4.1BA与图优化4.1BA与图优化BA算法起源于上世纪60年代,开始应用于图片拼接方向,正是由于BA的出现才使得图片自动拼接称为可能。在视觉SLAM产生之后,BA被广泛应用于视觉SLAM的位姿优化,其将相机位姿和特征点的空间位置进行同时优化,获得优化后的结果。BA本身也是一个非线性最小二乘问题。对于视觉SLAM来说BA问题可以简单的描述成在不同的相机位姿下看到了相同的空间点,于是通过观测使得空间点和相机位姿之间产生了约束,并且由空间点在两幅图像上的重投影产生了联系。由重投影关系产生的误差即可建立最小二乘问题,求解该问题即可对相机位姿和空间点进行同时优化。4.1BA与图优化•BA问题与图结构的关系•BA虽是个纯优化问题,但亦可以用图模型表述出来•顶点为优化变量,边为运动/观测约束•本身还有一些特殊的结构•考虑在位姿i处对路标j的一次观测zij:eij=zij-hxi,yj()特点:•每个观测只关系两个变量,其中一个是相机,一个是路标•纯视觉Ba中,不存在相机与相机/路标与路标之间的关联•整个误差函数由许多个这样小的项组成4.1BA与图优化•该方程组分为两步来求:1.求解上半部分,规模较小,得到2.将结果代入下半部分,得到•这个做法称为Marginalization或Schur消元•从消元角度来讲,亦可使用Cholesky等其他消元方式解此稀疏方程•从Marginalization角度来讲,是我们把所有的路标信息边缘化到了相机的信息中DxcDxpG2O下的BA优化第五讲回环检测Chapter5:Loopdetection5.1回环检测为消除累计误差,获得全局一致的地图和轨迹,仅仅通过帧间数据匹配估计运动位姿是远远不够的,需要在全局数据中进行处理才能得到更好的结果。在这个过程中,回环检测就发挥了非常重要的作用。回环检测可以有效修正运动轨迹,将累计误差消除。回环检测本质上是图像相似度计算的问题,一般使用BOW字典对图片进行描述,通过检验图片中单词的数量形成直方图,通过检验直方图之间的关系确定图像之间的相似程度。一般使用词袋模型判断回环检测需要进行词典的建立以及后续对图像相似性的处理。5.2词袋模型利用K-Means算法构造单词表。用K-means对第二步中提取的N个SIFT特征进行聚类,K-Means算法是一种基于样本间相似性度量的间接聚类方法,此算法以K为参数,把N个对象分为K个簇,以使簇内具有较高的相似度,而簇间相似度较低。聚类中心有k个(在BOW模型中聚类中心我们称它们为视觉词),码本的长度也就为k,计算每一幅图像的每一个SIFT特征到这k个视觉词的距离,并将其映射到距离最近的视觉词中(即将该视觉词的对应词频+1)。完成这一步后,每一幅图像就变成了一个与视觉词序列相对应的词频矢量。5.2词袋模型我们从人脸、自行车和吉他三个目标类图像中提取出的不同视觉词汇,而构造的词汇表中,会把词义相近的视觉词汇合并为同一类,经过合并,词汇表中只包含了四个视觉单词,分别按索引值标记为1,2,3,4。通过观察可以看到,它们分别属于自行车、人脸、吉他、人脸类。统计这些词汇在不同目标类中出现的次数可以得到每幅图像的直方图表示:人脸:[3,30,3,20]自行车:[20,3,3,2]吉他:[8,12,32,7]其实这个过程非常简单,就是针对人脸、自行车和吉他这三个文档,抽取出相似的部分(或者词义相近的视觉词汇合并为同一类),构造一个词典,词典中包含4个视觉单词,即Dictionary={1:”自行车”,2.“人脸”,3.“吉他”,4.“人脸类”},最终人脸、自行车和吉他这三个文档皆可以用一个4维向量表示,最后根据三个文档相应部分出现的次数画成了上面对应的直方图。一般情况下,K的取值在几百到上千,在这里取K=4仅仅是为了方便说明。第六讲建图Chapter5:Mapping第六讲建图建图(Mapping)是slam的两大目标之一。上述讨论的都是定位,讨论了特征值点的定位,直接法的定位,以及后端优化。在经典的slam模型中,所谓的地图,即所有路标点的集合。一旦确定了路标点的位置,可以说明完成了建图。但建图的需求不同,SLAM作为一种底层技术,往往是用来为上层应用提供信息。例如扫地机器人需要完成扫地工作,希望计算一条能够覆盖整张地图的路径。或者,如果上层是一个增强现实设备,那么开发者可能将虚拟物体
本文标题:视觉slam介绍
链接地址:https://www.777doc.com/doc-6346827 .html