发明内容
针对现有技术存在的不足,本发明提出一种地面点云快速滤波方法、装置、设备及存储介质,以解决现有技术中存在的点云密集、范围较大时运算效率低的技术问题。
一种地面点云快速滤波方法,所述方法包括:根据预设的单块点云的点数阈值,对获取到的点云数据进行分块,得到多个分块点云;基于各个所述分块点云,建立多个保留地形特征的抽稀格网并行抽稀,得到各个所述分块点云的抽稀点集;采用改进的渐进加密三角网算法对各个所述分块点云的所述抽稀点集进行滤波,提取各个分块点云的地面点集;合并各个所述分块点云的所述地面点集,得到整体地面点云,完成地面点云滤波。
在其中一个实施例中,根据预设的单块点云的点数阈值,对获取到的点云数据进行分块,得到多个分块点云步骤,包括:对获取到的点云数据建立平面直角坐标系x-o-y,并设平面直角坐标系中点云数据对应x轴和y轴的最小值和最大值分别Xmin、Ymin、Xmax、Ymax;设置点云分块的初始尺寸为D,对所述点云数据进行划分,分块的行、列数R、C分别如下所示,
设i点坐标为(xi,yi,zi),对应分块行、列号ri、ci如下所示,
其中floor为向下取整函数,且行、列号从0开始计数;设单块点云最大点数阈值为N,统计各分块点云点数,设第i块点数为Ni,比较Ni与N之间的大小;若Ni≤N,停止划分,完成点云数据的分块。
在其中一个实施例中,设单块点云最大点数阈值为N,统计各分块点云点数,设第i块点数为Ni,比较Ni与N之间的大小步骤之后,还包括:若Ni>N,更新所述初始尺寸为原初始尺寸的一半,迭代重复上述点云数据划分步骤,直到所有分块点云的点数均不超过N时,完成点云数据的分块。
在其中一个实施例中,基于各个所述分块点云,建立多个保留地形特征的抽稀格网并行抽稀,得到各个所述分块点云的抽稀点集步骤,包括:对每个所述分块点云建立平面直角坐标系xs-o-ys,并设平面直角坐标系中点云数据对应xs轴和ys轴的最小值和最大值分别Xsmin、Ysmin、Xsmax、Ysmax;设置格网尺寸为Ds,对各个所述分块点云进行格网划分,格网行、列数Rs、Cs分别为:
设j点坐标为(xj,yj,zj),对应格网行、列号rj、cj如下所示,
其中floor为向下取整函数,且行、列号从0开始计数;统计格网内最低点Plow及其高程Hlow、最高点Phigh及其高程Hhigh,计算高差Hdiff=Hhigh-Hlow;设定高差阈值Hmax,并判断Hdiff与Hmax的大小;若Hdiff≤Hmax,选取格网最低点为抽稀点,得到各个所述分块点云的抽稀点集。
在其中一个实施例中,设定高差阈值Hmax,并判断Hdiff与Hmax的大小步骤之后,还包括:若Hdiff>Hmax,更新格网尺寸Ds为原格网尺寸Ds的一半,迭代重复上述分块点云格网划分步骤,直到所有格网满足Hdiff≤Hmax,得到各个所述分块点云的抽稀点集为止。
在其中一个实施例中,所述采用改进的渐进加密三角网算法对各个所述分块点云的所述抽稀点集进行滤波,提取各个分块点云的地面点集步骤,包括:S301对每个所述分块点云的抽稀点集建立平面直角坐标系xt-o-yt,并设平面直角坐标系中点云数据对应xt轴和yt轴的最小值和最大值分别Xtmin、Ytmin、Xtmax、Ytmax;S302设置格网尺寸为Dt,对各个所述分块点云的抽稀点集进行格网划分,格网行、列数Rt、Ct分别为:
设j点坐标为(xk,yk,zk),对应格网行、列号rk、ck如下所示,
其中floor为向下取整函数,且行、列号从0开始计数;S303取每个格网的最低点纳入地面点集中,将所有点的轮次标记为0并构建初始三角剖分的三角网,将其余点作为待判定点纳入待判定点集中;S304将待判定点集作为当前输入点集,取其第一点作为当前判定点P,进入步骤S305;S305查找点P在所述三角网中对应的三角形,若点P的平面投影坐标(xp,yp)位于三角形T的平面投影三角形内部或边上,所述三角形T为点P的对应三角形;S306若所述三角形T的锁定状态为true,将点P纳入排除点集,进入步骤S311,否则进入步骤S307;S307设所述三角形T的3条边长分别为C1、C2、C3,取其最大值为Cmax,设三角形边长阈值为Cv,若Cmax≤Cv,将所述三角形T的锁定状态设为true,并将点P作为排除点,纳入排除点集中,进入步骤S311,若Cmax>Cv,进入步骤S308;S308设所述三角形T的3个顶点分别为V1、V2、V3,对应的轮次标记分别为K1、K2、K3,取其中最大值Kmax为该三角形T的轮次标记,设当前迭代次数为i(i≥Kmax+1),若i=Kmax+1,进入步骤S309,若i>Kmax+1,将所述三角形T的锁定状态设为true,并将点P作为排除点,纳入排除点集中,进入步骤S311;S309计算点P到所述三角形T的距离dt和夹角θt,设距离阈值及角度阈值分别为dmax和θmax,若满足dt≤dmax且θt≤θmax,将点P纳入所述地面点集,更新所述地面点集,同时将点P的轮次标记为i,否则将点P纳入所述待判定点集中,更新所述待判定点集,进入步骤S311;S310对更新后的地面点集重新构建三角剖分的三角网;S309取当前输入点集中的下一点作为判定点P,重复上述步骤S305至S310,直至所有输入点遍历完成,遍历完成后迭代次数i在原有数值上加1;S312将更新后的待判定点集作为输入进入下一次迭代,直至三角网不再变化或迭代次数i达到迭代上限Imax。
一种地面点云快速滤波装置,其特征在于,包括点云分块模块、点云抽稀模块、点云滤波模块和地面点云模块,其中:所述点云分块模块用于,根据预设的单块点云的点数阈值,对获取到的点云数据进行分块,得到多个分块点云;所述点云抽稀模块用于,基于各个所述分块点云,建立多个保留地形特征的抽稀格网并行抽稀,得到各个所述分块点云的抽稀点集;所述点云滤波模块用于,采用改进的渐进加密三角网算法对各个所述分块点云的所述抽稀点集进行滤波,提取各个分块点云的地面点集;所述地面点云模块用于,合并各个所述分块点云的所述地面点集,得到整体地面点云,完成地面点云滤波。
一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各个实施例中所述的一种地面点云快速滤波方法的步骤。
一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述各个实施例中所述的一种地面点云快速滤波方法的步骤。
由上述一种地面点云快速滤波方法、装置、设备及存储介质可知,本发明通过首先对点云数据进行分块,对个分块点云采用顾及地形特征的多级格网抽稀算法进行抽稀,然后对抽稀后的点云数据采用改进的渐进加密三角网算法提取地面点,最后将各分块提取的地面点合并,完成地面点云滤波。
本发明的有益技术效果如下:
(1)本发明首先对点云进行分块,各分块点云并行处理,可提高处理效率。
(2)本发明在地面点滤波前对各点云采用顾及地形特征的算法进行抽稀,在保留地面特征点同时大幅减少冗余点云。
(3)本发明通过三角网顶点轮次标记及三角形最短边长控制、三角形锁定等方式,减少了计算步骤和过程,同时避免过密的地面点提取。
综上所述,本方法与传统渐进加密三角网滤波算法相比,显著提高了滤波效率和效果。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
在一个实施例中,如图1所示,提供了一种地面点云快速滤波方法,包括以下步骤:
S1根据预设的单块点云的点数阈值,对获取到的点云数据进行分块,得到多个分块点云。
在一个实施例中,步骤S1包括:对获取到的点云数据建立平面直角坐标系x-o-y,并设平面直角坐标系中点云数据对应x轴和y轴的最小值和最大值分别Xmin、Ymin、Xmax、Ymax;对点云数据进行划分,并设置点云分块的初始尺寸为D,分块的行、列数R、C分别如下所示,
设i点坐标为(xi,yi,zi),对应分块行、列号ri、ci如下所示,
其中floor为向下取整函数,即取floor函数表述式中小于该函数的最大整数值,且行、列号从0开始计数;
设单块点云最大点数阈值为N,统计各分块点云点数,设第i块点数为Ni,比较Ni与N之间的大小;若Ni≤N,停止划分,完成点云数据的分块。
在一个实施例中,上述实施例中,步骤设单块点云最大点数阈值为N,统计各分块点云点数,设第i块点数为Ni,比较Ni与N之间的大小之后,还包括:若Ni>N,更新初始尺寸为原初始尺寸的一半,迭代重复上述点云数据划分步骤,直到所有分块点云的点数均不超过N时,完成点云数据的分块。
具体地,采用上述关于步骤S1实施例中的方法对获取到的点云数据进行分块,能够既确保各分块点云数量不超过阈值,又避免了产生大量点数过少的分块。其中,更新初始尺寸为原初始尺寸的一半的程序展示即为:令初始尺寸D=D/2。采用上述方法处理,初始分块尺寸D及单块点云的点数阈值N可根据点云范围、密度及计算机性能进行确定。
S2基于各个分块点云,建立多个保留地形特征的抽稀格网并行抽稀,得到各个分块点云的抽稀点集。
在一个实施例中,步骤S2包括:对每个分块点云建立平面直角坐标系xs-o-ys,并设平面直角坐标系中点云数据对应xs轴和ys轴的最小值和最大值分别Xsmin、Ysmin、Xsmax、Ysmax;对各个分块点云进行格网划分,并设置格网尺寸为Ds,格网行、列数Rs、Cs分别为:
设j点坐标为(xj,yj,zj),对应格网行、列号rj、cj如下所示,
其中floor为向下取整函数,且行、列号从0开始计数;统计格网内最低点Plow及其高程Hlow、最高点Phigh及其高程Hhigh,计算高差Hdiff=Hhigh-Hlow;设定高差阈值Hmax,并判断Hdiff与Hmax的大小;若Hdiff≤Hmax,选取格网最低点为抽稀点,得到各个分块点云的抽稀点集。
在一个实施例中,上述实施例中,步骤设定高差阈值Hmax,并判断Hdiff与Hmax的大小之后,还包括:若Hdiff>Hmax,更新格网尺寸Ds为原格网尺寸Ds的一半,迭代重复上述分块点云格网划分步骤,直到所有格网满足Hdiff≤Hmax,得到各个分块点云的抽稀点集为止。
具体地,过密的点云数据会降低算法效率,也不利于成果的后续使用,因此提出一种顾及地形特征的点云抽稀方法,在保留地形特征的前提下对点云进行抽稀,如关于步骤S2的实施例所示,通过并行对各分块点云进行抽稀,抽稀时将高程指标纳入,能够实现保留地形特征的情况下对点云进行抽稀,从而在保留地面特征点同时大幅减少冗余点云。更新格网尺寸Ds为原格网尺寸Ds的一半的程序展示即为:令Ds=Ds/2。
S3采用改进的渐进加密三角网算法对各个分块点云的抽稀点集进行滤波,提取各个分块点云的地面点集。
在一个实施例中,步骤S3包括:
S301对每个分块点云的抽稀点集建立平面直角坐标系xt-o-yt,并设平面直角坐标系中点云数据对应xt轴和yt轴的最小值和最大值分别Xtmin、Ytmin、Xtmax、Ytmax;
S302对各个分块点云的抽稀点集进行格网划分,并设置格网尺寸为Dt,格网行、列数Rt、Ct分别为:
设j点坐标为(xk,yk,zk),对应格网行、列号rk、ck如下所示,
其中floor为向下取整函数,且行、列号从0开始计数;
S303取每个格网的最低点纳入地面点集中,将所有点的轮次标记为0并构建初始三角剖分的三角网,将其余点作为待判定点纳入待判定点集中;
S304将待判定点集作为当前输入点集,取其第一点作为当前判定点P,进入步骤S305;
S305查找点P在三角网中对应的三角形,若点P的平面投影坐标(xp,yp)位于三角形T的平面投影三角形内部或边上,三角形T即为点P的对应三角形;
S306若三角形T的锁定状态为true,将点P纳入排除点集,进入步骤S311,否则进入步骤S307;
S307设三角形T的3条边长分别为C1、C2、C3,取其最大值为Cmax,设三角形边长阈值为Cv,若Cmax≤Cv,将三角形T的锁定状态设为true,并将点P作为排除点,纳入排除点集中,进入步骤S311,若Cmax>Cv,进入步骤S308;
S308设三角形T的3个顶点分别为V1、V2、V3,对应的轮次标记分别为K1、K2、K3,取其中最大值Kmax为该三角形T的轮次标记,设当前迭代次数为i(i≥Kmax+1),若i=Kmax+1,进入步骤S309,若i>Kmax+1,将三角形T的锁定状态设为true,并将点P作为排除点,纳入排除点集中,进入步骤S311;
S309计算点P到三角形T的距离dt和夹角θt,设距离阈值及角度阈值分别为dmax和θmax,若满足dt≤dmax且θt≤θmax,将点P纳入地面点集,更新地面点集,同时将点P的轮次标记为i,否则将点P纳入待判定点集中,更新待判定点集,进入步骤S311;
S310对更新后的地面点集重新构建三角剖分的三角网;
S311取当前输入点集中的下一点作为判定点P,重复上述步骤S305至S310,直至所有输入点遍历完成,遍历完成后迭代次数i在原有数值上加1;
S312将更新后的待判定点集作为输入进入下一次迭代,直至三角网不再变化或迭代次数i达到迭代上限Imax。
具体地,上述关于步骤S3的实施例所示,通过三角网顶点轮次标记及三角形最短边长控制、三角形锁定等方式,减少了计算步骤和过程,同时避免过密的地面点提取。其中,将步骤S2中得到的抽稀点集作为输入数据,然后对输入数据进行格网划分,这里的格网的划分尺寸Dt为固定值,且根据实际应用需要所确定,对每个格网中的点进行遍历,判断是否为最低点,是则纳入地面点集中,否则纳入待判定点集中。对于地面点集,使用点集的三角剖分(也称Delaunay三角剖分算法)对地面点集的点构建三角网,并进行三角网判定。而对于待判定点集,也进行三角网判定。如图2所示,进行三角网判定即为上述步骤303至309,最终判定点为待判定点、排除点或者地面点,待定点则纳入待判定点集,更新待判定点集后迭代重复遍历步骤;而排除点纳入排除点集,应从数据中去除;对于地面点则是目标点。上述步骤303中,所有点即为地面点集中的点,其余点为每个格网中除最低点以外的点。上述步骤307和308中,当“三角形T的锁定状态设为true”时,即为锁定该三角函数。对于步骤S312中的迭代上限Imax取值根据实际应用时决定,实际应用时,需要遍历的次数多少,承载整个方法的终端自身的运算速度和存储能力,点云的抽稀点集中的数据多少都对迭代上限Imax有影响。
S4合并各个分块点云的地面点,得到整体地面点云,完成地面点云滤波。
具体地,将步骤S3中得到的每个分块点云的地面点集并成地面点云,即实现了地面点云滤波。
上述实施例中,通过先对点云数据进行分块,对个分块点云采用顾及地形特征的多级格网抽稀算法进行抽稀,然后对抽稀后的点云数据采用改进的渐进加密三角网算法提取地面点,最后将各分块提取的地面点合并,完成地面点云滤波。实现各分块点云并行处理,可提高处理效率;且在地面点滤波前对各点云采用顾及地形特征的算法进行抽稀,在保留地面特征点同时大幅减少冗余点云;并且通过三角网顶点轮次标记及三角形最短边长控制、三角形锁定等方式,减少了计算步骤和过程,同时避免过密的地面点提取,从而显著提高了滤波效率和效果。
在一个实施例中,如图3所示,提供了一种地面点云快速滤波装置200,该装置包括点云分块模块210、点云抽稀模块220、点云滤波模块230和地面点合并模块240,其中:
点云分块模块210用于,根据预设的单块点云的点数阈值,对获取到的点云数据进行分块,得到多个分块点云;
点云抽稀模块220用于,基于各个分块点云,建立多个保留地形特征的抽稀格网并行抽稀,得到各个分块点云的抽稀点集;
点云滤波模块230用于,采用改进的渐进加密三角网算法对各个分块点云的抽稀点集进行滤波,提取各个分块点云的地面点集;
地面点合并模块240用于,合并各个分块点云的地面点集,得到整体地面点云,完成地面点云滤波。
在一个实施例中,提供了一种设备,该设备可以是服务器,其内部结构图可以如图4所示。该设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该设备的处理器用于提供计算和控制能力。该设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该设备的数据库用于存储配置模板,还可用于存储目标网页数据。该设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种地面点云快速滤波方法。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时使所述计算机执行如前述实施例所述的方法,所述计算机可以为上述提到的一种地面点云快速滤波装置的一部分。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。