日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VTK资料收集

發(fā)布時(shí)間:2023/12/31 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VTK资料收集 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Qt Creator開發(fā)VTK

原文鏈接:http://blog.csdn.net/numit/article/details/10200507

VTK應(yīng)用系列:非常強(qiáng)大!非常善良

05-VTK在圖像處理中的應(yīng)用(1)

原文鏈接:http://blog.csdn.net/www_doling_net/article/details/8541534

VTK概述

原文鏈接:http://blog.csdn.net/numit/article/details/11619069

?VTK(visualization toolkit),直譯為可視化工具包,主要用于醫(yī)學(xué)圖像重建,帶有部分圖像處理功能。屬于科學(xué)性數(shù)據(jù)分析三維成像的函數(shù)庫。

1.1 ? vtk歷史:

? ? ? ? VTK最早是作為Prentice Hall出版的"TheVisualization Toolkit: An Object-Oriented Approach to 3DGraphics"一書的附件釋出,該書及其軟件是由奇異研發(fā)部Corporate R&D的三位研究人員:WillSchroeder、Ken Martin與Bill Lorensen用其閑暇時(shí)間合作。主要用于三維計(jì)算機(jī)圖形學(xué)、圖像處理和可視化。

1.2 ? vtk簡介:

? ? ? ? Vtk是在面向?qū)ο笤淼幕A(chǔ)上設(shè)計(jì)和實(shí)現(xiàn)的,它的內(nèi)核是用C++構(gòu)建的,包含有大約250,000行代碼,2000多個(gè)類,還包含有幾個(gè)轉(zhuǎn)換界面,因此也可以自由的通過Java,Tcl/Tk和Python各種語言使用vtk。

? ? ? ?雖然vtk被NA-Mic(美國國家醫(yī)學(xué)影像計(jì)算聯(lián)盟)列為關(guān)鍵計(jì)算工具,vtk在醫(yī)學(xué)核試驗(yàn)的研究中也起到重大作用,但是vtk也運(yùn)用于其他領(lǐng)域,地理信息,建筑學(xué),氣象學(xué),航空航天等領(lǐng)域的逼真三維效果圖的實(shí)現(xiàn)也都能用vtk解決。

1.3 ?與其他三維引擎對比:

? ? ? vtk 更加靈活,封裝了c++和OpenGL的代碼,簡化編程。當(dāng)vtk需要精確實(shí)現(xiàn)曲面時(shí)也需要用到OpenGL及c++完善效果。和其他三維引擎繪圖不同的是更加注重對數(shù)據(jù)分析處理后的可視化,而osg,ogre等都是基于場景的繪制。Vtk主要用于科學(xué)計(jì)算可視化領(lǐng)域,osg主要用于虛擬現(xiàn)實(shí)領(lǐng)域。

2 vtk流程

vtk模式是基于pipeline設(shè)計(jì)模式,流線型執(zhí)行數(shù)據(jù)流。

Two segment:可視化管線和圖形化管線

可視化管線:source->[多個(gè)filter]形象的說是數(shù)據(jù)在可視化管線中流動(dòng),然后用圖顯示出數(shù)據(jù)信息。數(shù)據(jù)以原始的形式變換成圖元形式(vtk內(nèi)部定義的數(shù)據(jù)結(jié)構(gòu),形成數(shù)據(jù)集)最后以圖形形式表現(xiàn)。

圖形化管線:actor(prop對象的子類)->render->renderWindow->renderWindowInteractor

? ? ?可視化管線輸出的是可被繪制的幾何體,圖形模型主要是對幾何體進(jìn)行繪制,需要一個(gè)接口將兩個(gè)管線連接起來,就是mapper對象。

4 ?vtk簡單對象

vtk的數(shù)據(jù)處理方式將數(shù)據(jù)分為數(shù)據(jù)對象和處理對象。

其中源對象、過濾器對象(可選)、映射器對象?、繪制器對象、繪制窗口為處理對象,?Props對象為數(shù)據(jù)對象(vtk中數(shù)據(jù)都是由數(shù)據(jù)對象表示的,數(shù)據(jù)對象是數(shù)據(jù)的集合),映射器對象是可視化模型和圖形模型的接口。

1、源對象

