具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
根据本申请实施例的一方面,提供了一种点云单木分割方法的实施例。
可选地,在本申请实施例中,上述点云单木分割方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务,可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101包括但不限于PC、手机、平板电脑等。
本申请实施例中的一种点云单木分割方法(即本申请中的上述点云分割方法实际上是一种基于最短路径与欧式聚类算法的快速点云单木分割方法)可以由服务器103来执行,如图2所示,该方法可以包括以下步骤:
步骤S201,对待处理点云进行水平聚类,得到多个水平聚簇;
本申请实施例中,待处理点云为扫描设备对目标树木进行扫描获得的点云数据,扫描设备可以是地面激光雷达、背包或车载激光雷达。在对庞大的点云数据进行单木分割时,首先需要提取树干种子点,以表示单木的主体,这一类点云数据往往较为聚集,可以进行水平聚类,得到多个水平聚簇从而得以寻找树干种子点。还可以先对待处理点云进行体素化降采样,将点云用体素重心点来表示,可以有效提升数据处理的效率。
步骤S202,从多个水平聚簇中提取目标树木的树干种子点;
本申请实施例中,可以从聚类得到的水平聚簇中选取出具有代表性的点作为单木的树干种子点,例如可以通过计算水平聚簇的重心点来表示。
步骤S203,根据树干种子点在待处理点云中构建路径图;
本申请实施例中,在获取了树木的树干即树干种子点后,可以将该树干种子点作为备选点,在待处理点云即原始点云中构建用于各个点云划分其所属树干种子点的路径图,以对树木进行最短路径生长。
步骤S204,在路径图中遍历查询距离树干种子点的最短路径点;
步骤S205,在当前最短路径点至与之相邻的参考最短路径点的距离小于等于距离阈值的情况下,将当前最短路径点合并到树干种子点所在的单木点集。
本申请实施例中,单木点集表示属于树干种子点对应的单木上的点的集合,即属于同一棵树的点归类为一个单木点集中。距离阈值可以是组成同一棵树木的点云中,相邻两个点允许的最大距离。该点距离所有树木中哪棵树木上的某一点最近则认为与该树木为同一棵树,标记相同ID,即将该点划分为与之距离最近的树干种子点所在的单木点集中。每棵树木中的点都会标记总路径及与其他点的路径距离。
本申请实施例中,当前最短路径点归为单木点集后,将该点插入到树干种子点并更新路径图,以作为下一个最短路径点查询时的参考最短路径点。
可选地,本申请实施例提供一种对待处理点云进行水平聚类,得到多个水平聚簇之前,对点云数据进行预处理的方式,如图3所示,包括以下步骤:
步骤S301,对待处理点云去噪,得到降噪点云;
步骤S302,对降噪点云进行分类,得到地面点和树木点;
步骤S303,将地面点距离树木点的相对高度作为树木点的冠层高度。
本申请实施例中,待处理点云包含了扫描区域的所有物体,甚至包含噪点数据,在得到原始点云数据后需要对点云数据进行去噪和分类,可以是分为地面点和树木点,地面点表示该点云数据对应的实际物体是地面,树木点表示该点云数据对应的实际物体是树木,分类后点云数据只改变类别属性。将地面点距离树木点的相对高度作为树木点的冠层高度即对分类后的点云据进行归一化,可以是树木点Z值减去地面点Z值从而获得树木点的冠层高度值,以减少地形起伏对后续单木分割的影响。
需要说明的是,归一化可以利用地面点归一化,也可以使用高程数字模型(DEM)进行归一化。
可选地,对待处理点云进行水平聚类,得到多个水平聚簇可以包括以下步骤:
步骤1,按照预设高度阈值对冠层高度的所述树木点进行水平切层,得到多个水平层的树木点;
步骤2,对各个水平层的树木点进行水平欧式聚类,得到多个水平聚簇。
本申请实施例中,对树木点进行水平切层时只考虑树木点的冠层高度,以减少地形起伏带来的影响,切层数目越多,越能降低识别树木的错误率,即切层数越多,其他低矮灌木或其他地物的影响越小。作为本申请实施例的优选方案,切层数目不应少于5层,切层阈值高度不应小于3倍平均点间距。
本申请实施例中,对各个水平层的树木点进行水平聚类,具体可以是对各个水平层的树木点进行水平欧式聚类,即按照二维XY方向进行欧式聚类,得到多个水平聚簇。
可选地,本申请实施例提供一种可选的树干种子点的提取方式,如图4所示,步骤S202从多个水平聚簇中提取目标树木的树干种子点可以包括:
步骤S401,计算各个水平聚簇的重心点,并为各个重心点增加非树干种子点标识;
步骤S402,将距离地面点最近的一层水平层中的重心点作为第一备选树干种子点,并为第一备选树干种子点增加树干种子点标识;
步骤S403,计算目标水平层中N个重心点与第一备选树干种子点的第一方向,其中,目标水平层为除第一备选树干种子点所在的水平层之外的其他各个水平层;
步骤S404,计算目标水平层N个重心点中任意两个重心点之间的第二方向;
步骤S405,在第一方向与地面间的夹角大于角度阈值的情况下,将第一方向与第二方向形成的夹角最小的一组重心点作为第二备选树干种子点,并为第二备选树干种子点增加树干种子点标识;
步骤S406,在第二备选树干种子点符合预设条件的情况下,将第二备选树干种子点作为最终的树干种子点。
本申请实施例中,从多个水平聚簇中提取目标树木的树干种子点时,首先计算各个水平层中各个水平聚簇的重心点,并将此时的重心点全部增加非树干种子点标识。拥有非树干种子点标识的重心点表示该重心点不是树干种子点。计算重心点可以是将一个水平聚簇中每个点空间三维分量X值、Y值和Z值分别求和除以总点数。
本申请实施例中,将距离地面最近的一层水平层作为0层,该层中的点云数据作为0层数据,依次类推。将0层数据中各个水平聚簇的重心点作为备选树干点即第一备选树干种子点,并将该重心点之前步骤增加的非树干种子点标识更改为树干种子点标识,以表示该重心点可以作为树干种子点。因为根据生活常识,树木距离地面越近的位置,越有可能是树干。
本申请实施例中,从0层开始每一个重心点(即0层的第一备选树干种子点)逐层向上搜索N个点,计算该重心点与搜索的N个点间第一方向A以及N个点中任意两个点的第二方向Bi,获取第一方向A与第二方向Bi之间夹角最小,且第一方向A与地面夹角大于一定角度阈值的一组作为第二备选树干点,并将原有的非树干种子点标识更改为树干种子点标识,依次计算N个点中的每一个点。根据树木生长的方式,树干具有方向一致性,因此第一方向A与第二方向Bi之间夹角最小时是同一棵树木且为树干的概率最大,同时,树木生长会与地面呈现一定夹角,正常情况下垂直生长是90度夹角,可以将该角度阈值即树木与地面夹角的阈值设为30度,以使得识别树木时减少错误。
本申请实施例中,初步筛选完成后,对所有的第二备选树干种子点再进行筛选,可以是保留大于K个点并且高度大于一定阈值的重心点作为最终的树干种子点。
可选地,在路径图中遍历查询距离树干种子点的最短路径点之前,还包括按照如下方式创建重心点集:
步骤1,对树木点进行三维空间的欧式聚类,得到多个空间聚簇;
步骤2,从多个空间聚簇中选出多个目标聚簇,其中,目标聚簇为聚类点数大于筛选阈值的空间聚簇;
步骤3,计算由多个目标聚簇的重心点组成的重心点集,其中,重心点集中的多个重心点按照其所在的目标聚簇中聚类点数的数量由大到小进行排序。
本申请实施例中,可以对点云数据进行空间三维欧式聚类以加速数据处理,具体的,对树木点进行三维空间的欧式聚类,得到多个空间聚簇,将聚类点数大于筛选阈值的空间聚簇筛选出来,以在后续步骤中不对聚类点数较少的空间聚簇进行最短路径计算。可选地,该筛选阈值可以是500个点。
本申请实施例中,再筛选出聚类点数大于筛选阈值的空间聚簇之后,还需要计算这些空间聚簇的重心点,并将这些重心点组成重心点集,其中,这些重心点在该重心点集中的排序方式按照其所在的空间聚簇中聚类点数的数量由大到小进行排序,以使得在查询最短路径点时优先解决大多数,效率更高。
可选地,在路径图中查询到的当前最短路径点至与之相邻的参考最短路径点的距离大于距离阈值的情况下,还包括按照如下方式重新查询最短路径点:
步骤1,在重心点集中查询距离树干种子点最近的最近重心点;
步骤2,在最近重心点对应的目标聚簇中查询距离树干种子点最近的最短路径点,并将最短路径点合并到树干种子点所在的单木点集。
本申请实施例中,在查询到的当前最短路径点至与之相邻的参考最短路径点的距离大于组成同一棵树木的点云中,相邻两个点允许的最大距离时,从重心点集中查询距离树干种子点最近的最近重心点,并在该最近重心点所在的空间聚簇中重新查询距离树干种子点最近的最短路径点。
可选地,将当前最短路径点合并到树干种子点所在的单木点集之后,该方法还包括:
步骤1,将待处理点云进行体素化降采样,得到体素重心点;
步骤2,根据单木点集表征的单木分割关系对体素重心点构建k-d tree,以按照最近邻方式对待处理点云还原单木标记。
本申请实施例中,在对所有降采样后的点进行树木生长后,需要还原到原始点云中,可以使用最邻近查询法还原原始点云单木标记。
本申请通过对待处理点云进行水平聚类,得到多个水平聚簇,其中,待处理点云为扫描设备对目标树木进行扫描获得的点云数据;从多个水平聚簇中提取目标树木的树干种子点;根据树干种子点在待处理点云中构建路径图;在路径图中遍历查询距离树干种子点的最短路径点;在当前最短路径点至与之相邻的参考最短路径点的距离小于等于距离阈值的情况下,将当前最短路径点合并到树干种子点所在的单木点集,其中,单木点集表示属于树干种子点对应的单木上的点的集合的点云单木分割方法,有效降低了多棵树木间枝干交叉对单木分割的影响,提升了分割精度,加快了分割效率。
根据本申请实施例的又一方面,如图5所示,提供了一种点云单木分割装置,包括:聚类模块501,用于对待处理点云进行水平聚类,得到多个水平聚簇,其中,待处理点云为扫描设备对目标树木进行扫描获得的点云数据;提取模块502,用于从多个水平聚簇中提取目标树木的树干种子点;构建模块503,用于根据树干种子点在待处理点云中构建路径图;查询模块504,用于在路径图中遍历查询距离树干种子点的最短路径点;分配模块505,用于在当前最短路径点至与之相邻的参考最短路径点的距离小于等于距离阈值的情况下,将当前最短路径点合并到树干种子点所在的单木点集,其中,单木点集表示属于树干种子点对应的单木上的点的集合。
需要说明的是,该实施例中的聚类模块501可以用于执行本申请实施例中的步骤S201,该实施例中的提取模块502可以用于执行本申请实施例中的步骤S202,该实施例中的构建模块503可以用于执行本申请实施例中的步骤S203,该实施例中的查询模块504可以用于执行本申请实施例中的步骤S204,该实施例中的分配模块505可以用于执行本申请实施例中的步骤S205。
本发明实施例提供的点云单木分割方法(即基于最短路径与欧式聚类算法的快速点云单木分割方法),将获取的待分割点云进行地面点分类后归一化;对点云数据进行体素化降采样,使用体素重心点代替原始点云;在归一化数据中提取从地面到预定高度范围内的数据,提取树干点云作为树木生长种子点;将数据按照设定阈值进行欧式聚类,将点云数据构建路径图;将树干种子点云作为备选点,遍历查询距离种子点最短路径点,循环遍历备选点,直到所有点归并到目标点集中。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
可选地,该点云单木分割装置,还包括:去噪模块,用于对待处理点云去噪,得到降噪点云;分类模块,用于对降噪点云进行分类,得到地面点和树木点;归一化模块,用于将地面点距离树木点的相对高度作为树木点的冠层高度。
可选地,该点云单木分割装置,还包括:水平切层模块,用于按照预设高度阈值对冠层高度的所述树木点进行水平切层,得到多个水平层的树木点;水平欧式聚类模块,用于对各个水平层的树木点进行水平欧式聚类,得到多个水平聚簇。
可选地,该点云单木分割装置,还包括:重心点计算模块,用于计算各个水平聚簇的重心点,并为各个重心点增加非树干种子点标识;第一备选树干种子点选择模块,用于将距离地面点最近的一层水平层中的重心点作为第一备选树干种子点,并为第一备选树干种子点增加树干种子点标识;第一方向计算模块,用于计算目标水平层中N个重心点与第一备选树干种子点的第一方向,其中,目标水平层为除第一备选树干种子点所在的水平层之外的其他各个水平层;第二方向计算模块,用于计算目标水平层N个重心点中任意两个重心点之间的第二方向;第二备选树干种子点选择模块,用于在第一方向与地面间的夹角大于角度阈值的情况下,将第一方向与第二方向形成的夹角最小的一组重心点作为第二备选树干种子点,并为第二备选树干种子点增加树干种子点标识;确认模块,用于在第二备选树干种子点符合预设条件的情况下,将第二备选树干种子点作为最终的树干种子点。
可选地,该点云单木分割装置,还包括:空间欧式聚类模块,用于对树木点进行三维空间的欧式聚类,得到多个空间聚簇;筛选模块,用于从多个空间聚簇中选出多个目标聚簇,其中,目标聚簇为聚类点数大于筛选阈值的空间聚簇;重心点集计算模块,用于计算由多个目标聚簇的重心点组成的重心点集,其中,重心点集中的多个重心点按照其所在的目标聚簇中聚类点数的数量由大到小进行排序。
可选地,该点云单木分割装置,还包括:最近重心点查找模块,用于在重心点集中查询距离树干种子点最近的最近重心点;最短路径点查找模块,用于在最近重心点对应的目标聚簇中查询距离树干种子点最近的最短路径点,并将最短路径点合并到树干种子点所在的单木点集。
可选地,该点云单木分割装置,还包括:体素化降采样模块,用于将待处理点云进行体素化降采样,得到体素重心点;邻近查询模块,用于根据单木点集表征的单木分割关系对体素重心点构建k-dtree,以按照最近邻方式对待处理点云还原单木标记。
本发明实施例提供的点云单木分割方法(即基于最短路径与欧式聚类算法的快速点云单木分割方法),其还具有如下方面的技术优势,例如:1、解决了单木分割精度低,效果差的问题(即使用该方法(最短路径与欧式聚类算法)可有效解决树木间枝干交叉无法区分问题。尤其在密集的林区与其他算法相比效果更明显。2、通过前期体素重采样及欧式聚类,明显提升单木分割效率(即最短路径可有效解决,但受最短路径算法原理,逐点计算方式的空间复杂度和时间复杂度较高。体素化可有效减少过密区域且不影响整体分布,欧式聚类可有效提高最短路径生长过程的效率)。
根据本申请实施例的又一方面还提供了一种计算机设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述步骤。
上述计算机设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种计算机可读介质。
可选地,在本申请实施例中,计算机可读介质被设置为存储用于所述处理器执行以下步骤的程序代码:
步骤S201,对待处理点云进行水平聚类,得到多个水平聚簇;
步骤S202,从多个水平聚簇中提取目标树木的树干种子点;
步骤S203,根据树干种子点在待处理点云中构建路径图;
步骤S204,在路径图中遍历查询距离树干种子点的最短路径点;
步骤S205,在当前最短路径点至与之相邻的参考最短路径点的距离小于等于距离阈值的情况下,将当前最短路径点合并到树干种子点所在的单木点集。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。