视觉slam介绍知识讲解
如何使用计算机视觉技术进行视觉SLAM定位与建图

如何使用计算机视觉技术进行视觉SLAM定位与建图视觉SLAM(Simultaneous Localization and Mapping)是一种利用计算机视觉技术进行定位与建图的方法。
通过使用摄像头或其他视觉传感器,结合计算机视觉算法,在不依赖于外部定位系统的情况下,实时地估计相机的运动轨迹,并生成环境地图。
视觉SLAM技术在许多领域中得到了广泛应用,如无人机导航、自动驾驶、增强现实等。
本文将介绍如何使用计算机视觉技术进行视觉SLAM定位与建图的基本原理和常用方法。
一、视觉SLAM的基本原理视觉SLAM主要通过两个步骤实现定位与建图:特征提取和运动估计。
具体流程如下:1. 特征提取:从图像序列中提取关键特征点,以获取稳定可靠的图像特征。
常用的特征提取算法有SIFT(尺度不变特征变换)、SURF(速度快的特征变换)和ORB(Oriented FAST and Rotated BRIEF)。
这些算法能够提取出在不同视角下具有唯一性的图像特征点。
提取到的特征点将被用于后续的运动估计。
2. 运动估计:通过特征点的运动轨迹,计算相机在连续帧之间的相对运动。
一种常用的方法是基于稀疏特征点的追踪,例如,通过匹配先前帧中的特征点与当前帧中的特征点,用最小二乘或RANSAC等方法计算相机姿态的变化。
运动估计的结果将被用于定位和建图的更新。
3. 定位更新:通过将估计的相机姿态与先前的定位结果进行融合,得到更准确的相机位置和姿态。
通常,通过运用滤波器,如扩展卡尔曼滤波器(EKF)或无迹卡尔曼滤波器(UKF),结合运动估计和传感器数据来实现定位的更新。
4. 地图更新:使用定位结果和特征点信息,建立和维护环境地图。
地图通常以稀疏或稠密的形式表示。
在建图过程中,常用的算法有图优化(Graph-SLAM)和基于光束法的建图方法。
二、常用的视觉SLAM算法视觉SLAM的研究领域非常广泛,有很多不同的算法和技术可供选择。
以下是几种常用的视觉SLAM算法:1. ORB-SLAM:ORB-SLAM是一种基于特征点的SLAM系统,它使用ORB特征描述子进行特征提取和匹配,利用优化算法来估计相机的运动轨迹和地图。
vslam技术原理

vslam技术原理VSLAM技术原理VSLAM技术是指视觉SLAM技术,是一种利用摄像头或激光雷达等传感器获取环境信息,实现机器人自主定位和建图的技术。
本文将从以下几个方面详细介绍VSLAM技术的原理。
一、SLAM基础概念1.1 SLAM定义Simultaneous Localization and Mapping(同时定位与建图),简称SLAM,是指在未知环境中,通过机器人自身传感器获取环境信息,实现机器人自主定位和地图构建的过程。
1.2 SLAM组成要素SLAM系统由三个部分组成:传感器、运动模型和地图构建模型。
其中传感器用于获取环境信息,运动模型用于预测机器人的运动轨迹,地图构建模型用于生成地图并估计机器人在地图上的位置。
二、VSLAM基本原理2.1 VSLAM定义Visual Simultaneous Localization and Mapping(视觉同时定位与建图),简称VSLAM,是指利用摄像头等视觉传感器获取环境信息,实现机器人自主定位和地图构建的过程。
2.2 VSLAM组成要素VSLAM系统由两个部分组成:视觉传感器和视觉SLAM算法。
其中视觉传感器用于获取环境信息,视觉SLAM算法用于实现机器人自主定位和地图构建。
三、VSLAM技术原理3.1 视觉传感器视觉传感器包括摄像头、双目摄像头、RGB-D相机等。
这些传感器能够获取环境中的图像信息,并将其转化为数字信号,供计算机进行处理。
3.2 视觉SLAM算法视觉SLAM算法主要分为前端和后端两部分。
前端主要负责提取关键点、匹配特征点等工作;后端则负责优化机器人的位置和地图。
3.2.1 前端前端主要包括特征提取、特征描述和特征匹配三个步骤。
(1)特征提取:通过角点检测或边缘检测等方法,提取出图像中的关键点。
(2)特征描述:对于每个关键点,提取其周围区域的局部特征,并将其转化为高维向量表示。
(3)特征匹配:通过计算两张图像中的关键点的相似度,找到它们之间的对应关系。
《视觉SLAM十四讲》笔记(ch7)

