发明内容
有鉴于此,本发明提供一种获取激光点云密度的方法和装置、以及非易失性计算机可读存储介质和电子设备,以提高点云密度的获取效率。
本发明的技术方案是这样实现的:
一种获取激光点云密度的方法,包括:
获取激光点云中的各个激光点的坐标数据;
根据点云中各个激光点的坐标数据确定所述点云的外包围盒;
将所述外包围盒进行单元块切分,并记录所述点云中各个激光点所属的单元块,以及每个单元块中的激光点的数量;
接收在所述点云中所选择的任一点坐标,根据所述任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定所述任一点坐标的局域激光点密度;
根据所述点云中的激光点的总数量和所有单元块的权重体积之和,确定所述激光点云的平均激光点密度。
进一步,所述的根据所述任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定所述任一点坐标任一点坐标的局域激光点密度,包括:
确定所述任一点坐标所处的单元块;
获取所述任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量;
获取所述任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块并获得该含有至少一个激光点的全部单元块的总体积;
由所述任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量和所述任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积,确定所述任意一点坐标的局域激光点密度。
进一步,所述的由所述任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量和所述任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积,确定所述任意一点坐标的局域激光点密度,包括:
将所述任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量与所述任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积相除的结果作为所述任意一点坐标的局域激光点密度。
进一步,所述单元块的权重体积由单元块的体积和该单元块的体积权重值确定。
进一步,所述单元块的权重体积为该单元块的体积和该单元块的体积权重值的乘积。
进一步,所述体积权重值由该单元块中的激光点的数量、该单元块的邻域半径范围内的单元块中的激光点的数量确定。
进一步,若该单元块中的激光点数量为0,则该单元块的体积权重值为0;
若该单元块中的激光点数量不为0,并且该单元块的邻域半径范围内的每一个单元块中的激光点数量也不为0,则该单元块的体积权重值为1;
若该单元块中的激光点数量不为0,并且该单元块的邻域半径范围内存在体积权重值为0的单元块,则该单元块的体积权重值为0.5。
一种获取激光点云密度的装置,包括:
数据获取单元,获取激光点云中的各个激光点的坐标数据;
外包围盒确定单元,根据点云中各个激光点的坐标数据确定所述点云的外包围盒;
切分统计单元,将所述外包围盒进行单元块切分,并记录所述点云中各个激光点所属的单元块,以及每个单元块中的激光点的数量;
局域密度确定单元,接收在所述点云中所选择的任一点坐标,根据所述任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定所述任一点坐标的局域激光点密度;以及
平均密度确定单元,根据所述点云中的激光点的总数量和所有单元块的权重体积之和,确定所述激光点云的平均激光点密度。
一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的获取激光点云密度的方法中的步骤。
一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如上任一项所述的获取激光点云密度的方法中的步骤。
从上述方案可以看出,本发明的获取激光点云密度的方法和装置,基于空间切分,将无序存储的不规则三维点云转化为规则有序的单元块,替代了现有方法中采用的全局近邻搜索的方法,提高了激光点云密度的获取效率。本发明的方法和装置既适用于单点密度计算也适用于区域平均密度计算。在单点密度计算中,首先根据点位坐标确定当前三维点所处的空间体素,然后以当前体素为中心获取点云局部分布信息,实现点云密度实时获取。在区域平均密度计算中,根据每一体素块及其邻域体素块内包含点云的实际情况来对空间体素块进行类别标记,并通过遍历体素块,得到当前点云的全局分布信息,最终结合区域三维点的总数量实现点云平均密度的获取。
此外,在本发明所公开方案的精神和原则下,本发明实施例的方法和装置在可以快速的获取三维空间中点云密度以外,还可以方便的扩展到二维投影点云密度的获取上,这进一步增强了本发明实施例的实用性。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
如图1所示,本发明实施例的获取激光点云密度的方法,包括:
步骤1、获取激光点云中的各个激光点的坐标数据;
步骤2、根据点云中各个激光点的坐标数据确定点云的外包围盒;
步骤3、将外包围盒进行单元块切分,并记录点云中各个激光点所属的单元块,以及每个单元块中的激光点的数量;
步骤4、接收在点云中所选择的任一点坐标,根据该任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定该任一点坐标的局域激光点密度;
步骤5、根据点云中的激光点的总数量和所有单元块的权重体积之和,确定激光点云的平均激光点密度。
需要说明的是上述方法中的各个步骤之间没有必要的先后执行顺序,特别是步骤4和步骤5之间并非先后的执行关系。本领域技术人员依据本发明的精神和原则可直接在前述步骤1、2、3之后直接采用步骤4或者直接采用步骤5来获取局域激光点密度或者平均激光点密度。
另外,本发明实施例中,点云特指为激光点云。激光点云也称为点云,是利用激光在同一空间参考系下获取物体表面每个采样点的空间坐标,得到的是一系列表达目标空间分布和目标表面特性的海量点的集合,这个点集合就称之为“点云”。
在一个具体实施例中,在步骤4中,所述的根据任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定该任一点坐标的局域激光点密度,具体包括:
步骤401、确定该任一点坐标所处的单元块;
步骤402、获取该任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量;
步骤403、获取该任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块并获得该含有至少一个激光点的全部单元块的总体积;
步骤404、由该任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量和该任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积,确定该任意一点坐标的局域激光点密度。
进一步地,在一个具体实施例中,在上述步骤404中,所述的由该任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量和该任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积,确定该任意一点坐标的局域激光点密度,具体包括:
将该任一点坐标所处的单元块的邻域半径范围内的所有单元块中的激光点的总数量与该任一点坐标所处的单元块的邻域半径范围内的含有至少一个激光点的全部单元块的总体积相除的结果作为该任意一点坐标的局域激光点密度。
在一个具体实施例中,单元块的权重体积由单元块的体积和该单元块的体积权重值来确定。在本发明实施例中,单元块的权重体积为该单元块的体积和该单元块的体积权重值的乘积。需要补充说明的是,单元块的权重体积可利用一定的规则,由该单元块的体积和该单元块的体积权重值来确定,该规则可以在本发明实施例的精神和原则指导下进行修改,如修改其中的运算规则等等。
在一个具体实施例中,体积权重值由该单元块中的激光点的数量、该单元块的邻域半径范围内的单元块中的激光点的数量确定。具体地,在一个具体实施例中,若该单元块中的激光点数量为0,则该单元块的体积权重值为0;若该单元块中的激光点数量不为0,并且该单元块的邻域半径范围内的每一个单元块中的激光点数量也不为0,则该单元块的体积权重值为1;若该单元块中的激光点数量不为0,并且该单元块的邻域半径范围内存在体积权重值为0的单元块,则该单元块的体积权重值为0.5。
在一个具体实施例中,步骤5中,所述的根据点云中的激光点的总数量和所有单元块的权重体积之和,确定激光点云的平均激光点密度,包括:
将点云中的激光点的总数量与所有单元块的权重体积之和相除的结果,作为激光点云的平均激光点密度。
同时,本发明实施例还提供了一种获取激光点云密度的装置,如图2所示,该获取激光点云密度的装置包括数据获取单元、外包围盒确定单元、切分统计单元、局域密度确定单元和平均密度确定单元。其中,数据获取单元,用于获取激光点云中的各个激光点的坐标数据。外包围盒确定单元,用于根据点云中各个激光点的坐标数据确定点云的外包围盒。切分统计单元,用于将外包围盒进行单元块切分,并记录点云中各个激光点所属的单元块,以及每个单元块中的激光点的数量。局域密度确定单元,用于接收在点云中所选择的任一点坐标,根据该任一点坐标所处的单元块的邻域半径的范围内的单元块中的激光点的数量和单元块的体积,确定该任一点坐标的局域激光点密度;平均密度确定单元,用于根据点云中的激光点的总数量和所有单元块的权重体积之和,确定激光点云的平均激光点密度。
上述各个单元的具体执行过程可参照前述的获取激光点云密度的方法中的各个对应步骤,以及下述中的具体实施例的对应内容执行。
以下,对本发明实施例的获取激光点云密度的方法和装置进行进一步具体说明。
本发明实施例的目的主要在于,如何以较高的效率实现激光点云密度的高效便捷的获取。为此,本发明实施例提出了一种基于空间切分的点云密度获取方法。该方法将无序存储的不规则三维点云转化为规则有序的空间体素(即单元块),替代了现有方法中采用的全局近邻搜索的方法,提高了激光点云密度的获取效率。
本发明实施例的方法和装置既适用于单点密度计算也适用于区域平均密度计算。在单点密度计算中,本发明实施例首先根据点位坐标确定当前三维点所处的空间体素,然后以当前体素为中心获取点云局部分布信息,实现点云密度实时获取。在区域平均密度计算中,本发明实施例根据每一体素块及其邻域体素块内包含点云的实际情况来对空间体素块进行类别标记,并通过遍历体素块,得到当前点云的全局分布信息,最终结合区域三维点的总数量实现点云平均密度的获取。
此外,在本发明所公开方案的精神和原则下,本发明实施例的方法和装置在可以快速的获取三维空间中点云密度以外,还可以方便的扩展到二维投影点云密度的获取上,这进一步增强了本发明实施例的实用性。
如图3所示,本发明实施例中,将整个技术方案分成体素构建、局部密度计算、平均密度计算三个部分。其中体素构建阶段是对点云数据进行预处理的过程,其结果是将点云进行空间切分,建立空间索引,得到包含点云分布信息的体素块集合。最终,借助于这些事先构建好的体素块,实现三维点云局部密度与平均密度的快速实时获取。下面分别对其中的每一步骤进行详细介绍。
体素构建
在体素构建阶段,本发明实施例首先统计当前点云中包含的三维点(激光点)总数量N,然后按下式计算点云的外包围盒信息(Xmin,Ymin,Zmin)及(Xmax,Ymax,Zmax)。
在公式(1)中,Xmin表示包围盒在X轴坐标中的最小值,Xmax表示包围盒在X轴坐标中的最大值,Ymin表示包围盒在Y轴坐标中的最小值,Ymax表示包围盒在Y轴坐标中的最大值,Zmin表示包围盒在Z轴坐标中的最小值,Zmax表示包围盒在Z轴坐标中的最大值,min()表示对括号中的变量取最小值,max()表示对括号中的变量取最打值,Pi(X)表示第i个三维点的X轴坐标,Pi(Y)表示第i个三维点的Y轴坐标,Pi(Z)表示第i个三维点的Z轴坐标。
之后,按照图4对包围盒空间进行体素块切分。其中Lx为包围盒的长度,Lx=Xmax-Xmin,Ly为包围盒的宽度,Ly=Ymax-Ymin,Lz为包围盒的高度,Lz=Zmax-Zmin。Vx、Vy、Vz分别表示体素块单元沿着X轴、Y轴、Z轴三个轴向的尺寸。最终,整个包围盒被切分成M个体素块,M=[Lx/Vx]·[Ly/Vy]·[Lz/Vz],其中[]代表对其中的参数向上取整。
在完成空间切分后,按照公式(2)依次计算点云中的每个空间三维点所处的体素块的索引号(i,j,k),并记录落入每个体素块中的三维点的数量Oi,j,k,其中{}代表对其中的参数向下取整。最终,通过带有点云分布信息的空间体素构建,实现了空间三维点与空间体素块间的一一对应。
其中,P(X)、P(Y)、P(Z)表示索引号为(i,j,k)的体素块中的某个三维点的坐标。
局部密度计算
在进行局部密度计算过程中,对某一待进行密度计算的空间三维点P(X,Y,Z),首先按照公式(2)计算当前点所处的体素块编号(i,j,k),然后通过收集体素块邻域范围内的点云分布信息来计算当前点的真实密度。具体来说,假设当前点所处的体素块编号为(i,j,k),设定的邻域半径为r,则首先根据上一步骤中记录的每一体素块中包含的三维点数量计算邻域范围内三维点总数,然后以当前体素块是否包含三维点为依据计算出邻域范围内有效的体素块个数及有效体素块的总体积,最后将三维点个数与有效体素块总体积做除法运算,得到当前点的密度ρ,具体计算公式如下式(3)所示。
公式(3)中,Φ(x)为当前体素块是否有效的判别函数,在本发明实施例中,如果某一体素块中未包含任何三维点,则该体素块被标记为无效体素块,其具体定义形式如公式(4):
平均密度计算
由于在上一步的体素构建步骤中,已得到了点云中包含的空间三维点总数N,在此步骤中,首先计算出点云分布的空间体积,然后将两者进行除法运算,最终得到点云平均密度。
如公式(5)所示,本发明实施例通过对体素块的体积进行累加的方式,来计算点云分布的空间体积,进而得到点云的平均密度。
公式(5)中,ρavg为点云的平均密度,Mx、My、Mz分别为体素块在X、Y、Z三个轴向上的分布数量,Ψ(Oi,j,k)为体素块(i,j,k)的体积权重度量函数,其定义见公式(6)、公式(7):
为了精确地计算出点云分布的空间体积,本发明实施例中,依照公式(6)所示准则将体素块分为三个类别,并在计算点云空间体积时为每类体素块赋予不同的权重。即,若体素块中未包含任何三维点,Oi,j,k≤0,则认为该区域范围内没有点云分布,其权重为0,在计算点云空间体积时不计入该区域;若当前体素块内包含三维点,Oi,j,k>0,且与其相邻的半径为r范围内的所有体素块均为非空,则认为该体素块被点云所占满,在计算点云空间体积时将该区域全部计入,其权重为1;若当前体素块内包含三维点,Oi,j,k>0,但与其相邻的半径为r范围内存在权重为0的空体素块,则认为该体素块被点云部分占满,在计算点云空间体积时将该区域一半的体积计入,其权重记为0.5。
为了便于说明,以图5所示的二维空间中点云密度的计算为例对体素块类别标记效果进行展示,图5中体素块共有25个,即M=25,其中在X轴上Mx=5,在Y轴上My=5在Z轴上Mz=1。现假设所有点云分布在图5中不规则多边形范围内,在经过上述的体素块类别标记后,图中被黑色圆圈、灰色圆圈、白色圆圈标识的体素块的权重分别被置为0、0.5及1。通过对所有体素块的体积进行加权累加,不规则多边形区域的体积被近似求解。由图5可见,黑色标识体素块位于不规则多边形外部,灰色标识体素块位于不规则多边形边界,而白色标识体素块位于不规则多边形内部,这种分布是非常合理的。因此,通过上述步骤得到的点云空间体积及点云平均密度是可靠的。
本发明实施例还同时提供一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质存储指令,该指令在由处理器执行时使得所述处理器执行如上述说明中的获取激光点云密度的方法中的各个步骤。
本发明实施例还同时提供一种执行追踪调度方法的电子设备,如图6所示,该电子设备包括:至少一个处理器1以及存储器2。存储器2和至少一个处理器1通信连接,例如存储器2和至少一个处理器1通过总线连接。存储器2存储有可被至少一个处理器1执行的指令,所述指令被至少一个处理器1执行,以使至少一个处理器1执行如上述说明中的获取激光点云密度的方法中的各个步骤。
本发明实施例的获取激光点云密度的方法和装置,基于空间切分,将无序存储的不规则三维点云转化为规则有序的单元块,替代了现有方法中采用的全局近邻搜索的方法,提高了激光点云密度的获取效率。本发明实施例的方法和装置既适用于单点密度计算也适用于区域平均密度计算。在单点密度计算中,本发明实施例首先根据点位坐标确定当前三维点所处的空间体素,然后以当前体素为中心获取点云局部分布信息,实现点云密度实时获取。在区域平均密度计算中,本发明实施例根据每一体素块及其邻域体素块内包含点云的实际情况来对空间体素块进行类别标记,并通过遍历体素块,得到当前点云的全局分布信息,最终结合区域三维点的总数量实现点云平均密度的获取。
此外,在本发明所公开方案的精神和原则下,本发明实施例的方法和装置在可以快速的获取三维空间中点云密度以外,还可以方便的扩展到二维投影点云密度的获取上,这进一步增强了本发明实施例的实用性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。