文章目录
- 前言
- CMake配置选项说明
- 运行VS2015编译及安装
- VTK转ITK
- ITK转VTK
- 参考文献
最近想利用ITK读取整个Dicom图像到内存,再将读取到的ITK数据转换到VTK。于是乎,开始了一段ITK编译之路。以下将记录一些有用的信息,以备后用。
前言
DICOM图像的读取问题
相比于VTK类库中vtkDICOMImageReader类读取DICOM序列图像,借助ITK类库实现对DICOM序列图像的读取要复杂许多。但是,使用ITK类库读取图像不像使用VTK类库那么功能局限,VTK类库对每种图像格式都有着专门的读写类,像vtkDICOMImage-Reader类只能读取普通的DICOM图像,对于压缩后的DICOM图像则只能通过ITK类库来实现读取。
CMake配置选项说明
首次配置时间较长,可耐心等待。且第一次Configure后,CMake界面出现一片红,正常现象。
几点重要设置:
● 【must】CMAKE_INSTALL_PREFIX——用于指定存放编译后生成的库文件,此处选新建的Bin文件路径,即D:\Library\ITK5.1.2\Bin。(注意:如果不设置,则默认为C盘路径下的位置,VS安装时需要管理员权限)
● 【must】BUILD_SHARED_LIBS——默认是关闭的,意味着ITK是静态编译,只生成lib文件;若选中此项,则动态编译,将会多生成dll文件。
● 【must】VXLUSE_WIN_WCHAR_T——取消复选框“√”。否则报错。(这个我没取消也没有报错)
● 【optional】Module_ITKVtkGlue——如果已经安装了VTK,功能可选。
● 【optional】BUILD_EXAMPLES——默认是关闭的,生成实验用案例,选后,ITK工程变大,编译变慢,存放在Build文件夹中。初学者建议勾选。
● 【optional】BUILD_TESTING——默认是打开的,生成测试的用的EXE,选后,ITK工程变大,编译变慢,存放在Build文件夹中。初学者建议勾选。
● 【optional】BUILD_DOCUMENTATION——默认是关闭的。若选中此选项,则会编译ITK帮助文档。
若在使用ITK过程中需要用到FFTW库时请注意选中选项ITK_USE_FFTWF(支持float型的图像)和ITK_USE_FFTWD(支持double型的图像),并导入对应库所在的位置。
配置完以上选项后,继续点击Configure,直到CMake界面没有红色。可能会需要多次Configure。
运行VS2015编译及安装
在ITK_5.1_build2目录下打开ITK.sln。
- 右击项目”ALL_BUILD”,选择”重新生成”,等待;选择任一项目,右击选择”设为启动项目”,然后就可以进行”调试”或者”开始执行”了
- 选择任一项目,右击选择”设为启动项目”,然后就可以进行”调试”或者”开始执行”了(注意,因为没有生成,所以每一项目先自动进行生成)
如果还想把ITK相关的头文件、动态链接库文件等提取处理,以便于其他项目的开发,可以编译Solution下的“INSTALL”工程,右击该工程,在弹出的快捷菜单中选择Project Only->Build Only INSTALL选项,如下图所示。VTK里的所有头文件以及相关的库文件等,都会被提取到CMAKE_INSTALL_PREFIX选项所指定的目录里。默认路径为C:/Program Files/ITK。
VTK转ITK
#include <vtkImageData.h>
#include "itkVTKImageToImageFilter.h"
typedef itk::VTKImageToImageFilter<itk::Image<short, 3>> VTKImageToImageType;
VTKImageToImageType::Pointer vtkImageToImageFilter = VTKImageToImageType::New();
vtkImageToImageFilter->SetInput(pVTKImageData);
vtkImageToImageFilter->Update();
itk::Image<short, 3>::Pointer pITKImageData = vtkImageToImageFilter->GetOutput();
ITK转VTK
#include "itkImageToVTKImageFilter.h"
typedef itk::ImageToVTKImageFilter< Input3dImageType> itkTovtkFilterType;
itkTovtkFilterType::Pointer itkTovtkImageFilter = itkTovtkFilterType::New();
itkTovtkImageFilter->SetInput(pITKImageData );
itkTovtkImageFilter->Update();
vtkSmartPointer<vtkImageData> pVTKImageData = itkTovtkImageFilter->GetOutput();
参考文献
[1] 在win10下的VTK安装 VS2017+VTK+ITK+camke+QT的逐步安装(保姆级教程,逐步教程)
[2] win 10系统下 CMake编译Visual Studio 2017 C++ 匹配的ITK5.1.2过程实录。
[3] VS2015配置ITK环境