摘要
计算机视觉算法在3D道路成像和路面坑洼检测中的应用已有二十多年的历史。尽管如此,目前还缺乏有关最先进(SoTA)的计算机视觉技术的系统调研文章,尤其是为解决这些问题而开发的深度学习模型。本文首先介绍了用于2D和3D道路数据采集的传感系统,包括摄像机、激光扫描仪和微软Kinect。随后,对 SoTA 计算机视觉算法进行了全面深入的综述,包括: (1)经典的2D图像处理,(2)3D点云建模与分割,(3)机器/深度学习。本文还讨论了基于计算机视觉的路面坑洼检测方法目前面临的挑战和未来的发展趋势: 经典的基于2D图像处理和基于3D点云建模和分割的方法已经成为历史; 卷积神经网络(CNN)已经展示了引人注目的路面坑洼检测结果,并有望在未来的进展中打破瓶颈的自/无监督学习多模态语义分割。作者相信本研究可为下一代道路状况评估系统的发展提供实用的指导。
介绍
坑洼是一种相当大的结构性道路损坏[1]。它是由水和路上的行驶的车辆综合作用形成的[2]。水渗透了地面,路面下的土壤被侵蚀,地面上的车辆经过后,破坏了路面,清除了部分路面。
道路坑洼不仅是一种不便,它们也是对车辆状况和交通安全的重大威胁[3]。例如,据芝加哥太阳报报告,司机在2018年头两个月就道路坑洼提出了11,706宗投诉[4]。根据坑洼事实报告,在美国33,000起交通事故中,大约三分之一的死亡事故与道路状况不佳有关。因此,经常检查道路和修复坑洼是必要和关键的[5]。目前,人工目视检查仍然是道路坑洼检测的主要形式[6]。结构工程师和认证检查员定期检查路面坑洼并报告坑洼位置。这个过程是低效、昂贵和危险的。例如,新西兰的市议会在2017年花费数百万美元检测和修复路面坑洼(仅基督城就花费了52.5万美元)[7]。此外,据报道,在美国圣地亚哥,每年有超过30K 的路面坑洼被修复。建议圣地亚哥居民报告道路坑洼,以减轻当地道路维护部门的检测负担[8]。此外,检查员和工程师手工检测路面坑洼的结果总是主观的,因为决定完全取决于个人的经验和判断[9]。出于这些原因,研究人员一直致力于开发能够有效、准确和客观地重建、识别和定位路面坑洼的自动化道路状况评估系统[10]。具体而言,近年来,路面坑洼检测已经不仅仅是一个基础设施维护问题,因为它也是许多汽车公司嵌入到 L3/L4自动驾驶汽车中的先进驾驶辅助系统(ADAS)的功能,并且新兴的自动驾驶系统对道路养护标准提出了更高的要求[11]。捷豹路虎使用数据驱动技术进行实验,通知驾驶员路面坑洼的位置,并发出警告来减慢汽车的速度[12] ,而 ClearMotion 建立了一个智能悬挂系统,使用硬件和软件的组合来预测,吸收和抵消由路面坑洼引起的冲击和振动[13]。
自世纪之交以来,计算机视觉技术已被广泛应用于获取3D道路数据和/或检测道路坑洼。然而,这一研究课题的最新研究成果很少涉及最前沿的计算机视觉技术,如3D点云建模与分割、机器/深度学习等。本文对目前最先进(SoTA)的道路成像系统和基于计算机视觉的路面坑洼检测算法进行了全面和深入的综述。现有系统和算法的概述如下图所示。
激光扫描仪、微软 Kinect 传感器和相机是道路数据采集中最常用的三种传感器。现有的路面坑洼检测方法分为四类:
- 经典的基于2D图像处理的[14]
- 基于3D点云建模和分割的[15]
- 基于机器/深度学习的[16]
- 混合[3]。
本文系统地回顾了现有的技术和公开数据集 ,并讨论了现有的挑战及其可能的解决方案。相信本文对下一代3D道路成像和路面坑洼检测算法的开发具有一定的指导意义。
道路成像系统
道路成像(或道路数据采集)通常是智能道路检查的第一步[10]。摄像机和距离传感器已被广泛用于获取可视化道路数据。早在1991年就开始使用2D成像技术来完成这项任务[20]。然而,道路表面的几何结构不能从不相关的2D道路图像(没有重叠区域)来说明[21]。此外,在灰度或彩色道路图像上执行的图像分割算法可能会受到各种环境因素的严重影响,最显著的是光照条件差[22]。许多研究人员[5,21,23,24]因此求助于3D成像技术,这被用来克服这两个缺点。最常用于3D道路数据采集的传感器包括激光扫描仪、微软 Kinect 传感器和立体摄像机,如下图所示。
激光扫描 是一种行之有效的精确3D道路数据采集成像技术[1]。这项技术是在三角测量的基础上发展起来的[25]。传感器(接收器)位于距离激光照明源已知距离的位置[26]。因此,因此,可以通过计算激光反射角来进行精确的点测量。然而,激光扫描仪必须安装在特定的道路检查车辆上[27]进行3D道路数据采集。由于设备采购费用高和长期维护费用高,这种车辆并没有得到广泛使用。
微软 Kinect 传感器 最初是为 Xbox-360运动感应游戏设计的,通常配备有 RGB 摄像头、红外传感器/摄像头、红外发射器、麦克风、加速器和用于运动跟踪的倾斜马达。据报道,已经有三次尝试[22,27,28]使用微软 Kinect 传感器进行3D道路数据采集。虽然这些传感器具有成本效益和使用方便,但它们在阳光直射下会受到红外饱和度的严重影响,而且3D路面重建的精度不能令人满意[3]。
3D道路数据也可以使用从不同视图捕获的多个2D道路图像获得,例如使用单个可移动摄像机[29]或同步摄像机阵列[23] ,如下图所示。
这种技术背后的理论通常被称为多视图几何[30]。稀疏或密集对应匹配是多视图3D几何重建的基本任务。一种典型的单目稀疏路面3D重建方法,如[31]所示,其中使用来自运动的结构(SfM)[32]算法获得摄像机的姿态和稀疏的3D路面点云,并使用光束法平差(BA)[33]算法进行细化。
布里斯托尔视觉信息实验室的研究人员[21,34,35]率先使用多目摄像机进行密集的3D路点云采集。在这种情况下,深度信息是通过找到两个同步捕获的道路图像之间视觉特征对应对的水平位置差异来获得的[36]。这个过程通常被称为视差估计或立体匹配,它模仿人类的双眼视觉。提出了一种基于种子和生长的视差估计算法来有效地获取3D道路数据。[35]引入了一种更自适应的视差搜索范围传播策略,以提高估计道路差异的准确性。[5,21]利用透视变换算法将目标图像转换为参考视图,极大地降低了立体匹配速度和视差精度之间的平衡。此外,[34]和[35]中存在的瓶颈问题也通过使用有效和自适应的成本量处理算法来解决。据报道,在[5]和[21],重建3D道路几何模型的精度超过3毫米。与激光扫描仪和微软 Kinect 传感器相比,立体摄像机更便宜,更可靠的3D道路成像。随着深度学习技术的不断发展,卷积神经网络(CNN)比传统的显式规划方法具有更好的视差估计效果。
道路坑洼检测方法
基于经典2D图像处理的算法(例如,增强、压缩、变换、分割)显式的处理道路RGB或视差/深度图像[9]。基于机器/深度学习的算法使用图像分类、对目标识别或语义分割算法解决道路坑洼检测问题,可使用SoTA CNNs[44]解决。3D道路点云建模和基于分割的算法将特定的几何模型(通常是平面或二次曲面)拟合到观察到的道路点云,并通过比较观察到的曲面和拟合的曲面来分割道路点云[3]。混合方法结合了上述两种或多种算法,以提高整体道路坑洼检测性能。2011至2021期间开发的最具代表性的道路坑洼检测算法(从基于经典2D图像处理到基于深度学习)如下图所示。
经典的2D图像处理
基于经典2D图像处理的道路坑洼检测是一个研究的很好的课题。这种方法通常有四个阶段的流程:(1)图像预处理,(2)图像分割,(3)损伤区域提取,和(4)检测结果后处理[9]。下表总结了代表性的现有技术。
图像预处理算法,如中值滤波[42]、高斯滤波[45]、双边滤波[46]和形态学滤波[47],首先用于减少冗余信息并突出受损道路区域。例如,自适应直方图均衡算法是在[45]中用于在二值化道路图像之前调整图像亮度,并且在[14]中使用 Leung-Malik 滤波器[48]和 Schmid 滤波器[49]来强调彩色道路图像中的结构纹理特征。最近,许多研究人员[3,5,6,28,50]利用2D空间视觉信息(通常是道路深度/视差图像)来检测坑洼。例如,[50]和[3]使用立体设备倾斜角度和道路视差投影模型转换道路视差图像,其通过使用黄金分割搜索[51]和动态规划[52]算法使全局能量函数最小化来估计。视差变换使损坏的道路区域高度可区分,如下图所示。
[6]得到了上述能量最小化问题的闭式解,从而避免了迭代优化过程中的繁琐计算。由于深度/视差图像可以描述道路表面的几何结构,所以它们对于检测路面坑洼更有用[6]。
然后将预处理后的道路图像分割成前景(受损道路区域)和背景(未受损道路区域)。大多数先前的技术[46,40,37]采用基于直方图的阈值分割方法,如 Otsu 阈值分割[53] ,三角形阈值分割[14]和自适应阈值分割[46,40] ,以分割彩色/灰度道路图像。正如在[37]中所讨论的,Otsu 的阈值分割方法最小化了类内方差,并且在分割道路图像方面比三角形阈值分割方法获得了更好的性能。采用自适应阈值分割方法对道路图像进行分割,其性能优于常用的三角形阈值分割方法。最近的工作[3,5,6,50]表明,这种图像分割算法通常能更有效和准确地处理转换后的视差图像,描绘道路场景的准鸟瞰图。例如,[3]利用 Otsu 的阈值分割[53]方法来分割转换后的差异图像用于道路坑洼检测,并且在[5]中,使用简单的线性迭代聚类(SLIC)算法[54]将转换后的差异分组成一组超像素。然后通过寻找超像素来检测路面坑洼,超像素的值低于自适应确定的阈值。第三和第四阶段通常以联合方式进行。根据几何学和纹理学假设,首先从分割的前景中提取损坏的路面区域(坑洼),这俩假设包括:
- 坑洼通常是凹洞;
- 坑洼纹理通常比周围的路面更加粗糙和颗粒化;
- 由于阴影,坑洼 ROI 像素的强度通常比周围路面的强度低。
例如,在[14]中,潜在坑洼的轮廓被建模为一个椭圆。然后将椭圆内的图像纹理与未损坏的道路区域纹理进行比较。如果椭圆的 ROI 比周围区域的纹理更粗糙和颗粒化,椭圆被识别为路面坑洼。在[38]中,通过分析各种几何特征,如大小、紧凑度、椭圆度和凸壳,提取潜在坑洼的轮廓。然后采用有序直方图交会法确定提取的区域是否包含路面坑洼。最后,对提取出的受损路段进行后处理,进一步提高路面坑洼检测结果。这个过程通常类似于第一阶段。经典的基于2D图像处理的路面坑洼检测方法已经研究了近二十年。这种类型的算法已经被[9]系统地研究过了,作者参考读者[9]以获得更多的细节。然而,这些方法是在早期技术的基础上发展起来的,可能会受到各种环境因素的严重影响。幸运的是,现代3D计算机视觉和机器学习算法已经大大克服了这些缺点。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)