工作一年来接触与学习SLAM技术已经有一段时间了。之前一直从事摄影测量与地图相关的学习,在无人驾驶火爆的当下,无人驾驶的一些核心技术例如高精度地图,例如感知定位等都与SLAM紧密相关,而这也给了我这个地图,测绘,摄影测量者一个学习探索SLAM的一个契机。关于摄影测量与计算机视觉之间的差异性,准确来说应该是近景摄影测量与计算机视觉,我想每一个做过摄影测量的人且接触计算机视觉都会有不同的体会。我这里仅仅说一下自己近来直观的感受:
1,摄影测量坐标系的建立会更多的与测绘上已经建立好的大地坐标系相联系,而计算机视觉求得的结果更多的是一个相对的位姿,不会刻意的去和大地坐标系相换换。但是在高精度地图构建当中,计算机视觉的计算会与GPS,IMU甚至激光雷达等多源传感器结合,会更多的转换为大地坐标系当中的绝对定位。
2,摄影测量对于相机位置的变换更多的倾向于欧拉角的表示,计算时采用旋转矩阵,对于 欧拉角的旋转位次关系(先绕Y-X-Z,还是先绕Z-X-Y),都总结好一套旋转矩阵, 比较直观,而且对于平移的表达也会单独使用一个平移向量。这样,在摄影测量的计算过程中,每一步表达式都清晰明了。而计算机视觉当中对于相机位姿的表示更多的会采用四元数而在SLAM当中则是李代数。这是因为摄影测量当中相机旋转移动幅度相对不大,而计算机视觉当中会考虑到相机360°旋转的奇异性。且相机的旋转平移会放到一个齐次矩阵里去计算。
关于二者更高层次与理论上的相似与联系,有一本书值得推荐,Wolfgang Forstner的《 Photogrammetric Computer Vision》。
而SLAM技术则是以计算机视觉的为基础,用优化的方法来进行局部和全局优化,将相机移动过程中各个位置上拍摄到的图像从2D转换成一个完整3D场景,同时相机轨迹可以构成场景当中的可通过路径的技术流程。在SLAM发展过程中,也分为几个发展路线:
1.用传统特