索春寶 孫秀寧
(山東科技大學(xué)測繪科學(xué)與工程學(xué)院,山東青島 266590)
基于VTK的點(diǎn)云可視化
索春寶 孫秀寧
(山東科技大學(xué)測繪科學(xué)與工程學(xué)院,山東青島 266590)
針對.las格式的數(shù)據(jù)文件,給出了以QT為平臺,基于VTK、libLAS的點(diǎn)云可視化方法,并利用該方法進(jìn)行實(shí)驗(yàn)。經(jīng)實(shí)驗(yàn)驗(yàn)證該方法靈活、方便,更便于對多功能交互的發(fā)掘和實(shí)現(xiàn)。
VTK 點(diǎn)云可視化 LAS數(shù)據(jù)讀取
激光掃描技術(shù)是近年來出現(xiàn)的新技術(shù),它突破了單點(diǎn)測量方法,具有高效率、高精度的獨(dú)特優(yōu)勢。激光掃描技術(shù)可以快速獲取物體表面的空間點(diǎn)云數(shù)據(jù),通過對點(diǎn)云數(shù)據(jù)的結(jié)構(gòu)創(chuàng)建實(shí)現(xiàn)場景的渲染。隨著激光掃描技術(shù)的不斷發(fā)展和應(yīng)用范圍的不斷擴(kuò)大,激光掃描相關(guān)理論和技術(shù)的研究已經(jīng)成為熱點(diǎn)問題。散亂點(diǎn)云數(shù)據(jù)的可視化是激光掃描技術(shù)應(yīng)用的一個(gè)重要環(huán)節(jié)。本文針對.las格式散亂點(diǎn)云數(shù)據(jù)文件,結(jié)合庫的使用,實(shí)現(xiàn)點(diǎn)云的顯示和基本的交互操作。
本文以QT為開發(fā)工具,但QT并不能直接繪制、顯示三維坐標(biāo)點(diǎn),故借助VTK來實(shí)現(xiàn)三維點(diǎn)坐標(biāo)的繪制和顯示。
VTK(visualization toolkit)是由kitware團(tuán)隊(duì)創(chuàng)建和擴(kuò)展的,開源的、可跨平臺的可視化工具包,主要用于三維計(jì)算機(jī)圖形、圖像處理和可視化。VTK是在面向?qū)ο蟮幕A(chǔ)上設(shè)計(jì)和實(shí)現(xiàn)的,采用c++構(gòu)建核心內(nèi)容。另外VTK能夠進(jìn)行自動(dòng)語言轉(zhuǎn)換,故可同時(shí)支持Tcl/Tk,Java和Python等多種語言。VTK作為可視化工具包使可視化應(yīng)用更加普及,為人們提供了一種較簡便、通用的可視化方式。它擁有豐富、多樣的可視化算法:標(biāo)量、矢量、張量、紋理和體積的可視化方法,和先進(jìn)的建模技術(shù):隱式建模,減少多邊形,網(wǎng)格平滑,切割,描繪輪廓和Delaunay三角網(wǎng)等。除了可視化功能以外,VTK還擁有一套三維交互控件,涵蓋了基本的點(diǎn)云顯示時(shí)所需的人機(jī)交互操作,且可以進(jìn)行交互操作的自定義。
VTK官方網(wǎng)站http://www.vtk.org/為我們提供了source文件,首先利用Cmake對source文件進(jìn)行編譯,然后在平臺下進(jìn)行創(chuàng)建。
完成VTK的安裝后,還需要在QT中進(jìn)行配置:主要是路徑的包含和庫文件的添加:
圖1 VTK Pipeline的可視化流程
圖2.LAS數(shù)據(jù)文件數(shù)據(jù)提取流程
VTK的可視化管線設(shè)計(jì)是基于管線流的設(shè)計(jì)模式,將要處理的數(shù)據(jù)作為流動(dòng)介質(zhì)在管線中流動(dòng),不同的階段對數(shù)據(jù)進(jìn)行不同的處理,最終完成處理數(shù)據(jù)的顯示。VTK的可視化管線設(shè)計(jì)如圖1所示[1]。
在可視化過程中,首先確定數(shù)據(jù)源(DataSource),可以是利用vtk功能創(chuàng)建的數(shù)據(jù)源,更多的是數(shù)據(jù)文件,通過對數(shù)據(jù)文件的讀取使數(shù)據(jù)以數(shù)據(jù)流的形式在管線中流動(dòng)[2];選擇適當(dāng)?shù)臄?shù)據(jù)處理方法,使數(shù)據(jù)流到達(dá)過濾(Filter)階段對數(shù)據(jù)進(jìn)行處理,形成新的數(shù)據(jù)集;這時(shí)的數(shù)據(jù)已經(jīng)不再是離散的點(diǎn),而是具有一定的幾何結(jié)構(gòu),接下來是幾何數(shù)據(jù)到圖形數(shù)據(jù)的轉(zhuǎn)換階段:映射(Mapper)階段??梢暬P蛣?chuàng)建完畢,接下來是圖形模型的建立,首先是圖形數(shù)據(jù)的承載者角色(Actor),主要負(fù)責(zé)設(shè)置修飾效果;其次是渲染窗口(Renderer Window)的設(shè)置,主要有兩個(gè)應(yīng)用:渲染環(huán)境的設(shè)置和人機(jī)交互的實(shí)現(xiàn);在一切準(zhǔn)備就緒后就可以由渲染器(Renderer)發(fā)出Render()命令,進(jìn)行渲染,實(shí)現(xiàn)數(shù)據(jù)的可視化。
完成點(diǎn)云數(shù)據(jù)的顯示后,我們還需要實(shí)現(xiàn)對數(shù)據(jù)的多角度觀察,也就是交互問題。在可視化管線中vtkRenderwindowInteractor類為我們提供了簡便的實(shí)現(xiàn)交互的方式,根據(jù)需求,選擇vtkInteractor Style的子類vtkInteractorStyleTrackballCamera來實(shí)現(xiàn)旋轉(zhuǎn)、縮放、平移等交互操作。
VTK Pipeline采用串聯(lián)方式將實(shí)現(xiàn)不同功能的各階段連接起來,形成管線,方便數(shù)據(jù)流的流動(dòng):上一階段的輸出作為下一階段的輸入,不斷延續(xù)下去,直到碰到Mapper或sink。隨著科學(xué)技術(shù)的不斷發(fā)展,數(shù)據(jù)格式多種多樣,數(shù)據(jù)量急劇增加,這對科學(xué)可視化數(shù)據(jù)量和數(shù)據(jù)傳播提出了很大的挑戰(zhàn)[3]。
LAS數(shù)據(jù)文件包含的是標(biāo)準(zhǔn)LIDAR數(shù)據(jù)格式,現(xiàn)已發(fā)展為四個(gè)版本,分別是:LAS1.0,1.1,1.2,2.0(擬定版)[4]。隨著版本的不同,其數(shù)據(jù)存儲越來越靈活,信息越來越豐富。標(biāo)準(zhǔn)的LAS數(shù)據(jù)存儲格式包含三個(gè)部分:公共文件頭區(qū),用于記錄LAS文件的普通信息,如點(diǎn)的個(gè)數(shù)等;變長記錄區(qū),主要包含元數(shù)據(jù),文件采用的坐標(biāo)系等等;格式點(diǎn)集記錄區(qū),用于記錄點(diǎn)的X、Y、Z和屬性[5]。LAS數(shù)據(jù)文件的一般數(shù)據(jù)提取流程如圖2所示。
LAS文件是二進(jìn)制格式,但由于它有自己特定的文件頭結(jié)構(gòu)和數(shù)據(jù)組織,故需要專業(yè)軟件進(jìn)行讀取。LibLAS是針對LAS文件的讀與寫的庫,利用庫函數(shù)可以方便、快捷的進(jìn)行.las文件數(shù)據(jù)的讀取。本文針對LAS數(shù)據(jù)文件,利用libLAS庫的liblas::Reader實(shí)現(xiàn)文件內(nèi)數(shù)據(jù)的讀取,并將數(shù)據(jù)賦值給vtkPoints,從而傳遞到vtk可視化管線中。
VTK支持并行處理,且是開源的,具有可移植性。在實(shí)踐中,我們可以利用VTK,結(jié)合語言平臺,實(shí)現(xiàn)多種功能。例如,我們可以利用QT平臺的界面創(chuàng)建優(yōu)勢,結(jié)合VTK庫可視化管線,進(jìn)行數(shù)據(jù)成果展示,軟件開發(fā)等。VTK的開源特性方便了我們添加自己需要的功能,為新功能的發(fā)掘和實(shí)現(xiàn)提供支持。另外,我們也可以在遵循VTK本身設(shè)計(jì)模式的基礎(chǔ)上,定義新的類,嵌入其中,進(jìn)一步完善VTK。
[1]許慶功,李昌華.VTK框架結(jié)構(gòu)與運(yùn)行機(jī)制的探討[J].洛陽理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2008,18(1):67-70.
[2] William J. Schroeder, Lisa S. Avila, Kenneth M. Martin. The Visualization Toolkit User's Guide[M], GE Corporate Research &Development.
[3] Will Schroeder, Ken Martin, Bill Lorensen. The Visualization Toolkit[M].USA, Pearson Education,Inc.
[4]劉春,姚銀銀,吳杭彬.機(jī)載激光掃描(LIDAR)標(biāo)準(zhǔn)數(shù)據(jù)格式(LAS)的分析與數(shù)據(jù)讀取[J].遙感應(yīng)用,2009:38-42.
[5]趙自明,史兵,田喜平,趙松.LAS格式解析及其數(shù)據(jù)的讀取與顯示[J].測繪技術(shù)裝備,2010,12(3):17-20.
索春寶(1989—),男,碩士生,主要從事視覺/慣導(dǎo)組合導(dǎo)航方面的研究工作。孫秀寧(1989—),女,碩士生,主要研究方向?yàn)橐苿?dòng)測量數(shù)據(jù)采集與處理。
索春寶。