【视觉里程计】对极几何,三角测量,PnP,ICP原理 |
您所在的位置:网站首页 › icp的缺点 › 【视觉里程计】对极几何,三角测量,PnP,ICP原理 |
转载自:https://blog.csdn.net/WaitingfoDreams/article/details/101101950 【视觉里程计】对极几何,三角测量,PnP,ICP原理舟84 2019-09-22 15:23:42 1438 收藏 12 分类专栏: SLAM 文章标签: 视觉SLAM 视觉里程计 ICP PnP 版权 老早就想写些东西,但是介于个人懒惰,一直没开这个头,前几天才发现自己以前学的东西很容易忘记,于是决定还是将学习做个总结,以便后续回头查看,温故而知新嘛。此文章为对相关知识的一些个人理解,若理解有误,欢迎各位评论留言,一起讨论。若此文章能帮助到你,那真是一举两得了。参考高翔老师的著作《视觉SLAM十四讲:从理论到实践》。 视觉里程计就是一个通过分析处理相关图像序列来确定机器人的位置和姿态,也可以顺带将3D点保存下来构建3D点云图,即完成了SLAM的定位与建图。 本文将从单目、双目与RGB-D相机三个方面分别从原理出发构建视觉里程计,从中探索对极几何,三角测量,PnP以及ICP的相关原理与应用。为了简化构建视觉里程计过程,均默认特征匹配已完成。 单目视觉里程计单目视觉里程计即使用单目相机来构建视觉里程计,单目SLAM首先需要初始化,先计算出相机运动和特征点的3D位置后续便可以通过3D-2D求解方式计算相机运动了。那么如何通过一帧帧图像序列分析出机器人位置并且顺带将地图给构建出来呢,接下来就一步步探索吧。 对极几何对极几何(Epipolar geometry)又叫对极约束,根据图像二维平面信息来估计单目相机帧间运动的相对位姿关系。我们将单目相机放置在机器人上,此时计算相机位姿便是得到了机器人位姿。我们通过平移机器人可以得到相邻时刻的两帧图像,如下所示,若特征匹配已完成我们能得到两组点集pi和p’i,p1为点集pi中一点,p2为点集p’i中一点,两点均对应空间中的一点P(坐标未知), 三角测量(Triangulation)可以根据前后两帧图像中匹配到的特征点像素坐标以及两帧之间的相机运动R、t ,计算特征点三维空间坐标。 将双目与RGB-D放在一起是因为两者皆可以通过直接或间接的获取深度信息,省略了单目SLAM初始化的过程。双目相机可以通过相机焦距f和左右相机基线b来计算求得深度信息,而RGB-D相机则可以通过深度相机直接获取深度信息。然后通过相机内参可以计算出特征点对应的3D点在此相机坐标系下的三维坐标。此时单目、双目和RGB-D视觉里程计都拥有了2D和3D点信息,接下来便可以继续通过PnP求解相机位姿了。 PnPPnP(Perspective-n-Point)可根据某一帧图像中特征点的二维像素坐标及其对应的三维空间坐标,来计算对应的点在相机坐标系下的坐标,便可得到相机相对三维空间坐标系的坐标变换即姿态。若此时这个三维空间坐标为此帧图像的上一帧图像的相机坐标,则可以得到两帧图像之间的变换关系。即利用已知三维结构与图像的对应关系求解相机与参考坐标系的相对关系(相机的外参)。 PnP是一类问题,针对不同的情况有不同的解法,常见的算法有:P3P、DLS、EPnP、UPnP等。 如果两张图像中,其中一张特征点的 3D 位置已知,那么最少只需三个点对(需要至少一个额外点验证结果)就可以估计相机运动,取三个特征点求解PnP问题便是P3P。 ICP(Iterative Closest Point)可根据前后两帧图像中匹配好的特征点在相机坐标系下的三维坐标,求解相机帧间运动。也就是通过两帧图像特征匹配后对应的3D点分别在两帧图像相机坐标系下的坐标,来计算相机相对的位姿变换。 1、单目视觉里程计首先初始化,选定第一帧和第二帧图像先根据对极几何求解相机帧间运动得到R1和t1,然后根据三角测量求得一组特征点的3D坐标,我们选定第一帧图像的相机坐标作为世界坐标系,后续所有坐标变换均以此坐标系作为参考系。 将第三帧图像与第二帧图像进行特征匹配,筛选初始化过程中已经得到的部分3D点坐标,此时第二帧图像的3D-第三帧图像的2D构成了PnP的3D-2D的求解问题,可以求得第三帧图像相对于第二帧图像的相机位姿R2和t2以及第三帧匹配点的3D坐标,以便后续使用。通过第三帧相对第二帧的相对位姿T2和第二帧相对第一帧(世界坐标系)的相对位姿T1,既可以求得第三帧相机相对于世界坐标系的位姿,后续所有计算均同理进行,便可跟踪相机的实时位姿了。 2、而双目和RGB-D视觉里程计则少了初始化部分,可以直接获得3D和2D信息,同样将第一帧图像的相机坐标系设为世界坐标系,通过特征匹配得到下一帧的2D点与当前帧的3D点进行PnP求解相机帧间运动和下一帧匹配点的3D坐标,后续依次计算即可得到相机实时位姿。 或者直接使用ICP通过3D-3D点对更简单的求解相机位姿。由于一个像素的深度数据可能测量不到,所以我们可以混合着使用 PnP和 ICP 优化:对于深度已知的特征点,用建模它们的 3D-3D 误差;对于深度未知的特征点,则建模 3D-2D 的重投影误差。于是,可以将所有的误差放在同一个问题中考虑,使得求解更加方便。 3、至此,便是视觉SLAM前端中视觉里程计的构建过程,其中特征匹配、相机内参和传感器误差过程都无法避免的会产生相应的噪声,后续便是对相应误差的非线性优化以及对于累积误差的回环检测了。路还很长,慢慢学习!!! 参考文献 https://blog.csdn.net/lixujie666/article/details/82262513 《视觉slam十四讲》 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |