• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VTK的激光跟蹤測量可視化軟件設(shè)計(jì)

      2015-07-02 01:23:48張潤宇李月強(qiáng)張滋黎袁江周維虎
      計(jì)測技術(shù) 2015年1期
      關(guān)鍵詞:繪制可視化激光

      張潤宇,李月強(qiáng),張滋黎,袁江,周維虎

      (1.北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京100192;2.中國科學(xué)院光電研究院,北京100094)

      基于VTK的激光跟蹤測量可視化軟件設(shè)計(jì)

      張潤宇1,2,李月強(qiáng)1,張滋黎2,袁江2,周維虎2

      (1.北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京100192;2.中國科學(xué)院光電研究院,北京100094)

      測量數(shù)據(jù)的三維可視化是激光跟蹤測量數(shù)據(jù)處理的關(guān)鍵步驟之一。結(jié)合大型激光跟蹤測量軟件系統(tǒng)的開發(fā)實(shí)踐,對(duì)VTK技術(shù)特點(diǎn)和體系結(jié)構(gòu)進(jìn)行深入研究,設(shè)計(jì)實(shí)現(xiàn)了對(duì)測量數(shù)據(jù)進(jìn)行處理和顯示的類和接口。在此基礎(chǔ)上,基于Microsoft Visual Studio 2010平臺(tái),利用C++和VTK技術(shù)開發(fā)了一款三維測量數(shù)據(jù)處理及可視化軟件,實(shí)現(xiàn)了測量點(diǎn)云擬合、三維圖形顯示以及交互功能,并通過實(shí)例驗(yàn)證了軟件的有效性和可用性,證明了VTK在工業(yè)測量可視化領(lǐng)域具有很大的應(yīng)用價(jià)值。

      VTK;三維可視化;測量軟件;點(diǎn)云;交互

      0 引言

      對(duì)大尺寸部件的幾何特征點(diǎn)、空間尺寸和表面形貌的精密測量在航空航天、汽車、造船等工業(yè)領(lǐng)域具有廣泛應(yīng)用。在常見的大尺寸部件的工業(yè)測量系統(tǒng)中,激光跟蹤測量系統(tǒng)以其便攜性、高精度、測量范圍大、實(shí)時(shí)跟蹤測量等優(yōu)點(diǎn)[1],逐漸成為工業(yè)測量領(lǐng)域研究的焦點(diǎn)。同時(shí),隨著可視化和三維顯示技術(shù)的快速發(fā)展,工業(yè)測量三維可視化軟件也成為激光跟蹤測量系統(tǒng)中不可或缺的得力工具。截至目前,國外有諸多公司推出了工業(yè)測量三維可視化軟件,例如美國的NRK公司的SA(Spatial Analyzer)軟件[2]、美國的Geomagic公司的Geomagic Studio軟件[3]等。本文采用面向?qū)ο蠹夹g(shù)設(shè)計(jì)并實(shí)現(xiàn)了一套應(yīng)用于激光跟蹤測量的三維可視化測量軟件,該軟件基于VTK和MFC框架平臺(tái)開發(fā)而成,其設(shè)計(jì)良好,操作簡便,并最終用實(shí)例進(jìn)行了有效性驗(yàn)證。該軟件是為數(shù)不多的將VTK技術(shù)應(yīng)用在工業(yè)測量領(lǐng)域的國內(nèi)軟件,為其他可視化項(xiàng)目提供了很好的指引和借鑒。

      1 VTK技術(shù)及其特點(diǎn)

      1.1 VTK簡介

      現(xiàn)有的三維可視化開發(fā)工具主要有OpenGL,DirectX,VTK等,其中VTK是由美國Kitware公司負(fù)責(zé)維護(hù),在醫(yī)學(xué)、能源、地質(zhì)等領(lǐng)域頗受重用。VTK在OpenGL基礎(chǔ)上用C++語言開發(fā)而成,采用面向?qū)ο笤O(shè)計(jì),并含有對(duì)Python,Java,Tcl等語言的接口[4],具有開源和跨平臺(tái)的特性,發(fā)展速度很快。

      1.2 VTK特點(diǎn)

      1)專注于功能:VTK封裝了復(fù)雜的底層環(huán)境代碼和算法處理,并提供了大量的編程接口,使開發(fā)人員更專注于高級(jí)功能的實(shí)現(xiàn)。

      2)易于開發(fā):由于采用面向?qū)ο笤O(shè)計(jì),VTK封裝性很好,可視化管道中各個(gè)階段的數(shù)據(jù)、處理器均以類和對(duì)象的形式使用,大大增強(qiáng)代碼的正確性、可讀性,便于開發(fā)和維護(hù)。

      3)獨(dú)一無二的可視化管道設(shè)計(jì):VTK與OpenGL,OSG等其他三維可視化開發(fā)工具的主要區(qū)別就在于VTK采用管道式設(shè)計(jì)(Pipeline)實(shí)現(xiàn)三維顯示[5]。原始數(shù)據(jù)在管道中通過各種過濾器和映射器得到對(duì)應(yīng)的圖形結(jié)構(gòu),再通過相應(yīng)的圖形繪制器繪制成三維圖形顯示出來,節(jié)約大量設(shè)計(jì)和開發(fā)時(shí)間,效率高。

      可以看出,VTK能應(yīng)用于如今大多數(shù)三維可視化項(xiàng)目中,逐漸成為三維可視化領(lǐng)域中的流行技術(shù)。

      2 軟件框架設(shè)計(jì)

      2.1 VTK和M FC框架的建立

      微軟基礎(chǔ)類庫MFC為編寫在Windows系統(tǒng)下的VTK程序提供了良好的平臺(tái)基礎(chǔ)。在MFC的視圖類窗口上關(guān)聯(lián)VTK窗口,即在VTK繪制窗口函數(shù)接口與MFC視圖類窗口函數(shù)接口之間建立調(diào)用關(guān)系,以實(shí)現(xiàn)初始化MFC和VTK、設(shè)置環(huán)境變量、復(fù)雜交互等功能,具體步驟如圖1所示。

      圖1 建立VTK和MFC程序框架流程

      2.2 軟件的設(shè)計(jì)要求

      激光跟蹤測量可視化軟件主要用于實(shí)現(xiàn)用戶對(duì)激光跟蹤儀測量的點(diǎn)云數(shù)據(jù)的操作,包括數(shù)據(jù)傳輸、誤差處理、點(diǎn)云擬合、數(shù)據(jù)庫管理,以及三維顯示和交互。其中,三維顯示包括對(duì)點(diǎn)云、直線、平面、圓、球、圓柱、圓錐、曲面等圖元的顯示,以及誤差分析的可視化;交互操作包括平移、旋轉(zhuǎn)、縮放、定位、懸浮信息、生成報(bào)表等;數(shù)據(jù)庫管理包括點(diǎn)云數(shù)據(jù)和各個(gè)擬合圖形數(shù)據(jù)的新建、插入、編輯、刪除,以及數(shù)據(jù)庫的新建、連接、更新等。

      2.3 三維顯示和交互模塊設(shè)計(jì)

      在三維顯示和交互模塊中主要設(shè)計(jì)了兩個(gè)類,分別是類CVtkSetup和類CVtkEntity。類CVtkSetup負(fù)責(zé)完成VTK窗口初始化、環(huán)境設(shè)置和交互操作,而類CVtkEntity負(fù)責(zé)完成三維顯示的實(shí)現(xiàn)以及三維顯示相關(guān)的數(shù)值計(jì)算、數(shù)據(jù)構(gòu)建和條件檢查等功能。

      作為初始化和交互類,類CVtkSetup定義了VTK窗口及其初始化函數(shù),還包括坐標(biāo)軸、懸浮信息、誤差可視化等交互工具,以及鼠標(biāo)拖拽查看、選取元素等交互方式。三維顯示模塊與軟件主體的接口也在類CVtkSetup中定義,通過窗口句柄和指針的方式,軟件主體可以訪問三維顯示和交互模塊的操作,這樣用戶在數(shù)據(jù)處理和三維交互操作之間頻繁切換時(shí)就做到直接、無縫。

      作為三維顯示實(shí)現(xiàn)類,類CVtkEntity描述了點(diǎn)、直線、平面、球、圓柱、圓錐等圖元的屬性,包括位置坐標(biāo)、尺寸、ID號(hào)、顏色、誤差信息等;此外,針對(duì)不同的圖元,設(shè)計(jì)實(shí)現(xiàn)了不同的圖元數(shù)據(jù)構(gòu)建方式,通過與數(shù)據(jù)庫建立連接,導(dǎo)入數(shù)據(jù)到標(biāo)準(zhǔn)庫數(shù)據(jù)結(jié)構(gòu)中進(jìn)行顯示。具體的類和接口設(shè)計(jì)如圖2所示。

      圖2 三維顯示和交互模塊中主要的類和接口示意圖

      3 軟件可視化管道的設(shè)計(jì)

      在完成軟件框架和模塊設(shè)計(jì)之后,要實(shí)現(xiàn)從數(shù)據(jù)到三維圖形的構(gòu)建和顯示流程。之前提到,VTK主要的特色就是采用可視化管道流程進(jìn)行三維圖形顯示。在三維可視化軟件里具體分為三個(gè)部分,分別是VTK繪制環(huán)境構(gòu)建、圖形數(shù)據(jù)構(gòu)建、VTK三維可視化,其中圖形數(shù)據(jù)的構(gòu)建是關(guān)鍵步驟,以下是各部分詳細(xì)設(shè)計(jì)流程。

      3.1 VTK繪制環(huán)境構(gòu)建流程

      構(gòu)建VTK繪制環(huán)境的主要工作在圖2中的VtkInitialize函數(shù)里實(shí)現(xiàn)。繪制器對(duì)象Renderer、繪制窗口RenderWindow、交互器對(duì)象Interactor、交互方式InteractorStyle以及相機(jī)對(duì)象Camera、光照對(duì)象Light共同構(gòu)成了繪制環(huán)境,其中繪制器對(duì)象設(shè)置Camera、Light和背景,RenderWindow指定關(guān)聯(lián)的父窗口,并在繪制環(huán)境創(chuàng)建完成后開始VTK消息循環(huán)。

      3.2 圖形數(shù)據(jù)構(gòu)建流程

      圖形的顯示是三維可視化軟件的關(guān)鍵部分,不同類型的圖形有不同的數(shù)據(jù)構(gòu)建方法。VTK使用數(shù)據(jù)流方法將原始數(shù)據(jù)變換成圖形數(shù)據(jù),構(gòu)建好的具有正式結(jié)構(gòu)的數(shù)據(jù)叫做數(shù)據(jù)集(DataSet),數(shù)據(jù)集對(duì)象由幾何和拓?fù)浣Y(jié)構(gòu)以及屬性數(shù)據(jù)組成[6]。單元格(Cell)是拓?fù)浣Y(jié)構(gòu)的組成原子,點(diǎn)(Point)是幾何結(jié)構(gòu)的組成原子,屬性(Property)是單元格與點(diǎn)的附加的屬性信息,如誤差、測量值等。數(shù)據(jù)集按結(jié)構(gòu)可分為規(guī)則格網(wǎng)(StructuredGrid)、不規(guī)則格網(wǎng)(UnstructuredGrid)和多邊形數(shù)據(jù)集(PolygonalData)[7]。對(duì)于散亂不規(guī)則點(diǎn)云,可用不規(guī)則格網(wǎng)表示;而對(duì)于有結(jié)構(gòu)的規(guī)則的點(diǎn)云,可用多邊形數(shù)據(jù)集或規(guī)則格網(wǎng)表示,從而組成三維圖形。數(shù)據(jù)集的分類和結(jié)構(gòu)組成如圖3所示。

      圖3 數(shù)據(jù)集的分類和結(jié)構(gòu)組成

      數(shù)據(jù)集的構(gòu)建工作主要在圖2中的各個(gè)圖形顯示接口中實(shí)現(xiàn),不同的圖形數(shù)據(jù)需要不同的數(shù)據(jù)集來表示,一般來說,先用標(biāo)準(zhǔn)庫容器Vector讀入原始點(diǎn)云數(shù)據(jù),然后通過循環(huán)按照點(diǎn)的ID將點(diǎn)依次插入到單個(gè)圖元里,將各個(gè)圖元插入到單元格陣列(CellArray)中組成拓?fù)浣Y(jié)構(gòu),最后創(chuàng)建數(shù)據(jù)集,并指定其幾何結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu)[8]。

      下面是創(chuàng)建圖形數(shù)據(jù)步驟的主要代碼的偽碼:

      3.3 VTK可視化管道

      數(shù)據(jù)集構(gòu)建好之后就可以建立可視化管道,數(shù)據(jù)集依次通過過濾器(Filter)和映射器(Mapper)對(duì)數(shù)據(jù)集進(jìn)行濾波、映射處理[9],用圖形對(duì)象(Actor)接收映射后的數(shù)據(jù),從而完成了數(shù)據(jù)集到圖形對(duì)象的轉(zhuǎn)換,最后把圖形對(duì)象添加到繪制器中,再由繪制窗口繪制并刷新即可完成三維圖形顯示。全部的三維可視化管道構(gòu)建總流程如圖4所示。

      圖4 三維可視化管道構(gòu)建總流程

      4 系統(tǒng)實(shí)現(xiàn)

      4.1 軟件系統(tǒng)界面

      本軟件在 Visual Studio 2010平臺(tái)上基于 C++、MFC和VTK共同開發(fā)而成,數(shù)據(jù)庫操作通過ADO方式訪問Access數(shù)據(jù)庫實(shí)現(xiàn),目前已完成數(shù)據(jù)讀取和編輯、測量點(diǎn)云擬合計(jì)算、基本圖形的三維顯示及人機(jī)交互操作等功能。軟件界面上方為系統(tǒng)菜單欄和工具欄,下方主視圖的左側(cè)是資源瀏覽視圖,右側(cè)是三維顯示視圖。加載數(shù)據(jù)庫后的軟件界面如圖5所示。

      圖5 軟件總體界面

      4.2 測量數(shù)據(jù)的處理與顯示

      4.2.1 數(shù)據(jù)讀取和編輯

      本軟件可以實(shí)現(xiàn)對(duì)多種格式點(diǎn)云數(shù)據(jù)的讀取,包括excel格式和txt格式等。同時(shí)對(duì)系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)可以在菜單項(xiàng)中進(jìn)行參數(shù)編輯、增加、刪除等操作。4.2.2 點(diǎn)云擬合算法的選擇

      本軟件當(dāng)前采用的擬合算法是最小二乘擬合法,當(dāng)測量的數(shù)據(jù)點(diǎn)具有代表性,尤其是在已知形狀求取參數(shù)的情況下使用非常有效[10]。由于激光跟蹤測量的點(diǎn)中有許多是特征點(diǎn),且大多數(shù)被測物形狀已知,測量點(diǎn)并不太多,因此采用最小二乘擬合算法擬合基礎(chǔ)圖形是較為合適的。其思想是測量數(shù)據(jù)和真實(shí)數(shù)據(jù)之間存在一個(gè)誤差v,也叫殘差。使所有測量點(diǎn)的誤差的平方和最小,此時(shí)求得的參數(shù)為無偏估計(jì)值,滿足條件的方程成為正規(guī)方程。

      以球面擬合為例,擬合步驟如下:

      1)給出球的一般方程:

      式中:(X0,Y0,Z0)為球心坐標(biāo);R為球半徑。

      2)按半徑R進(jìn)行最小二乘計(jì)算,以(X0,Y0,Z0,R)為待估計(jì)參數(shù),線性化得到第i個(gè)測量點(diǎn)的誤差方程:

      式中:vi為第i次觀測的殘差;,,為解算出的球心坐標(biāo)作為真實(shí)值;Xi,Yi,Zi為球面坐標(biāo)的觀測值;為解算出的球半徑的觀測值。

      3)建立正規(guī)方程ATAX=ATV,其中A為向量X的參數(shù)矩陣,X=(X0,Y0,Z0,R)T,V=(V1,V2,…,Vn)T。由此解算出待估計(jì)參數(shù)(X0,Y0,Z0,R),具體計(jì)算過程不再贅述。

      4.2.3 實(shí)驗(yàn)測量數(shù)據(jù)與三維顯示

      本軟件通過實(shí)驗(yàn)用激光跟蹤儀測試觀測直線、圓、球等得到測量所得點(diǎn)云數(shù)據(jù),共203個(gè)點(diǎn),導(dǎo)入數(shù)據(jù)庫后顯示所用時(shí)間為0.01284 s,點(diǎn)云及其所擬合圖形的顯示效果如圖6所示。

      軟件根據(jù)三維圖形整體計(jì)算一個(gè)包圍盒,進(jìn)行全局顯示和縮放,當(dāng)坐標(biāo)系或計(jì)算單位發(fā)生變化時(shí),軟件會(huì)調(diào)用繪制函數(shù)應(yīng)對(duì)視圖的變化。當(dāng)鼠標(biāo)懸停在圖形上方時(shí),會(huì)顯示半透明的懸浮窗描述當(dāng)前圖形的位置、誤差信息,用戶也可以自定義要顯示的信息。當(dāng)數(shù)據(jù)庫發(fā)生變化時(shí),如插入、刪除、新建等,軟件會(huì)進(jìn)行相應(yīng)的函數(shù)調(diào)用,如繪制圖形、釋放圖形資源、清理可視化窗口等。

      圖6 點(diǎn)云擬合直線及空間中的圓

      4.3 交互操作

      本軟件采用鼠標(biāo)和快捷鍵結(jié)合的操作方式實(shí)現(xiàn)人機(jī)交互。用戶可通過鼠標(biāo)完成三維圖形的旋轉(zhuǎn)、縮放、平移、拾取、懸停查看等操作;通過工具欄的圖標(biāo),用戶可以打開圖形編輯、坐標(biāo)數(shù)據(jù)等窗口,操作簡潔、流暢。以平移和旋轉(zhuǎn)為例,系統(tǒng)的人機(jī)交互操作效果如圖7所示,顯示坐標(biāo)系、坐標(biāo)數(shù)據(jù)窗口及鼠標(biāo)懸浮窗口如圖8所示。

      圖7 平移+旋轉(zhuǎn)前后效果

      圖8 坐標(biāo)系、坐標(biāo)數(shù)據(jù)窗口及懸浮窗口的顯示

      5 結(jié)語

      本文設(shè)計(jì)開發(fā)的三維測量數(shù)據(jù)可視化軟件實(shí)現(xiàn)了測量數(shù)據(jù)的讀取和編輯、數(shù)據(jù)擬合及圖形的三維顯示、人機(jī)交互等基本功能。軟件運(yùn)行流暢、有效,操作簡潔,易于使用。相對(duì)于其他可視化工具,VTK能在較短的時(shí)間內(nèi)開發(fā)出更復(fù)雜的顯示和交互功能,顯示效果更好,運(yùn)行流暢度更高。應(yīng)該注意到軟件目前還達(dá)不到SpatialAnalyzer軟件的高度,在通用性、集成度、功能性上仍存在差距,但其作為自帶軟件已有不錯(cuò)的應(yīng)用,且會(huì)持續(xù)開發(fā)。本軟件目前已成功應(yīng)用于激光跟蹤測量系統(tǒng)中,其研發(fā)也可為其他工業(yè)測量可視化項(xiàng)目提供借鑒,同時(shí)也助于發(fā)掘VTK在工程測量數(shù)據(jù)可視化領(lǐng)域的價(jià)值。

      [1]張博,彭軍.激光跟蹤測量系統(tǒng)[J].計(jì)測技術(shù),2006,26 (4):5-6,41.

      [2]New River Kinematics(NRK).Overview of Spatial Analyzer[EB/OL].[2014-10-20].http://www.kinematics.com/ spatialanalyzer/index.php.

      [3]Geomagic.Overview of Geomagic Studio[EB/OL].[2014-10-28].http://www.geomagic.com/en/products/studio/overview.

      [4]Kitware Inc.Visualizing with VTK a Tutorial[J].IEEE CG&A,2000,9:20-27.

      [5]Frédéric Magoulès,Roman Putanowicz.Visualization of large data sets bymixing Tcl and C++interfaces to the VTK library[J].Computers and Structures,2007,85:536-552.

      [6]畢林,王李管,陳建宏,等.基于VTK的礦體三維可視化研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(10): 78-81.

      [7]Kitware Inc.The VTK User’s Guide[M].New York:Published by Kitware Inc.,2010.

      [8]余翔宇,徐義賢,王彬彬.基于VTK的地質(zhì)體三維建模實(shí)現(xiàn)[J].工程勘察,2014(2):64-72.

      [9]羅火靈,許永忠,陳世仲.基于VTK和MFC的醫(yī)學(xué)圖像三維重建研究與實(shí)現(xiàn)[J].生物醫(yī)學(xué)工程學(xué)進(jìn)展,2010,31 (1):23-28.

      [10]賀磊,黃桂平,李廣云,等.工業(yè)測量數(shù)據(jù)的可視化方法研究[J].信息工程大學(xué)測繪學(xué)院學(xué)報(bào),2004,12(4): 305-308.

      Design of Laser Tracking M easurement Visualization Software Based on VTK

      ZHANG Runyu1,2,LIYueqiang1,ZHANG Zili2,YUAN Jiang2,ZHOU Weihu2
      (1.School of Instrumentation Science and Opto-electronics Engineering,Beijing Information Science&Technology University,Beijing 100192,China;2.Academy of Opto-electronics,Chinese Academy of Sciences,Beijing 100094,China)

      3D visualization ofmeasurement data is one of the key approaches in laser trackingmeasurement data processing.Combiningwith the development of laser trackingmeasurement software system,technical characteristics and architecture of VTK are studied in this paper.The classes and interfaces formeasurement data processing and displaying are also designed and implemented.Furthermore,based on the platform of Microsoft Visual Studio 2010,ameasurement data processing and 3D visualization software is developed using C++and VTK,achieving functions of point cloud fitting,3D graphics display and user interaction.The effectiveness and usability of the software are testified by experiments which show that VTK has great application value and potential in the field of industrymeasurement visualization.

      VTK;3D visualization;measuring software;point cloud;interaction

      TB92;TP311.52;TN247

      A

      1674-5795(2015)01-0021-05

      10.11823/j.issn.1674-5795.2015.01.05

      2014-11-18;

      2014-11-26

      國家重大科學(xué)儀器設(shè)備開發(fā)專項(xiàng)(2011YQ120022)

      張潤宇(1989-),男,山東青島人,碩士研究生,主要研究方向?yàn)楣怆姕y量軟件;李月強(qiáng)(1968-),男,副教授,碩士生導(dǎo)師,主要研究方向?yàn)楣怆姕y量技術(shù)及儀器。

      猜你喜歡
      繪制可視化激光
      Art on coffee cups
      基于CiteSpace的足三里穴研究可視化分析
      基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
      云南化工(2021年8期)2021-12-21 06:37:54
      Er:YAG激光聯(lián)合Nd:YAG激光在口腔臨床醫(yī)學(xué)中的應(yīng)用
      激光誕生60周年
      科學(xué)(2020年5期)2020-11-26 08:19:24
      基于CGAL和OpenGL的海底地形三維可視化
      “融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
      請給激光點(diǎn)個(gè)贊
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      激光尺
      肃宁县| 南部县| 翁源县| 睢宁县| 含山县| 株洲县| 广州市| 内江市| 波密县| 英超| 贵定县| 离岛区| 贞丰县| 昆明市| 宁都县| 泾源县| 宁乡县| 泊头市| 贵阳市| 镇平县| 新宁县| 遵化市| 中西区| 邵武市| 门头沟区| 泸定县| 九江市| 灵武市| 英德市| 博爱县| 屯门区| 琼海市| 尖扎县| 长岛县| 会昌县| 东海县| 海城市| 石屏县| 通州市| 六盘水市| 天全县|