Skip to content

gulizire73/Single-Tree-Segmentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

单木分割

本项目实现了对树木点和非树木点的二分类并对树木点进行单木分割

1.项目运行

1.1树木点和非树木点的二分类

step1:运行randomForest.py
step2:运行DBSCAN.py

1.2树木点单木分割

运行SingleTreeSegmentation.py

2.方法介绍

2.1树木点提取

image

2.1.1数据预处理

可选择对数据进行去噪,降采样,地面滤波等操作 本项目没有提供预处理代码

2.1.2特征提取

(1)高差 (2)Z坐标值 (3)密度 (4)强度

2.1.3树木点和非树木点二分类

(1)模型选择
本实验选择基于随机森林的二分类。随机森林是一种集成学习方法,通过构建多个决策树并汇总它们的结果来进行预测,能够有效处理高维数据,并且对过拟合有较好的抵抗能力。
(2)特征选择
利用2.1.2提取的特征数据。
(3)模型创建与训练
创建一个随机森林分类器,设置树的数量,决策树最大深度,每个内部点需要的最小样本数等参数。用训练数据集对模型进行训练。最终将树的数量设为100,决策树的最大深度设为30,每个内部点需要的最小样本数设为2。
(4)预测与评估
image
由图可知,部分建筑边缘被误分为树木点。根据误分类的点云结构分散,稀疏等特点,利用DBSCAN聚类方法对分类后的点云进行后处理。由于误分类点稀疏且分散,利用阈值,将簇内点数过小的点重新归为非树木点,对二分类结果进行修正。
(5)DBSCAN聚类对分类结果后处理
适当的调大邻域半径,防止树木点分割为过小的簇。如图(左)为对分为树木的点云数据聚类修正后的点云二分类结果。
对比可以看出,聚类后处理后提取的树木点云较为完整,且建筑区域都正确的分类为非树木点。如图(右)为最终二分类结果。
image image

2.2单木分割

主要分为以下三个步骤来实现单木分割
image

2.2.1树冠树干分离

基于高度分布直方图确定树干与树冠的分割阈值。通过提取所有树木点的Z坐标绘制高度直方图,人工识别高度分布中的明显拐点或下降趋势(反映树干到树冠的过渡区域),从而确定最优分割阈值,实现树干树冠分离。

2.2.2树干聚类

基于DBSCAN的树干聚类 由于树冠树干分割将部分树冠点云归为树干,有部分点云数据较为破碎,而DBSCAN聚类可以发现任意形状的簇,并且能有效识别并剔除噪声点。 参数选取 根据聚类效果不断调整聚类参数,最终将邻域半径eps设为0.5,所需的最小邻居数量min_samples设为15,可以准确的区分出每棵树干。如图为树干分离效果。
image

2.2.3树冠归类

基于绝对值距离的树冠归类
基于树干质心进行树冠点云归类。首先计算聚类后各树干的质心坐标,再采用绝对值距离度量树冠点云与质心的空间关系(克服Z值不确定性),实现树冠与树干的精确匹配,该方法虽存在少量错分点,但整体分割精度较高,最终形成完整的单木分割结果。
imageimage

3.方法适用性说明

3.1数据依赖性强:二分类处理方法只适用于树木点较为集中的情况,参数数量多,需要根据数据不断调整。单木分割方法只适用于同种树木单木分割,且树木高度一致时效果最好。

3.2对噪声敏感。单木提取效果受到噪声点的影响,需要将噪声去除,避免树木错分

3.3改进方向:采用深度学习的方法对树木点和非树木点进行二分类。根据树干和树冠特征进行树干树冠分割。提高树干质心定位准确度。

About

对树木点和非树木点进行二分类并对树木点进行单木分割

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages