基于双目视觉立体匹配的三维地图构建方法

电子说

1.3w人已加入

描述

摘要:针对基于双目深度图的室外大规模地图构建计算冗长,而在无人系统的有限算力下,计算效率需求显著的情况,文中提出一种基于双目视觉立体匹配的三维地图构建方法。首先针对由立体匹配算法及原图引入的噪声误差等问题,采用双线性插值优化视差图;其次通过中值滤波以平滑视差图;最后利用Sobel算子实现对环境物体边缘特征点的提取,并二值化边缘特征图,优化深度值计算环节,在一定程度上提高地图构建的效率。实验结果表明,通过对KITTI数据集的地图构建,可得到的良好八叉树地图,效率提高了50%,证明了文中算法的可行性与有效性,能够满足无人系统在室外路径探索对三维地图的需求。

0 引 言

随着无人系统对地图环境的亟需,定位与即时建图(SLAM)[1]的研究越来越成为的热点,并被认为是实现移动机器人自主化的核心技术,有关SLAM技术的应用也逐渐从室内小规模环境向室外大规模环境发展。相比之下,室外大规模环境由于所需传感器作用距离远,环境非结构特征显著,因此更加复杂,实时构建的难度更大,硬件成本更高。为实现无人系统在室外大规模场下的路径探索并能及时反馈周围环境信息,构建出高效、低成本、可视化的室外地图成为了亟待解决的关键。近年来,随着计算机视觉技术及相关硬件工艺的发展,出现了许多经典的SLAM方法[2]并被应用于各个领域[3],尤其在复杂的室外环境下构建三维地图的精度和实时性方面。以往有基于视觉稠密点云的 SLAM方法,但存在计算冗长、精度不高的问题。现如今出现不同类型传感器用于三维建图,如激光雷达、RGB⁃D相机[4]等。其中,基于激光雷达的室外建图方法[5⁃6]得到的室外地图精度较高,更为接近真实环境,但该方法重建的效果缺乏纹理,仅能反映三维空间信息,且成本较高;基于RGB⁃D相机的方法重建的纹理较为清晰,但由于传感器一般有效距离较短、成本较高、干扰性差,因此不适用于室外复杂的大规模建图。相比之下,基于双目视觉立体匹配的SLAM方法可通过模拟人类双眼,利用立体视觉原理从二维图像中获取三维信息,适应复杂室外环境,具有进行自动、在线、非接触性检测,灵活性高、成本低、纹理清晰等优点,可用于构建室外大规模环境三维地图。

基于双目视觉SLAM的方法虽然优点很多,但应用于室外大规模建图仍然存在计算冗长、实时性不高、复杂场景信息导致的深度值误匹配等问题。针对基于双目视觉地图构建的不足和缺点,本文在原有的立体匹配算法的基础上进行优化和改进,首先对原图像进行灰度预处理并立体校正,基于传统匹配算法得到视差图,通过采用左右一致性检测出(Left⁃Right Check)奇异失真点;其次利用双线性插值和中值滤波进行修复优化;接着提出一种基于环境物体边缘特征点提取的方法;最后结合位姿信息,构建出一种基于边缘信息的八叉树地图,该方法可优化地图构建中深度计算环节,提高系统的运行速度、抗干扰性以及八叉树地图的准确度。

1 双目立体视觉三维建图系统

本文系统是根据左右二维图像及相机位姿信息来获取世界三维空间信息并构建八叉树地图,具体思路如图1所示。

双目视觉

1.1 左右图像校准

实际情况下, 双目相机得到的原始图像往往都会出现畸变, 获取的双目图像对的共轭极线并不在同一水平上, 通过加入极线约束条件[7], 使得左右图像的对极线在同一水平线上,再经过一定变换校准[8],校正相机引入的误差。因此,根据相机标定得到的相机内参矩阵、畸变参数以及相机外参(旋转矩阵和平移向量)对左右图像进行校准。具体步骤为:首先对原彩色图像进行灰度处理,得到单通道的灰色图像;然后根据相机标定参数并调用基于OpenCV[9]的stereoRectify[10]立体校准函数得到校正后的旋转矩阵和投影矩阵;接着调用initUndistortRectifyMap[10]映射变换计算函数得到X,Y 方向上映射变换矩阵;最后调用 remap[10]几何变换函数得到校准后的左右图像。

1.2 立体匹配算法

本文采用的立体匹配方法[11]是基于SGBM立体匹配方法,以校准后图像对作为立体匹配原图输入,得到相对应的视差图,并获取正确的环境深度信息。1)立体匹配原理。立体匹配是根据左右图像重叠区域所提取的特征点来建立左右图像之间的一种对应关系,从而找到三维物理空间点位置,并根据在左右图像所对应的二维成像点,最终得到物理空间点对应的二维视差图。

2)基于SGBM的视差计算方法。半全局立体匹配算法SGBM主要源于SGM(Semi⁃Global Matching)算法,该算法是2005年提出的一种立体匹配算法,现已纳入OpenCV库函数中。SGM算法是通过计算像素匹配点的成本,合计来自8个或者16 个方向的匹配代价,根据相邻点计算视差,得到的视差图更真实。算法核心步骤为:匹配代价合计,代价成本聚合,视差计算、优化及校正。SGM算法核心思想是基于能量函数估计视差值,采用的能量函数如下:

双目视觉

式中:E (D)是半全局能量函数;p为匹配目标像素点;q是点p的邻域像素点;C(p,Dp)是像素点p与匹配点视差Dp的匹配代价函数;Dp为目标像素点对应的视差值;Dq是邻域点对应的视差值;P1是对相邻像素点视差等于1的惩罚因子;P2是对相邻像素点视差大于1的惩罚因子,且P2大于P1。

相比SGM算法, SGBM算法是半全局块匹配算法,在计算匹配代价函数时,采用块匹配算 法(SAD)。SGBM算法没有采用基于互熵信息的匹配代价的方法,而是增加了预处理算法,其中SAD窗口的大小决定了视差图的匹配效率和误匹配的大小。

3)视差图后处理。立体匹配过程中,由于多种因素导致获取的原图像对存在不同的遮挡区域和纹理平滑区域,半全局算法无法得到准确的视差,从而会造成部分视差失真。为了消除失真点,本文通过采用左右一致性检测出左视差图存在的失真点,并利用双线性插值和中值滤波对失真点进行修复优化,最后调用copyMakeBorder函数[10]进行边界处理, 得到优化后的左视差图, 以及 Middlebury提供的Teddy实验数据,结果如图2所示。

双目视觉

2 基于边缘特征点的深度计算

基于双目图像立体匹配得到深度信息,若该过程中计算了视差图所有的像素点的深度信息,将会导致计算冗长,而视差图中像素点包含有特征点和非特征点视差值,因此通过边缘提取并计算得到边缘特征点的深度信息,减少了视差中非特征像素点参与的深度计算,从而降低了系统的整体计算冗长。最终根据相机位姿和特征点深度信息,构建出环境物体边缘特征点的八叉树地图,可提升地图构建系统的速度,降低地图构建系统的运行内存强度,从而提高地图构建的实时性。首先基于特征点的提取,本文采用双边滤波的方式平滑图像,既可降噪平滑又能极大地保持边缘信息;接着利用Sobel边缘算子[12]提取边缘信息,该算子相比Canny算子[13]效率更高,既能较好地消除噪声干扰,又可得到较为精准的边缘方向信息;最后利用一种自适应二值化处理得到基于边缘特征点的二值图,并根据边缘特征点得到对应特征点的深度信息。

2.1 双边滤波平滑图像

双边滤波器[14]是一种非线性滤波,与高斯平滑效果相似,可达到降噪平滑的效果,但相比高斯滤波[15]又可以很好地保持边缘信息。其中,双边滤波对每个像素及其域内的像素进行了加权平均处理。其权重由两部分组成,一部分是高斯平滑;另一部分是高斯权重,二者的不同在于高斯不是基于空间距离而是由色彩强度差计算得来,在多通道图像上强度差由各分量的加权累加代替。原理上,双边滤波可当作是高斯滤波与截尾均值滤波的结合,权重原理为与空间相关的高斯函数和与灰度距离相关的高斯函数相乘,滤波核由空间域核和值域核组成。空间域核是由像素位置欧氏距离决定的模板权值,表示为:

双目视觉

值域核是由像素值的差值决定的模板权值,表示为:

双目视觉

由式(2)和式(3)可推导出双边滤波的权重系数w,公式如下:

双目视觉

式中:(i, j)为模板窗口当前点坐标;(k,l)为模板窗口的中心坐标点;σd为空间域的标准差;σr 为值域的标准差。一定情况下,双边滤波可当作高斯平滑,只是相似程度更高的像素权值更高,边缘更明显,对比度更高,效果如图3所示。

双目视觉

2.2 Sobel边缘算子

Sobel算子[16]是一种离散性差分算子,采用Sobel算子分别计算图像在横向和纵向差分近似值, 分别记作Fx,Fy。

Sobel算子在横向上的卷积因子记作X方向,X方向上的卷积因子如下:

双目视觉

Sobel算子在纵向上的卷积因子记作Y方向,Y方向上的卷积因子如下:

双目视觉

上述X,Y方向上的Sobel算子,可分别与双边滤波后的图像像素点卷积得到近似值,定义如下:

双目视觉

式中:f(i, j)是图像坐标为(i,j)的灰度值;图像近似灰度梯度幅值表示为F(i,j)=|Fx|+|Fy|。选取适当的阈值T, 若F(i, j)>T,则(i, j)记为边缘点,并计算所有的像素点与T比较,得到的边缘点集合为边缘提取的图像, 结果见图4。

双目视觉

2.3 二值化

图像二值化是数字图像处理的一个重要内容,将图像处理成像素值为0或255,使图像呈现出明显黑白的可视效果。然后设定合适的阈值,当图像某点像素值大于设定的阈值,则该点的像素值替换成255或0;反之, 该点的像素值替换成0或255。在一定程度上,图像二值化可呈现出部分特征并降低图像运算。本文采用均值加权自适应二值化,相比固定阈值的二值化,自适应二值化采用基于均值加权算法得到的阈值,由此得到边缘二值图更准确,效果更好,之后调用copyMakeBorder函数进行边界处理,最终得到与处理后视差图相同尺寸的二值图,结果如图5所示。

双目视觉

2.4 深度值计算

深度值计算[17]是根据双目测距模型[18]和视差图获得空间三维点的过程,其过程主要分为两部分:提取边缘特征点和深度值计算。由于室外环境复杂、规模大,采用水平双目模型可行性高,其深度值计算原理如图6、图7所示。

双目视觉

双目视觉

假设三维空间上的一点p(x,y,z),以左相机为参考坐标系,在水平放置的双目相机左右镜头上的投影点分别为L(xl,yl),R(xr,yr),Ol,Or 分别为左右镜头的中心点,f是相机的焦距,B是双目相机的基线,根据透视变换三角相似性原理可知:

双目视觉

在该模型下视差可表示为:

双目视觉

由式(7)、式(8)可推导出点p的空间坐标以及深度值为:

双目视觉

根据上述三维空间点坐标和深度值求解过程, 为满足室外大规模复杂环境的八叉树地图构建的精度和效率, 需要提取环境二维边缘特征点, 并求解出特征点对应的三维空间坐标点, 而特征点的分布与环境信息密切相关, 合理的特征点提取方法既能保持地图的完整性, 又可以降低系统的运行复杂度, 从而保证了系统的实时性和高效性。因此, 本文提出一种基于边缘二值图的特征点提取的方法, 通过查找边缘二值图的特征点坐标,进而得到由视差图对应特征点视差值,并计算出空间坐标与深度值。

2.5 八叉树地图

八叉树[19]是一种用于三维空间细分的分层数据结构,能够快速存储三维环境信息。点云图是由一系列的三维坐标结合位姿信息计算得到世界空间点集,且点云地图规模较大,需耗费大量存储空间,难以保持地图高效。因此,相比于点云地图,在室外大规模复杂环境下,采用八叉树构建地图可节省大量储存空间并提高建图的效率。

3 实验结果与分析

通过两个算例对本文提出的基于特征点地图构建的方法进行分析,本文采用的数据集是目前国际上最大的室外自动驾驶场景下的计算机视觉算法评测数据集——KITTI 数据集,数据集图像尺寸大小为1241×376。实验操作系统是Ubuntu 16.04系统,计算机硬件配置参数为:Intel Core i5⁃3230M处理器、GT720M显卡、4GB内存,其实验全部在相同参数下进行的。3.1 算例 1

本算例采用KITTI数据集中30组双目采集的图像对通过本文算法构建的八叉树地图与对应环境深度图构建的八叉树地图进行对比,实验结果如图8~图10所示。

双目视觉

根据实验结果可知,在室外大规模复杂环境下,本文算法构建的八叉树地图相比采用 RGB⁃D 相机获取的深度图结合位姿信息构建出的八叉树地图,环境纹理更加清晰,有效距离更远,构建的地图更完整。

3.2 算例 2

本算例采用KITTI数据集中30组双目采集的原始图像,对通过本文算法构建的八叉树地图与基于原视差图构建的八叉树地图进行对比,实验算例分别记作Example1和 Example2。实验结果如图11~图13及表1所示,其中表1的时间取10次实验的平均值。

双目视觉

由图11~图13可知,在室外大规模复杂环境下,图12、图13构建的八叉树与图11的原环境场景图进行场景对比,图11构建的地图最上边出现了较为明显的矩形模块八叉树地图误差,可知本文算法构建的八叉树地图相比未经过特征点提取构建的八叉树地图更准确。由表1可知,在消耗的时间上,实验编号为Example1和Example2所消耗的时间分别占 Example1与Example2之和的总时间的33.94% 和66.06%,可知本文算法构建的八叉树地图所消耗的时间大约只有未经过特征点提取构建的八叉树地图所消耗的时间的12,地图构建的效率提高了将近 50%。因此,本文算法构建出的八叉树地图精度更高,并在一定程度上提高了构建的效率。

4 结 语

本文提出一种基于SGBM算法的双目视觉的八叉树地图构建的方法,首先针对立体匹配算法局限性及原图引入的噪声误差等问题,利用双线性插值和中值滤波修复优化;其次通过 Sobel算子边缘检测并二值化,实现对环境的边缘特征点的提取,优化了深度值计算环节,在保证地图构建完整性的情况下,提高了建图效率。实验结果表明,本文提出的算法在一定程度上提高了地图构建的效率和鲁棒性,适合室外大规模地图构建,未来将对地图构建实时性开展进一步研究。

作者简介:

周思达(1984—),男,湖南湘潭人,博士研究生,教授,主要研究方向为无人系统导航与控制。

谈海浪(1993—),男,湖北黄石人,硕士研究生,主要研究方向为计算机视觉。

唐嘉宁(1984—),女,云南石屏人,博士研究生,研究员,主要研究方向为协同制导与控制。

蒋聪成(1995—),男,河南开封人,硕士研究生,主要研究方向为计算机视觉。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分