?????? 數(shù)據(jù)生成的源頭,數(shù)據(jù)來源主要包括從磁盤讀取數(shù)據(jù)文件,如VTK所支持的各種格式文件生成數(shù)據(jù)源對象,這種源對象被稱為讀源對象,或者利用數(shù)學(xué)方法生成源對象,如利用多個(gè)四邊形構(gòu)建一個(gè)圓柱體,這種對象被稱為程序源對象。

2、過濾器對象

????? 對源對象進(jìn)行處理,生成新的數(shù)據(jù)集輸出。

3、映射器對象

???? 映射器對象主要作用是將可視化模型生成的數(shù)據(jù)轉(zhuǎn)換到圖形模型進(jìn)行繪制,或者以磁盤文件的形式進(jìn)行輸出。

5 ?演示例子

[cpp] view plaincopyprint?
#include<vtkSmartPointer.h> #include<vtkCylinderSource.h> #include<vtkPolyDataMapper.h> #include<vtkActor.h> #include<vtkProperty.h> #include<vtkRenderer.h> #include<vtkRenderWindow.h> #include<vtkRenderWindowInteractor.h> int main(int, char *[]) { vtkSmartPointer<vtkCylinderSource>source = vtkSmartPointer<vtkCylinderSource>::New();//創(chuàng)建一個(gè)source對象 source->SetResolution(16); //設(shè)置source屬性 source->Update(); vtkSmartPointer<vtkPolyDataMapper>mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); //創(chuàng)建映射對象 mapper->SetInputConnection(source->GetOutputPort()); //將source的流出變成mapper的流入 vtkSmartPointer<vtkActor>cylinder = vtkSmartPointer<vtkActor>::New(); //創(chuàng)建一個(gè)演員對象 cylinder->SetMapper(mapper); //設(shè)置演員對象的屬性 cylinder->SetPosition(10,2,4); cylinder->GetProperty()->SetColor(1,1,0); cylinder->RotateWXYZ(30,1,1,1); vtkSmartPointer<vtkRenderer>render = //創(chuàng)建渲染對象 vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindow>renwin = //創(chuàng)建渲染窗口 vtkSmartPointer<vtkRenderWindow>::New(); renwin->AddRenderer(render); //在渲染窗口添加渲染場景。一個(gè)窗口可以添加多個(gè)場景 vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New(); render->AddActor(cylinder); //在渲染對象上添加actor或其他prop(比如相機(jī),光照) iren->SetRenderWindow(renwin); //將渲染窗口設(shè)置交互屬性對象 renwin->Render(); //啟動(dòng)渲染 iren->Start(); //啟動(dòng)交互 returnEXIT_SUCCESS; }

6 ? vtk可視化執(zhí)行管線的解釋

? ? ? ?

? ? ? ?首先數(shù)據(jù)流執(zhí)行的原則是上游對象輸出的數(shù)據(jù)類型和下游對象輸入的數(shù)據(jù)類型要一致,注意輸入輸出數(shù)據(jù)之間的匹配問題,如果不一致,執(zhí)行管線就不能正常運(yùn)行。

? ? ? ?構(gòu)建好可視化管線后,構(gòu)成可視化管線的各個(gè)對象對數(shù)據(jù)的處理過程,成為可視化管線的執(zhí)行,當(dāng)管線中的過程對象或數(shù)據(jù)發(fā)生改變時(shí),可視化管線都要重新執(zhí)行,為了保證管線的執(zhí)行效率,管線在執(zhí)行過程中必須保持處理對象的同步,VTK采用隱式執(zhí)行的方式保持同步。

隱式執(zhí)行包含兩個(gè)互逆的過程:

1.??????Execute():source->filter->mapper

當(dāng)可視化管線中的對象創(chuàng)建時(shí)間發(fā)生改變,表示對象已經(jīng)更新了,這時(shí)執(zhí)行了execute()

2.??????update(): mapper-->filter->source

當(dāng)renderWindowàRender()發(fā)出繪制請求,actor對象將繪制信息給mapper,管線開始執(zhí)行,然后mapper、filter、source對象依次調(diào)用upDate()方法,源對象調(diào)用了update()方法后,開始比較當(dāng)前修改時(shí)間和最后執(zhí)行時(shí)間,如果當(dāng)前被修改的時(shí)間比最后執(zhí)行的時(shí)間新,則執(zhí)行execute(),filter對象和mapper對象比較他們的修改時(shí)間和最后執(zhí)行的時(shí)間,根據(jù)比較結(jié)果看是否需要調(diào)用execute()。

總結(jié)

以上是生活随笔為你收集整理的VTK资料收集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。