步國超 汪 沛
三維樹木點云數據處理軟件系統設計
步國超 汪 沛*
(北京林業大學 北京 100083)
隨著林業信息化的建設與發展,利用地面激光雷達快速獲取樹木點云數據,從中提取樹木的結構參數(胸徑,樹高,材積等)已成為一種重要的林木測量手段。為了彌補國內在樹木點云數據處理軟件系統方面的空白,采用一系列樹木結構參數提取算法,并結合計算機圖形顯示技術,設計并實現了一種三維樹木點云數據處理軟件系統。開發完成了樹木點云數據的三維顯示與旋轉平移查看功能。擁有基本的點云數據處理功能,以及樹木的胸徑、樹高、材積提取的功能。系統經過實驗數據的驗證,證明其擁有良好的性能,并可以快速準確地提取樹木結構參數。
地面激光雷達 樹木結構 胸徑 樹高 軟件 點云
地面激光雷達通過發射激光束對探測目標進行探測,獲得高精度、高密度的三維點云,來表達目標物在空間參考系下的空間分布與表面特性[1]。隨著遙感技術的發展,地面激光雷達技術廣泛地應用于地形,竣工測量,建筑,考古,和城市建模等方面[2-4]。近年來,地面激光雷達在林業上的應用也成為了一個研究的熱點。國內外研究者在從地面激光雷達數據中提取林木參數方面進行了很多的研究與實驗驗證,包括對胸徑、樹高以及材積的提取[5-8]。地面激光雷達在林業上的這些應用,可以節省人力物力,提高工作效率,推動林業信息化的發展。
地面激光雷達的掃描速度快,可以較完整地獲取樹木表面信息。其在林業上應用與關鍵點之一在于后期的數據處理。而現有的激光雷達點云數據處理軟件一般由激光雷達的制造商發布,如Leica 公司的Cyclone、FARO 的FARO Scene 等[9]。這些軟件采用通用的方法處理激光雷達所掃描到的點云數據,但是對于處理樹木點云數據的具體要求,如從樹木點云數據中提取胸徑,樹高,材積等,卻無法滿足。
因此,本文立足林業調查的基本需求,設計與實現了一種三維樹木點云數據處理軟件。該軟件可以顯示地面激光雷達掃描的樹木點云數據,對樹木點云數據做基本處理,并且可以自動提取樹木的胸徑,樹高與材積。

圖1 系統框架圖
樹木點云數據處理軟件系統主要需要實現樹木點云的顯示,人機交互查看,點云數據的基本處理如截取、濾波等,以及單株立木的樹木結構參數(胸徑,樹高,材積)的提取等功能。
根據功能需求,采用面向對象的設計思想與軟件工程的方法對系統進行總體設計[10,11]。系統的設計框圖如圖1所示,其由5個模塊組成,分別為基礎類庫,數據I/O模塊,點云顯示模塊,核心算法模塊,圖形界面模塊。
1) 圖形界面模塊
圖形界面模塊提供了可視化界面,方便進行人機交互操作。該軟件系統的主要功能,包括點云顯示的控制,點云基礎的濾波截取操作以及主要的樹木結構參數提取功能,都由用戶通過圖形界面模塊控制完成。
2) 數據I/O模塊
數據I/O模塊完成了軟件系統與外部點云的數據交換操作,可以完成點云數據的讀取,以及將處理之后的點云數據與結果輸出至外部文件。
3) 核心算法模塊
核心算法模塊包括三部分,分別是樹木點云數據的胸徑提取算法,樹高提取算法,材積提取算法。其主要功能是從單株立木點云數據中提取樹木的基本結構參數,并將結果發送至圖形界面模塊進行顯示。
4) 點云三維顯示模塊
點云三維顯示模塊完成點云數據的可視化顯示功能,并提供點云旋轉查看,平移查看等功能接口,方便圖形界面模塊對顯示效果的控制。
5) 基礎類庫模塊
基礎類庫模塊是指處理點云的基礎數據結構與基礎算法。主要完成點云數據的濾波,截取,角度校正等基本處理功能。
對樹木點云數據的一般處理流程如下:
(1) 讀取樹木點云數據;
(2) 對樹木點云數據進行濾波,濾除地面激光雷達在掃描過程中產生的噪點;
(3) 對樹干局部點云進行截取,提取某一高度的樹干直徑;
(4) 提取樹木的胸徑;
(5) 提取樹木的樹高;
(6) 利用樹高與樹木直徑數據提取樹木的材積;
(7) 將處理后的點云保存,并保存樹木結構參數。
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
addPointCloud (const typename PointCloud
//從窗口中移除點云
bool removePointCloud (string cloudID = "tree");
//更新窗口中的點云
template
updatePointCloud (const typename PointCloud
//初始化相機參數
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
//利用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所示。
樹木點云數據處理軟件是根據樹木點云數據的空間結構等信息利用計算機可視化技術,以及數據處理算法實現樹木結構的空間展示以及樹木結構參數的求解。軟件系統采用Qt作為圖形界面開發工具并采用標準C++語言進行開發,所以該系統具有跨平臺的特性,可以在多種操作系統上編譯使用。
本文利用地面激光雷達掃描的塊林木區域的樹木點云數據對系統進行驗證。該點云數據文件大約1.3 GB。每個點包含了位置信息,顏色信息,掃描角度,反射強度等11個數據項。本系統在主頻為3.2 GHz的英特爾酷睿雙核,4 GB內存的PC上可以流暢查看點云數據,并可以成功提取樹木的胸徑、樹高、材積這三種樹木結構參數。其運行效果如圖5所示。

圖5 系統三維顯示與參數提取結果顯示圖
本文設計的三維樹木點云處理軟件系統結合計算機可視化技術與雷達數據處理技術,可以快速有效地提取樹木結構參數。可以快速準確地進行林業清查滿足林業信息化的要求,同時可以對人力難以到達的林木區域進行林木測量,節省了人力物力。后續將繼續研究樹木定位,樹木三維模型重建等工作,以使得本系統更加完善。
[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