?

基于VTK的機載LiDAR點云數據的可視化

2013-06-26 07:39張震張碩馬召恒
城市勘測 2013年3期
關鍵詞:類庫激光測距數據格式

張震 ,張碩,馬召恒

(1.山東科技大學測繪科學與技術學院,山東 青島 266510; 2.河南省地礦局第二地質勘察院,河南 許昌 461000)

1 引 言

進入新世紀以來,隨著“數字地球”、“數字城市”的不斷發展,傳統的攝影測量技術由于其生產周期長、費用高、效率低等缺點,已經不能滿足信息發展的需要。LiDAR 作為測繪領域一項具有革命性的成就之一,通過幾十年的發展,如今的LiDAR 技術日趨完善,它正廣泛應用于測繪領域的各個方面。相對于歐美國家成熟的LiDAR 技術來說,我國目前在這方面的研究和應用還處于剛剛起步的階段,相關的數據處理方法還處于技術探索和發展的階段。

為了能有一個同一的標準,2003年美國攝影測量與遙感(ASPRS)協會下的LiDAR 委員會發布了主要面向機載LiDAR 數據的標準格式LAS??梢暬ぞ甙?Visualization Toolkit,VTK)是一個面向對象的可視化類庫,由于其功能強大、方便使用以及源代碼開放等特點,它被廣泛用于可視化工具的開發領域中。本文以2009年發布的LAS 1.3 為基礎,通過對其數據格式的解析與分析,在挪威TrollTech 公司開發的Qt 平臺上,結合VTK 技術,以C++為開發工具,實現了對LAS文件中的點云數據的快速讀取顯示,為后期對LiDAR數據處理奠定了初步的基礎。

2 機載LiDAR 技術概述

2.1 機載LiDAR 系統組成

機載LiDAR 系統是一個集多種電子設備于一身的集成系統。其主要組成包括:①激光測距儀,發生激光脈沖并接受回波;②動態差分GPS,用于確定掃描中心的空間位置;③慣性測量單元IMU,確定掃描儀的姿態;④高分辨率的數碼相機,與激光掃描儀同步獲取航空影像。

2.2 機載LiDAR 技術工作原理

(1)激光測距原理

激光測距的基本原理是利用光在空氣中的傳播速度已知這一特性,測定光波在被測距離上往返傳播的時間來求得距離值。它主要采用兩種測距原理,即脈沖激光測距和連續波激光測距。由于連續波激光測距雷達的平均發射功率較低,測距能力比相應的脈沖激光雷達測距差很多,所以當前大多數雷達系統都采用脈沖激光測距來測量距離。

(2)機載LiDAR 技術對地定位原理

假設地理空間中一點O 的三維坐標(X0,Y0,Z0)已知,求出這一已知點到待定點A(XA,YA,ZA)的向量P(模,方向余弦),則A 點的坐標可以根據O 點坐標與向量P 求出,如圖1所示。

圖1 機載LiDAR 技術對地定位原理

XA=X0+△X

YA=Y0+△Y

ZA=Z0+△Z

其中:

△X=FX(Φ,ω,Κ,θ,S)

△Y=FY(Φ,ω,Κ,θ,S)

△Z=FZ(Φ,ω,Κ,θ,S)

已知點O 的三維坐標(X0,Y0,Z0)由GPS 提供;方向余弦由觀測平臺的法線的俯仰角Φ、側滾角ω、航偏角K 及觀測方向與法線間夾角θ 組成的矢量矩陣求出,觀測平臺法線的Φ,ω,K 由姿態裝置給出;矢量的模S 由激光測距儀給出,上述X0,Y0,Z0,Φ,ω,K,θ,S已知,那么任意測定點A 的三維坐標(XA,YA,ZA)即可求出。

3 機載LiDAR 數據格式及特點

3.1 機載LiDAR 數據格式

機載LiDAR 數據一般有兩種格式:一種是ASCII格式,這種格式的數據便于讀取,但是它沒有壓縮,Li-DAR 數據通常都是海量數據,存儲和處理起來占用的內存較大;另一種是目前國際上通用的機載LiDAR 數據的標準格式LAS,LAS 數據格式文件采用的是二進制格式,包含更多的信息,占用的內存空間相對較小,LAS 標準格式是由美國攝影測量與遙感協會2003年開始發布的,經過改進,目前已有5 種版本,分別是LAS1.0,1.1,1.2,1.3,2.0,其中LAS1.3 版本是最常見到的數據格式。

3.2 LAS1.3 數據格式特點

LAS1.3 數據格式由二進制數據組成,包含一個頭文件區,變長記錄區和點記錄區。頭文件區包含一個公共區,后面緊接著變長記錄。公共區塊包含一些描述數據整體情況的記錄,比如點記錄數,坐標邊界。變長記錄包含一些變長類型數據,有投影信息,元數據,波形數據包信息和用戶應用數據。如果包含波形數據包的話,那么它位于所有點數據記錄的末尾。它被放置在該處以方便對它的分離或實體化。該記錄是一個擴展變長記錄(EVLR)。EVLR 的存儲格式為無符號超長整型,允許存儲比一個變長記錄更多的信息。

4 可視化工具包VTK

