資源描述:
《基于VTK的點(diǎn)云數(shù)據(jù)繪制研究與實(shí)現(xiàn).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、基于VTK的點(diǎn)云數(shù)據(jù)繪制研究與實(shí)現(xiàn)作者簡(jiǎn)介:段文國(guó)(1983-),男,湖北人,碩士研究生,研究方向:三維信息獲取與三維可視化。張愛武(1972-),女,教授,研究方向:三維信息獲取與處理、計(jì)算機(jī)視覺與模式識(shí)別、三維可視化。段文國(guó)張愛武蔡廣杰(首都師范大學(xué)三維信息獲取與應(yīng)用教育部重點(diǎn)實(shí)驗(yàn)室,北京100037)摘要:本文結(jié)合可視化工具開發(fā)包VTK,比較了幾種圖像繪制算法的特點(diǎn),并選取最常用的移動(dòng)立方體算法,對(duì)激光掃描儀所獲取的點(diǎn)云數(shù)據(jù)進(jìn)行繪制,重點(diǎn)介紹了點(diǎn)云數(shù)據(jù)的處理、場(chǎng)景繪制、顯示輸出,并給出了部分實(shí)現(xiàn)代碼。關(guān)鍵詞:VTK,三維數(shù)據(jù)場(chǎng),移動(dòng)立方體,點(diǎn)
2、云引言隨著激光掃描系統(tǒng)在工業(yè)生產(chǎn)的中廣泛應(yīng)用,利用激光掃描儀獲取到的深度數(shù)據(jù)進(jìn)行場(chǎng)景的三維重建在數(shù)字古建、文物保存等領(lǐng)域具有廣闊的應(yīng)用前景,傳統(tǒng)的處理方法利用三維處理軟件對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行處理,獲取場(chǎng)景的三維模型。隨著三維建模技術(shù)的不斷發(fā)展,出現(xiàn)了大量復(fù)雜的可視化處理算法和開發(fā)工具。本文研究了基于三維可視化工具包VTK在可視化開發(fā)過程中常用到的場(chǎng)景繪制算法及其實(shí)現(xiàn)。一、VTK簡(jiǎn)介VTK(VisualizationToolkit)是美國(guó)Kitware公司開發(fā)的一套三維可視化圖形系統(tǒng),封裝了目前許多優(yōu)秀的三維數(shù)據(jù)場(chǎng)可視化算法,可對(duì)數(shù)據(jù)集進(jìn)行各種變換和操作;
3、支持多種語(yǔ)言,多種平臺(tái);生成圖像的速度快;圖形質(zhì)量?jī)?yōu)秀,用戶交互手段豐富[1]。VTK有圖形模式和可視化模式兩種不同的模式。圖形模式主要用來將數(shù)據(jù)集的幾何形狀展示為直觀的三維圖形,并對(duì)實(shí)體、光照、照相機(jī)、繪制窗口等屬性進(jìn)行設(shè)置和操作,完成圖像生成和用戶交互的功能??梢暬J接蓛深惢镜膶?duì)象組成:數(shù)據(jù)對(duì)象和處理對(duì)象。在VTK中,有5種數(shù)據(jù)集類型,分別是:StructuredPoints,StructuredGrid、UnstructuredPoints、PolygonalData、UnstructuredGrid[2]。處理對(duì)象按功能分為三種:數(shù)據(jù)源
4、對(duì)象、過濾器、映射器。數(shù)據(jù)源對(duì)象用于產(chǎn)生或接收數(shù)據(jù)集,并將其導(dǎo)入到可視化網(wǎng)絡(luò)之中,是可視化網(wǎng)絡(luò)的起點(diǎn)。過濾器用于對(duì)數(shù)據(jù)集進(jìn)行各種算法的處理,它接收數(shù)據(jù)集輸入,也可產(chǎn)生一個(gè)或多個(gè)數(shù)據(jù)集輸出。映射器是可視化網(wǎng)絡(luò)的終點(diǎn),將處理后的數(shù)據(jù)集映射為可展示的幾何形狀[3]。二、點(diǎn)云數(shù)據(jù)預(yù)處理三維激光掃描儀能夠快速獲取近距離物體的三維信息,從而能夠快速建立起物體的三維框架,三維激光掃描儀獲取的原始數(shù)據(jù)就是點(diǎn)云數(shù)據(jù),它是一種空間數(shù)據(jù)的集合,數(shù)據(jù)點(diǎn)之間是離散的,下圖是利用激光掃描儀獲取的云崗石窟局部點(diǎn)云模型圖。圖1云崗石窟佛像原始點(diǎn)云模型圖同時(shí),通過激光掃描儀得到的點(diǎn)
5、云數(shù)據(jù)量巨大,一般具有成千上萬(wàn)個(gè)數(shù)據(jù)點(diǎn)。通常激光掃描儀得到的點(diǎn)云數(shù)據(jù)是一個(gè)多行3列的矩陣,每行分別記錄數(shù)據(jù)點(diǎn)的x,y,z三個(gè)坐標(biāo)值,這樣很容易設(shè)計(jì)出一種數(shù)據(jù)結(jié)構(gòu)將點(diǎn)云數(shù)據(jù)存入數(shù)據(jù)庫(kù),方便數(shù)據(jù)存取[2]。圖2是經(jīng)過處理后的點(diǎn)云數(shù)據(jù)結(jié)構(gòu)示意圖。圖2掃描后點(diǎn)云數(shù)據(jù)結(jié)構(gòu)圖獲取點(diǎn)云數(shù)據(jù)后,一般需要進(jìn)行預(yù)處理,包括:噪點(diǎn)去除,即去掉錯(cuò)誤的數(shù)據(jù);數(shù)據(jù)精簡(jiǎn),由于點(diǎn)云數(shù)據(jù)量大,在不影響完整性的情況下一般需要進(jìn)行精簡(jiǎn)。這些工作可以通過激光掃描儀配套的應(yīng)用軟件或二次軟件開發(fā)包進(jìn)行處理[4]。三、基于VTK的體繪制及其實(shí)現(xiàn)3.1間接體繪制三維數(shù)據(jù)場(chǎng)是當(dāng)前可視化研究的重點(diǎn),
6、也是實(shí)踐中最常遇到的。對(duì)三維空間體數(shù)據(jù)來說,有兩類不同的可視化算法,第一類算法由采用多邊形來對(duì)物體的表面進(jìn)行擬合,由三維空間構(gòu)造出中間幾何圖元,再進(jìn)行畫面繪制也叫間接體繪制。間接體繪制最常用的是MC(marchingcubes)方法,該方法是由W.ELorenson和H.E.Cline在1987年提出的。此方法是基于三維規(guī)則數(shù)據(jù)場(chǎng)抽取等值面的經(jīng)典算法,算法的基本思想是把三維圖像相鄰層上的各四個(gè)像素組成立方體的八個(gè)頂點(diǎn),逐個(gè)處理三維圖像中的立方體,分類出與等值面相交的立方體,采用線形插值計(jì)算出等值面與立方體邊的交點(diǎn)。根據(jù)立方體每一頂點(diǎn)與等值面的相對(duì)位
7、置,將等值面與立方體的邊的交點(diǎn)按一定方式連接生成等值面,作為等值面在該立方體內(nèi)的一個(gè)逼近表示。由于每個(gè)立方體有8個(gè)角點(diǎn),每個(gè)角點(diǎn)又有0,1兩種狀態(tài),因此每個(gè)立方體最多就有256種狀態(tài)。Lorensen和Cline利用立方體單元的旋轉(zhuǎn)對(duì)稱性和倒置對(duì)稱性,將這256種情況減少到15種。如圖3所示:圖3體元角點(diǎn)函數(shù)值分布情況圖MC方法求等值面的算法流程如下:[5](1)將三維離散規(guī)則數(shù)據(jù)場(chǎng)分層讀入內(nèi)存;(2)掃描兩層數(shù)據(jù),逐個(gè)構(gòu)造體元,每個(gè)體元中的8個(gè)頂點(diǎn)取自相鄰的兩層;(3)將體元每個(gè)頂點(diǎn)的函數(shù)值與給定的等值面值C0作比較,根據(jù)比較結(jié)果,構(gòu)造該體元的狀
8、態(tài)表;(4)根據(jù)狀態(tài)表,得出將與等值面有交點(diǎn)的體元邊界;(5)通過線性插值方法,計(jì)算出體元邊界與等值面的交點(diǎn);(6)利用中