《视觉SLAM⼗四讲》笔记(ch7)ch7 视觉⾥程计1本章⽬标:1.理解图像特征点的意义,并掌握在单副图像中提取出特征点及多副图像中匹配特征点的⽅法2.理解对极⼏何的原理,利⽤对极⼏何的约束,恢复出图像之间的摄像机的三维运动3.理解PNP问题,以及利⽤已知三维结构与图像的对应关系求解摄像机的三维运动4.理解ICP问题,以及利⽤点云的匹配关系求解摄像机的三维运动5.理解如何通过三⾓化获得⼆维图像上对应点的三维结构本章⽬的:基于特征点法的vo,将介绍什么是特征点,如何提取和匹配特征点,以及如何根据配对的特征点估计相机运动和场景结构,从⽽实现⼀个基本的两帧间视觉⾥程计。
特征点:⾓点、SIFT(尺度不变特征变换,Scale-Invariant Feature Transform)、SURF、、ORB(后三个是⼈⼯设计的特征点,具有更多的优点)特征点的组成:1.关键点:指特征点在图像⾥的位置2.描述⼦:通常是⼀个向量,按照某种⼈为设计的⽅式,描述了该关键点周围像素的信息。
相似的特征应该有相似的描述⼦(即当两个特征点的描述⼦在向量空间上的距离相近,认为这两个特征点是⼀样的)以ORB特征为代表介绍提取特征的整个过程:ORB特征:OrientedFAST关键点+BRIEF关键⼦提取ORB特征的步骤:1.提取FAST⾓点:找出图像中的“⾓点”,计算特征点的主⽅向,为后续BRIEF描述⼦增加了旋转不变特性FAST⾓点:主要检测局部像素灰度变化明显的地⽅特点:速度快缺点:1).FAST特征点数量很⼤且不确定,但是我们希望对图像提取固定数量的特征2).FAST⾓点不具有⽅向信息,并且存在尺度问题解决⽅式:1).指定要提取的⾓点数量N,对原始FAST⾓点分别计算Harris响应值,然后选取前N个具有最⼤响应值的⾓点作为最终的⾓点集合2).添加尺度和旋转的描述 尺度不变性的实现:构建图像⾦字塔,并在⾦字塔的每⼀层上检测⾓点(⾦字塔:指对图像进⾏不同层次的降采样,以获得不同分辨率的图像)特征旋转的实现:灰度质⼼法(质⼼:指以图像块灰度值作为权重的中⼼)2.计算BRIEF描述⼦:对前⼀步提取出的特征点周围图像区域进⾏扫描特点:使⽤随机选点的⽐较,速度⾮常快,由于使⽤了⼆进制表达,存储起来也⼗分⽅便,适⽤于实时的图像匹配在不同图像之间进⾏特征匹配的⽅法:1.暴⼒匹配:浮点类型的描述⼦,使⽤欧式距离度量⼆进制类型的描述⼦(⽐如本例中的BRIEF描述⼦),使⽤汉明距离度量缺点:当特征点数量很⼤时,暴⼒匹配法的运算量会变得很⼤2.快速近似最近邻(FLANN):适合匹配特征点数量极多的情况实践部分:1.OpenCV的图像特征提取、计算和匹配的过程:演⽰如何提取ORB特征并进⾏匹配代码: 1 #include <iostream>2 #include <opencv2/core/core.hpp>3 #include <opencv2/features2d/features2d.hpp>4 #include <opencv2/highgui/highgui.hpp>56using namespace std;7using namespace cv;89int main(int argc,char** argv)10 {11if(argc!=3)12 {13 cout<<"usage:feature_extraction img1 img2"<<endl;14return1;15 }1617//读取图像18 Mat img_1=imread(argv[1],CV_LOAD_IMAGE_COLOR);19 Mat img_2=imread(argv[2],CV_LOAD_IMAGE_COLOR);2021//初始化22 vector<KeyPoint> keypoints_1,keypoints_2;//关键点,指特征点在图像⾥的位置23 Mat descriptors_1,descriptors_2;//描述⼦,通常是向量24 Ptr<ORB> orb=ORB::create(500,1.2f,8,31,0,2,ORB::HARRIS_SCORE,31,20);2526//第⼀步:检测OrientFAST⾓点位置27 orb->detect(img_1,keypoints_1);28 orb->detect(img_2,keypoints_2);2930//第2步:根据⾓点位置计算BRIEF描述⼦31 orb->compute(img_1,keypoints_1,descriptors_1);32 orb->compute(img_2,keypoints_2,descriptors_2);3334 Mat outimg1;35 drawKeypoints(img_1,keypoints_1,outimg1,Scalar::all(-1),DrawMatchesFlags::DEFAULT);36 imshow("1.png的ORB特征点",outimg1);37 Mat outimg2;38 drawKeypoints(img_2,keypoints_2,outimg2,Scalar::all(-1),DrawMatchesFlags::DEFAULT);39 imshow("2.png的ORB特征点",outimg2);4041//第3步:对两幅图像中的BRIEF描述⼦进⾏匹配,使⽤Hamming距离42 vector<DMatch> matches;43//特征匹配的⽅法:暴⼒匹配44 BFMatcher matcher(NORM_HAMMING);45 matcher.match(descriptors_1,descriptors_2,matches);46// for(auto it=matches.begin();it!=matches.end();++it)47// {48// cout<<*it<<" ";49// }50// cout<<endl;5152//第4步:匹配点对筛选53 distance是min_dist5455double min_dist=10000,max_dist=0;5657//找出所有匹配之间的最⼩距离和最⼤距离,即最相似的和最不相似的和最不相似的两组点之间的距离58for(int i=0;i<descriptors_1.rows;++i)59 {60double dist=matches[i].distance;61// cout<<dist<<endl;62if(dist<min_dist) min_dist=dist;63if(dist>max_dist) max_dist=dist;64 }6566 printf("--Max dist:%f\n",max_dist);67 printf("--Min dist:%f\n",min_dist);6869//当描述⼦之间的距离⼤于两倍的最⼩距离时,即认为匹配有误70//但有时候最⼩距离会⾮常⼩,设置⼀个经验值作为下限71 vector<DMatch> good_matches;72for(int i=0;i<descriptors_1.rows;++i)73 {74if(matches[i].distance<=max(2*min_dist,30.0))75 {76 good_matches.push_back(matches[i]);77 }78 }7980//第5步:绘制匹配结果81 Mat img_match;82 Mat img_goodmatch;83 drawMatches(img_1,keypoints_1,img_2,keypoints_2,matches,img_match);84 drawMatches(img_1,keypoints_1,img_2,keypoints_2,good_matches,img_goodmatch);85 imshow("所有匹配点对",img_match);86 imshow("优化后匹配点对",img_goodmatch);87 waitKey(0);8889return0;90 }实验结果:1.png中提取到的特征点2.png中提取到的特征点匹配结果: 所有点对匹配结果 优化后的匹配点对结果(筛选依据是Hamming距离⼩于最⼩距离的两倍)结果分析:尽管在这个例⼦中利⽤⼯程经验优化筛选出正确的匹配,但并不能保证在所有其他图像中得到的匹配都是正确的,所以,在后⾯的运动估计中,还要使⽤去除误匹配的算法。
视觉SLAM技术的使用方法与定位误差分析

