APP下载

三维树木点云数据处理软件系统设计

2016-05-09步国超

计算机应用与软件 2016年4期
关键词:材积激光雷达胸径

步国超 汪 沛

三维树木点云数据处理软件系统设计

步国超 汪 沛*

(北京林业大学 北京 100083)

随着林业信息化的建设与发展,利用地面激光雷达快速获取树木点云数据,从中提取树木的结构参数(胸径,树高,材积等)已成为一种重要的林木测量手段。为了弥补国内在树木点云数据处理软件系统方面的空白,采用一系列树木结构参数提取算法,并结合计算机图形显示技术,设计并实现了一种三维树木点云数据处理软件系统。开发完成了树木点云数据的三维显示与旋转平移查看功能。拥有基本的点云数据处理功能,以及树木的胸径、树高、材积提取的功能。系统经过实验数据的验证,证明其拥有良好的性能,并可以快速准确地提取树木结构参数。

地面激光雷达 树木结构 胸径 树高 软件 点云

0 引 言

地面激光雷达通过发射激光束对探测目标进行探测,获得高精度、高密度的三维点云,来表达目标物在空间参考系下的空间分布与表面特性[1]。随着遥感技术的发展,地面激光雷达技术广泛地应用于地形,竣工测量,建筑,考古,和城市建模等方面[2-4]。近年来,地面激光雷达在林业上的应用也成为了一个研究的热点。国内外研究者在从地面激光雷达数据中提取林木参数方面进行了很多的研究与实验验证,包括对胸径、树高以及材积的提取[5-8]。地面激光雷达在林业上的这些应用,可以节省人力物力,提高工作效率,推动林业信息化的发展。

地面激光雷达的扫描速度快,可以较完整地获取树木表面信息。其在林业上应用与关键点之一在于后期的数据处理。而现有的激光雷达点云数据处理软件一般由激光雷达的制造商发布,如Leica 公司的Cyclone、FARO 的FARO Scene 等[9]。这些软件采用通用的方法处理激光雷达所扫描到的点云数据,但是对于处理树木点云数据的具体要求,如从树木点云数据中提取胸径,树高,材积等,却无法满足。

因此,本文立足林业调查的基本需求,设计与实现了一种三维树木点云数据处理软件。该软件可以显示地面激光雷达扫描的树木点云数据,对树木点云数据做基本处理,并且可以自动提取树木的胸径,树高与材积。

图1 系统框架图

1 系统总体设计

树木点云数据处理软件系统主要需要实现树木点云的显示,人机交互查看,点云数据的基本处理如截取、滤波等,以及单株立木的树木结构参数(胸径,树高,材积)的提取等功能。

根据功能需求,采用面向对象的设计思想与软件工程的方法对系统进行总体设计[10,11]。系统的设计框图如图1所示,其由5个模块组成,分别为基础类库,数据I/O模块,点云显示模块,核心算法模块,图形界面模块。

1) 图形界面模块

图形界面模块提供了可视化界面,方便进行人机交互操作。该软件系统的主要功能,包括点云显示的控制,点云基础的滤波截取操作以及主要的树木结构参数提取功能,都由用户通过图形界面模块控制完成。

2) 数据I/O模块

数据I/O模块完成了软件系统与外部点云的数据交换操作,可以完成点云数据的读取,以及将处理之后的点云数据与结果输出至外部文件。

3) 核心算法模块

核心算法模块包括三部分,分别是树木点云数据的胸径提取算法,树高提取算法,材积提取算法。其主要功能是从单株立木点云数据中提取树木的基本结构参数,并将结果发送至图形界面模块进行显示。

4) 点云三维显示模块

点云三维显示模块完成点云数据的可视化显示功能,并提供点云旋转查看,平移查看等功能接口,方便图形界面模块对显示效果的控制。

5) 基础类库模块

基础类库模块是指处理点云的基础数据结构与基础算法。主要完成点云数据的滤波,截取,角度校正等基本处理功能。

对树木点云数据的一般处理流程如下:

(1) 读取树木点云数据;

(2) 对树木点云数据进行滤波,滤除地面激光雷达在扫描过程中产生的噪点;

(3) 对树干局部点云进行截取,提取某一高度的树干直径;

(4) 提取树木的胸径;

(5) 提取树木的树高;

(6) 利用树高与树木直径数据提取树木的材积;

(7) 将处理后的点云保存,并保存树木结构参数。

2 关键技术与实现

2.1 点云的三维显示

点云的三维显示功能是点云数据处理最基础也是最重要的功能之一。由于林木区域环境复杂,树木密度高,所以由地面激光雷达采集的树木点云数据规模往往非常大。对大规模点云数据进行可视化的同时保证系统的高速高效运行是点云显示模块设计的核心。

