1、VTK入门及应用案例VTK入门及应用案例前言第一章安装VTK1.1获取安装资源1.2 安装步骤1.3 测试安装结果第二章 VTK快速上手直接学例子2.1 运行几个简单VTK例子2.2 与窗口交互2.3 视图2.3.1 总览2.3.2 简单操作2.3.3 模型变换2.3.4 投影变换2.3.5 视口变换2.4 光照2.5 角色2.6 组装2.7 获取数据源2.8 纹理2.9 标注2.10 挑选2.11 过滤数据第三章 VTK的算法和可视化技术3.1 VTK使用的算法介绍3.1.1 梯度算法3.1.2 矢量算法3.1.3 张量算法3.1.4 建模算法3.2 VTK的编程模式3.2.1 泛型编程3.
2、2.1 模板化3.3 VTK的编程语言3.3.1 使用Tcl/Tk编程3.3.2 使用C+编程3.3.3 使用Java编程3.3.4 使用Python编程3.4 VTK的可视化技术3.4.1 可视化VTK数据序列3.4.2 可视化多边形数据3.4.3 可视化结构型网格3.4.4 可视化直线型网格3.4.5 可视化非结构型网格第四章 VTK在图像处理方面的应用4.1 图像和体数据4.1.1 2D画布源图像4.1.2 3D椭圆源图像4.1.3 高斯图像源4.1.4 网格图像源4.1.5 噪声图像源4.1.6 正弦曲线源4.2 图像处理算法4.2.1 图像恢复4.2.2 图像平滑4.2.3 图像增强
3、4.2.4 图像分割4.2.5 图像配准4.3 VTK在医学图像处理的应用4.3.1 DICOM图像数据及其格式转换4.3.2 ROI的勾画4.3.3 多模态图像配准与融合4.3.4 三维重建技术 1)面绘制 2)体绘制第五章 VTK和ITK联合使用5.1 ITK简介5.2 ITK的安装5.2.1获取安装资源5.2.2安装步骤5.2.3测试安装结果5.3 VTK和ITK的混合使用5.3.1创建一个新目录5.3.2编写一个CmakeLists.txt和myProject.cxx文件5.3.3配置CMake5.3.4编译和运行5.4 基于VTK和ITK的软件介绍5.4.1 3D Slicer 5.
4、4.2 IGSTK 5.4.3 VolView第一章 安装VTK和ITK关于VTK的安装,我看过书上的介绍,也查阅过网上的资料,按照这些说明,确实成功安装了VTK,但在安装过程中,也产生了一些疑问。带着这些疑问,我通过尝试不同的设置,进行了多次的安装,并对安装结果进行测试,得到了一些心得和体会。安装是一个耗时的过程,多次安装更是如此。希望我的经验能让大家少走一些弯路。1.1VTK的安装1.1.1获取安装资源安装VTK的相关文件可从上进行下载,当前最新版本是5.4.2。从该网页上可以看到,供下载的文件分成四类:Windows (Installer)、Source、Data和Documentati
5、on。Windows (Installer)指的是一个二进制安装程序,只支持Tcl语言,可以不用下载。Source指的是VTK的源代码文件,有两种压缩格式,根据PC系统的支持情况,选择一种格式进行下载。Data指的是一些图像数据文件,在VTK程序中需要用到。和Source一样,也有两压缩格式,根据PC系统的支持情况,选择一种格式进行下载。Documentation指的是一些帮助文件,包含了所有类及其方法的说明,以及类继承关系、相关类的关系说明等。这些文件按网页的形式组织,利用网页的超链接功能,可从一个类的网页方便的跳转到相关类的网页中,对学习VTK很有帮助,推荐下载。不过对于安装VTK,这些文
6、件不是必须的。为生成一个安装VTK的工程,还必须先安装CMake程序,可以从进行下载。该网页提供了对应不同PC系统的多个文件。对于Windows用户,可选择Windows (Win32 Installer)(安装文件)或Windows ZIP(压缩文件)进行下载。最后,还必须要安装一个C+编译器。编译器的版本可以是Visual Studio 6.0(VS 6.0),或者是.NET。本书的安装采用的是VS 6.0编译器。1.1.2安装步骤首先解压下载的VTK文件于适当目录下。假设下载的源代码文件名为vtk-5.4.2.zip,数据文件名为vtkdata-5.4.2.zip,将vtk-5.4.2.
7、zip解压在E:vtksrc下,将vtkdata-5.4.2.zip解压在E:vtkdata下,将分别产生E:vtksrcCommon和E:vtksrcCommon等路径。然后安装并运行CMake。图1是一个cmake-gui.exe程序的简单界面,用户可以根据自己的PC系统和需要来配制VTK的组建选项。首先,我们必须告诉cmake-gui VTK源代码树的位置(即vtk-5.4.2.zip的解压路径),以及存放编译后的VTK二进制文件的路径。如果是用“Browse Source”或“Browse Build”按钮来指定这些目录的话,“Browse Source”的按钮必须选择E:vtksrc
8、路径,而“Browse Build”按钮选择用户指定的路径。这两个路径也可以在编辑框手动输入,本书是分别设为E:vtksrc和E:vtkbin。其中E:vtksrc就是vtk-5.4.2.zip的解压路径。之后,单击Configure按钮(首次单击会提示选择编译器,接受默认选项即可),这将会用CMake缓存中一系列变量和值来填充cmake-gui界面。首次运行时,所有的变量显示为红色,如图2。红色表示在先前定制步骤中,缓存项有新增或被改变。如果没有看到期望修改的缓存项,可将下拉列表框中的值Simple View改为Advanced View,这将出项更多缓存项。这时,用户可以自定义VTK组建方
9、式。要设置CMake界面中的值,需点击变量的右边项,依据变量的类型,将会出现文件选择器、编程框或下拉框,用户可以修改其值。VTK有一些重要的缓存值:BUILD_EXAMPLES指明是否编译VTK中的例子。未激活可以减少编译时间,之后也图1. cmake_gui界面图2. 第一次Configure后的结果可以再进行单独编译。BUILD_TESTING指明是否编译VTK中的测试代码。未激活可以减少编译时间,之后也可以再进行单独编译。 BUILD_SHARED_LIBS指明是否创建共享库。如果激活,那么DLL或共享库将图3. 配置VTK安装会被创建,这样之后生成的VTK应用程序将会比较小,可以节省不
10、少空间;如果未激活,那么静态库将被创建。缺省设置是静态库。静态库易于执行,当可执行程序运行时,它们不必包含在路径中。可执行程序在生成时会将其包含进去。这对基于应用的VTK分布比较好。CMAKE_INSTALL_PREFIXVTK的安装路径。安装可以使源码中的头文件及编译生成的库文件和可执行程序分别复制到安装路径的不同子目录下。这将使VTK应用程序的工程设置可以方便一些。如果不安装到这个路径,源码中的头文件及编译生成的库文件和可执行程序仍然会在e:/vtkbin(本书的设置)的目录下,用户仍然可以编译VTK程序。 VTK_DATA_ROOTvtkdata-5.4.2.zip的解压路径。可能CMa
11、ke不会自动找到这个解压路径,需要手动设置,本书设为E:vtkdata。 VTK_USE_GUISUPPORT指明是否支持GUI。激活后Configure,会产生两个新缓存项,激活其中一个缓存项VTK_USE_MFC,这样就可以进行VTK与MFC的混合编程,可以编写类似于VTK自带的例子ExamplesGUIWin32vtkMFC中的程序。为了得到CMake变量的在线帮助,将鼠标停靠在变量名上,提示信息就会自动出现。继续点击Configure按钮直到不再出现红色的值,并且都是用户期望的值,如图3。此时,再点击“Generate”按钮,CMake会按所选的组建类型写出组建文件。对于Microso
12、ft,在所选的二进制目录中将创建一个工程文件,用Visual Studio装载这个工程文件VTK.dsw,在左侧的工作空间窗口的ClassView视图中,可以看到该工作空间里的所有工程,包括生成库文件的工程,如vtkCommon、vtkMFC等,还有编译测试代码的工程,如CommonCxxTests、FilteringCxxTests等。其中最重要的两个工程是ALL_BUILD和INSTALL唯一两个名字字母全是大写的工程。先对ALL_BUILD进行组建,单击BUILD菜单下的Set Active Configuration菜单项,在弹出的对话框中可以看到,对于ALL_BUILD工程有四种组建
13、方式:Debug、Release、MinsizeRel和RelWithDebInfo。如果使用VC编过程序,用户一定对前两种方式不陌生,Debug生成的程序带有调试信息,因而比较大,Release正好相反。对于后两种方式,也可以从名字中看出它的意思,一个是将程序最小化的Release,一个是带调试信息的Release。这里用户要注意的是,如果用带调试信息的方式组建,之后调试自己的程序时,可以“Step into”进入VTK库函数中,这适合于类开发者;而对于VTK用户来说,就不需要用带调试信息的方式编译。一般使用前两者,如果磁盘空间比较紧张,可以考虑后两者。选好后,按快捷键F7进行组建。经过较长
14、的等待,组建好的所有库和可执行文件,都会存放在一个bin子目录下,该bin子目录是在CMake中设置的二进制文件目录下的一个子目录,例如本书的E:vtkbinbin。之后可以再选择INSTALL工程,并对其组建一次以进行安装(该步可不执行)。(注意: 不要使用MSVC+的“Rebuild All”菜单项来重建源代码,这会删除CMakeLists.txt文件,这些文件是先前自动产生的并作为组建过程的一部分。MSVC会重新装载它们,将导致错误提示。如果想重新创建,必须先删除VTK二进制目录,重新运行CMake,然后再重建。)下面给出在几种不同设置下进行安装后,所产生的文件大小(基于版本5.4.2)
15、:设置静态库,用Release方式组建123MB设置静态库,用Debug方式组建206MB设置动态库,用Release方式组建62.3MB设置动态库,用Debug方式组建206MB如果激活了BUILD_SHAREDLIBS,创建VTK后,必须让Windows知道DLL文件的路径,这样做有两种方法:可以将产生的DLL拷贝到windows会自动查找的路径,例如Windows/system32或Winnt/System(不推荐这种方法,因为复制的路径可能会忘记,之后复制新版本的DLL文件时不一定就会将原来的覆盖掉)。另一种方法是修改path环境变量,将库文件存放路径包含进去。如果要拷贝DLL和可执行
16、程序,需要拷贝bin/selected configuration/路径中的所有文件(selected configuration是你之前选择的组建方式,如Debug、Release等)。如果修改环境变量的话,在Windows95/98中,可以使用sysedit在autoexec.bat文件中加一行,下面给出与此前列出的四个不同组建方式相应的四个例子,假设4个例子都组建在VTK的E:vtkbin目录下:1. PATH = E:vtkbinbinDebug2. PATH = E:vtkbinbinRelease3. PATH = E:vtkbinbinMisizeRel4. PATH = E:v
17、tkbinbinRelWithDebInfo如果组建了INSTALL工程,并且假设安装路径CMAKE_INSTALL_PREFIX为E:Program FilesVTK,那么:PATH = E:Program FilesVTK bin在WindowsNT/ME/2000/XP中,右击“我的电脑”,选择“属性”选项,会弹出一个对话框,选择环境变量标签,像上面一样添加或修改环境变量。如果PATH环境变量已经存在,就将VTK路径加在它的前面,以分号分隔。例如假设原始路径为:C:winntsystem;C:someother=dir;%Path%则类似下面修改:E:vtkbinbinDebug;C:w
18、inntsystem;C:someother=dir;%PATH%或:E:Program FilesVTK bin;C:winntsystem;C:someother=dir;%PATH%这样就在PC机上成功地安装了VTK。图4. 配置VTK自带范例Examples/Tutorial/Step1图5. Cone.exe运行结果的两帧画面1.1.3测试安装结果VTK自带的每个C+例子都有一个相应的CMakeLists.txt文件,被CMake用来创建该例子的VC+工作空间,正好可用来测试VTK的安装。这里以ExamplesTutorialStep1Cxx为例子进行测试。运行CMake,设置其源代
19、码位置为CMakeLists.txt所在路径,如E:vtksrcExamplesTutorialStep1Cxx。然后设置产生的工作空间的存放路径,并单击Configure按钮,操作类似VTK的安装,之后将出现一些缓存变量。其中要注意的变量有VTK_DIR,该变量指示VTKConfig.cmake文件所在路径,默认值可能是编译后的VTK二进制文件路径,如E:/vtkbin。如果对编译后的VTK文件进行了安装,则路径为PREFIX/lib/vtk,如E:/Program /lib/vtk-5.4。建议使用后者,如图4。设置完变量后继续点击Configure按钮直到不再出现红色的值,再点击Gene
20、rate按钮,CMake就会在指定路径下产生一个工作区,之后用VC+打开该路径下的Cone.dsw文件,就可以编译运行,检测是否安装成功。运行结果是一个旋转的圆锥,如图5。以后如果要创建自己的应用程序,而又不想使用CMake的话,可以拷贝该工程的一些设置,例如: 单击Project菜单下的Settings,在弹出的窗口中选择“C/C+”选项卡,“Category”选择为“Preprocessor”,记录下“Additional include directories”里的内容。如果VTK_DIR设置的是“E:vtkbin”,则其内容为:E:vtkbin,E:vtkbinCommon,E:vtk
21、binUtilities,E:vtkbinVolumeRendering,E:vtkbinRendering,E:vtkbinGUISupportMFC,E:vtkbinUtilitiesvtkalglib,E:vtksrcInfovis,E:vtksrcGeovis,E:vtksrcViews,E:vtksrcVolumeRendering,E:vtksrcHybrid,E:vtksrcWidgets,E:vtksrcRendering,E:vtksrcRenderingTestingCxx,E:vtksrcIO,E:vtksrcImaging,E:vtksrcGraphics,E:vtks
22、rcGenericFiltering,E:vtksrcFiltering,E:vtksrcCommon,E:vtksrcUtilities,E:vtksrcCommonTestingCxx,E:vtkbinUtilitiesvtklibproj4,E:vtksrcUtilitiesvtklibproj4,E:vtkbinUtilitiesDICOMParser,E:vtksrcUtilitiesDICOMParser,E:vtkbinUtilitiesvtkfreetypeinclude,E:vtksrcUtilitiesvtkfreetypeinclude,E:vtkbinUtilities
23、vtknetcdf,E:vtksrcUtilitiesvtknetcdf,E:vtkbinUtilitiesvtkexodus2include,E:vtksrcUtilitiesvtkexodus2include,E:vtkbinUtilitiesMaterialLibrary,E:vtksrcUtilitiesMaterialLibrary,E:vtkbinUtilitiesverdict,E:vtksrcUtilitiesverdict,E:vtksrcGUISupportMFC,E:vtksrcUtilitiesvtkalglib如果VTK_DIR设置的是“E:Program Files
24、VTKlibvtk-5.4”,则其内容为:E:Program FilesVTKincludevtk-5.4单击“Link”选项卡,“Category”选择为“Input”,记录下“Object/library module”里的内容:vtkRendering.lib vtkGraphics.lib vtkverdict.lib vtkImaging.lib vtkIO.lib vtkFiltering.lib vtkCommon.lib vtkDICOMParser.lib vtkNetCDF.lib vtkmetaio.lib comctl32.lib wsock32.lib vtksqli
25、te.lib vtkpng.lib vtktiff.lib vtkzlib.lib vtkjpeg.lib vtkexpat.lib vtksys.lib ws2_32.lib vfw32.lib vtkftgl.lib vtkfreetype.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib与自己新建的空win32 Console
26、 Application工程相比,就是增加了kernel32.lib之前的库。在对自己的应用程序进行设置时,只需要加入前面的库。再记录下“Additional library path”里的内容。如果VTK_DIR设置的是“E:vtkbin”,则其内容为:E:vtkbinbin$(IntDir),E:vtkbinbin如果VTK_DIR设置的是“E:Program FilesVTKlibvtk-5.4”,则其内容为:E:Program FilesVTKlibvtk-5.4$(IntDir),E:Program FilesVTKlibvtk-5.4总体来说,还是安装后的设置要简单些。对于VTK自
27、带的大部分例子,这些设置还是一样的。编写自己的应用程序时,主要是对这三个地方进行设置。另外要注意,如果自己的程序编译不成功,可先对VTK中类似的例子运行CMake,然后参考其设置。1.2 ITK的安装ITK的安装方式大体上和安装VTK类似,下面简要介绍其安装过程。1.2.1获取安装资源可以免费从网站g/ITK/resources/software.html上下载ITK源码文件(当前最新版本为3.14.0),如InsightToolkit-3.14.0.zip。1.2.2安装步骤首先解压下载的ITK文件InsightToolkit-3.14.0.zip于适当目录下。例如若解压在E:下,将产生E:
28、InsightToolkit-3.14.0Code等路径。然后安装并运行cmake-gui.exe程序。首先,我们必须告诉cmake-gui ITK源代码树的位置,以及存放编译后的ITK二进制文件的路径。这里分别设为E:InsightToolkit-3.14.0和E:itkbin。之后,单击Configure按钮并根据提示选择编译器。同VTK一样,ITK也有一些重要的缓存值:BUILD_EXAMPLES指明是否编译ITK中的例子。未激活可以减少编译时间。BUILD_TESTING指明是否编译ITK中的测试代码。未激活可以减少编译时间。BUILD_SHARED_LIBS指明是否创建共享库。这里可
29、以不激活,因为即使激活也只生成一个DLL文件ITKCommon.dll。CMAKE_INSTALL_PREFIXITK的安装路径。安装可以使源码中的头文件及编译生成的库文件分别复制到安装路径下的不同子目录下。这将使ITK应用程序的工程设置可以方便一些,当然即使不安装,仍然可以编译ITK程序(情况和安装VTK时一样)。图6.配置ITK安装继续点击Configure按钮直到不再出现红色的值,并且都是用户期望的值,如图6。此时,再点击“Generate”按钮,CMake会按所选的组建类型写出组建文件。对于Microsoft,在所选的二进制目录中将创建一个工程文件,用Visual Studio装载这个
30、工程文件ITK.dsw,单击BUILD菜单下的Set Active Configuration菜单项,在弹出的对话框中,对ALL_BUILD工程选择一种合适的编译方式,然后组建它(快捷键F7)。编译建立的所有库和可执行文件,都会存放在一个bin子目录下,该bin子目录是在CMake中设置的二进制文件目录下的一个子目录,例如E:InsightToolkit-3.14.0bin。之后可以再选择INSTALL工程,并对其组建一次以进行安装。至此,ITK的安装过程就结束了。1.2.3测试安装结果 和VTK的测试类似,可以对ITK源代码路径下的Examples/Installation/HelloWor
31、ld.cxx运行CMake来进行测试,如图7。图7. 配ITK范例HelloWorld操作过程与VTK完全一样,就不详述了。最后运行的结果是在命令提示符窗口中输出字符串“ITK Hello World !”。如图8。图8. ITK的HelloWorld程序1.3ITK与VTK混合测试如果对ITK进行了安装,那么在对ITK与VTK混合测试前,需要复制一些文件到ITK的安装目录下。首先找到ITK源码解压路径下的WrappingWrapITKExternalProjectsItkVtkGluesrc目录,该目录下有四个文件:两个.h文件和两个.txx文件。将这四个文件复制到ITK安装目录下的includeInsightToolkit目录中就可以了。1.3.1 创建一个新目录在磁盘适当位置创建一个新目录,该目录用于存放Cmak
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1