VTK 是一個用于3D 計算機圖形學、計算機圖像處理以及可視化應用程序的設計與開發,同時可以免費獲取,開放源代碼的獨立類庫。它包括兩個基本的子系統:一個是已經編譯好的C++類庫;另一個接口層,提供了支持Java,Tcl 和Python 等解釋性語言的接口。VTK 支持多線程,分布式運算,可支持多種用戶交互方式,支持事件/觀察者(Command/Observer)用戶事件處理模式并提供包括點(Point),線(Lines)和三角網(Triangle Strips)等多種基本繪制圖元,它可以在Windows,Linux 和Unix 等平臺下的多種編程調用,所以它被廣泛用于可視化工具的開發領域中。

4.1 VTK 的功能分類

由于VTK 的類庫特別龐大,所以根據各個類在類庫中的作用,將類庫中的類分成如下幾部分:公共部分(Common)、圖形處理部分(Graphics)、圖像處理部分(Imaging)、文件讀寫部分(IO)、繪制部分(Rendering)、數據轉換部分(Filtering)等,每部分被編譯成相應的動態連接庫。各部分在類庫中的層次如圖2所示。

圖2 VTK 類庫中的層次

4.2 VTK 可視化管道

VTK 是在OpenGL 函數庫的基礎之上,采用面向對象的方法發展起來的,它有兩種不同的方式:圖形模型(Graphics Models)和可視化模型(Visualization Models)。圖形模型是三維圖形的抽象,側重于對圖像、圖形的操作和處理;可視化模型是可視化過程中數據流程的模型,側重于在可視化過程中的數據流。VTK 可視化管道圖如圖3所示。

圖3 VTK 可視化管道圖

5 機載LiDAR 點云數據的可視化

Qt 是由奇趣科技開發的跨平臺C++圖形用戶界面應用程序開發框架。它既可以開發GUI 程式,也可用于開發非GUI 程式。Qt 的良好封裝機制使得Qt 的模塊化程度非常高,可重用性較好,同時它支持2D/3D 圖形渲染和OpenGL,這對于用戶開發來說是非常方便的?,F有2010年獲取的位于焦作市西北約30 km 處的太行山區部分機載LiDAR 點云數據作為實驗數據,其數據格式為LAS 1.3。在Qt 平臺上,結合VTK 技術,以C++為開發工具,即可實現這片區域點云數據的可視化(如圖4所示)。其主要可視化程序設計過程如下:

圖4 太行山區部分LiDAR 點云數據的可視化

(1)獲取點云數據

vtkPoints* pPoint=vtkPoints::New( ) ;

vtkPolyData* pdata=vtkPolyData::New( ) ;

pdata->SetPoints( pPoint) ;

(2)設置顏色表中的顏色

vtkLookupTable* pColorTable=vtkLookupTable::New( ) ;

pColorTable->SetHueRange(0,1) ;

pColorTable->SetNumberOfColors(225) ;

pColorTable->Build( ) ;

(3)創建映射器mapper 及演員actor

vtkPolyDataMapper* mapper=vtkPolyDataMapper::New( ) ;

vtkActor* actor=vtkActor::New( ) ;

mapper->SetInput( pdata) ;

actor->SetMapper( mapper) ;

(4)創建渲染器ren 及顯示窗口renwin

vtkRenderer* ren=vtkRenderer::New( ) ;

vtkRenderWindow* renwin=vtkRenderWindow::New( ) ;

ren->AddViewProp( actor) ;

renwin->AddRenderer( ren) ;

renwin->SetSize(800,800) ;

(5)創建交互窗口inter 及點云數據可視化顯示

vtkRenderWindowInteractor* inter = vtkRenderWindowInteractor::New( ) ;

inter->SetRenderWindow( renwin) ;

inter->Initialize( ) ;

inter->Start( ) ;

6 結 論

機載LiDAR 作為一種新興的現代化測量技術手段,它可以快速獲取地面地物的三維數據,得到點云數據。由于點云數據處理起來相對比較麻煩,筆者通過對機載LiDAR 點云數據標準格式的研究,基于VTK 技術編程實現了點云數據的快速讀取顯示,有助于后期生成DEM,三維建模等進一步的研究。

[1]楊洋,張永生.基于LiDAR 數據的建筑物輪廓提?。跩].測繪科學,2010,35(3) :203 ~205.

[2]陳松堯,程新文.機載LiDAR 系統原理及應用綜述[J].測繪工程,2007,16(2) :27 ~31.

[3]張靖,高偉.LAS 格式解析及其擴展域的應用[J].測繪科學,2008,33(3) :154 ~155.

[4]常君明,邱磊,鄒早建.基于VTK 的CFD 可視化系統開發和應用[J].武漢理工大學學報,2004,26(4) :83 ~85.

[5]劉玉芳,王潤懷,宋金星.基于VTK 的三維地層可視化探討[J].河南理工大學學報,2009,28(3) :303 ~306.

[6]李清泉,李必軍,陳靜.激光雷達測量技術及其應用研究[J].武漢測繪科技大學學報,2000,25(5) :387 ~392.

猜你喜歡
類庫激光測距數據格式
用Java編寫客戶機/服務器端應用程序
Python在數據可視化中的應用
基于LabVIEW的偏振調制激光測距測量控制系統
基于高壓架空線路激光測距的無人機鎖定導線巡航研究
數據結構課程教學改革方案和應用效果
數據結構可視化類庫的設計與實現
基于回波強度的激光測距誤差補償算法研究
世界首個可記錄物體內部結構等復雜信息的3D打印數據格式問世
論子函數在C語言數據格式輸出中的應用
自增益電路在激光測距中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合