视觉SLAM技术的使用方法与定位误差分析随着机器人和无人驾驶技术的快速发展,视觉SLAM(Simultaneous Localization and Mapping)技术成为了一个备受关注的研究领域。
视觉SLAM技术的出现使得机器人和自动驾驶系统能够在未知环境中同时定位自身位置并构建地图,从而实现更准确的导航与路径规划。
本文将介绍视觉SLAM技术的一般使用方法,同时还将对定位误差进行分析。
首先,实现视觉SLAM的主要步骤是通过相机传感器捕获环境图像,并使用各种算法进行图像处理和测量。
常用的算法包括特征提取与匹配、运动估计、地图构建等。
整个过程可以分为离线和在线两个阶段:离线阶段主要通过处理离线录制的图像序列,预先生成地图;而在线阶段则是在实时采集图像的同时,实时更新地图和定位信息。
在实际操作中,使用视觉SLAM技术需要满足一些硬件和软件要求。
首先,需要使用高质量的相机传感器,以获取高分辨率的图像。
其次,需要使用处理能力强大的计算设备,因为实时图像处理和地图构建需要大量的计算资源。
此外,还需要合适的SLAM算法库,如ORB-SLAM、LSD-SLAM、DSO等。
接下来,我们将对视觉SLAM定位误差进行分析。
视觉SLAM的定位精度受到多个因素的影响,包括图像质量、环境光照条件、传感器的校准精度等。
其中,图像质量是影响视觉SLAM定位精度的一个重要因素。
当图像质量较差时,如光照不均匀、噪声较多或者存在模糊等问题,会导致特征提取和匹配的准确性下降,从而降低了定位精度。
此外,环境光照条件也会对视觉SLAM技术的性能产生影响。
光照条件变化剧烈时,会导致图像特征的提取和匹配困难,从而影响定位的准确性。
因此,为了提高视觉SLAM的稳定性,在光照变化较大的环境中,我们可以采用动态曝光控制方法,即根据环境光照变化动态调整相机的曝光参数,以保证图像质量的稳定性。
对于视觉SLAM技术来说,传感器的校准精度也是影响定位精度的一个关键因素。
SLAM_介绍以及浅析

