掌桥专利:专业的专利平台
掌桥专利
首页

一种道路坑洞检测方法和装置

文献发布时间:2024-04-18 20:00:50


一种道路坑洞检测方法和装置

技术领域

本发明涉及道路安全检测领域,具体涉及一种道路坑洞检测方法。

背景技术

随着经济的发展,交通工具日益成为家庭不可或缺的组成部分。随着汽车数量的大幅增加,以及庞大的交通网络给公路监管和道路养护带来了挑战。现有的道路缺陷主要包括因道路开裂而形成的横纵向和网状等裂缝类缺陷,因车辆超重挤压道路而形成的车辙、凸起和坑洞等,以及经过施工形成的镶嵌普通修补路面和施工缝等。这些缺陷不仅在很大程度上减少了公路使用寿命,而且给行车安全带来了威胁。因此,能够及时发现并修复这些缺陷对公路安全有着至关重要的作用。

道路坑洞的自动检测是健康道路结构监测和维护的一个重要问题,早期的道路缺陷检测主要采用传统的图像处理技术以及人工手动检测,这些方法费时费力,精度和速度都达不到要求。目前的检测算法如YOLO,Faster R-CNN等,存在精度低,计算资源要求高等缺点。

发明内容

为了弥补现有技术的不足,本发明提供一种道路坑洞检测方法,克服了现有技术中检测算法精度低,计算资源要求高,提高了检测效率和识别精度。

为了实现上述目的,本发明所采用的技术方案为:一种道路坑洞检测方法:

步骤1:首先对车载激光雷达和相机进行初始化参数校准。

步骤2:获取相机拍摄的照片,构建掩模数组,利用累积分布函数结合掩膜数组对照片进行预处理。

步骤3:获取雷达激光点云数据,结合照片与激光点云进行标注,建立点云与图像之间的映射关系。

步骤4:提取相关点云,通过图像坐标系中所述相关点云,依据EDTER(EdgeDetection with Transformer)算法确定出道路病害平面边缘,然后使用约束函数方程分离出坑洞边缘。

步骤5:确定道路病害的深度分布,然后使用平均深度来从道路病害中分离出坑洞。

步骤6:最后利用检测到的坑洞的几何形状和位置信息,输出并进行显示。

优选地,利用累积分布函数结合掩膜数组对照片进行预处理的方式为:

导入所需的数据库,读取原始照片文件,并将其转换为灰度图像;使用直方图-掩膜数组函数计算图像的直方图;具体包括计算直方图的累积分布函数(CDF),创建一个掩模数组,当数组中元素为0时,该元素会被忽略;原始图像的像素,经由累积分布函数CDF求得每一个累积函数分布,使其分布在0到255的范围内。使用均衡化后的CDF对原始图像进行映射,得到均衡化后的图像;计算均衡化后的图像的直方图和CDF;绘制均衡化后的图像的直方图,对其进行保存。

优选地,获取雷达激光点云数据,结合照片与激光点云进行标注的方式为:导入所需的库,读取激光扫描获取的点云数据,从激光扫描点云数据文件路径获取点云数据文件;获取预处理后的图像,对其进行二值化处理,将灰度值大于127的像素标记为白色(255),灰度值小于等于127的像素标记为黑色(0);对二值化后的图像进行连通区域分析,得到坑洞区域的轮廓;这些轮廓可以用来判断一个点是否在坑洞区域内;创建一个空的点云对象,用于存储标记为坑洞的点云数据;遍历原始点云中的每一个点,将点云数据映射到图像坐标系,然后判断该点是否在坑洞区域内;如果在坑洞区域内,则将该点添加到坑洞点云中;保存坑洞点云数据。

