医学图像处理工具包ITK

ITK介绍

ITK是一个开放源码、面向对象的软件系统,提供一个医学图像处理、图像分割与配准的算法平台。不过我目前使用不多,只了解一些配准的东西,所以就不胡乱介绍了。可以参考:

ITK is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. Developed through extreme programming methodologies, ITK employs leading-edge algorithms for registering and segmenting multidimensional data.

ITK 是一个开放源码的软件系统,这就意味着ITK 用户和开发团体就可以方便地对软件进行开发和改进。用户和开发者可通过程序错误报告、调试、测试、新类以及其他反馈来对ITK进行应用开发。

ITK编译配置

ITK需要自己下载源码进行编译。
使用CMake可以使ITK跨平台工作。CMake是一个跨平台,开放源码的安装(编译)工具。可以使用简单的语言来描述所有平台的安装(编译)过程。CMake的应用是非常广泛的,它支持要求系统设置、编译器特征测试和代码继承的复杂环境。CMake可以输出UNIX和Cygwin系统下的Makefiles和Windows系统下的VisualStudio工作区(支持像Borland之类的其他编译器安装文件)。CMake的信息由CMakeList.txt文件提供。

  • 首先要到ITK网站下载源代码。Library Source就是ITK源文件。Documentation是各种说明。可以下载以供学习参考。

  • 到CMake网站根据自身系统环境下载CMake。下载完成后进行安装。

  • 将ITK源文件解压到任意路径(如D:ProgramITKInsightToolkit-4.7.0),并在ITK文件夹下建立ITK_bin文件夹(ITK_bin文件夹用来存放ITK项目文件)。
  • 打开cmake-gui(cmake图形界面),分别将ITK源文件目录以及ITK_bin文件目录填入Cmake中。勾选Group和Advanced选项。点击Configure,选择编译器,点击Finish。如图: CMake设置2
  • 再次点击Configure,如果没有报错,点击Generate,如图:
    CMake设置3
  • 打开ITK_bin目录下的ITK.sln,选择生成选项卡->批生成。勾选Debug和Release,点击生成,开始编译。这个过程要持续较长一段时间。
  • 编译完成后,可以选择INSTALL项目,右键->用于项目->仅生成INSTALL。会在CMAKE_INSTALL_PREFIX目录下生成bin、include、lib、share文件夹。可在Debug和Release情况下分别生成,两种情况生成略有不过,可分开保存以备使用。
  • 到此ITK算是已经编译完成。

ITK测试例子

使用ITK 创建一个新的工程,最简单的方法就是在你的电脑中建立一个新文件夹,在文件夹中建立两个文件:一个是CMakeLists.txt,CMake使该文件来创建一个Makefile(若你使用UNIX)或一个VisualStudio工作区(若你使用MS-Windows);另一个文件是真正的调用ITK中的类的C++程序文件。

首先编写一个测试例子:
你在新工程中要写的两个文件目录。这两个文件可以在ITK源文件Insight/Examples/
Installation目录中找到。CMakeLists.txt文件包括以下内容:

第一行定义了在VisualStudio中出现的工程名字(这在UNIX系统下毫无影响)。第二行载入一个带有寻找ITK的预定义策略的CMake文件。如果寻找ITK的策略失败,CMake将会要求你提供ITK的安装位置。你可以在变量中填入正确的位置信息。命令行)载入UseITK.cmake文件来设定所有的ITK配置信息。命令行定义了一个此工程产生运行结果文件的名字。中的保留变量是源代码编译和链接的名字。最后一行命令指出哪些ITK类库将链接到这个工程中来。
这一节的源代码可以在Examples/Installation/HelloWorld.cxx中找到。
接下来的代码是一段小的应用编程执行代码,用来测试包括头文件和类库的链接:

这段程序代码是将一个三维图像中的像素用无符号短字符类型数字代替,然后构造这个图像并指向一个itk::SmartPointer。后面将详细介绍智能指针,现在你可以把它看做是对一个对象的实例的操作。到此你已经成功地安装、运行了ITK,并创建了你的第一个简单程序。

ITK使用问题

ITK的使用一种方式就是按照上文介绍的,采用CMakeList的方式来生成项目,之后进行使用。这种使用方法需要自己编写CMakeList。

另外一种ITK的使用方式是网上很多教程采用的。手动创建VS项目,将前文ITK产生的文件夹(bin、include、lib、share)路径加入到项目属性中。具体做法是:

  • 将前文产生的include文件目录加入到项目属性包含目录(Include Directories)中
  • 将lib文件目录加入到项目属性库目录(library Direcotories)
  • 将lib目录下所有文件的文件名加入连接器->输入->附加依赖项(Additional Dependencies)中

但是,但是第二种方式可能会产生问题(见下一部分),所以如使用可考虑参考http://www.itk.org/Wiki/ITK/Using_ITK_Without_CMake方式,如果再有问题,可参考下一部分。

ITK无法生成IO对象问题

在我的使用过程中,如果采用如前文所述的在VS项目中添加目录和附加依赖项时会发生读取图像时出现ImageFileReaderException的问题,无法读取测试用的png文件。
后参考http://codeplanet.sinaapp.com/=222这里和http://blog.csdn.net/taigw/article/details/37877321这里回复下的方法,指定图片类型的方式解决

但此方法较为繁琐,而且需要改动源代码。
http://codeplanet.sinaapp.com/=236这里还有另外一种方法,但经过尝试,会报错。
所以最后的解决方案是采用ITK的第一种使用方式,通过CMakeList创建项目。
在使用CMakeList时还遇到了找不到ITKIO.lib问题,后经查找,在http://public.kitware.com/pipermail/insight-users/2012-January/043535.html发现了解决方案。遇到相同问题可以参考。

PS:我本人没试过http://www.itk.org/Wiki/ITK/Using_ITK_Without_CMake提供的方式,如果有人成功,望告知。

资源分享

我将自己下载的ITK的源码以及InsightSoftwareGuide放在了百度云,方便大家下载。
InsightSoftwareGuide有中文版,但是翻译不太好,可以参考着看。我当初是在哪儿下的记不清了,如果有侵犯到作者权利,那么请告诉我,我会及时说明,在此先说抱歉。

Reference

http://www.itk.org/ITK/resources/software.html——InsightSoftwareGuide
http://blog.csdn.net/taigw/article/details/37877321——ITK在VS2010中的安装和第一个例子
http://codeplanet.sinaapp.com/=222——ITK读写IMAGEFILEREADEREXCEPTION问题
http://public.kitware.com/pipermail/insight-users/2012-January/043535.html——[Insight-users] ITKIO.lib not found

来源:封不觉

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年2月11日
下一篇 2015年2月11日

相关推荐