本部分讲述使用cmake加VS2010编译,安装ITK库,基本步骤和VTK安装时相同,而后测试VTK与ITK的联合开发。
资源下载网址:
http://www.itk.org/ITK/resources/software.html
下载:InsightToolkit-4.4.0.zip和InsightApplications-4.4.0.zip。
D:\Program Setup\(可以是任何路径)
--ITK
-- InsightToolkit (解压InsightToolkit-4.4.0.zip到此路径)
-- itk_bin (cmake编译路径)
-- itk (安装路径)
3.1 添加源文件目录D:\Program Setup\ ITK \InsightToolkit,编译文件目录D:\Program Setup\ ITK \ITK_bin,而后点击Configure,开始编译。
3.2 修改编译选项。
勾选BUILD_SHARED_LIBS,设为ON
BUILD_EXAMPLES,BUILD_TEXT参数可选,如果选择会非常耗时,按照我的经验,全部勾选,用VS编译需要至少4个小时。
注:如果想编译使用insightApplication,就必须选择一下两个选项:
ITKV3_COMPATIBILITY设为 ON
ITK_LEGACY_REMOVE设为 OFF
修改完,点击Configure到没有错误,如下:
3.3 使用VS2010编译,安装ITK
打开D:\Program Setup\ ITK \ITK_bin,选择ITK.sln点击,而后选择ALL_BUILD右击选择生成编译所有工程。
编译完成后,在解决方案中选择INSTALL,右击生成,等待安装完成即可。
环境变量配置:
编辑环境变量的Path值,添加D:\Program Setup\ITK\bin保存。
添加一个源文件test.cpp,将下列代码添加到test.cpp。
#include"itkImage.h" #include<iostream> intmain(){ typedefitk::Image< unsignedshort, 3>ImageType; ImageType::Pointerimage= ImageType::New(); inti; std::cout<<"ITK hello world !"<<std::endl; std::cin>>i; return0; }
而后在属性管理器->Microsoft.Cpp.Win32.user中按要求添加
库文件目录D:\Program Setup\ITK\lib,
头文件目录D:\Program Setup\ITK\include\ITK-4.4,
以及在链接器中添加库名称,如果不知道需要的那些库,将所有的库名都添加。
点击运行:
到此表明ITK基本安装成功。
insightApplication中有很多ITK的例子,是学习ITK的一个有效途径。除此为了将ITK与VTK简单的结合起来,我们需要使用insightApplication中的一些函数模版。
insightApplication安装方法与ITK类似,使用cmake与VS2010编译,安装。
Cmake编译选项,USE_VTK设为ON,VTK_DIR设为VTK的D:\Program Setup\VTK2008\bin。CMAKE_INSTALL_PREFIX设置insightApplication的安装路径,可以设置为ITK的安装路径,也可另设路径。其他按要求设置即可。装了这么多遍,相信大家都很熟悉了。
新建工程,源程序如下:
#include"itkImage.h" #include"itkImageFileReader.h" #include"itkImageToVTKImageFilter.h" #include<itkGDCMImageIO.h> #include"vtkImageViewer.h" #include"vtkRenderWindowInteractor.h" #include"vtkSmartPointer.h" #include"vtkImageFlip.h" #include"vtkRenderer.h" #include"vtkImageActor.h" #include"vtkCamera.h" #include"vtkImageMapper.h" usingnamespacestd; intmain() { typedefitk::Image<unsignedchar,2>ImageType; typedefitk::ImageFileReader<ImageType>ReaderType; ReaderType::Pointerreader=ReaderType::New(); //获得DICOM文件读取对象 typedefitk::GDCMImageIOImageIOType; ImageIOType::PointergdcmImageIO=ImageIOType::New(); //Filterofitkimagedatatovtkimagedata; typedefitk::ImageToVTKImageFilter<ImageType>FilterType; FilterType::Pointerconnector=FilterType::New(); //获得DICOM文件名并读取DICOM文件; char*DICOMName="F://MR.dcm"; reader->SetFileName(DICOMName); reader->SetImageIO(gdcmImageIO); //ITK到VTK转化 connector->SetInput(reader->GetOutput()); connector->Update(); vtkSmartPointer<vtkImageFlip>flip=vtkSmartPointer<vtkImageFlip>::New(); //vtkSmartPointer<vtkImageMapper> flip->SetInput(connector->GetOutput()); flip->SetFilteredAxis(1); //需要进行上下翻转才能正确显示; flip->Update(); vtkSmartPointer<vtkImageActor>actor=vtkSmartPointer<vtkImageActor>::New(); actor->SetInput(flip->GetOutput()); actor->InterpolateOff(); vtkSmartPointer<vtkRenderer>renderer=vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); vtkSmartPointer<vtkRenderWindow>renderWindow=vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); vtkRenderWindowInteractor*iren=vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renderWindow); iren->Initialize(); iren->Start(); return0; }
运行程序之前需要将itkImageToVTKImageFilter.h,itkImageToVTKImageFilter.txx从\InsightApplications-4.4.0\Auxiliary\vtk文件夹找出添加到工程文件。
点击运行,如果出现,出现异常:error LNK2019: 无法解析的外部符号 _SnmpUtilVarBindFree@4
添加windowsIDK中的三个库
snmpapi.lib, rpcrt4.lib, wsock32.lib
到属性管理器->Microsoft.Cpp.Win32.user->链接器->输入。
运行结果:
到此VTK与ITK的联合已经完成,下面就是了解VTK与ITK进行图像处理软件的开发了。