VTK 医学图像处理---VTK安装
简介:
主要包括四个部分:
- 安装前准备(需要下载和安装什么软件以及为什么);
- VTK编译与安装(编译过程中的一些选项到底是否勾选,已经为什么勾选);
- 在项目中配置/使用VTK (配置有多种方式,选择适合自己的方式);
- 运行VTK第一个例子(显示一张医学图像)。
1 安装前准备
在安装前的准备工作(以Windows系统为例)主要有以下三个部分:
第一部分:安装Visual Studio 2022/2019/2017/2015均可,其中2022等数字表示年份,特别注意,Visual Studio可以在微软的官网(链接:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com))下载,不要去乱七八糟的网站下载,下载时选择社区版本(社区版免费)即可,网站上关于如何安装Visual Studio的资料比较多(在 Visual Studio 中安装 C 和 C++ 支持 | Microsoft Learn),这里就不详细介绍了,安装过程中一定要勾选 Desktop development with c++选项,如下图所示:
安装完成后,可以新建立一个控制台程序测试下,过程如下:启动Visual Studio 2022 -> 创建新项目 ->选择C++ 控制台应用 ->点击 “下一步” 输入名称后,点击创建,创建完成,进行编译运行即可。
第二部分:下载Cmake,下载最新版本的Cmake,下载地址Download CMake,在DOWNLOAD页面Binary distributions:中选择适合的版本下载,这里可以选择非安装版本的CMake,解压就可以运行,如下图:
点击下载即可,下载后,可以根据自己需要,放置到文件夹中,解压后在bin文件夹内,可以看到cmake-gui.exe应用程序,后面我们将用到该应用程序。
第三部分:下载VTK源码, 在VTK官网(VTK - The Visualization Toolkit)下载页面(Download)下载合适的版本,目前最新版是9.3.1,我们下载8.2版本为例,如下图:
下载完成后,放到自己想保持的文件夹内,解压,保持的路径尽量不要有中文、空格或数字。
小结:安装Visual Studio 过程中,一定要选择Desktop development with c++选项,这样才会安装C++的编译环境;下载和解压Cmake和VTK时,保存和解压后的文件夹路径不要有中文、空格、数字或下划线等特殊字符,预防后面构建工程时报错;VTK解压后时源代码,我们想要使用Visual Studio 对源代码进行编译,就要构建适合Visual Studio的项目,这个构建的过程时有CMake软件来完成的,构建好VTK的Vsual Studio项目后,就可以使用Visual Studio的C++编译器进行编译了,这就时安装和编译VTK的过程。
2 VTK的编译与安装
目的:使用Cmake 将VTK源代码组织成Visual Studio项目(VTK支持多种平台,通过Cmake来组织不同平台下的项目管理),然后使用Visual Studio打开项目,将VTK的源代码编译为可调用的动态库(头文件、lib 和 dll 文件)。
网上关于使用CMake生成VTK项目的介绍有很多,比较详细的有详细图文讲解CMake编译VTK,包含详细的编译环境版本_vtk编译-CSDN博客,本不想再详细介绍的,但还是有些差异,如上面勾选了QT和VTK的例子,这里我们将使用最小的模块配置方式(不必要的都不勾选,加快编译过程),所以还是详细介绍下:
点击 Finish,然后CMake会输出项目进展,警告和错误会以红色字体输出,这个过程需要一定的时间。完成后入下图所示:
接下来,我们只修改一项,如下图所示,这里的路径可以根据自己的需要来修改,这个路径中,会保存编译好的VTK库,后面我们只需要这个文件夹内的内容。
然后点击 Configure, 内容框中无红色后,点击Generate
关闭CMake,打开 E:/VTKProject/vtkBin 文件夹
双击打开VTK.sln , 点击菜单中的< 生 成> 接着点击 生成解决方案,或直接按下快捷键F7
等待编译完成(此过程需要一定的时间),完成后,右键单击INSTALL,
完成后,在安装目录 E:\VTKProject\vtkInstall 中将会有生成好的头文件,lib文件和DLL文件,头文件在Include文件夹内,lib文件在lib文件夹内,DLL在 bin文件夹内
在此,编译完成,编译过程中,如果出现问题,通过查看输出的信息,就可以解决,也可以根据输出信息,通过网络检索来找解决方法。
3 在自己的项目中配置和使用VTK
目的:将生成的动态度(头文件、lib 和 dll 文件),添加到自己的项目中,然后调用VTK的类来实现自己想要的效果。
接下来在自己的项目中配置VTK环境,创建一个新的C++控制台程序,右键项目名称,在弹窗框中,选择最下面的 属性,打开属性对话框。
在属性对话框中,在配置选项中,选择所有配置,然后再配置属性中,选择C/C++,单击常规,在“附加包含目录中”,添加VTK头文件(刚才INSTALL生成文件所在路径,这里是E:\VTKProject\vtkInstall\include\vtk-8.2中,其中E:\VTKProject\vtkInstall 是在CMake 中设置的CMake_INSTALL_PREFIX 一直),include\vtk-8.2是INSTALL过程中自动创建的,添加后为
在 链接器,选项中添加lib文件的路径和lib文件,
在附加库目录中添加路径:E:\VTKProject\vtkInstall\lib\,注意根据自己的实际路径来设置,路径一定要到lib文件所在目录下,
示例:
由于lib文件比较多,全部手动录入很麻烦,可以自己vtk lib文件根目录下,创建一个文本文件,然后再文本文件中输入:
DIR *.lib /B >LIBLIST.TXT
保存后,关闭,然后将该文件的后缀txt,修改为bat,修改完成后双击运行,在文件夹内会多一个LIBLIST.TXT文件,打开里面就是全部的vtk lib文件名,直接拷贝到上面图中的设置里面即可。
4 第一个例子-显示DICOM图像
目的:显示一张DICOM图像,测试用的DICOM文件可在CSDN下载。
创建一个新的C++控制台程序,安装第3部分的内容,在项目属性中配置好VTK的库,删除VS自动生成的代码,然后复制下面所有的代码到自己的项目中,保存。
#include <vtkNew.h>
#include <vtkDICOMImageReader.h>
#include <vtkImageViewer2.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
void main()
{
// 读取指定文件夹"D:\\234"内的所有DICOM文件.
vtkNew<vtkDICOMImageReader> reader;
reader->SetDirectoryName("D:\\DicomFiles");
reader->Update();
// 创建一个交互对象,用了处理鼠标和键盘事件
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
// 显示DICOM数据
vtkNew<vtkImageViewer2> imageViewer;
imageViewer->SetInputConnection(reader->GetOutputPort());
imageViewer->SetupInteractor(renderWindowInteractor);
// 初始化渲染和相机
imageViewer->Render();
imageViewer->GetRenderer()->ResetCamera();
/* 指定窗口的比较颜色为灰色(.2,.2,.2)*/
imageViewer->GetRenderer()->SetBackground(.2,.2,.2);
/* 设置窗体的大小为宽800,高800*/
imageViewer->GetRenderWindow()->SetSize(800, 800);
/* 设置窗口的标题*/
imageViewer->GetRenderWindow()->SetWindowName("Read DICOM Series");
imageViewer->Render();
renderWindowInteractor->Start();
}
单击 本地Windows调试器,启动项目。
运行结果:
操作: 鼠标左键按下移动---调节窗宽窗位;
鼠标中键按下移动---移动图像;
鼠标右键按下移动----缩放图像;
中间滚轮上下滚动----缩放图像;
按下CTRL键 + 鼠标左键按下移动----旋转图像
按下SHIFT键+ 鼠标左键按下移动----移动图像;
可以自己操作测试下。
总结
目的是将VTK的源代码编译成动态度(不熟悉动态库的可以检索下),也就是把VTK的源代码编译成头文件、lib文件和dll文件,以后我们需要使用VTK的时候,直接使用编译好的头文件、lib文件和dll文件就可以了(当然,你也可以将VTK的源代码全部添加的自己的项目中来使用,按照自己的需要来修改源代码,但非必要不建议这样使用)。
下节,我们将详细介绍
1-配置VTK库的几种方式以及每种方式的优缺点;
2-学习VTK的方法(资料 + 学习路线)。