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

一种点云生成方法、装置、设备和存储介质

文献发布时间:2023-06-19 09:29:07


一种点云生成方法、装置、设备和存储介质

技术领域

本申请涉及数据处理技术领域,尤其涉及一种点云生成方法、装置、设备和存储介质。

背景技术

点云生成方法可以应用于三维建模、车辆的自动驾驶测试等场景。现有的点云生成方法主要依赖于基于游戏引擎的光线追踪方法,该方法复杂度高,资源消耗大,难以应用于实时测试和大规模的场景测试,并且该方法采用固定的分辨率,不能根据不同激光雷达的参数生成对应的点云。

发明内容

本申请提供了一种点云生成方法、装置、设备和存储介质,用于解决现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题。

有鉴于此,本申请第一方面提供了一种点云生成方法,包括:

根据激光雷达的参数,将所述激光雷达在空间中的可视区域进行网格划分,得到若干第一网格;

根据所述空间中物体所有表面在所述第一网格中的映射位置,计算每个所述表面的轮廓边界线经过的所述第一网格;

根据每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域,计算每个所述表面对应的覆盖网格;

计算每个所述表面对应的所述覆盖网格到所述激光雷达的深度,并基于每个所述覆盖网格的最小深度生成点云。

可选的,所述根据所述空间中物体所有表面在所述第一网格中的映射位置,计算每个所述表面的轮廓边界线经过的所述第一网格,具体包括:

S1、根据所述空间中物体所有表面在所述第一网格中的映射位置,确定每个所述表面的每条轮廓边界线段的起点和终点;

S2、基于每条所述轮廓边界线段的起点和终点计算每条所述轮廓边界线段的中点;

S3、判断所述轮廓边界线段的中点与该轮廓边界线的起点或终点是否在同一所述第一网格,若是,则进入步骤S4,若否,则进入步骤S5和S6;

S4、输出每条所述轮廓边界线段的所有起点和终点所在的所述第一网格,得到每个所述表面的轮廓边界线经过的所述第一网格;

S5、将所述轮廓边界线段的中点作为新的终点,返回步骤S2;

S6、将所述轮廓边界线段的中点作为新的起点,返回步骤S2。

可选的,所述根据每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域,计算每个所述表面对应的覆盖网格,具体包括:

逐行或逐列扫描每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域,得到每个所述表面对应的覆盖网格。

可选的,所述根据每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域,计算每个所述表面对应的覆盖网格,具体包括:

在每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域中选择一个目标网格,从所述目标网格周围开始遍历所述第一网格,直至遍历的所述第一网格填充满所述封闭区域,得到每个所述表面对应的覆盖网格。

可选的,所述计算每个所述表面对应的所述覆盖网格到所述激光雷达的深度,并基于每个所述覆盖网格的最小深度生成点云,具体包括:

计算每个所述表面对应的所述覆盖网格到所述激光雷达的深度,将每个所述覆盖网格在各所述表面到所述激光雷达的最小深度作为每个所述覆盖网格的最小深度;

基于所述覆盖网格的最小深度生成深度图;

通过所述深度图确定每个所述物体的可见点,生成点云。

可选的,所述通过所述深度图确定每个所述物体的可见点,生成点云,之后还包括:

根据每个所述物体的所述可见点,计算每个所述物体的新物体形状。

可选的,所述基于所述覆盖网格的最小深度生成深度图,之后还包括:

根据所述深度图计算所述激光雷达的不可见点,并基于所述不可见点生成所述激光雷达的盲区。

可选的,所述根据所述深度图计算所述激光雷达的不可见点,具体包括:

计算所述空间中各所述第一网格的中点射线与预置高度处的水平面的交点,所述第一网格的中点射线的端点为所述第一网格的中心点;

当所述交点到所述激光雷达的深度大于所述交点到所述激光雷达的最小深度时,判定所述交点为所述激光雷达的不可见点,其中,所述交点到所述激光雷达的最小深度为所述交点对应的所述中点射线所在的所述第一网格的最小深度,所述第一网格的最小深度通过所述深度图获得。

可选的,所述根据所述深度图计算所述激光雷达的不可见点,具体包括:

将所述空间中目标区域的水平面进行网格划分,得到若干第二网格;

将每个所述第二网格的中心点映射到预置高度,得到映射点;

计算每个所述映射点到所述激光雷达的方位角和距离,所述方位角包括垂直方位角和水平方位角;

通过所述映射点到所述激光雷达的方位角和所述深度图确定所述映射点到所述激光雷达的最小深度;

当所述映射点到所述激光雷达的深度大于所述映射点到所述激光雷达的最小深度时,判定所述映射点为所述激光雷达的不可见点。

可选的,所述通过所述映射点到所述激光雷达的方位角和所述深度图确定所述映射点到所述激光雷达的最小深度,具体包括:

通过所述映射点到所述激光雷达的方位角确定所述映射点所在的所述第一网格;

通过所述深度图确定所述映射点所在的所述第一网格的最小深度,得到所述映射点到所述激光雷达的最小深度。

本申请第二方面提供了一种点云生成装置,包括:

划分单元,用于根据激光雷达的参数,将所述激光雷达在空间中的可视区域进行网格划分,得到若干第一网格;

第一计算单元,用于根据所述空间中物体所有表面在所述第一网格中的映射位置,计算每个所述表面的轮廓边界线经过的所述第一网格;

第二计算单元,用于根据每个所述表面的轮廓边界线经过的所述第一网格构成的封闭区域,计算每个所述表面对应的覆盖网格;

点云生成单元,用于计算每个所述表面对应的所述覆盖网格到所述激光雷达的深度,并基于每个所述覆盖网格的最小深度生成点云。

本申请第三方面提供了一种点云生成设备,所述设备包括处理器以及存储器;

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令第一方面任一种所述的点云生成方法。

本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面任一种所述的点云生成方法。

从以上技术方案可以看出,本申请具有以下优点:

本申请提供了一种点云生成方法,包括:根据激光雷达的参数,将激光雷达在空间中的可视区域进行网格划分,得到若干第一网格;根据空间中物体所有表面在第一网格中的映射位置,计算每个表面的轮廓边界线经过的第一网格;根据每个表面的轮廓边界线经过的第一网格构成的封闭区域,计算每个表面对应的覆盖网格;计算每个表面对应的覆盖网格到激光雷达的深度,并基于每个覆盖网格的最小深度生成点云。

本申请中的点云生成方法,根据激光雷达的参数,对激光雷达的可视区域进行网格划分,对于不同型号的激光雷达,可以划分得到不同的第一网格,进而生成不同的点云;根据物体表面在第一网格中的映射位置计算表面的轮廓边界线经过的第一网格构成的封闭区域,再通过该封闭区域计算得到每个表面的覆盖网格,最后根据每个覆盖网格的最小深度来生成点云,该方法只需要计算激光扫描线在物体表面的落点,计算方法简单,减少了计算资源开销,可以应用于实时测试和大规模的场景测试,解决了现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种点云生成方法的一个流程示意图;

图2为本申请实施例提供的一种点云生成方法的另一个流程示意图;

图3为本申请实施例提供的一种点云生成装置的一个结构示意图;

图4为本申请实施例提供的第一计算单元的一个结构示意图;

图5为本申请实施例提供的第二计算单元的一个结构示意图。

具体实施方式

本申请提供了一种点云生成方法、装置、设备和存储介质,用于解决现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

方法实施例一:

请参阅图1,本申请实施例提供的一种点云生成方法,包括:

步骤101、根据激光雷达的参数,将激光雷达在空间中的可视区域进行网格划分,得到若干第一网格。

不同类型的激光雷达,其参数也不同,根据激光雷达的参数对激光雷达在空间中的可视区域进行网格划分。具体的,假设某32线激光雷达,其垂直方向的可见范围为[-5°,70°],即可视区域在垂直方向的可见范围为[-5°,70°],相应的可以得到每根激光扫描线对应的垂直方向的角度分辨率,假设其水平方向的角度分辨率为3°,即水平方向上,每3°可见一个激光点,则激光雷达旋转一圈后,水平方向有120个角度可见,根据激光雷达的水平方向和垂直方向的角度分辨率,对该激光雷达的可视区域进行网格划分,可以划分得到120*32个第一网格,其中每个第一网格表示一根激光扫描线的一个可见角度。不同激光雷达的激光扫描线的疏密程度也不同,划分得到的结果也不同,相应的,生成的点云也不同;激光雷达有多少条激光扫描线,相应的计算多少个离散点,而且只需计算激光扫描线在物体表面的落点,减少了计算资源开销。

步骤102、根据空间中物体所有表面在第一网格中的映射位置,计算每个表面的轮廓边界线经过的第一网格。

通过扫描空间中每个物体的所有表面,得到每个表面在第一网格中的映射位置,进而可以计算得到每个表面的轮廓边界线经过的第一网格。

可以理解的是,每个表面是由多条线段组成的封闭区域,例如一个矩形的表面是由4条线段组成的矩形封闭区域。根据球坐标与欧式坐标系的单调性与映射的单调性可知,某一个表面中的一个点,在球坐标中的角度坐标必然会被该表面的线段所经过的所有角度坐标所包围。对于存在非连续点的球坐标,可以以非连续点为分界线,将整个球坐标空间划分为两个单调的坐标空间。因此,为了快速计算出一个表面所覆盖的所有可见角度(即覆盖的所有第一网格),先计算该表面中的一条线段所经过的第一网格,再通过该表面的所有线段经过的第一网格构成的封闭区域来计算该表面所覆盖的所有第一网格,得到该表面的覆盖网格。

在一种实施例中,由于一条线段经过的第一网格是单调且连续的,因此,可以计算该线段的起点和终点所在的第一网格,然后计算起点和终点之间的中点所在的第一网格,如果中点与起点,以及中点与终点均不在同一第一网格,继续计算起点与中点之间的中点,以及中点与终点之间的中点,直至中点与起点或终点在同一第一网格,进而计算得到每个表面的轮廓边界线经过的第一网格,其具体计算过程可以为:

S1、根据空间中物体所有表面在第一网格中的映射位置,确定每个表面的每条轮廓边界线段的起点和终点。

可以理解的是,每个表面是由轮廓边界线构成的封闭区域,而轮廓边界线是由多条轮廓边界线段连接而成。根据空间中物体所有表面在第一网格中的映射位置,可以确定每个表面的每条轮廓边界线段的起点和终点,进而可以确定起点和终点所在的第一网格。

S2、基于每条轮廓边界线段的起点和终点计算每条轮廓边界线段的中点。

S3、判断轮廓边界线段的中点与该轮廓边界线的起点或终点是否在同一第一网格,若是,则进入步骤S4,若否,则进入步骤S5和S6。

在计算得到轮廓边界线段的中点后,相应的可以确定该中点所在的第一网格,然后判断该轮廓边界线段的中点所在的第一网格与起点或终点所在的第一网格是否为同一第一网格,当中点所在的第一网格为起点所在的第一网格或终点所在的第一网格时,进入步骤S4;当中点所在的第一网格与起点所在的第一网格或终点所在的第一网格均不为同一网格时,进入步骤S5和S6。

S4、输出每条轮廓边界线段的所有起点和终点所在的第一网格,得到每个表面的轮廓边界线经过的第一网格。

输出每条轮廓边界线段的所有起点和终点所在的第一网格,就得到了轮廓边界线经过的所有第一网格。

S5、将轮廓边界线段的中点作为新的终点,返回步骤S2;

将轮廓边界线段的中点作为新的终点,返回步骤S2,计算该轮廓边界线段的起点和该新的终点之间的中点,直至该轮廓边界线段的中点与起点或终点在同一第一网格。

S6、将轮廓边界线段的中点作为新的起点,返回步骤S2。

将轮廓边界线段的中点作为新的起点,返回步骤S2,计算该轮廓边界线段新的起点和终点之间的中点,直至该轮廓边界线段的中点与起点或终点在同一第一网格。

在另一种实施例中,还可以通过解析几何或迭代法计算每个表面的轮廓边界线经过的第一网格。

步骤103、根据每个表面的轮廓边界线经过的第一网格构成的封闭区域,计算每个表面对应的覆盖网格。

通过前述步骤计算得到每个表面的轮廓边界线经过的第一网格后,相应的就确定了该表面的轮廓边界线经过的第一网格构成的封闭区域,此时还需要计算该封闭区域内覆盖的第一网格,得到该表面覆盖的第一网格,即该表面的覆盖网格。本申请实施例直接计算物体表面的轮廓边界线所经过的第一网格得到该表面对应的封闭区域,进而计算该表面的覆盖网格,相比于现有的光线追踪方法采用固定的分辨率,将物体切分为多个三角形来计算的速度更快,计算方法更简单。

在第一种实施例中,可以遍历所有第一网格,计算落在每个表面的轮廓边界线经过的第一网格构成的封闭区域中的所有第一网格,得到每个表面对应的覆盖网格。假设,某一物体的某一表面的形状为矩形,通过前述步骤可以计算得到该矩形表面的4条轮廓边界线段所经过的第一网格,得到该表面的矩形封闭区域,然后遍历该空间中的所有第一网格,判断各第一网格是否落在该矩形封闭区域中,在遍历完所有的第一网格后,就可以确定落在该矩形封闭区域中的所有第一网格,从而得到该矩形表面的覆盖网格。

在第二种实施例中,在每个表面的轮廓边界线经过的第一网格构成的封闭区域中选择一个目标网格,从目标网格周围开始遍历第一网格,直至遍历的第一网格填充满封闭区域,得到每个表面对应的覆盖网格。可以在各表面中随机选取一点,计算该点对应的第一网格作为目标网格,然后从该目标网格周围开始遍历其他的第一网格,可以是四邻域遍历,也可以是八邻域遍历,当遍历到第一网格为该封闭区域的边界时,不再对该第一网格的四周进行遍历,直至遍历的第一网格填充满该封闭区域,得到该封闭区域的覆盖网格。相比于第一种实施例中的遍历所有的第一网格,该方法计算各表面的覆盖网格的速度更快,计算资源开销更少。

在第三种实施例中,还可以逐行或逐列扫描每个表面的轮廓边界线经过的第一网格构成的封闭区域,得到每个表面的覆盖网格。在扫描过程中,以扫描线的形式逐行或逐列扫描每个封闭区域,第一次扫描到封闭区域的边界线时,继续扫描,扫描到的第一网格标记为该封闭区域的覆盖网格,直至下次扫描到该封闭区域的边界,标记得到的所有覆盖网格为该表面对应的覆盖网格。该方法相比于前述两种方法,通过扫描线方法扫描得到每个表面的覆盖网格的效率更高,更节省计算资源;并且扫描线方法也可以适用于凹多边形。

步骤104、计算每个表面对应的覆盖网格到激光雷达的深度,并基于每个覆盖网格的最小深度生成点云。

前述步骤中通过扫描空间中每个物体的所有表面,得到每个表面在第一网格中的映射位置,从而可以确定每个表面上的点落在哪些第一网格。计算每个表面对应的覆盖网格到激光雷达的深度,即计算物体表面映射到每个覆盖网格中的点到激光雷达的实际距离,每个覆盖网格中可能有多个点,每个点到激光雷达的距离可能不同,使得每个覆盖网格具有不同的深度;也存在某个第一网格没有点落在里面,此时可以默认该第一网格的深度为无穷大。本申请实施例中选取每个覆盖网格的最小深度来生成点云,即通过维护各激光扫描线的最小深度得到点云。由于每个覆盖网格代表一个可见角度,在确定了该覆盖网格的最小深度后,相应的就确定了该覆盖网格对应的物体表面的可见点的球坐标,生成了点云。

本申请中的点云生成方法,根据激光雷达的参数,对激光雷达的可视区域进行网格划分,对于不同型号的激光雷达,可以划分得到不同的第一网格,进而生成不同的点云;根据物体表面在第一网格中的映射位置计算每个表面的轮廓边界线经过的第一网格构成的封闭区域,再通过该封闭区域计算得到每个表面的覆盖网格,最后根据每个覆盖网格的最小深度来生成点云,该方法只需要计算激光扫描线在物体表面的落点,计算方法简单,减少了计算资源开销,可以应用于实时测试和大规模的场景测试,解决了现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题。

以上为本申请提供的一种点云生成方法的实施例一,以下为本申请提供的一种点云生成方法的实施例二。

方法实施例二:

请参阅图2,本申请实施例提供的另一种点云生成方法,包括:

步骤201、根据激光雷达的参数,将激光雷达在空间中的可视区域进行网格划分,得到若干第一网格。

步骤202、根据空间中物体所有表面在第一网格中的映射位置,计算每个表面的轮廓边界线经过的第一网格。

步骤203、根据每个表面的轮廓边界线经过的第一网格构成的封闭区域,计算每个表面对应的覆盖网格。

步骤201至步骤203的具体内容与前述步骤101至步骤103的具体内容一致,在此不再进行赘述。

步骤204、计算每个表面对应的覆盖网格到激光雷达的深度,将每个覆盖网格在各表面到激光雷达的最小深度作为每个覆盖网格的最小深度。

计算每个表面对应的覆盖网格到激光雷达的深度,即计算物体表面映射到每个覆盖网格中的点到激光雷达的实际距离,每个覆盖网格中可能有多个点,每个点到激光雷达的距离可能不同,使得每个覆盖网格具有不同的深度;也存在某个第一网格没有点落在里面,此时默认该第一网格的深度为无穷大。在计算得到每个表面对应的覆盖网格到激光雷达的深度后,将每个覆盖网格在各表面到激光雷达的最小深度作为每个覆盖网格的最小深度。

步骤205、基于覆盖网格的最小深度生成深度图。

在计算得到每个覆盖网格的最小深度后,基于覆盖网格的最小深度生成深度图,深度图中的每个像素点可以表示为[a,b,d],其中,a、b为该像素点对应的覆盖网格的中心点的水平方向和垂直方向的可见角度,d为该覆盖网格的最小深度。

步骤206、通过深度图确定每个物体的可见点,生成点云。

通过该深度图可以确定每个物体表面的可见点的球坐标角度和深度,其中,球坐标角度通过该深度图中像素点的水平方向和垂直方向的可见角度确定。将所有可见点在球坐标下的坐标转换为空间直角坐标系下的坐标,得到了点云。例如,通过深度图确定某可见角度为[a,b],该可见角度对应的深度为d,可以通过三角函数计算得到该方向的单位向量(x',y',z'),假设激光雷达坐标为(x

在一种实施例中,步骤205之后还包括:

步骤207、根据深度图计算激光雷达的不可见点,并基于不可见点生成激光雷达的盲区。

在一种实施例中,根据深度图计算激光雷达的不可见点的具体过程为:

A1、计算空间中各第一网格的中点射线与预置高度处的水平面的交点,第一网格的中点射线的端点为第一网格的中心点。

根据用户配置的参数,确定一个最高可见高度h,即预置高度h。如果激光雷达由于遮挡原因,无法扫描到点(x,y,h),则判定该点(x,y,h)为该激光雷达的一个不可见点。

在用户配置好预置高度h后,可以扫描所有第一网格,可以通过解析几何方法计算各第一网格的中点射线与预置高度h处的水平面(即z=h)的交点,可以理解的是,第一网格的中点射线的端点为第一网格的中心点。

A2、当交点到激光雷达的深度大于交点到激光雷达的最小深度时,判定交点为激光雷达的不可见点。

计算得到交点后,计算该交点到激光雷达的深度,当该交点到激光雷达的深度大于该交点到激光雷达的最小深度时,认为该交点被遮挡了,判定该交点为激光雷达的不可见点,其中,交点到激光雷达的最小深度为该交点对应的中点射线所在的第一网格的最小深度,第一网格的最小深度通过深度图获得。

在另一种实施例中,根据深度图计算激光雷达的不可见点的具体过程可以为:

B1、将空间中目标区域的水平面进行网格划分,得到若干第二网格。

目标区域根据具体的应用场景进行具体的设置,在自动驾驶测试时,目标区域可以为自动驾驶车辆的关注区域。将空间中目标区域的水平面进行网格划分,得到若干第二网格。可以理解的是,将空间中目标区域的水平面进行网格划分,与前述将激光雷达的可视区域进行网格划分是基于同一坐标原点,不同的是,前者是基于欧式坐标系对目标区域进行网格划分,后者为基于球坐标系对可视区域进行网格划分。

B2、将每个第二网格的中心点映射到预置高度,得到映射点。

将目标区域的水平面进行网格划分后,每个第二网格的中心点可以表示为(x,y),将第二网格的中心点映射到预置高度h,得到映射点(x,y,h)。

B3、计算每个映射点到激光雷达的方位角和距离,方位角包括垂直方位角和水平方位角。

B4、通过映射点到激光雷达的方位角和深度图确定映射点到激光雷达的最小深度。

计算每个映射点(x,y,h)到激光雷达o(0,0,0)的方位角和距离,根据每个映射点(x,y,h)相对于激光雷达o(0,0,0)的方位角,可以确定该映射点(x,y,h)所在的第一网格,通过深度图相应的可以确定该第一网格的最小深度,将该第一网格的最小深度作为该映射点(x,y,h)到激光雷达的最小深度。

B5、当映射点到激光雷达的深度大于映射点到激光雷达的最小深度时,判定映射点为激光雷达的不可见点。

当映射点到激光雷达的深度大于映射点到激光雷达的最小深度时,认为该映射点被遮挡了,判定该映射点为激光雷达的不可见点。

通过上述两种方式可以计算得到激光雷达的不可见点,将该不可见点作为盲区点加入盲区,从而生成了该激光雷达的盲区。对于自动驾驶的实时场景测试中,通过前述方法计算得到该自动驾驶车辆的盲区,可以模拟真实的车辆行驶环境,适用于自动驾驶车辆测试。

在另一种实施例中,在步骤206之后,还包括:

步骤208、根据每个物体的可见点,计算每个物体的新物体形状。

通过生成的深度图确定每个物体表面的可见点,通过可见点可以计算每个物体的新物体形状。具体的,可以通过三维凸包算法计算每个物体的新物体形状,该新物体形状为模拟激光雷达在盲区下所能检测到的物体形状。其中,通过三维凸包算法计算每个物体的物体形状属于现有技术,在此不再进行赘述。

本申请中的点云生成方法,根据激光雷达的参数,对激光雷达的可视区域进行网格划分,对于不同型号的激光雷达,可以划分得到不同的第一网格,进而生成不同的点云;根据物体表面在第一网格中的映射位置计算每个表面的轮廓边界线经过的第一网格构成的封闭区域,再通过该封闭区域计算得到每个表面的覆盖网格,最后根据每个覆盖网格的最小深度来生成点云,该方法只需要计算激光扫描线在物体表面的落点,计算方法简单,减少了计算资源开销,可以应用于实时测试和大规模的场景测试,解决了现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题;

进一步,本申请实施例根据生成的深度图计算激光雷达的不可见点以生成盲区以及盲区下的物体形状,可以模拟激光雷达在盲区下所能检测到的物体形状;对于自动驾驶车辆的关注区域,可以检测激光雷达的激光扫描线是否能够到达该关注区域来生成盲区,适用于自动驾驶的实时与大规模的场景测试;并且,本申请实施例考虑了每个激光雷达的激光扫描线的不同疏密程度,可以根据不同激光雷达的参数来生成对应的盲区。

以为本申请提供的一种点云生成方法的实施例二,以下为本申请提供的一种点云生成装置的实施例。

请参考图3,本申请实施例提供的一种点云生成装置包括:

划分单元301,用于根据激光雷达的参数,将激光雷达在空间中的可视区域进行网格划分,得到若干第一网格;

第一计算单元302,用于根据空间中物体所有表面在第一网格中的映射位置,计算每个表面的轮廓边界线经过的第一网格;

第二计算单元303,用于根据每个表面的轮廓边界线经过的第一网格构成的封闭区域,计算每个表面对应的覆盖网格;

点云生成单元304,用于计算每个表面对应的覆盖网格到激光雷达的深度,并基于每个覆盖网格的最小深度生成点云。

作为进一步地改进,请参考图4,第一计算单元302具体包括:

确定子单元3021,用于根据空间中物体所有表面在第一网格中的映射位置,确定每个表面的每条轮廓边界线段的起点和终点;

计算子单元3022,用于基于每条轮廓边界线段的起点和终点计算每条轮廓边界线段的中点;

判断子单元3023,用于判断轮廓边界线段的中点与该轮廓边界线的起点或终点是否在同一第一网格,若是,则触发输出子单元3024,若否,则触发第一触发子单元3025和第二触发子单元3026;

输出子单元3024,用于输出每条轮廓边界线段的所有起点和终点所在的第一网格,得到每个表面的轮廓边界线经过的第一网格;

第一触发子单元3025,用于将轮廓边界线段的中点作为新的终点,触发计算子单元3022;

第二触发子单元3026,用于将轮廓边界线段的中点作为新的起点,触发计算子单元3022。

作为进一步地改进,请参考图5,第二计算单元303具体包括:

扫描子单元3031,用于逐行或逐列扫描每个表面的轮廓边界线经过的第一网格构成的封闭区域,得到每个表面对应的覆盖网格。

作为进一步地改进,请参考图5,第二计算单元303还包括:

遍历子单元3032,用于在每个表面的轮廓边界线经过的第一网格构成的封闭区域中选择一个目标网格,从目标网格周围开始遍历第一网格,直至遍历的第一网格填充满封闭区域,得到每个表面对应的覆盖网格。

作为进一步地改进,点云生成单元304具体用于:

计算每个表面对应的覆盖网格到激光雷达的深度,将每个覆盖网格在各表面到激光雷达的最小深度作为每个覆盖网格的最小深度;

基于覆盖网格的最小深度生成深度图;

通过深度图确定每个物体的可见点,生成点云。

作为进一步地改进,装置还包括:

第三计算单元305,用于根据每个物体的可见点,计算每个物体的新物体形状。

作为进一步地改进,装置还包括:

盲区生成单元306,用于根据深度图计算激光雷达的不可见点,并基于不可见点生成激光雷达的盲区。

作为进一步地改进,盲区生成单元306具体用于:

计算空间中各第一网格的中点射线与预置高度处的水平面的交点,第一网格的中点射线的端点为第一网格的中心点;

当交点到激光雷达的深度大于交点到激光雷达的最小深度时,判定交点为激光雷达的不可见点,其中,交点到激光雷达的最小深度为交点对应的中点射线所在的第一网格的最小深度,第一网格的最小深度通过深度图获得;

基于不可见点生成激光雷达的盲区。

作为进一步地改进,盲区生成单元306具体用于:

将空间中目标区域的水平面进行网格划分,得到若干第二网格;

将每个第二网格的中心点映射到预置高度,得到映射点;

计算每个映射点到激光雷达的方位角和距离,方位角包括垂直方位角和水平方位角;

通过映射点到激光雷达的方位角和深度图确定映射点到激光雷达的最小深度;

当映射点到激光雷达的深度大于映射点到激光雷达的最小深度时,判定映射点为激光雷达的不可见点;

基于不可见点生成激光雷达的盲区。

本申请实施例中的点云生成装置,根据激光雷达的参数,对激光雷达的可视区域进行网格划分,对于不同型号的激光雷达,可以划分得到不同的第一网格,进而生成不同的点云;根据物体表面在第一网格中的映射位置计算每个表面的轮廓边界线经过的第一网格构成的封闭区域,再通过该封闭区域计算得到每个表面的覆盖网格,最后根据每个覆盖网格的最小深度来生成点云,只需要计算激光扫描线在物体表面的落点,计算方法简单,减少了计算资源开销,解决了现有的点云生成方法依赖于基于游戏引擎的光线追踪方法,存在复杂度高,计算资源消耗大,难以应用于实时测试和大规模的场景测试,以及不能根据不同激光雷达的参数生成对应的点云的技术问题;

进一步,本申请实施例根据生成的深度图计算激光雷达的不可见点以生成盲区以及盲区下的物体形状,可以模拟激光雷达在盲区下所能检测到的物体形状;对于自动驾驶车辆的关注区域,可以检测激光雷达的激光扫描线是否能够到达该关注区域来生成盲区,适用于自动驾驶的实时与大规模的场景测试;并且,本申请实施例考虑了每个激光雷达的激光扫描线的不同疏密程度,可以根据不同激光雷达的参数来生成对应的盲区。

本申请实施例还提供一种点云生成设备,设备包括处理器以及存储器;

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行前述方法实施例一和二中任一种点云生成方法。

本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述方法实施例一和二中任一种点云生成方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:RandomAccess Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 一种仿真点云数据的生成方法、装置、设备及存储介质
  • 一种点云生成方法、装置、设备和存储介质
技术分类

06120112188745