铁路场景的三维激光点云数据去噪方法及装置与流程

文档序号:32411013发布日期:2022-12-02 21:27阅读:186来源:国知局
铁路场景的三维激光点云数据去噪方法及装置与流程

1.本发明涉及铁路移动测量技术领域,尤其涉及一种铁路场景的三维激光点云数据去噪方法及装置。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.随着铁路高速发展,铁路的智能化、数字化建设迫在眉睫,激光扫描技术在铁路运行环境安全检测领域发挥着至关重要的作用。但是,由高精度激光雷达采集的点云数据受到设备及现场环境因素的影响会产生大量的噪声,这些噪声极大地影响了点云数据的下游分析任务,例如点云分析及点云重建等。因此,亟需研究高效的点云去噪算法去除噪声的干扰,才能为后期的点云识别等下游任务提供高质量的点云数据。
4.目前针对点云去噪的传统方法主要包括,点云滤波去噪,核密度估计等方法等。也有一些工作提出利用点云数据的其他特征差异,如曲率,颜色等进行去噪处理。近几年,随着深度学习的发展,研究人员利用深度学习方法进行点云去噪,或者结合点云分类、点云重建的基础上进行去噪处理。虽然这些工作在点云去噪任务中取得了不错的性能,但仍然存在去噪效率低,特别是在处理铁路场景的大尺度海量点云数据时耗时长,去噪效果差,无法满足铁路场景下实时和高效的应用需求。


技术实现要素:

5.本发明实施例提供一种铁路场景的三维激光点云数据去噪方法,用以快速确定点云数据中的噪声数据,显著提高点云数据的去噪效率,改善点云数据的去噪效果,满足真实铁路场景下的实时去噪需求,该方法包括:
6.通过激光点云采集设备获取铁路沿线的点云数据,根据预设里程将点云数据划分为多个点云数据段,激光点云采集设备安装于铁路检测车前,点云数据为三维空间数据;
7.对于每一点云数据段,将点云数据段投影至二维平面,获取点云数据段投影至二维平面后得到的多个坐标值,二维平面由三维空间中除铁路检测车运行方向外的另两个方向维度构成;根据预设的网格宽度,将二维平面划分为多个网格,确定多个坐标值对应的多个网格索引点;
8.构建多个网格索引点对应的多个网格索引点向量,分别以每一网格索引点向量作为聚类中心,计算每一聚类中心与多个网格索引点向量之间的欧式距离;根据每一聚类中心与多个网格索引点向量之间的欧式距离是否小于预设阈值,对多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点;
9.根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,
重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点;
10.根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点,确定多个网格索引点中的噪声点,根据点云数据段与多个网格索引点之间的映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
11.本发明实施例还提供一种铁路场景的三维激光点云数据去噪装置,用以快速确定点云数据中的噪声数据,显著提高点云数据的去噪效率,改善点云数据的去噪效果,满足真实铁路场景下的实时去噪需求,该装置包括:
12.点云数据的获取与划分模块,用于通过激光点云采集设备获取铁路沿线的点云数据,根据预设里程将点云数据划分为多个点云数据段,激光点云采集设备安装于铁路检测车前,点云数据为三维空间数据;
13.点云数据段投影与网格索引点确定模块,用于对于每一点云数据段,将点云数据段投影至二维平面,获取点云数据段投影至二维平面后得到的多个坐标值,二维平面由三维空间中除铁路检测车运行方向外的另两个方向维度构成;根据预设的网格宽度,将二维平面划分为多个网格,确定多个坐标值对应的多个网格索引点;
14.初始类别确定模块,用于构建多个网格索引点对应的多个网格索引点向量,分别以每一网格索引点向量作为聚类中心,计算每一聚类中心与多个网格索引点向量之间的欧式距离;根据每一聚类中心与多个网格索引点向量之间的欧式距离是否小于预设阈值,对多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点;
15.最终类别确定模块,用于根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点;
16.噪声点确定与噪声数据去除模块,用于根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点,确定多个网格索引点中的噪声点,根据点云数据段与多个网格索引点之间的映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
17.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述铁路场景的三维激光点云数据去噪方法。
18.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述铁路场景的三维激光点云数据去噪方法。
19.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述铁路场景的三维激光点云数据去噪方法。
20.本发明实施例中,通过将点云数据段进行网格投影处理得到多个网格索引点,并对多个网格索引点进行聚类,可以快速确定点云数据中的噪声数据,显著提高点云数据的
去噪效率,改善点云数据的去噪效果,满足真实铁路场景下的实时去噪需求。
附图说明
21.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
22.图1为本发明实施例中铁路场景的三维激光点云数据去噪方法的处理流程图;
23.图2(a)和图2(b)为本发明实施例中对一点云数据段进行网格投影的效果图;
24.图3为本发明实施例中确定网格索引点中噪声点一方法流程图;
25.图4(a)为本发明实施例中隧道场景的噪声示意图;
26.图4(b)为本发明实施例中对隧道场景进行去噪处理后的示意图;
27.图5(a)为本发明实施例中空旷场景的噪声示意图;
28.图5(b)为本发明实施例中对空旷场景进行去噪处理后的示意图;
29.图6为本发明实施例中铁路场景的三维激光点云数据去噪装置的结构示意图;
30.图7为本发明实施例中铁路场景的三维激光点云数据去噪装置的一具体实例结构示意图;
31.图8为本发明一实施例的计算机设备结构示意图。
具体实施方式
32.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
33.首先对本发明实施例中的技术名词进行解释:
34.激光扫描测量技术:激光扫描测量技术在三维空间测量中应用非常广泛,能够直接提供物体的几何信息,具有快速、实时、准确、高校的优点,同时成像范围广、距离远,且不易受光照条件影响,在复杂环境下仍具有很好的鲁棒性。随着自动驾驶技术的蓬勃发展,利用激光扫描技术生成三维空间点云,完成目标检测、识别和场景语义分割等视觉任务已经成为学术界和工业界的研究热点,在地理测绘、移动测量、无人驾驶等领域得到了广泛应用。
35.cuda(compute unified device architecture):cuda是nvidia发明的一种并行计算平台和编程模型。它通过利用图形处理器(gpu)的处理能力,可大幅提升计算性能。它是一个完整的gpu解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形api接口来实现gpu的访问。在架构上采用了一种全新的计算体系结构来使用gpu提供的硬件资源,从而给大规模的数据计算应用提供了一种比cpu更加强大的计算能力。cuda采用c语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在gpu的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
36.发明人发现,目前针对铁路场景点云去噪方法往往采用较为单一的设计思路,如:点云滤波,密度估计,曲率判别等,无法很好地适用于铁路场景以达到较好的去噪效果。同
时这些方法的时间复杂度高,在处理数据量大,密度高的点云数据时往往效率低下,无法满足实际应用的实时检测需求。因此,本发明结合网格投影算法(gridded projection,gp)和基于cuda的快速点云聚类算法(fast point cloud clustering algorithm,fpc),提供了一种铁路场景的三维激光点云数据去噪方法,可以快速确定点云数据中的噪声数据,显著提高点云数据的去噪效率,改善点云数据的去噪效果,满足真实铁路场景下的实时去噪需求。
37.本发明针对的是铁路场景的三维激光点云数据快速去噪,主要通过以下两个方面内容实现快速高效去噪:
38.第一方面:在本发明中,点云数据是由安装在铁路检测车前的激光点云采集设备沿铁路线路扫描获取的,因此该点云数据具有沿列车运行方向延伸的特性,针对该特性,可以将点云数据拆分成数据段,再进行投影,这样可以将三维数据转换成二维数据进行降维,然后进行网格化,相当于对二维数据进行降采样,进一步达到了减少数据量,降低计算量的效果。
39.第二方面:本发明利用了gpu擅长并行计算、能够高效处理矩阵运算的特性,在进行聚类算法前,将输入数据组织成矩阵数据,并在聚类操作中对算法进行特殊设计,让算法计算过程中尽可能多的采用矩阵运算利用gpu可以进行高效矩阵运算的特性加快计算速度,尽管该种方式会存在部分重复计算,但根据实际操作效果显示,仍可以显著提升计算效率。
40.图1为本发明实施例中铁路场景的三维激光点云数据去噪方法的处理流程图。如图1所示,本发明实施例中铁路场景的三维激光点云数据去噪方法可以包括:
41.步骤101、通过激光点云采集设备获取铁路沿线的点云数据,根据预设里程将点云数据划分为多个点云数据段,激光点云采集设备安装于铁路检测车前,点云数据为三维空间数据;
42.步骤102、对于每一点云数据段,将点云数据段投影至二维平面,获取点云数据段投影至二维平面后得到的多个坐标值,二维平面由三维空间中除铁路检测车运行方向外的另两个方向维度构成;根据预设的网格宽度,将二维平面划分为多个网格,确定多个坐标值对应的多个网格索引点;
43.步骤103、构建多个网格索引点对应的多个网格索引点向量,分别以每一网格索引点向量作为聚类中心,计算每一聚类中心与多个网格索引点向量之间的欧式距离;根据每一聚类中心与多个网格索引点向量之间的欧式距离是否小于预设阈值,对多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点;
44.步骤104、根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点;
45.步骤105、根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点,确定多个网格索引点中的噪声点,根据点云数据段与多个网格索引点之间的
映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
46.由于本发明是针对铁路场景的点云数据进行去噪处理,而该类点云数据通常沿着列车运行方向延伸,因此在步骤101中,通过激光点云采集设备获取铁路沿线的点云数据之后,可以根据里程将点云数据划分为多个点云数据段。然后在步骤102中,可以对每一点云数据段进行网格化投影,实现对点云数据的降维和降采样。
47.在步骤102中,由于点云数据为三维空间数据,因此可以假设一点云数据段由n个三维点(x,y,z)组成,其中x为铁路检测车运行方向维度的数据,y为平面空间上另一维度方向的数据,z为垂直空间上另一维度方向的数据。
48.图2(a)和图2(b)为本发明实施例中对一点云数据段进行网格投影的效果图。如图2(a)所示,在对该点云数据段进行网格化投影时,首先可以将该点云数据段沿着x方向维度投影到yoz面,然后如图2(b)所示,将yoz面划分为网格宽为多个网格,可以获取该点云数据段投影至yoz面后得到的n个坐标值(y,z),并根据网格宽度,确定n个坐标值(y,z)对应的n个网格索引点。
49.在一个实施例中,确定多个坐标值对应的多个网格索引点,可以包括:按如下公式,确定多个坐标值对应的多个网格索引点:
[0050][0051]
其中,p
yz
为点云数据段p投影至二维平面后得到的多个坐标值,a为预设的网格宽度,g
origin
为多个坐标值对应的多个网格索引点。
[0052]
下面举一个具体的例子对网格索引点的确定过程进行说明,假设点云数据段p包含5个三维点:
[0053]
[1.000,0.2000,0.5000]
[0054]
[1.000,1.1000,2.6000]
[0055]
[1.000,3.4000,5.8000]
[0056]
[2.000,3.5000,5.6000]
[0057]
[2.000,8.0000,8.2000]
[0058]
其中,每行表示每个点,每列从左往右分别表示x,y,z三个坐标值。将点云数据段p沿着x方向维度投影到yoz面,可以获取点云数据段p投影至yoz面后得到的5个坐标值p
yz

[0059]
[0.2000,0.5000]
[0060]
[1.1000,2.6000]
[0061]
[3.4000,5.8000]
[0062]
[3.5000,5.6000]
[0063]
[8.0000,8.2000]
[0064]
再将p
yz
中的5个坐标值除以网格宽度(假设网格宽度为1),确定5个坐标值对应的5个网格索引点g
origin

[0065]
[0,0]
[0066]
[1,2]
[0067]
[3,5]
[0068]
[3,5]
[0069]
[8,8]
[0070]
在一个实施例中,确定多个坐标值对应的多个网格索引点之后,还可以包括:获取多个网格索引点中的重复点,去除重复点;根据剩余的网格索引点和去除的重复点,确定每个网格内的点数。具体实施时,在去除重复点之后,基于剩余的网格索引点进行后续的网格索引点分类计算。
[0071]
仍以g
origin
为例进行说明,g
origin
中包含两个网格索引点[3,5],需要去除一个重复点,剩余4个网格索引点g,根据剩余的网格索引点和去除的重复点,可以确定每个网格内的点数f,如下所示,其中左侧为g,右侧为f:
[0072]
[0,0][1]
[0073]
[1,2][1]
[0074]
[3,5][2]
[0075]
[8,8][1]
[0076]
具体实施时,由于点云数据可以看作矩阵数据,因此可以将网格索引点以矩阵的形式处理,本发明实施例中网格投影算法的具体执行步骤可以如下所示:
[0077][0078]
如上所述,在经过网格投影进行降维降采样后,可以将待处理的点云数据段转换为多个网格索引点,大大减少了计算量。
[0079]
接下来在步骤103至步骤105中,可以基于去重后剩余的多个网格索引点进行噪声点与正常点的分类。由于铁路场景的点云数据为密集点云,因此噪声点主要为离群点,在转换后的网格索引点中同样保存了该特点,因此可以采用聚类算法对噪声点进行识别。但是,传统的聚类算法设计时通常是在cpu上运行,由于聚类算法时间复杂度较高,在进行大量点云数据聚类时往往耗时长,考虑到点云数据可以看作矩阵数据,同时gpu擅长处理矩形运算以及并行化计算,因此本发明利用这一特性,设计了一种基于cuda的快速点云聚类算法。
[0080]
在应用快速点云聚类算法时,可以采用点间欧式距离作为聚类标准,通过预设的欧式距离作为阈值进行聚类,分为计算剩余的网格索引点间的欧式距离矩阵,以及基于该欧式距离矩阵对剩余的网格索引点进行聚类这两部分内容,本发明实施例在这两部分内容
的计算过程中均利用矩阵运算,以达到加速的效果。
[0081]
在根据网格投影算法获取网格索引点矩阵之后,利用该网格索引点矩阵进行网格点间欧式距离,该部分首先可以通过两个网格索引点构建的点向量间的欧式距离公式推演出两个索引点矩阵间的欧式距离公式,最终得到利用矩阵运算获取点集间的欧氏距离快速矩阵计算公式。
[0082]
(1)针对计算两点欧式距离,假设将输入的两个点表示为向量p(yn,zn),q(ym,zm),则其欧式距离可表示为:
[0083]
distance(p,q)=(y
n-ym)2+(z
n-zm)2[0084]
=y
n2
+z
n2
+y
m2
+z
m2-2y
nym-2znzm[0085]
=p2+q
2-2p
·q[0086]
(2)针对两个点云集合间的欧式距离时,假设将输入的两个点集表示为矩阵p[n,2],q[m,2],令p=[p1,p2,...,pn];q=[q1,q2,...,qm]则其欧式距离可表示为:
[0087][0088]
其中表示hadamard积,sum表示对矩阵行求和,t表示转置。通过上述公式将点集间的欧式距离计算转换为矩阵运算,最终得到点集间的欧式距离矩阵,该过程可以利用cuda进行加速处理。
[0089]
由于铁路场景中的点云噪声主要为离群点,因此本发明可以根据点间欧式距离进行聚类。通过上述内容中的欧式距离快速计算公式,可以获得两个点集间的欧式距离,而当输入的两个数据为同一个点集数据时,便可以计算得到该点集内各点间的欧式距离矩阵,设经网格投影计算得到的网格索引点矩阵为g,g∈zm×2,则其计算得到的欧式距离矩阵d,d∈z
m*m
,若d
ij
(i,j=1,2,

,m)为d中元素,则d
ij
表示矩阵第i个点与第个j点间的欧式矩阵,因此矩阵d为对称矩阵,且主对角线元素为0,其中:
[0090]
[0091]
由于d为对称矩阵,因此
[0092]
下面结合具体的实施例对本发明中剩余的多个网格索引点的分类过程进行说明。
[0093]
在本发明实施例中,确定多个坐标值对应的多个网格索引点并对多个网格索引点进行去重之后,可以构建剩余的网格索引点对应的多个网格索引点向量,分别以剩余的网格索引点中的每一网格索引点向量作为聚类中心,计算每一聚类中心与剩余的网格索引点对应的多个网格索引点向量之间的欧式距离;根据每一聚类中心与剩余的网格索引点对应的多个网格索引点向量之间的欧式距离是否小于预设阈值,对剩余的多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点。
[0094]
在一个实施例中,分别以剩余的网格索引点中的每一网格索引点向量作为聚类中心,计算每一聚类中心与剩余的网格索引点对应的多个网格索引点向量之间的欧式距离,可以包括:
[0095]
根据剩余的网格索引点对应的多个网格索引点向量,得到对应的网格索引点向量矩阵;
[0096]
计算相同网格索引点向量矩阵之间的欧式距离,得到欧式距离矩阵,其中欧氏距离矩阵的每一行元素值对应剩余的网格索引点中的一个网格索引点向量,表示其对应的网格索引点向量作为聚类中心时,与剩余的网格索引点对应的多个网格索引点向量之间的欧式距离,所述欧氏距离矩阵为对称矩阵。
[0097]
具体实施时,以根据网格算法得出网格索引点矩阵g为例继续进行说明,由上述内容可知,g中剩余四个网格索引点,分别为网格索引点1:(0,0),网格索引点2:(1,2),网格索引点3:(3,5),网格索引点4:(8,8)。首先可以根据网格索引点矩阵g,得到对应的网格索引点向量矩阵g1,令g1=g2,计算g1,g2之间的欧式距离,得到欧式距离矩阵d,d=distance(g1,g2),根据上述四个网格索引点构成的向量矩阵可以计算出:
[0098][0099]
在一个实施例中,根据每一聚类中心与剩余的网格索引点对应的多个网格索引点向量之间的欧式距离是否小于预设阈值,对剩余的多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点,包括:
[0100]
根据欧氏距离矩阵的元素值是否小于预设阈值,将欧氏距离矩阵转换为阈值0-1矩阵,其中小于预设阈值的元素值转换为1,大于等于预设阈值的元素值转换为0,所述阈值0-1矩阵为对称矩阵;
[0101]
根据转换得到的阈值0-1矩阵,确定网格索引点的多个初始类别以及每一初始类别包含的网格索引点个数,其中阈值0-1矩阵的行数量等于网格索引点的初始类别个数,阈值0-1矩阵每一行中值为1的元素对应每一初始类别包含的一个或多个网格索引点。
[0102]
具体实施时,根据每一聚类中心与剩余的网格索引点对应的多个网格索引点向量
之间的欧式距离是否小于预设阈值时,可以获取每一聚类中心预设阈值范围内的所有临近点,将该聚类中心及其所有临近点视作一个初始类别。因此,去重后剩余多少个网格索引点则存在多少个初始类别,且这些初始类别内的网格索引点存在重复。
[0103]
以上述计算出的欧式距离矩阵d为例继续说明,假设阈值为15,则可以将欧式距离矩阵d转换为阈值0-1矩阵a,如下所示:
[0104][0105]
在阈值0-1矩阵a中,第一行表示:与网格索引点1距离小于阈值的为网格索引点1和网格索引点2;第二行表示:与网格索引点2距离小于阈值的为网格索引点1、网格索引点2和网格索引点3;第三行表示:与网格索引点3距离小于阈值的为网格索引点2和网格索引点3;第四行表示:与点4距离小于阈值的为网格索引点4。
[0106]
由于以每一网格索引点向量作为聚类中心,因此网格索引点的初始类别个数等于网格索引点的个数。将阈值0-1矩阵a每一行看作一个初始类别,则在本例中的4个网格索引点共有4个初始类别,每行中值为1对应的列所表示的点为该行类中的元素。例如第一行为初始类别1,则网格索引点1和网格索引点2为该类内元素;第二行为初始类别2,则网格索引点1、网格索引点2和点3为该类内元素;第三行为初始类别3,则网格索引点2和网格索引点3为该类内元素;第四行为初始类别4,则网格索引点4为该类内元素。
[0107]
接下来,需要判断每两个初始类别是否可以合并,根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,可以计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点。
[0108]
在一个实施例中,根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,可以包括:
[0109]
根据对称矩阵的运算特征和层次聚类算法,计算阈值0-1矩阵的平方得到中间矩阵,根据中间矩阵的元素值是否大于0将中间矩阵转换为中间0-1矩阵,其中中间矩阵中大于0的元素值转换为1,等于0的元素值仍为0,在中间0-1矩阵等于阈值0-1矩阵时,停止计算,在中间0-1矩阵不等于阈值0-1矩阵时按如下步骤重复更新阈值0-1矩阵和中间0-1矩阵,直至更新后的中间0-1矩阵等于更新后的阈值0-1矩阵:
[0110]
将中间0-1矩阵作为更新后的阈值0-1矩阵,计算更新后的阈值0-1矩阵平方得到更新后的中间矩阵;根据更新后的中间矩阵的元素值是否大于0进行转换,得到更新后的中间0-1矩阵。
[0111]
具体实施时,在阈值0-1矩阵a中,判断初始类别1和初始类别2是否可以合并,可以将阈值0-1矩阵a的第一行和第二行进行点乘,结果为2,其大于0,可以合并;判断初始类别1
和初始类别3是否可以合并,可以将阈值0-1矩阵a的第一行和第三行进行点乘,结果为1,其大于0,可以合并;判断初始类别1和初始类别4是否可以合并,可以将阈值0-1矩阵a的第一行和第四行进行点乘,结果为0,其不大于0,不可以合并;判断初始类别2和初始类别3是否可以合并,可以将第二行和第三行进行点乘,结果为2,其大于0,可以合并。
[0112]
以此类推,由于阈值0-1矩阵a是对称矩阵,每一行和对应的列是一样的,比如第一行的四个值和第一列的四个值是一样的,因此为了计算方便,例如将阈值0-1矩阵a的第一行和第二行进行点乘,不需要将第一行和第二行进行点乘,而是可以将阈值0-1矩阵a第一行和第二列进行点乘。由于每行和每列都需要计算,且转换成矩阵运算可以利用显卡加速计算,因此直接计算a
×
a即可得到中间矩阵,结果如下所示:
[0113][0114]
然后可以根据中间矩阵的元素值是否大于0将中间矩阵转换为中间0-1矩阵m,其中中间矩阵中大于0的元素值转换为1,等于0的元素值仍为0,结果如下所示:
[0115][0116]
接下来将矩阵m赋值给a后,a为更新后的阈值0-1矩阵,继续计算a
×
a,得到更新后的中间矩阵;根据更新后的中间矩阵的元素值是否大于0再次进行转换,并将结果赋值给m,得到更新后的中间0-1矩阵。在本例中,更新后的阈值0-1矩阵a与更新后的中间0-1矩阵m相同:
[0117][0118]
此时表明已经聚类完成了,对上诉矩阵内的行进行去重,得到结果如下所示:
[0119]
1 1 1 0
[0120]
0 0 0 1
[0121]
说明4个网格索引点,最终分成了2类,网格索引点1,网格索引点2,网格索引点3属于最终类别1,网格索引点4单独为1类,属于最终类别2;当然这4个点表示网格索引点,分别对应的是4个网格。
[0122]
注意这里的点是投影后的网格索引点,因此在去噪时还需要将网格索引点映射到原始输入的点云数据里。由前述网格投影部分内容可知,原始点云数据包含5个点,其中第3个和第4个点投影在同一个网格中。因此,可以假设最终类别1为ω1,包含原始点云数据中的:第1个点、第2个点,第3个点,第4个点,共4个点;最终类别2为ω2,仅包含原始点云中的第5个点。
[0123]
具体实施时,由于点云数据可以看作矩阵数据,因此可以将网格索引点以矩阵的形式处理,本发明实施例中网格投影算法的具体执行步骤可以如下所示:
[0124][0125]
通过上述快速聚类算法的实现方式,即在实现过程中广泛采用矩阵运算,可以利用cuda加速计算的效果,通过gpu计算显著提高计算效率。
[0126]
在经过上述快速聚类算法后,可以获取网格索引点的多个最终类别以及每一最终类别包含的网格索引点个数,这些类别包括正常点类和离群点类,其中噪声点多为离群点类。为筛选出多个网格索引点中的离群点类,可以通过融合多种筛选策略,包括统计类内点数,计算类内最大距离以及计算类间最小距离等方式,综合确定网格索引点中的噪声点,并根据点云数据段与多个网格索引点之间的映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
[0127]
图3为本发明实施例中确定网格索引点中噪声点一方法流程图,如图3所示,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点,确定多个网格索引点中的噪声点,包括:
[0128]
步骤301、获取铁路检测车的运行环境数据,根据铁路检测车的运行环境数据,确定运行环境特征;
[0129]
步骤302、对于同一最终类别,根据每一最终类别包含的一个或多个网格索引点向量,计算类内网格索引点向量间的最大距离;
[0130]
步骤303、对于不同最终类别,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点向量,计算每两个最终类别之间网格索引点向量间的最小距离;
[0131]
步骤304、根据运行环境特征、每一最终类别包含的一个或多个网格索引点、类内
网格索引点向量间的最大距离、每两个最终类别之间网格索引点向量间的最小距离,确定多个网格索引点中的噪声点。
[0132]
铁路场景具体可以包括多种不同类型的场景,例如隧道场景,空旷场景,树场景等,由于不同场景下铁路检测车的运行环境不同,而不同的运行环境特征对应的噪声点类型、位置、数量等都存在区别,因此可以结合运行环境特征,确定网格索引点中的噪声点,提高噪声点确定的准确性。
[0133]
在一个实施例中,根据每一最终类别包含的一个或多个网格索引点向量,计算类内网格索引点向量间的最大距离,可以包括:按如下公式,根据每一最终类别包含的一个或多个网格索引点向量,计算类内网格索引点向量间的最大距离:
[0134][0135]
其中,表示类内网格索引点向量间的最大距离,ωi(i=1,2,3...k)表示聚类后得到的k个最终类别,表示ωi类中样本点,表示ωi类中随机两个样本点,d表示用于计算欧式距离的函数。
[0136]
在一个实施例中,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点向量,计算每两个最终类别之间网格索引点向量间的最小距离,可以包括:按如下公式,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点向量,计算每两个最终类别之间网格索引点向量间的最小距离:
[0137][0138]
其中,表示每两个最终类别之间网格索引点向量间的最小距离,ωi(i=1,2,3...k)表示聚类后得到的k个最终类别,表示ωi类中样本点,表示ωj类中样本点,表示ωi类中一样本点,表示ωj类中一样本点,d表示用于计算欧式距离的函数。
[0139]
具体实施时,各类内点数为n(ωi)=ni,结合上述多个计算公式,可以设置不同阈值筛选不同的噪声类别以适应不同的场景环境(隧道场景,树场景,空旷场景)以及不同的采集区域(例如轨面区域,中心空旷区域)。该噪声筛选策略通过分析噪点特征,合理地融合多种筛选方法,能够在铁路场景的三维激光点云数据去噪问题中达到较好的去噪效果。
[0140]
在本发明实施例中,首先通过多种手段降低计算量,包括投影,网格化等,再结合特殊设计利用cuda加速的聚类算法获得聚类结果后,结合多种属性对噪声点进行分析判断。点云去噪的效率和准确率均达到较好的效果。
[0141]
下面实验验证了网格化投影模块对去噪效率的提升和对去噪结果的影响程度,以及使用本发明设计的基于cuda的聚类算法的加速处理效果。本文算法实验环境为64位windows10操作系统,cpu为amd ryzen 9 5900hx,gpu为nvidia geforce rtx 3070,编程语言为python3.8。
[0142]
首先验证了快速聚类算法模块分别在cpu和gpu中效率对比,结果如表1所示:
[0143]
表1快速聚类算法在cpu和gpu中效率对比
[0144][0145]
从表1可以看出,当处理点数越多时,本发明所设计的快速聚类算法效率越高,加速比越大。
[0146]
关于本发明的网格化投影模块,不同的投影间距以及网格宽度,对于计算效率和去噪结果均有影响,尽管参数尺度越大计算量越小,计算效率越高,但是同时也会降低去噪准确率,因此针对不同参数尺度评估了最终去噪的效率以及效果,其结果如表2和表3所示:
[0147]
表2不同网格宽度对去噪效果影响比较
[0148][0149]
表3不同投影长度对去噪效果影响比较
[0150][0151]
从表2和图3的结果中可以看出当投影长度越大,网格宽大越大时,效率越高,但由于损失较多原始数据信息,准确率也下降,因此在实际应用中,通常需要根据自己的需求进行参数选取。
[0152]
下面对本发明的去噪效果进行对比展示,图4(a)为本发明实施例中隧道场景的噪声示意图,图4(a)中的黑点部分即为隧道场景的噪声点,图4(b)为本发明实施例中对隧道场景进行去噪处理后的示意图。
[0153]
图5(a)为本发明实施例中空旷场景的噪声示意图,图5(a)中的黑点部分即为空旷场景的噪声点,图5(b)为本发明实施例中对空旷场景进行去噪处理后的示意图。
[0154]
本发明实施例中还提供了一种铁路场景的三维激光点云数据去噪装置,如下面的实施例所述。由于该装置解决问题的原理与铁路场景的三维激光点云数据去噪方法相似,因此该装置的实施可以参见铁路场景的三维激光点云数据去噪方法的实施,重复之处不再赘述。
[0155]
图6为本发明实施例中铁路场景的三维激光点云数据去噪装置的结构示意图。如图6所示,本发明实施例中铁路场景的三维激光点云数据去噪装置具体可以包括:
[0156]
点云数据的获取与划分模块601,用于通过激光点云采集设备获取铁路检测车沿
线的点云数据,根据预设里程将点云数据划分为多个点云数据段,激光点云采集设备安装于铁路检测车前,点云数据为三维空间数据;
[0157]
点云数据段投影与网格索引点确定模块602,用于对于每一点云数据段,将点云数据段投影至二维平面,获取点云数据段投影至二维平面后得到的多个坐标值,二维平面由三维空间中除铁路检测车运行方向外的另两个方向维度构成;根据预设的网格宽度,将二维平面划分为多个网格,确定多个坐标值对应的多个网格索引点;
[0158]
初始类别确定模块603,用于构建多个网格索引点对应的多个网格索引点向量,分别以每一网格索引点向量作为聚类中心,计算每一聚类中心与多个网格索引点向量之间的欧式距离;根据每一聚类中心与多个网格索引点向量之间的欧式距离是否小于预设阈值,对多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点;
[0159]
最终类别确定模块604,用于根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点;
[0160]
噪声点确定与噪声数据去除模块605,用于根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点,确定多个网格索引点中的噪声点,根据点云数据段与多个网格索引点之间的映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
[0161]
在一个实施例中,点云数据段投影与网格索引点确定模块602具体用于:
[0162]
按如下公式,确定所述多个坐标值对应的多个网格索引点:
[0163][0164]
其中,p
yz
为点云数据段投影至二维平面后得到的多个坐标值,a为预设的网格宽度,g
origin
为多个坐标值对应的多个网格索引点。
[0165]
图7为本发明实施例中铁路场景的三维激光点云数据去噪装置的一具体实例结构示意图。如图7所示,在实施例中,图6所示的铁路场景的三维激光点云数据去噪装置还包括:
[0166]
去除模块701,用于在点云数据段投影与网格索引点确定模块602确定多个坐标值对应的多个网格索引点之后:
[0167]
获取多个网格索引点中的重复点,去除重复点;
[0168]
根据剩余的网格索引点和去除的重复点,确定每个网格内的点数。
[0169]
在一个实施例中,初始类别确定模块603具体用于:
[0170]
根据剩余的网格索引点对应的多个网格索引点向量,得到对应的网格索引点向量矩阵;
[0171]
计算相同网格索引点向量矩阵之间的欧式距离,得到欧式距离矩阵,其中欧氏距离矩阵的每一行元素值对应剩余的网格索引点中的一个网格索引点向量,表示其对应的网格索引点向量作为聚类中心时,与剩余的网格索引点对应的多个网格索引点向量之间的欧
式距离,所述欧氏距离矩阵为对称矩阵。
[0172]
在一个实施例中,初始类别确定模块603具体用于:
[0173]
根据欧氏距离矩阵的元素值是否小于预设阈值,将欧氏距离矩阵转换为阈值0-1矩阵,其中小于预设阈值的元素值转换为1,大于等于预设阈值的元素值转换为0,所述阈值0-1矩阵为对称矩阵;
[0174]
根据转换得到的阈值0-1矩阵,确定网格索引点的多个初始类别以及每一初始类别包含的一个或多个网格索引点,其中阈值0-1矩阵的行数量等于网格索引点的初始类别个数,阈值0-1矩阵每一行中值为1的元素对应每一初始类别包含的一个或多个网格索引点。
[0175]
在一个实施例中,最终类别确定模块604具体用于:
[0176]
根据对称矩阵的运算特征和层次聚类算法,计算阈值0-1矩阵的平方得到中间矩阵,根据中间矩阵的元素值是否大于0将中间矩阵转换为中间0-1矩阵,其中中间矩阵中大于0的元素值转换为1,等于0的元素值仍为0,在中间0-1矩阵等于阈值0-1矩阵时,停止计算,在中间0-1矩阵不等于阈值0-1矩阵时按如下步骤重复更新阈值0-1矩阵和中间0-1矩阵,直至更新后的中间0-1矩阵等于更新后的阈值0-1矩阵:
[0177]
将中间0-1矩阵作为更新后的阈值0-1矩阵,计算更新后的阈值0-1矩阵平方得到更新后的中间矩阵;根据更新后的中间矩阵的元素值是否大于0进行转换,得到更新后的中间0-1矩阵。
[0178]
在一个实施例中,噪声点确定与噪声数据去除模块605具体用于:
[0179]
获取铁路检测车的运行环境数据,根据铁路检测车的运行环境数据,确定运行环境特征;
[0180]
对于同一最终类别,根据每一最终类别包含的一个或多个网格索引点向量,计算类内网格索引点向量间的最大距离;
[0181]
对于不同最终类别,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点向量,计算每两个最终类别之间网格索引点向量间的最小距离;
[0182]
根据运行环境特征、每一最终类别包含的一个或多个网格索引点、类内网格索引点向量间的最大距离、每两个最终类别之间网格索引点向量间的最小距离,确定多个网格索引点中的噪声点。
[0183]
在一个实施例中,噪声点确定与噪声数据去除模块具体用于:
[0184]
按如下公式,根据每一最终类别包含的一个或多个网格索引点向量,计算类内网格索引点向量间的最大距离:
[0185][0186]
其中,表示类内网格索引点向量间的最大距离,ωi(i=1,2,3...k)表示聚类后得到的k个最终类别,表示ωi类中样本点,表示ωi类中随机两个样本点,d表示用于计算欧式距离的函数。
[0187]
在一个实施例中,噪声点确定与噪声数据去除模块605具体用于:
[0188]
按如下公式,根据网格索引点的多个最终类别以及每一最终类别包含的一个或多个网格索引点向量,计算每两个最终类别之间网格索引点向量间的最小距离:
[0189][0190]
其中,表示每两个最终类别之间网格索引点向量间的最小距离,ωi(i=1,2,3...k)表示聚类后得到的k个最终类别,表示ωi类中样本点,表示ωj类中样本点,表示ωi类中一样本点,表示ωj类中一样本点,d表示用于计算欧式距离的函数。
[0191]
基于前述发明构思,如图8所示,本发明还提出了一种计算机设备800,包括存储器810、处理器820及存储在存储器810上并可在处理器820上运行的计算机程序830,所述处理器820执行所述计算机程序830时实现前述铁路场景的三维激光点云数据去噪方法。
[0192]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述铁路场景的三维激光点云数据去噪方法。
[0193]
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述铁路场景的三维激光点云数据去噪方法。
[0194]
综上所述,本发明实施例中,通过激光点云采集设备获取铁路沿线的点云数据,根据里程将点云数据划分为多个点云数据段,激光点云采集设备安装于铁路检测车前,点云数据为三维空间数据;对于每一点云数据段,将点云数据段投影至二维平面,获取点云数据段投影至二维平面后得到的多个坐标值,二维平面由三维空间中除检测车运行方向外的另两个方向维度构成;根据预设的网格宽度,将二维平面划分为多个网格,确定多个坐标值对应的多个网格索引点;构建多个网格索引点对应的多个网格索引点向量,分别以每一网格索引点向量作为聚类中心,计算每一聚类中心与多个网格索引点向量之间的欧式距离;根据每一聚类中心与多个网格索引点向量之间的欧式距离是否小于预设阈值,对多个网格索引点进行聚类,确定网格索引点的多个初始类别以及每一初始类别包含的网格索引点个数;根据层次聚类算法,对于网格索引点的多个初始类别中的每两个初始类别,计算两个初始类别之间任意两个网格索引点构建的点向量之间的欧式距离,在两个初始类别之间存在点向量之间的欧式距离小于预设阈值的网格索引点时,将两个初始类别进行合并,重复该步骤,直至网格索引点的类别数量不再变化,得到网格索引点的多个最终类别以及每一最终类别包含的网格索引点个数;根据网格索引点的多个最终类别以及每一最终类别包含的网格索引点个数,确定多个网格索引点中的噪声点,根据点云数据段与多个网格索引点之间的映射关系,确定点云数据段中噪声点对应的噪声数据,去除噪声点对应的噪声数据。
[0195]
通过将点云数据段进行网格投影处理得到多个网格索引点,并对多个网格索引点进行聚类,可以快速确定点云数据中的噪声数据,显著提高点云数据的去噪效率,改善点云数据的去噪效果,满足真实铁路场景下的实时去噪需求。
[0196]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0197]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0198]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0199]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0200]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1