SLAM_介绍以及浅析SLAM(Simultaneous Localization and Mapping),即同时定位与建图,是一种将移动机器人在未知环境中的位置定位与环境地图生成统一起来的技术。
SLAM技术是实现自主导航和智能导航的关键性技术之一,广泛应用于无人车、无人潜艇、无人机、机器人等领域。
SLAM技术分为前端和后端两部分。
前端主要负责机器人的位置定位,根据传感器获取的数据,通过运动估计(例如里程计模型)和感知估计(例如视觉、雷达感知)等方法,计算机器人在运动过程中的位置和姿态。
后端主要负责地图生成,根据机器人在不同时间点的位置估计和传感器获取的环境地图数据,利用优化算法估计机器人的位置和地图。
在前端中,常用的传感器有激光雷达、相机、惯性测量单元(IMU)等。
激光雷达可以提供高精度的距离和角度信息,常用于建立环境地图。
相机能够捕捉到图像信息,通过图像算法可以提取出环境中的特征点,用于定位和建图。
IMU能够提供线性加速度和角速度信息,用以估计机器人的运动。
在后端中,常用的算法有滤波器、优化方法和图优化等。
滤波器方法包括扩展卡尔曼滤波器(EKF)和无迹卡尔曼滤波器(UKF),通过状态估计和协方差矩阵来估计机器人的位置和姿态。
优化方法包括最小二乘法、非线性优化等,通过最小化误差函数来优化机器人的位置估计和地图。
图优化方法使用图模型来描述机器人的位置和环境地图,通过最大化后验概率来估计位置和地图。
SLAM技术的关键挑战之一是数据关联问题。
由于噪声和误差的存在,机器人在不同时刻获取的传感器数据可能不完全匹配。
因此,需要通过数据关联来确定当前获取的数据与之前数据的对应关系。
常用的数据关联方法有最近邻法、滤波法和图优化法等。
最近邻法通过计算不同数据之间的距离来确定对应关系。
滤波法通过滤波器来更新机器人的位置估计,并根据新的数据重新关联。
图优化法通过图模型来描述数据的关联关系,并通过最大后验概率来估计位置和地图。
SLAM简介

SLAM简介SLAM简介1. 关于SLAMSLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Leonard 提出。
SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题。
SLAM通常包括如下几个部分,特征提取,数据关联,状态估计,状态更新以及特征更新等。
对于其中每个部分,均存在多种方法。
针对每个部分,我们将详细解释其中一种方法。
在实际使用过程中,读者可以使用其他的方法代替本文中说明的方法。
这里,我们以室内环境中运行的移动机器人为例进行说明,读者可以将本文提出的方法应用于其他的环境以及机器人中。
SLAM既可以用于2D运动领域,也可以应用于3D运动领域。
这里,我们将仅讨论2D领域内的运动。
2. 机器人平台在学习SLAM的过程中,机器人平台是很重要的,其中,机器人平台需要可以移动并且至少包含一个测距单元。
我们这里主要讨论的是室内轮式机器人,同时主要讨论SLAM的算法实现过程,而并不考虑一些复杂的运动模型如人形机器人。
在选择机器人平台时需要考虑的主要因素包括易用性,定位性能以及价格。
定位性能主要衡量机器人仅根据自身的运动对自身位置进行估计的能力。
机器人的定位精度应该不超过2%,转向精度不应该超过5%。
一般而言,机器人可以在直角坐标系中根据自身的运动估计其自身的位置与转向。
从0开始搭建机器人平台将会是一个耗时的过程,也是没有必要的。
我们可以选择一些市场上成熟的机器人开发平台进行我们的开发。
这里,我们以一个非常简单的自己开发的机器人开发平台讨论,读者可以选择自己的机器人开发平台。
目前比较常见的测距单元包括激光测距、超声波测距、图像测距。
其中,激光测距是最为常用的方式。
通常激光测距单元比较精确、高效并且其输出不需要太多的处理。
其缺点在于价格一般比较昂贵(目前已经有一些价格比较便宜的激光测距单元)。
视觉slam十四讲 引用

视觉slam十四讲引用视觉SLAM是一种基于视觉传感器的同时定位和地图构建技术,它可以在没有GPS信号的情况下实现精确的定位和地图构建。
视觉SLAM 十四讲是一本介绍视觉SLAM技术的经典教材,由国内外知名学者合作编写而成,内容涵盖了视觉SLAM的基础理论、算法原理、实现方法以及应用案例等方面。
视觉SLAM的基本原理是通过视觉传感器获取场景的图像信息,然后通过计算机视觉算法对图像进行处理,提取出场景中的特征点,并利用这些特征点进行定位和地图构建。
视觉SLAM技术的优点在于可以实现高精度的定位和地图构建,同时还可以适应各种环境和场景,具有广泛的应用前景。
视觉SLAM十四讲的内容十分丰富,其中包括了视觉SLAM的基础理论、算法原理、实现方法以及应用案例等方面。
在基础理论方面,该书介绍了视觉SLAM的基本原理和相关概念,包括相机模型、特征点提取、特征匹配、位姿估计等内容。
在算法原理方面,该书详细介绍了视觉SLAM中常用的算法,包括基于滤波器的方法、基于优化的方法、基于深度学习的方法等。
在实现方法方面,该书介绍了视觉SLAM的实现流程和常用工具,包括ORB-SLAM、LSD-SLAM、SVO 等。
在应用案例方面,该书介绍了视觉SLAM在机器人导航、自动驾驶、增强现实等领域的应用案例。
视觉SLAM十四讲的编写者是国内外知名的视觉SLAM专家,他们在该领域拥有丰富的研究经验和实践经验。
该书的编写风格简洁明了,内容系统全面,既适合初学者入门学习,也适合专业人士深入研究。
此外,该书还提供了大量的代码实现和数据集,方便读者进行实践和验证。
总之,视觉SLAM十四讲是一本非常优秀的视觉SLAM教材,它详细介绍了视觉SLAM的基础理论、算法原理、实现方法以及应用案例等方面,对于学习和研究视觉SLAM技术的人士来说是一本不可多得的好书。
视觉slam的分类

