深度网络和边缘检测融合的大规模三维单目视觉建图方法研究
2022-05-13唐嘉宁周思达谈海浪
唐嘉宁,郭 川,周思达,谈海浪
(云南民族大学 电气信息工程学院,云南 昆明 650500)
无人系统的广泛应用,使得地图环境的构建变得尤为重要,定位与即时建图(SLAM)的出现不断优化地图环境的构建,SLAM 的研究也趋于白热化。作为实现移动机器人的自主移动核心技术,关于SLAM 技术的应用也不断从室内小规模环境的地图构建逐渐发展为室外大规模环境的地图构建。相比之下,室外大规模环境由于所需传感器结构复杂、作用距离远、环境非结构特征显著等问题,对于建图而言更加复杂,实时构建的难度更大,硬件质量和成本更高。其中,为实现无人系统在室外大规模场景下的路径探索并能及时反馈周围环境信息,构建出便捷、高效、低成本、可视化的室外地图成为了亟待解决的关键。
近年来,随着计算机视觉技术及相关硬件工艺的发展,许多经典的SLAM 方法被应用于各个领域,尤其是在复杂的室外环境下构建三维地图的精度和实时性方面。相比以往,有基于视觉稠密点云的SLAM 方法,但存在计算冗长、精度不高的问题。现如今出现不同类型传感器用于三维建图的方法,如激光雷达、双目相机等。其中,基于激光雷达的室外建图的方法得到的室外地图精度较高,更为接近真实环境,但此方法重建的效果缺乏纹理,仅能反映三维空间信息,成本较高;另外,基于双目相机的方法重建的深度信息明显、误差小,但由于传感器一般有效距离较短,成本较高,因此不适用于室外复杂的大规模建图。相比之下,基于深度神经网络和边缘检测的SLAM 方法通过单目视觉,利用深度神经网络从二维图像中获取三维信息,结合图像的边缘特征进行建图,能适应复杂室外环境,可进行自动、在线、非接触性检测,具有灵活性高、设备便捷、成本低、纹理清晰等优点,可用于大规模三维单目视觉建图。
基于单目视觉的SLAM 方法虽然优点很多,但是应用于室外大规模建图中仍然存在计算冗长、实时性不高、复杂场景信息连续运动导致的深度值缺乏一致性约束、位姿信息难以获取等问题。因此,针对单目视觉SLAM 的缺点和不足,本文提出一种深度网络和边缘检测融合的大规模三维单目视觉建图方法,以提高便捷性、计算效率和复杂场景的信息提取。首先通过预训练网络对原图进行深度值和位姿预测,同时将原图进行高斯滤波平滑处理;再进行边缘特征提取并二值化,结合特征点预测的深度值和位姿信息构建八叉树地图。该方法可优化地图构建中设备的局限性、深度值和位姿的计算以及三维地图的构建环节,提高系统的运行速度、实时性、抗干扰性以及八叉树地图的构建效率。
1 深度网络和边缘检测的单目三维建图系统
本文方法是根据单目视觉二维图像获取视觉三维空间信息并构建八叉树地图,系统思路如图1 所示。
图1 系统思路图
1.1 深度神经网络获取深度值和位姿
二维图像的深度值和位姿通常可以利用双目视觉方法来得到,随着深度学习的发展,Eigen 等证明了能够使用CNN 对单张图像进行深度值估计。因此对于单目视觉可通过深度神经网络来进行深度值获取,例如Monodepth2 等。但是对于实时性建图,需要从视频流中不断获取数据作为输入,因此许多神经网络方法缺乏一致性约束,长序列下的深度值估算结果可能会出现尺度不一致的问题,导致得到的深度值误差较大。对于位姿的获取,常见的是通过双目视觉或立体匹配来获取位姿,如高智伟等提出的双目视觉方法和阳兰提出的立体匹配算法,通过单目视觉获取位姿相对困难。因此引用Bian J W 等提出的一种单目视觉深度值和位姿估计的无监督学习方法SC⁃SfMLearner。整个方法主要分为两个部分,分别是单视图深度值估计和多视图位姿估计。
最终几何一致性约束损失函数即为全体验证点差值结果的均值。该几何一致性约束最终被加入到构建的损失函数中:
式中:L和即为常用的光学损失和光滑度损失函数。
在训练的时候,一致性能够传递给整个视频序列,由于自运动深度估计的紧密连接,自运动网络最终预测出全局尺度一致的轨迹。深度值预测图如图2 所示。
图2 深度图
1.2 基于边缘检测的深度值计算
基于神经网络SC⁃SfMLearner 方法得到深度图和位姿信息过程中,通过预训练的模型,直接以单目原图作为输入,准确快速地获取深度值信息和位姿信息。最终根据特征点深度值,构建出环境物体边缘特征点的八叉树地图,可提升地图构建效率,降低地图构建系统的运行内存,从而提高地图构建的实时性。首先,基于特征提取,本文采用高斯滤波的方式平滑图像,平滑图像避免被不需要的高频信息所干扰,同时还保留了大部分所需要的信息;然后,利用Canny 边缘算子提取边缘特征信息,相比Sobel 算子能够尽可能多地标识出图像中的实际边缘,得到较为精准的边缘方向信息;最后,利用自适应高斯加权二值化处理得到基于边缘特征点的二值图,并根据边缘特征点得到对应深度信息。
1.2.1 高斯滤波平滑图像
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。将图像用函数(,) 表示,二维高斯函数定义如下:
图4 高斯滤波后的图像
1.2.2 Canny 边缘算子
Canny 是一种多步的边缘检测算法,可以同时检测出噪声抑制的边缘。对式(3)中的求导可得到方向上的梯度:
对式(3)中的求导可得到方向上的梯度:
将∂∂与函数(,)进行卷积,得到输出为:
将∂∂与函数(,)进行卷积,得到输出为:
则图像点(,)处的法向量(,)为:
点(,) 的边缘强度(,) 为:
根据John Canny 在文中的定义,图像(,)与图像中心的边缘点算子G的卷积在图像边缘处的梯度方向上为最大值。由此可知,在每个点的梯度方向上判断这个点的强度是否为该邻域内的最大值来确定该点是否为边缘点。并当图像的一个像素点满足沿着梯度方向的两个相邻的像素点的边缘强度小于此点的边缘强度;在该点梯度方向上相邻两点的方向差小于45°,以此点为中心的3×3 邻域中的点的边缘强度极大值小于之前设的某个阈值三个条件,则该点是边缘点。经过边缘检测得到的结果如图5 所示。
图5 边缘检测图
1.2.3 自适应高斯加权二值化
图像二值化是数字图像处理的一个重要内容,将图像像素值处理成一种像素值为0 或者255 的图像,使图像呈现出明显黑白的可视效果。通过设定合适的阈值,当图像某点像素值大于设定的阈值,则该点的像素值替换成255 或0;反之,该点的像素值替换成0 或255。在一定程度上,图像二值化可呈现出部分特征,可降低图像运算。本文采用自适应高斯加权二值化,相比固定阈值的二值化,自适应高斯加权二值化采用基于权重加权算法得到阈值,由此得到的边缘二值图更准确、效果更好,结果如图6 所示。
图6 边缘特征二值图
1.2.4 深度值和位姿计算
深度值计算是根据由深度神经网络得到的深度图获得空间三维点的过程,其过程主要分为进行边缘检测来提取边缘特征点和深度值与位姿计算两部分。为满足室外大规模复杂环境的八叉树地图构建的精度和效率,需要提取环境二维边缘特征点,并根据深度值求解出特征点对应的三维空间坐标点,而特征点的分布与环境信息密切相关,合理的特征点提取方法既能保持地图的完整性,又可以降低系统的运行复杂度,从而保证系统的实时性和高效性。因此,本文提出一种基于边缘二值图的特征提取方法,通过查找边缘二值图的特征点坐标,进而得到由深度图计算出的深度值与位姿。
1.2.5 八叉树地图
八叉树是一种用于三维空间细分的分层数据结构,能够快速存储三维环境信息。而点云图的实质是由一系列的三维坐标结合位姿信息计算得到视觉空间点集,规模较大,需耗费大量存储空间,难以保持地图高效。因此,在室外大规模复杂环境下,采用八叉树构建地图可节省大量储存空间,八叉树具有低冗余优势,可提高建图的效率。
2 实验结果与分析
通过三个算例对本文提出的深度网络和边缘检测融合的大规模三维单目视觉建图方法进行分析,本文采用目前国际上最大的室外自动驾驶场景下的计算机视觉算法评测数据集——KITTI 数据集,数据集图像尺寸大小为1 241×376。实验操作系统是Ubuntu16.04 系统,计算机硬件配置参数:Intel Core i5⁃4210U 处理器、4 GB内存,实验全部在相同参数下进行的。
2.1 算例一
本算例采用KITTI 数据集中30 幅单目图像对,将本文方法构建的八叉树地图与对应立体匹配构建的八叉树地图进行实验对比,实验结果如图7、图8 所示。根据实验结果分析,在室外大规模复杂环境下,本文通过深度神经网络和边缘检测的方法构建的八叉图相比立体匹配构建出的八叉图,前者环境纹理更加清晰,边缘更加明确,有效距离更远,构建的地图更完整。因此,通过本文方法构建八叉树地图现实可行并且环境纹理更加清晰。
图7 基于立体匹配的八叉树地图
2.2 算例二
本算例采用KITTI 数据集中30 幅单目图像对,通过本文方法构建的八叉树地图与基于原视差图构建的八叉树地图进行实验对比,实验算例分别记作实验1 和实验2。实验结果如图8、图9 及表1 所示,其中表1 中的时间取10 次实验的平均值结果。
图8 本文算法构建的八叉图
表1 时间消耗
根据实验结果分析,在室外大规模复杂环境下,图8 和图9 构建的八叉树地图与图3 的原环境场景图进行场景对比,图9 构建的地图最上方有较为明显的矩形模块误差且左边缘特征不明显,可知本文算法构建的八叉图相比未经过特征提取构建的八叉树地图,前者构建的八叉树地图更准确,信息缺失更少。由表1 可知,在建图效率上,实验1 和实验2 所消耗的时间分别占二者总时间的33.94%和66.06%,可知本文加入边缘检测算法构建的八叉树地图所消耗的时间大约只有未经边缘检测构建的八叉树地图所消耗的时间的1 2,地图构建的效率提高了近50%。因此,本文算法构建出的八叉树地图精度更高,并在一定程度上提高了建图效率。
图3 原始图像
图9 未进行边缘检测的 八叉图地图
2.3 算例三
本算例采用KITTI 数据集中30 幅单目图像通过本文方法构建的八叉树地图与KITTI 数据提供的原始图像的位姿构建的八叉树地图进行实验对比,实验结果如图10 所示。
图10 原始位姿的八叉图地图
根据实验结果分析,本文方法构建的八叉树地图与图像原始位姿构建的八叉树地图并无明显差异,没有因为估计的位姿导致构建的地图误差变大。因此,利用SC⁃SfMlearner 得到的位姿较为准确,能够得到满足构建八叉树地图所需的位姿信息。
3 结语
本文提出一种深度网络和边缘检测融合的大规模三维单目视觉建图方法,首先针对深度值和位姿估计的一致性约束等问题,利用SC⁃SfMLearner 方法得到一致性约束深度值和位姿;然后对原始图通过高斯平滑处理,利用Canny 算子进行边缘检测和二值化处理,实现对环境的边缘特征的提取。整个过程优化了深度值和位姿的计算环节,在保证地图构建完整性的情况下,一定程度上提高了建图效率。实验结果表明,本文提出的算法在一定程度上提高了地图构建的效率和鲁棒性,适合室外大规模地图构建,未来将对地图构建实时性开展进一步工作。
注:本文通讯作者为周思达。