基于上述分析,本文基于VTK(visualization toolkit )库开发点云数据的显示模块。VTK是一个源代码开放、面向对象的计算机图形、可视化技术及图像处理软件系统,拥有丰富的三维可视化算法,有着优秀的数据处理效率。[12〗。

本系统基于VTK封装的点云显示模块主要代码如下:

class PTVisualizer

{

public:

PTVisualizer (const std::string &name = "");

//设置窗口名称

void setWindowName (const std::string &name);

//设置其他窗口属性

void setBackgroundColor ( double r,double g,double b);

...

//向窗口添加点云

template bool

addPointCloud (const typename PointCloud &cloud,string cloudID = "tree");

//从窗口中移除点云

bool removePointCloud (string cloudID = "tree");

//更新窗口中的点云

template bool

updatePointCloud (const typename PointCloud &cloud,string cloudID = "tree");

//初始化相机参数

void initCameraParameters ();

.....

};

2.2 点云数据的基础处理

1) 点云的校正

在地面激光雷达对林木区域进行扫描过程中,雷达的激光发射器不一定处于水平方向,这就会造成采集的点云数据整体会产生一个倾斜角θ。倾斜角度的存在会对树木结构参数的提取造成误差。在提取胸径时需要截取胸高位置的点云切片,由于倾角的存在,会造成胸高点云切片变成树干的一个斜截面而非正截面,从而对胸径的提取造成误差。所以需要对点云数据的进行角度校正。

对于点云数据的角度校正,采用逐点校正的方法。对于点云数据中的一个数据点p,为了校正p点的位置,需要使p点在p与z轴形成的平面α中绕原点o向水平方向旋转θ。

为了求解p点旋转后的坐标,令直线oc垂直于平面α,此时p点在α中旋转θ,相当于p点绕旋转轴oc向水平方向旋转θ。

在三维坐标系中一点绕任意轴旋转后的坐标可以由根据计算机图形学的三维变化理[13]论推导出的式(1)计算得到。

(x′,y′,z′)T=(x,y,z)T·R

(1)

(2)

(3)

点云数据中单点校正的主要实现代码如下:

double nx,ny,ny;

//求得旋转轴标准化向量

nx=y/sqrt(x*x+y*y);

ny=-x/sqrt(x*x+y*y);

nz=0;

//求得旋转角度的正弦余弦值

double c=cos(acos(-1)/180*7);

double s=sin(acos(-1)/180*7);

//左乘旋转矩阵得到新的坐标

treePoint.x = (nx*nx*(1-c)+c) * x + (nx*ny*(1-c)-nz*s) * y + (nx*nz*(1-c)+ny*s) * z;

treePoint.y = (ny*nx*(1-c)+nz*s) * x + (ny*ny*(1-c)+

c) * y + (ny*nz*(1-c)-nx*s) * z;

treePoint.z = (nx*nz*(1-c)-ny*s) * x + (ny*nz*(1-c)+nx*s) * y + (nz*nz*(1-c)+c) * z;

2) 点云的滤波

在采集树木点云数据的过程中,由于树木以及植被目标表面的形状,纹理与方向的影响,激光雷达发射的激光脉冲经反射后形状发生改变,产生较大的偏差值,形成数据噪点[6]。本系统采取两种滤波算法对数据噪点进行滤除。

(1) 基于密度的滤波方法,离群点一般与其他点的距离较远,可以通过每个点一定范围内是否有足够数量的点来判断该点是否为离群噪点。

(2) 双边滤波算法利用邻近点的加权平均值来修正当前采样点的位置,该方法运算速度快,可以较好地保证点云特征,去除噪声,可以有效地去除点云数据中的小尺度噪声[14]。

在上述滤波算法中最常用的操作是邻近点查询与范围内点数量查询。由于点云数据规模很大,如果将数据集中的点与搜索条件进行逐点对比,则搜索效率十分低下。为了快速地进行点云截取,更好地利用点云数据本身所包含的空间结构信息,本文采用K-D树对树木点云数据进行重新组织。K-D树是一种分割K维数据空间的数据结构,主要应用于范围搜索和最近邻搜索[15]。在三维空间数据下,当数据规模较大时其有非常好的搜索效率。

点云滤波部分的主要代码如下:

//利用树木点云数据建立KD树

KDtree KDPointCloud(treePoint);

//利用KDtree与原始点云建立滤波器

Filter filter(KDPointCloud,treePoint);

//调用滤波器的滤波方法进行滤波

filter.bilateralfilter ()

filter.densityfilter()

//返回经过滤波的点云数据

PointCloud newcloud=filter.getPointCloud()

2.3 树木结构参数的提取

(1) 树木胸径提取

胸径是指胸高位置的树木直径,所以胸径的提取方法也是任意树干位置直径的提取方法。根据测树学的研究发现:一株树自下而上,其横断面形状靠近基部由于干根部扩张多呈不规则外,从面积对比结果看,总的认为近似圆形[16]。所以可以对胸径位置的点云数据进行圆形拟合得到一个近似于树干横断面的圆形,从而计算胸径。Pueschel研究对比了Lemen算法,Pratt算法,Taubin算法三种圆形拟合算法对树木精度与有效性,发现lemon算法的精度好于Partt方法与Taubin方法[8]。

图2 胸径提取流程图

但是Lemen算法算需要用到高斯牛顿方法这种迭代的方法进行计算,该方法的稳定性与初始值有关,有可能出现过拟合的现象或者无法在有限的时间内计算出结果。而Taubin方法由代数方法求解,可以快速得出结果。所以系统采用Lemen方法与Taubin方法相结合进行树木胸径的提取。胸径提取的计算流程如图2所示。

(2) 树木高度提取

在研究通过单站点地面激光雷达扫描树木点云中提取树高的方法时发现地面坡度对准确提取树高会产生一定的影响。在测树学中,树高是指从树木树干的根颈处到树木稍顶的距离。由于所扫描的点云数据即包含树干上的点,也包含地面点。若地势相对平坦且树木生长方向比较接近垂直方向,地面点与树木的根颈处的扫面点基本处于同一高度,此时可以检测树木点云中的最高点与最低点,通过最高点与最低点在垂直方向的距离差值来确定树高。但是当树木所处位置有一定坡度的时候,此时点云数据中的地面点与树木的根颈处的点处于不同高度,显然此时不能直接用最高点与最低点之间的差值来表示。此时必须将树木点与地面点进行分离,同时计算树木所处位置的地面坡度等地面信息。

若已知树木所在位置地平面方程,可以通过几何关系推导出树高计算公式:

(4)

其中(xA,yA,zA) 代表树木点云中最高点的坐标,a,b,c,d 代表地平面方程的各个参数。

图3 树高提取流程图

树木所在地平面方程的提取,本系统首先利用聚类算法将地面点云与树干点云进行分离,然后利用随机采样一致性算法对地面点云进行平面拟合从而得到地平面方程。树高提取的计算流程如图3所示。

(3) 树木材积提取

在测树学中对于单株立木的材积的测定方法主要是通过树高和树干直径等因子来间接求算。由于根据树木点云数据的特.点可以求取任意树干位置的直径,所以本文利用实验正形数法求取树木材积。

实验正形数法是杨华根据孟宪宇提出的利用标准直径测定立木材积的原理进一步研究得出的测量立木材积方法[17]。标准直径测定方法如下:

(5)

其中V代表立木实际材积,d标代表对应立木材积的圆柱体直径,h 代表立木树高。经过对大量供试样木干形分析中发现各样木的d标/d0.1h近似等于0.7的恒比关系。其中d0.1h代表距离树基0.1h 处的树干直径[16,17]。则材积计算公式可以改写为:

(6)

图4 材积提取流程图

根据上述公式,可以通过求得树高与高度的树干直径然后直接求解得到树木的材积。树木材积提取的计算流程如图4所示。

3 功能测试

树木点云数据处理软件是根据树木点云数据的空间结构等信息利用计算机可视化技术,以及数据处理算法实现树木结构的空间展示以及树木结构参数的求解。软件系统采用Qt作为图形界面开发工具并采用标准C++语言进行开发,所以该系统具有跨平台的特性,可以在多种操作系统上编译使用。

本文利用地面激光雷达扫描的块林木区域的树木点云数据对系统进行验证。该点云数据文件大约1.3 GB。每个点包含了位置信息,颜色信息,扫描角度,反射强度等11个数据项。本系统在主频为3.2 GHz的英特尔酷睿双核,4 GB内存的PC上可以流畅查看点云数据,并可以成功提取树木的胸径、树高、材积这三种树木结构参数。其运行效果如图5所示。

图5 系统三维显示与参数提取结果显示图

4 结 语

本文设计的三维树木点云处理软件系统结合计算机可视化技术与雷达数据处理技术,可以快速有效地提取树木结构参数。可以快速准确地进行林业清查满足林业信息化的要求,同时可以对人力难以到达的林木区域进行林木测量,节省了人力物力。后续将继续研究树木定位,树木三维模型重建等工作,以使得本系统更加完善。

[1] 黄明,王晏民,付昕乐,等.地面激光扫描数据处理系统的设计与实现[J].测绘通报,2014(8):55-58.

[2] 王炎松,谢飞.古建保护对于三维激光扫描点云数据处理软件系统的用户需求——以古建测绘中的数据处理为例[J].华中建筑,2008,26 (4):130-132.

[3] 王晏民,王国利.地面激光雷达用于大型钢结构建筑施工监测与质量检测[J].测绘通报,2013(7):39-42.

[4] 张腾波,罗德安,黄鹤,等.基于地面激光雷达的土遗址保护研究[J].新探索,2013(4):67-72.

[5] 黄洪宇,陈崇成,邹杰,等.基于地面激光雷达点云数据的单木三维建模综述[J].林业科学,2013,49 (4):123-130.

[6] 李丹,庞勇,岳彩荣,等.基于 TLS 数据的单木胸径和树高提取研究[J].北京林业大学学报,2012,34(4):79-86.

[7] 李丹,庞勇,岳彩荣.地基激光雷达在森林参数反演中的应用[J].世界林业研究,2012,25(6):34-39.

[8] Pueschel P,Newnham G,Rock G,et al.The influence of scan mode and circle fitting on tree stem detection,stem diameter and volume extraction from terrestrial laser scans[J].ISPRS Journal of Photogrammetry and Remote Sensing,2013,77:44-56.

[9] 晏海平,吴禄慎,陈华伟.基于 VC 和 OpenGL 的三维点云处理软件系统设计[J].计算机应用与软件,2014,31(6):177-180.

[10] 莫建文,邹路路,首照宇,等.跟踪雷达三维场景显示系统的设计与实现[J].计算机应用与软件,2014,31 (5):141-144.

[11] 李中志,汪学刚.基于COM技术的雷达数据处理软件系统设计[J].计算机应用与软件,2010,27(5):27-29.

[12] 李嘉,胡怀中,胡军,等.可视化三维图形库Visualization ToolKit3.2的原理及应用[J].计算机应用与软件,2004,21 (2):5-6.

[13] 杨钦,徐永安,翟红英.计算机图形学[M].清华大学出版社,2005.

[14] 王丽辉,袁保宗.鲁棒的模糊 C 均值和点云双边滤波去噪[J].北京交通大学学报:自然科学版,2008,32(2):18-21.

[15] 姚定忠,何军,刘祎.一种基于 kd 树的实时大规模地形可视化算法[J].科学技术与工程,2012 12(2):338-341.

[16] 孟宪宇,测树学[M].北京:中国林业出版社,2006.

[17] 杨华,孟宪宇,程俊,等.利用正形数估测立木材积方法的研究[J].林业资源管理,2005(1):39-41.

DESIGNING 3D TREES POINT CLOUD DATA PROCESSING SOFTWARE SYSTEM

Bu Guochao Wang Pei*

(BeijingForestryUniversity,Beijing100083,China)

With the construction and development of forestry informatisation technology,it has become an important means of forest measurement that to employ terrestrial laser scanning to fast collect trees point cloud data and to extract from data the structural parameters (diameter at breast height,tree height,volume,etc.) of trees.To fill the gap in terms of domestic software system for trees point cloud data processing,we designed and implemented a 3D trees point cloud data processing software system by using a series of tree structure parameter extraction algorithms and combining the computer graphics visualisation technology.The system achieves the functions of 3D display and rotating translational view of trees point cloud data.It has basic point cloud data processing functions,and the parameters extraction function for diameter at breast height (DBH),tree height and volume.After validating with experimental data,the system was proved to have good performance and could extract trees structural parameters quickly and accurately.

Terrestrial laser scanning Tree structure DBH Tree height Software Point cloud

2014-10-23。中央高校基本科研业务费专项资金项目(XS2014025);中央高校基本科研业务费专项资金项目(YX2013-34)。步国超,硕士生,主研领域:激光雷达数据处理。汪沛,副教授。

TP391

A

10.3969/j.issn.1000-386x.2016.04.016

猜你喜欢

材积激光雷达胸径
手持激光雷达应用解决方案
赤松纯林胸径结构对枯梢病发生的效应
武汉5种常见园林绿化树种胸径与树高的相关性研究
法雷奥第二代SCALA?激光雷达
基于激光雷达通信的地面特征识别技术
基于激光雷达的多旋翼无人机室内定位与避障研究
阿拉尔地区胡杨材积与胸径、树高的关系分析
福建省森林资源监测体系抽样调查中胸径测量精度范围的精准确定
红松材积与生长性状相关分析及二元回归方程的拟合
5龄热垦628材积量季节生长节律与气象因子关联度初步研究