视觉slam的分类视觉SLAM是指基于视觉传感器的同时定位与地图构建技术。
它是一种利用相机或摄像头来实现机器人或无人机在未知环境中自主定位和建图的技术。
视觉SLAM技术的应用非常广泛,包括自动驾驶、智能家居、机器人导航等领域。
视觉SLAM可以分为以下几类:1. 基于特征的SLAM基于特征的SLAM是指通过提取图像中的特征点来进行定位和建图的技术。
这种方法通常使用SIFT、SURF、ORB等算法来提取特征点,并使用RANSAC等算法来进行特征匹配和估计相机位姿。
基于特征的SLAM具有较高的精度和鲁棒性,但对于纹理较少的场景或者运动模糊较严重的情况下,可能会出现定位失败的情况。
2. 基于直接法的SLAM基于直接法的SLAM是指直接利用图像像素值来进行定位和建图的技术。
这种方法通常使用光流法或者稠密光流法来进行像素级别的匹配,并使用优化算法来估计相机位姿。
基于直接法的SLAM具有较高的鲁棒性和对纹理较少的场景具有较好的适应性,但需要较高的计算资源和较长的计算时间。
3. 基于半直接法的SLAM基于半直接法的SLAM是指结合了基于特征法和基于直接法的优点,通过利用像素值和特征点来进行定位和建图的技术。
这种方法通常使用SVO、DSO等算法来进行实现。
基于半直接法的SLAM具有较高的鲁棒性和较快的计算速度,但对于纹理较少的场景可能会出现定位失败的情况。
4. 基于深度学习的SLAM基于深度学习的SLAM是指利用深度学习技术来进行定位和建图的技术。
这种方法通常使用深度神经网络来进行图像特征提取和相机位姿估计。
基于深度学习的SLAM具有较高的鲁棒性和对于纹理较少的场景具有较好的适应性,但需要较大的训练数据集和较长的训练时间。
总之,视觉SLAM技术的分类主要是基于不同的特征提取和匹配方法,每种方法都有其优缺点和适用场景。
未来,随着计算机视觉和深度学习技术的不断发展,视觉SLAM技术将会得到更广泛的应用和进一步的优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提要
1. 视觉SLAM概述 2. 相机与图像 3. 视觉里程计 4. 后端优化 5. 回环检测 6. 地图构建
第一讲 视觉SLAM概述
• Question 机器人自主运动两大基本问题
• 我在什么地方?——定位 • 周围长什么样子?——建图 • 机器人的“内外兼修”:定位侧重对自身的了解,建图侧重对外在的了解
• 单目:没有深度,必须通过移动相机产生深度 Moving View Stereo • 双目:通过视差计算深度 Stereo • RGBD:通过物理方法测量深度
第一讲 视觉SLAM概述
仅有一个图像时:
• 可能是很近但很小的物体 • 可能是很远但很大的物体
它们成像相同
必须在移动相机后才能得知相机的运动和 场景的结构
• 物理手段测量深度 • 结构光 ToF • 主动测量,功耗大 • 深度值较准确 • 量程较小,易受干扰
第一讲 视觉SLAM概述
• 视觉SLAM框架 • 前端:VO • 后端:Optimization • 回环检测 Loop Closing • 建图 Mapping
第一讲 视觉SLAM概述
• 视觉里程计 Visual Odometry
• BRIEF • BRIEF-128:在特征点附近的128次像素比较
3.1.1 ORB特征
• 特征匹配
• 通过描述子的差异判断哪些特征为同一个点 • 暴力匹配:比较图1中每个特征和图2特征的距离 • 加速:快速最近邻(FLANN)
实践:特征提取和匹配
3.2 对极几何
• 特征匹配之后,得到了特征点之间的对应关系
• 需要对感光度量化成数值,例如0~255之间的整数(彩色图像还有通道)
实践 点云拼接
第三讲 视觉里程计
Chapter 3: Visual Odometry
3.1 特征点法
• 经典SLAM模型中以位姿——路标(Landmark)来描述SLAM过程 • 路标是三维空间中固定不变的点,能够在特定位姿下观测到
• 准确的定位需要精确的地图 • 精确的地图来自准确的定位
第一讲 视觉SLAM概述
• How to do SLAM?——Sensors
两类传感器 • 安装于环境中的:
• 二维码 Marker • GPS • 导轨、磁条 • 携带于机器人本体上的 • IMU • 激光 • 相机
第一讲 视觉SLAM概述
• 如果只有两个单目图像,得到2D-2D间的关系 ——对极几何 • 如果匹配的是帧和地图,得到3D-2D间的关系 ——PnP • 如果匹配的是RGB-D图,得到3D-3D间的关系 ——ICP
3.2 对极几何
• 几何关系:
• P在两个图像的投影为
• 两个相机之间的变换为
•
在第二个图像上投影为
• 记 ,称为极线,反之亦然
• 数量充足,以实现良好的定位 • 较好的区分性,以实现数据关联
• 在视觉SLAM中,可利用图像特征点作为SLAM中的路标
3.1 特征点法
• 特征点:图像当中具有代表性的部分
• 可重复性 • 可区别性 • 高效 • 本地
• 特征点的信息
• 位置、大小、方向、评分等——关键点
特征描述应该在光照、视角发生少量变化时 仍能保持一致
• 相机
• 以一定速率采集图像,形成视频
• 分类
• 单目 Monocular • 双目 Stereo • 深度 RGBD • 其他 鱼眼 全景 Event Camera, etc.
第一讲 视觉SLAM概述
• 相机的本质
• 以二维投影形式记录了三维世界的信息 • 此过程丢掉了一个维度:距离
• 各类相机主要区别:有没有深度信息
第一讲 视觉SLAM概述
• 当相机运动起来时
• 场景和成像有几何关系 • 近处物体的像运动快 • 远处物体的像运动慢 • 可以推断距离
第一讲 视觉SLAM概述
• 双目相机:左右眼的微小差异判断远近 • 同样,远处物体变化小,近处物体变化大——推算距离 计算量非常大
第一讲 视觉SLAM概述
• 深度相机
第二讲 相机模型
• 小孔成像模型
原始形式 翻转到前面 整理之:
第二讲 相机模型
• 成像平面到像素坐标
代入 得
第二讲 相机模型
展开形式 矩阵形式
传统习惯
左侧是齐次坐标 中间矩阵称为内参数 右侧是非齐次坐标 内参通常在相机生产之后就已固定
第二讲 相机模型
• 除内参外,相机坐标系与世界坐标系还相差一个变换:
• 回环检测
• 检测机器人是否回到早先位置 • 识别到达过的场景 • 计算图像间的相似性
• 方法:词袋模型
第一讲 视觉SLAM概述
• 建图
• 用于导航、规划、通讯、 可视化、交互等
• 度量地图 vs 拓扑地图 • 稀疏地图 vs 稠密地图
第二讲 相机与图像
Chapter 2: Cameras and Images
• 相邻图像估计相机运动 • 基本形式:通过两张图像计算
运动和结构 • 不可避免地有漂移
• 方法
• 特征点法 • 直接法
第一讲 视觉SLAM概述
• 后端优化
• 从带有噪声的数据中优化轨迹和地图 状态估计问题 • 最大后验概率估计 MAP • 前期以EKF为代表,现在以图优化为代表
第一讲 视觉SLAM概述
• 特征点周围的图像信息——描述子(Descriptor)
• 主流方法:SIFT/SURF/ORB (OpenCV features2d模块)
3.1.1 ORB特征
• 例子:ORB特征
• 关键点:Oriented FAST • 描述:BRIEF
• FAST
• 连续N个点的灰度有明显差异
• Oriented FAST • 在FAST基础上计算旋转•Biblioteka 称为极点• 实践当中:
•
通过特征匹配得到,P未知,
•
待求(本质矩阵、单应矩阵)
未知
3.3 三角化
• 已知运动时,求解特征点的3D位置 • 几何关系: • 求 时,两侧乘
• 反之亦然
• 或者同时解
•求
的最小二乘解
• 这里 R, t 或 T 称为外参 • 外参是SLAM估计的目标
先把P从世界坐标变到 相机坐标系下
第二讲 相机模型
• RGB-D相机:物理手段测量深度
• ToF或结构光两种主要原理 • 通常能得到与RGB图对应的深度图
第二讲 图像
• 相机成像后,生成了图像 • 图像在计算机中以矩阵形式存储(二维数组)