视觉slam初识

第2讲 初始SLAM

经典视觉SLAM框架

视觉里程计:根据传感器采集到的数据信息(彩色信息和深度信息),估计相邻帧图像之间相机的运动,包括旋转矩阵和平移矩阵;相邻帧的运动串起来,就构成了轨迹;但会出现漂移问题,需要后端优化和回环检测;

后端优化:根据VO测量的相机位姿,以及回环检测的信息,优化得到全局一致的轨迹和地图;

回环检测:判断机器人是否回到之前到达过的位置;

建图:根据估计的轨迹,建立地图;

slam问题的数学表示

包括运动方程和状态方程

t=1,2,...,K为离散时刻;x1,x2,...,xk表示各时刻的位置,y1,y2,...,yN为观测到的N个路标点,uk为运动传感器的读数,wk为运动噪声;zk,j为位置xk上观测到路标点yj时的观测数据,vk,j为观测噪声;

在视觉slam中,xk为相机位姿(平移和旋转);yj为空间点位置;vk,j为图像像素;

引出:

运动方程中位姿表示问题;(李群李代数)

观测方程中路标点怎么投影到图片像素上;(相机成像模型)

怎么解slam方程;(非线性优化)

第5讲:相机与图像

相机模型

公式展示了从像素点到世界坐标的转换过程,已知像素值和相机内参(K矩阵)可以恢复像素的相机坐标点,再结合R,t矩阵(IMU/视觉里程计得到的位姿参数)可恢复世界坐标系;

问题:深度信息Z未知,由一像素点[u,v]只能得到归一化平面Z=1的相机坐标点Pc=[X/Z, Y/Z, 1], 无法确定具体的空间点(相机光心到归一化平面连线上所有的点可以投影到该像素上)

解决:双目相机或者RGB-D相机确定深度信息

双目相机模型

找到左右图像匹配的点,根据视差d(左右图像横坐标之差)可以确定像素点的深度;(因此需要提取特征点和匹配)

RGB-D相机模型

Kinect内置的红外结构光可以检测像素点深度信息;

so:目前为止:在已知深度信息(双目/RGB-D),位姿信息(IMU/视觉里程计),像素点,相机内参下,可以重建图像的三维信息(点云)

问题:怎么获取位姿信息;(视觉里程计)

第6讲:非线性优化

如误差对pose和point的导数,对位姿的雅可比矩阵为2*6矩阵,对3D点的导数为2*3矩阵

第7讲:视觉里程计

VO按照是否需要提取特征点,分为特征点法和直接法;

特征点法:

特征提取->匹配->位姿估计

特征提取:SIFT、SURF、ORB

SIFT:尺度不变特征变换、计算量大、无法满足定位建图实时性;

ORB:代表性的实时图像特征,改进了FAST检测子不具备方向性的问题,采用速度极快的二进制描述子BRIEF

估计相机位姿

根据提取的匹配点对,估计相机的运动。由于相机的不同,情况不同:

1.当相机为单目时,我们只知道2D的像素坐标,因而问题是根据两组2D点估计运动。该问题用对极几何来解决。

2.当相机为双目、RGB-D时,或者我们通过某种方法得到了距离信息,那问题就是根据两组3D点估计运动。该问题通常用ICP来解决。

3.如果我们有3D点和它们在相机的投影位置,也能估计相机的运动。该问题通过PnP求解。

对极几何:

几何意义是P、O1、O2共面,称为极平面,l1、l2表示投影点可能出现的位置,也就是说p1的对应点不需要在I2整幅图像上搜索,必然位于极线上,我们希望从摄像机的标定参数中,求出极线;

8点法求基础矩阵E

问题:E具有尺度等价性,分解得到的R,t有一个尺度等价性,R具有自身约束,而t归一化后导致了单目视觉的尺度不确定性;

解决:单目SLAM初始化,初始化的两张图片必须有一定程度的平移,后的轨迹以此平移为单位;但这种方式会引发初始化的纯旋转问题

三角测量

通过对极约束已经计算出R,t,但是重建还需要深度信息,因此利用三角测量(同一点不同地方观察)来估计地图点的深度;

 

3D-2D:PnP

已知一张图像上特征点的3D位置(世界坐标)(三角化或者RGBD-D深度图)和其投影坐标,求解方法有:

方法一:直接线性变换:至少6对匹配点

方法二:P3P:只需要3对3D-2D匹配点

利用三角形相似原理,求解投影点在相机坐标系下的3D坐标,结合世界坐标系下的3D坐标,转换成3D-3D的位姿估计问题;

方法三:Bundle Adjustment:李代数上的非线性最小二乘问题,最小化重投影误差(当前像素值与3D点按估计的位姿投影得到的位置之差);

3D-3D:ICP

匹配好的3D相机坐标系点和3D世界坐标系点;找到迭代最近点

方法一:SVD方法

方法二:Bundle Adjustment

2D-2D确定的是两帧之间的运动,3D-2D,3D-3D确定的是相机坐标相对世界坐标的运动;

summary:

往往是前一帧为参考,前一帧提取的特征点,通过相机变换到相机坐标,然后投影到Frame_cur,计算重投影误差,优化位姿(相对的)!

其中可以用光流法跟踪特征点的运动,而不计算描述子!
或者不计算关键点,也不计算描述子,用直接法,计算光度误差

 

第10讲:后端优化

包括以EKF优化为代表的滤波器后端和非线性优化后端

假设状态量(位姿x和观测点y)和噪声项服从高斯分布,问题转变为当存在一些运动数据和观测数据时,如果去估计状态量的高斯分布,包括均值(对变量最优值的估计)和协方差矩阵(估计的不确定性)

如果假设k时刻的状态只与k-1时刻的状态有关,则得到EKF模型;

若考虑k时刻状态与之前所有时刻状态的关系,得到非线性优化模型;

 

第13讲:单目建图

1、若是建立稀疏地图,可以进行特征匹配,位姿估计出R,t,在得到R,t,有一对匹配像素点的基础上,三角化得到深度;

2、若是建立稠密地图,无法每个像素都当作特征点计算描述子;因此匹配成为重要一环,这里用到极线搜索和块匹配知识确定匹配点,对进行三角化得到深度;不同的是,要很多次三角化让深度估计收敛,用到深度滤波器的知识

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值