优选地:确定出坑洞平面边缘的具体方式为:从图像中提取相关点云,将图像坐标系中覆盖点云分为两组,即内部点和外部点;使用外部点进行边缘平面拟合确定出边缘,具体使用线性回归模型拟合标注点,得到表示道路病害边缘平面的参数,使用EDTER(EdgeDetection with Transformer)算法,对道路病害进行边缘检测,通过调用EdgeDetectionTransformer()检测函数实现边缘转化;然后,使用EDTER函数对图像进行边缘检测,通过调用edter.detect_edges(image)函数实现具体的道路病害边缘检测。

优选地,使用约束方程函数分离出坑洞边缘的方法为:

设(X,Y,Z)为道路病害边缘点在世界坐标系中的坐标,(x,y)为道路病害边缘点在图像平面坐标系中的坐标,该点位于边缘拟合多边形平面P内,将P设为JX+KY+LZ+M=0;其中J、K、L、M为边缘拟合多边形平面P的平面参数,得到

其中(x

经推导后,可计算出坑洞边缘的准确坐标:

其中

利用上式,可以根据边缘在图像中的位置和激光点描述的路面函数来计算道路病害的精确边缘。在前述将道路病害边缘周围的点分类为内部点或外部点后,我们使用每个内部点的深度信息(d

其中n是平面P内部组的点数,

本发明的有益效果:本发明提出了一种道路坑洞检测方法,采用掩膜数组结合直方图函数对相机图像进行预处理,以提高识别准确度;获取雷达激光点云数据,对照片与激光点云结合进行标注,提取相关点云,通过图像坐标系中所述相关点云,依据EDTER(EdgeDetection with Transformer)算法确定出道路病害平面边缘,然后使用约束函数方程分离出坑洞边缘;确定道路病害的深度分布,然后使用平均深度来从道路病害中分离出坑洞。通过上述检测方式,克服了现有技术中检测算法精度低,计算资源要求高的缺陷,提高了检测效率和识别精度。

附图说明

图1为本发明实施例1提供的一种道路坑洞检测方法的步骤流程图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。需要指出的是,在不冲突的情况下,本发明中的实施例以及实施例中的特征可以相互组合。

图1是根据本发明一个实施例的道路坑洞检测的方法的主要流程示意图。如图1所示,本发明实施例的道路坑洞检测的方法包括:

S1:首先对车载激光雷达和相机进行初始化参数校准。

S2:获取相机拍摄照片,构建掩模数组,利用累积分布函数结合掩膜数组对照片进行预处理。

优选地,利用累积分布函数结合掩膜数组对照片进行预处理的方式为:导入所需的数据库,读取原始照片文件,并将其转换为灰度图像;使用直方图-掩膜数组函数计算图像的直方图;具体包括计算直方图的累积分布函数(CDF),创建一个掩模数组,当数组中元素为0时,该元素会被忽略;原始图像的像素,经由累积分布函数CDF求得每一个累积函数分布,使其分布在0到255的范围内。使用均衡化后的CDF对原始图像进行映射,得到均衡化后的图像;计算均衡化后的图像的直方图;绘制均衡化后的图像的直方图,对其进行保存。

通过直方图均衡化来改善图像的对比度,可以使得在低对比度情况下难以辨认的细节变得更加清晰。在这个过程中,原始直方图中的像素值被重新分配,使得输出图像中每个像素级别都有大致相同数量的像素。这样可以增强原本在原始直方图中只占据很小区域(即对比度较低)的特征,在新的直方图中这些特征会占据更大的区域(即对比度提高)。由此来对亮度过暗或者过亮进行调节,帮助提高后续图像处理的识别度,以提高识别准确度。

S3:获取雷达激光点云数据,结合照片与激光点云进行标注,建立点云与图像之间的映射关系。优选地,获取雷达激光点云数据,对照片与激光点云结合进行标注的方式为:导入所需的库,读取激光扫描获取的点云数据,从激光扫描点云数据文件路径获取点云数据文件;获取预处理后的图像,对其进行二值化处理,将灰度值大于127的像素标记为白色(255),灰度值小于等于127的像素标记为黑色(0);对二值化后的图像进行连通区域分析,得到坑洞区域的轮廓;这些轮廓可以用来判断一个点是否在坑洞区域内;创建一个空的点云对象,用于存储标记为坑洞的点云数据;遍历原始点云中的每一个点,将点云数据映射到图像坐标系,然后判断该点是否在坑洞区域内。如果在坑洞区域内,则将该点添加到坑洞点云中;保存坑洞点云数据。

S4:从提取相关点云,通过图像坐标系中所述相关点云,依据EDTER(EdgeDetection with Transformer)算法确定出道路病害平面边缘,然后使用约束函数方程分离出坑洞边缘。优选地:从图像中提取相关点云,将图像坐标系中覆盖点云分为两组,即内部点和外部点,使用外部点进行边缘平面拟合确定出边缘,使用外部点进行边缘平面拟合确定出边缘的具体方式为:首先使用线性回归模型拟合标注点,得到表示坑洞边缘平面的参数,使用EDTER(Edge Detection with Transformer)算法,对道路坑洞进行边缘检测,通过调用EdgeDetectionTransformer()检测函数实现边缘转化;然后,使用EDTER函数对图像进行边缘检测,通过调用`edter.detect_edges(image)函数实现具体的坑洞边缘检测。使用EDTER(Edge Detection with Transformer)进行道路坑洞边缘检测的示例。

#导入所需的库

import mmcv

from mmseg.apis import inference_segmentor,init_segmentor,show_result_pyplot

from mmseg.core.evaluation import get_palette

#定义配置文件和模型权重文件路径

config_file='configs/edter/edter_r50-d8_512x1024_80k_cityscapes.py’

checkpoint_file='checkpoints/edter_r50-d8_512x1024_80k_cityscapes.pth'

#初始化模型,这里的device参数指定了运行模型的设备,'cuda:0'表示使用第一个GPU

model=init_segmentor(config_file,checkpoint_file,device='cuda:0')

#测试单张图片并在窗口中展示结果

img='test_img.jpg'#替换原始图像

result=inference_segmentor(model,img)#对图片进行推理,得到结果

#使用cityscapes的调色板,展示推理结果

show_result_pyplot(model,img,result,get_palette('cityscapes'))代码。

首先导入了必要的库和函数,然后定义了配置文件和模型权重文件的路径。接着,初始化模型,并对一张测试图片进行了模拟推理。最后,将推理结果显示在一个窗口中。然后将test_img.jpg替换为要进行边缘检测的道路坑洞图片的路径,从而得到边缘检测结果。通过前述方式可以提取出路面病害边缘,但是路面病害可能包括坑洞以及普通修补路面,二者是混合在一起的,因此,需要进一步分离出坑洞边缘。

优选地,使用约束方程函数模拟分离出坑洞边缘的方法为:

设(X,Y,Z)为道路病害边缘点在世界坐标系中的坐标,(x,y)为道路病害边缘点在图像平面坐标系中的坐标,该点位于边缘拟合多边形平面P内,将P设为JX+KY+LZ+M=0;其中J、K、L、M为边缘拟合多边形平面P的平面参数,得到

其中(x

经推导后,可计算出坑洞边缘的准确坐标:

其中

利用上式,可以根据病害边缘在图像中的位置和激光点描述的路面函数来计算道路坑洞的精确边缘。

S5:确定道路病害的深度分布,然后使用平均深度来从道路病害中分离出坑洞。采用前述方式将坑道路病害边缘周围的点分类为内部点或外部点后,我们使用每个内部点的深度信息(d

其中n是平面P内部组的点数,

S6:最后利用检测到的坑洞的几何形状和位置信息,输出并进行显示。

本公开的实施例提供的任一种道路坑洞检测方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备、车载终端和服务器等。或者,本公开实施例提供的任一种目标检测方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种检测方法。下文不再赘述。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的目标检测方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的目标检测方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

技术分类

06120116541654