本项目实现了对树木点和非树木点的二分类并对树木点进行单木分割
step1:运行randomForest.py
step2:运行DBSCAN.py
运行SingleTreeSegmentation.py
可选择对数据进行去噪,降采样,地面滤波等操作 本项目没有提供预处理代码
(1)高差 (2)Z坐标值 (3)密度 (4)强度
(1)模型选择
本实验选择基于随机森林的二分类。随机森林是一种集成学习方法,通过构建多个决策树并汇总它们的结果来进行预测,能够有效处理高维数据,并且对过拟合有较好的抵抗能力。
(2)特征选择
利用2.1.2提取的特征数据。
(3)模型创建与训练
创建一个随机森林分类器,设置树的数量,决策树最大深度,每个内部点需要的最小样本数等参数。用训练数据集对模型进行训练。最终将树的数量设为100,决策树的最大深度设为30,每个内部点需要的最小样本数设为2。
(4)预测与评估

由图可知,部分建筑边缘被误分为树木点。根据误分类的点云结构分散,稀疏等特点,利用DBSCAN聚类方法对分类后的点云进行后处理。由于误分类点稀疏且分散,利用阈值,将簇内点数过小的点重新归为非树木点,对二分类结果进行修正。
(5)DBSCAN聚类对分类结果后处理
适当的调大邻域半径,防止树木点分割为过小的簇。如图(左)为对分为树木的点云数据聚类修正后的点云二分类结果。
对比可以看出,聚类后处理后提取的树木点云较为完整,且建筑区域都正确的分类为非树木点。如图(右)为最终二分类结果。

基于高度分布直方图确定树干与树冠的分割阈值。通过提取所有树木点的Z坐标绘制高度直方图,人工识别高度分布中的明显拐点或下降趋势(反映树干到树冠的过渡区域),从而确定最优分割阈值,实现树干树冠分离。
基于DBSCAN的树干聚类
由于树冠树干分割将部分树冠点云归为树干,有部分点云数据较为破碎,而DBSCAN聚类可以发现任意形状的簇,并且能有效识别并剔除噪声点。
参数选取
根据聚类效果不断调整聚类参数,最终将邻域半径eps设为0.5,所需的最小邻居数量min_samples设为15,可以准确的区分出每棵树干。如图为树干分离效果。

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



