鱼眼摄像头SLAM
鱼眼摄像头SLAM
在机器人技术、摄影测量学和计算机视觉等领域,鲁棒相机位姿估计是许多视觉应用的核心。近年来,在复杂、大规模的室内外环境中,人们越来越关注相机位姿估计方法的实时性、通用性和可操作性。其中,相机的视场角起着重要的作用,特别是在具有挑战性的室内场景中,往往是通过鱼眼镜头或相机镜头组合来增加视场角。除了使用鱼眼相机增加视野外,还可以将多个相机进行刚性耦合,形成一个多相机系统,从而有效地利用冗余观测信息来保证位姿估计的鲁棒性和观测目标特征的长可见性。因此,搭载多鱼眼相机系统的自主定位与建图(Simultaneous Localization and Mapping,SLAM)可以捕获更丰富的环境特征信息,从而获得更鲁棒的位姿跟踪效果。

图1. 鱼眼摄像头SLAM示例
一种基于特征的同时定位和构图(SLAM)系统,用于从宽基线移动测图系统(MMS)的多鱼眼相机装置中获得的全景图像序列。
首先,鱼眼摄像机标定方法结合了等距投影模型和三角多项式,以实现从鱼眼摄像机到等效理想相机模型的高精度标定,从而保证了从鱼眼图像到相应全景图像的准确转换。
其次,我们开发了全景相机模型、具有特定反向传播误差函数的相应束调整以及线性姿态初始化算法。
第三,实现由初始化,特征匹配,帧跟踪和闭合环方面的几种特定策略和算法组成的基于特征的SLAM,以克服跟踪宽基线全景图像序列的困难。我们对超过15公里轨迹和14,000张全景图像的大型MMS数据集以及小型公共视频数据集进行了实验。我们的结果表明,本文的全景SLAM系统PAN-SLAM可以在包括挑战性场景(例如黑暗隧道)在内的小规模室内和大型室外环境中实现全自动相机定位和稀疏地图重建,而无需任何其他传感器辅助。测量的绝对轨迹误差(ATE)精度接近0.1 m的高精度GNSS / INS。PAN-SLAM在各种环境下也具有无与伦比的鲁棒性,胜过几种基于特征的鱼眼镜头单目SLAM系统。该系统可被认为是一种理想的补充解决方案,替代昂贵的商用导航系统,尤其是在信号阻塞和多路径干扰普遍存在的城市环境中。
主要贡献
1. 基于多镜头组合式全景相机开发了精确的特征匹配和跟踪,闭环检测以及光束法调整的可靠姿态初值估计,这些技术在复杂的室外环境中具有高稳定性能;
2. 提出了一种新的鱼眼镜头校准方法,该方法可实现亚像素精度,并确保平滑跟踪和光束法调整的高精度;
3.在大范围多基线全景图像序列数据集和从多鱼眼相机组合装置捕获的开源小范围视频数据集上,PAN-SLAM系统的鲁棒性均优于当下其他几种方法。PAN-SLAM是唯一能够跟踪所有图像序列的系统。
4.实验证明,PAN-SLAM的定位精度为0.1 m,与昂贵的商用GNSS / INS跟踪系统的定位精度一样高,并且在信号阻塞情况下也更加可靠。它可以是当前商用GNSS / INS导航系统的强大补充和替代解决方案。
算法流程
1. 全景相机的成像、检校与优化模型
1.1 全景相机的成像

图2,(a)全景相机模型;(b)两个相邻鱼眼相机边缘影像上的投影不确定性。
多镜头组合式全景相机由一系列独立、固定的鱼眼镜头组成,多个镜头独立成像,再拼接为全景图。每个镜头具有各自的投影中心C,在实际制造过程中难以保证与球心S完全重合。物理上三点共线是C,Uc,P'。所以为了实现统一的全景坐标系,需要将实际像素坐标Uc投影到某个指定半径的球面上得到U。为了避免不共心导致的定位误差,通过事先标定单个相机中心在一个全景相机坐标系下的旋转Ri和位置Ti,得到表述共线条件方程的光束仍然是CUcP'。

首先将每个鱼眼影像上的像点转换到半径为r的球面上,然后计算球面点的极坐标,最后根据给定的全景图像宽高计算二维平面坐标。对于全景图像难免存在融合误差,如图1(b)所示,不过在连接点提取过程中排除该误差,不会影响鱼眼相机到全景相机之间的刚体几何转换。
1.2 鱼眼相机标定
为使得核线误差降低到1像素以下,本文对该模型加以改进,提出一种更为精确的鱼眼相机检校方法,显式地加入了鱼眼相机的成像过程。

1.3 光束法平差
类似ORB-SLAM优化方法,不过改进g2o库使其适用于全景成像模型,给出重投影误差函数式的解析导数形式,即误差函数对于位姿即地图点的雅可比矩阵。

图3,三角形节点代表位姿,圆形节点代表地图点,边代表误差项(a)位姿优化;(b)局部光束法平差;(c) 本质图优化;(d)全局光束法平差
本文实现的优化算法包含4类:图3(a),单帧位姿优化(仅根据匹配的地图点计算当前帧的精确位姿);图3(b),局部地图优化和平差(根据局部共视关键帧优化位姿与局部地图点);图3(c),本质图优化(用于检测闭环后,对全局关键帧的位姿进行调整);图3(d),全局光束法平差(优化所有位姿和地图点)。鱼眼图像上不同位置投射到球面上的变形不同,因此不同的点采用不同的误差阈值。
2.全景SLAM流程
系统分为3个线程并行工作,分别为跟踪,局部地图构建与闭环。所有步骤都经过调整,可以在复杂的室外环境中对宽基线全景图像序列进行准确稳健的跟踪和定位。

图4,全景SLAM流程
2.1 初始化
初始化本文将 ORB特征用于PAN-SLAM 系统的特征提取.鱼眼相机变形较大,匹配难度高,误匹配数量大.因此采用三帧而非两帧进行初始化.
2.2 地图点跟踪

图5,地图点跟踪算法流程
2.3 关键帧选择
本文的全景影像框幅高达8000×4000像素,由于车辆高速行驶,存在内存读写的限制,因此采用较大的采样间隔(1~3m ).

2.4 局部地图构建
根据全景相机的特殊情形,本文设定共视关键帧必须同时满足: ①与当前关键帧的共视点数≥50个;②与当前关键帧在图像序列中的间隔关键帧不超过40个;③其与当前关键帧的共视点在两帧所在金字塔层数差异>2的特征点数不超过总共视点数85%。
2.5 闭环检测
我们使用类似于ORB-SLAM的循环检测过程,但针对从不同方向捕获的全景图像引入了特殊的匹配策略。在实践中,即使对于针孔相机,基于BoW的方法也无法很好地识别横向或反向闭环。使用全景相机时,情况变得更糟。我们在这里采用了一种简单的对齐策略,即将当前球面图像展开为搜索到的先前帧的方向的2D图像。附带说明的是,此过程相对较慢;因此,如果检测到足够的循环,则可以跳过此步骤。

图6,(a)鱼眼模式;(b)全景模式,可以很好地跟踪到足够且均匀分布的特征。
鱼眼摄像头SLAM的更多相关文章
- 从零开始一起学习SLAM | SLAM有什么用?
SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非 ...
- AR中的SLAM(一)
写在前面 本系列打算讲讲个人对AR行业和AR中的SLAM算法的一点浅显的看法.才疏学浅,文中必然有很多疏漏和不足,还望能和大家多多讨论.今天先讲讲我对AR的一些认识. AR的一点理解 AR是什么 AR ...
- SLAM技术在国内的发展现状
近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人.无人机.AVG等领域相继出现它的身影,今天就来跟大家聊一聊国内SLAM的发展现状. SLAM的多领域应用 SLAM应用领域广泛,按其 ...
- 激光SLAM Vs 视觉SLAM
博客转载自:https://www.leiphone.com/news/201707/ETupJVkOYdNkuLpz.html 雷锋网(公众号:雷锋网)按:本文作者SLAMTEC(思岚科技公号sla ...
- 激光SLAM与视觉SLAM的特点
激光SLAM与视觉SLAM的特点 目前,SLAM技术被广泛运用于机器人.无人机.无人驾驶.AR.VR等领域,依靠传感器可实现机器的自主定位.建图.路径规划等功能.由于传感器不同,SLAM的实现方式也有 ...
- SLAM领域牛人、牛实验室、牛研究成果梳理
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文阅读时间约5分钟 对于小白来说,初入一个领域时最应该了解的当然是这个领域的研究现状啦.只有知道这个领域大家现在正在 ...
- opencv获取IP摄像头(IP-camera)实时视频流
之前这篇文章讲了如何通过网络摄像头(web camera)获取实时视频流,但是这种方法的缺陷就是摄像头和主机必须连在一起,那这种在室外部署的时候就会非常麻烦并且不安全,所以后来找了下用海康威视或者大华 ...
- adas--智能驾驶辅助系统
先进驾驶辅助系统(Advanced Driver AssistantSystem),简称ADAS,是利用安装于车上的各式各样的传感器(可侦测光.热.压力等变数), 在第一时间收集车内外的环境数据, 进 ...
- Zynq UltraScale+ MPSoC 多媒体应用
消费者渴望更高的视频质量,推动了视频技术的发展.MPSoC 基于 Zynq-7000SoC ,包括一个可编程逻辑 (PL) 的桥接处理系统 (PS),但它在 Zynq UltraScale+ MPSo ...
随机推荐
- 2.1.1- css产生的原因
CSS的发展历程 从HTML被发明开始,样式就以各种形式存在.不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制.最初的HTML只包含很少的显示属性.随着HTML的成长,为了满足页面设计者的要 ...
- 11- client测试
client是客户端,软件分为客户端与服务端,客户端就是我们使用的软件,比如浏览器,QQ,抖音等.服务端就是客户端使用操作,服务端给你响应的请求.
- win10 添加全局快捷键
前言 好久没写博客了,今天水一下 如何在win10 下添加一个全局唤醒的快捷键(打开截图软件) 步骤 win + Q 输入 管理工具 添加快捷方式 这里没有管理员权限,可以直接把创建好的 快捷方式 粘 ...
- Android的so注入( inject)和函数Hook(基于got表) - 支持arm和x86
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53942648 前面深入学习了古河的Libinject注入Android进程,下面来 ...
- POJ3189二分最大流(枚举下界,二分宽度,最大流判断可行性)
题意: 有n头猪,m个猪圈,每个猪圈都有一定的容量(就是最多能装多少只猪),然后每只猪对每个猪圈的喜好度不同(就是所有猪圈在每个猪心中都有一个排名),然后要求所有的猪都进猪圈,但是要求所有 ...
- UVA11997求前k个和,多路归并问题
题意: 给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和. 思路: 多路归并问题,先说下多路 ...
- 9.PHP文件处理
PHP文件系统 (当成是扩展C++来看就行了,几乎一样): 读取整个文件readfile() .file(). file_get_contents() <?php readfile('fi ...
- 【python】Leetcode每日一题-不同的子序列
[python]Leetcode每日一题-不同的子序列 [题目描述] 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数. 字符串的一个 子序列 是指,通过删除一些(也可以 ...
- Day009 二维数组
多维数组 多维数组是数组的嵌套(数组的元素是数组,数组的数组元素的元素是数组...),比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组. 二维数组 int a[][]=new int ...
- 初探MFC
MFC MFC(Microsoft Foundation Classes) 是微软基础类库,也就是用c++类将win32API封装起来. 应用程序对象 MFC程序都是以应用程序对象为核心,且程序中只有 ...