ITK 概述
ITK(Insight Segmentation and Registration Toolkit) 是一个开源,跨平台的图像分析框架,里面有大量的前沿算法,广泛用于图像配准和分割。ITK使用C++开发,可由cmake生成不同环境下的可编译工程,并且ITK有对Tcl, Python和Java的封装层,使得开发者可以使用不同的语言进行开发。

ITK的主要特征有:

  1,ITK提供了通用的方式表示图像(任意维度)和面片(非结构化的meshes),提供用于进行分割和配准的算法,主要面向医学应用,尽管也可以处理其他应用;

  2,ITK不提供可视化的用户接口,仅提供最小化的文件接口,留由其他库提供;

  3,ITK大量使用泛型编程技术;

  4,ITK内存模型使用智能指针维护对象的引用计数,使用对象工厂实例化对象;

  5,ITK支持多线程并行处理;

  6,ITK使用命令/观察者模式进行事件处理;

  7,ITK基于数据流的架构进行组织,数据被表示成数据对象(data object),数据对象由处理对象(process object)处理,数据对象和处理对象连在一起形成Pipeline。

  8,ITK的开发基于极限编程(extreme programming)原则,设计、实现和维护是快速迭代的过程,而测试是这个过程的核心,每当有文件check in、每晚都会进行不同平台和编译器的测试。

ITK 系统组织
ITK包含几个子系统

Essential System Concepts: ITK中重要的概念包括泛型编程,用于内存管理的智能指针,用于对象实例化的对象工厂,基于command/observer设计模式的事件管理,多线程支持等

Numerics:ITK使用VXL的VNL数值库,这个数值计算库是对用Fortran实现的Netlib数值库的C++封装。

Data Representation and Access:itk::Image 和itk::Mesh是两个用于表示数据的基本类,此外有不同类型的用于存储和遍历数据的迭代器和容器。

Data Processing Pipeline:数据表示类(数据对象,Data Object)被filters(处理对象,Process Object)处理,几个filter可以组织成一条pipeline。Pipeline可以记录并维护数据对象和filter的状态,只有需要的时候才执行响应的filters。ITK的pipeline支持多线程和流式处理。

IO Framework:与pipeline相关的是sources(初始化pipeline的filter),mappers(终止pipeline的filters)。sources和mapper的典型例子是分别是readers和writers,Readers输入数据,writers从pipeline输出数据。

Spatial Objects:ITK中使用spatial 对象层次表示几何形状。这些spatial objects支持解剖结构的建模,使用通用的基本接口,能够以许多不同的方式表示空间区域。Spatial Objects是分割和配准方法中用于保存分割结构和引入解剖先验知识的非常自然的数据结构。

Registration Framework:ITK灵活的配准框架支持不同类型的配准:图像配准,多分辨率配准,基于PDE(偏微分方程)和FEM(有限元方法)的配准。

FEM Framework:ITK包含一个解一般FEM问题的子系统,特别是非刚体配准。ITK中的FEM包包含mesh定义(nodes和elements),加载和边界条件。

Level Set Framework:水平集框架是一系列用于解决偏微分方程的filters。这些filter采用迭代、有限差分更新机制求解偏微分方程。水平集框架包含了稀疏水平集求解器,用于分割的一般水平集的filter和一些特殊的基于阈值,Canny,Laplacian的filters。

Wrapping:ITK使用一种独特而强大的系统产生对解释性语言如Tcl和Python的接口(wrapper)。首先用GCC_XML产生任意复杂C++代码的XML描述,然后用CSWIG将XML转换成wrappers。

Auxiliary/Utilities: 一些辅助的子系统用于对其他部分的补充。例如,calculators是支持filters的特殊操作的类。其他的辅助库包括一个不完全的DICOM解析库,MetaIO文件支持,png,zlib,FLTK/Qt图像浏览器和对VTK(visualization toolkit)的接口。

ITK Pipeline
  前面提到ITK中数据对象由处理对象(process object)处理,数据对象和处理对象连在一起形成Pipeline。ITK中的pipeline的示意图如Fig 1。处理对象(filter)根据输入数据为输出的数据对象申请内存并拥有此对象,然后该对象的引用传递给下一个filter处理。

Fig 1 ITK中pipeline示意图

ITK中的pipeline一般按如下步骤创建:

  1, 确定filter的处理的数据类型;

  2, 使用filter的静态方法New创建filter的实例;

  3, 使用filter的方法SetInput(upperstreamfilter->GetOutput)将filter连在一起;

  4, 设置filter所需的算法参数;

  5, 触发最后一个filter的Update()方法。

ITK简介与ITK Pipeline相关推荐

  1. VTK、ITK安装及ITK读取图片、VTK显示示例(CMake)

    VTK.ITK安装及ITK读取图片.VTK显示示例 文章目录 前言 一.配置 二.混合编程实例 1.创建工程 2.修改CMakeLists.txt 3.画界面mainwidow.ui 3.编程(~ 1 ...

  2. ITK——5. 利用ITK自身的多线程加速filter计算

    文章目录 1. ITK多线程简介 1.1 平台多线程 1.1.1 基本内容 1.1.2 Intel的TBB 1.2 典型例子(执行原理) 1.3 5.X版本之后的变动 1.4 ITK多线程整体认识 1 ...

  3. ITK系列4_ ITK访问图像像素数据

    实例4 ITK访问图像像素数据 #include "itkImage.h" //这个例子阐述了 SetPixel( )和 GetPixel( )方法的用法 //可以直接访问图像中包 ...

  4. ITK系列5_ ITK定义图像原点和间距

    实例5 定义图像原点和间距 #include "itkImage.h"// Function to simulate getting mouse click from an ima ...

  5. VTK与ITK的详细安装指南

    1. 说明: 本文来自一个付费下载文档,好像是一本图书的第一章的部分内容, 感觉比网上很多指南写的要详细, 特整理出来和大家分享,向原作者表示感谢! 2.获取安装资源 (1)CMake安装资源 CMa ...

  6. linux下配置 ITK

    在 linux 下配置 ITK 在 linux 下配置 ITK 1. 下载 CMake:http://www.cmake.org/cmake/resources/software.html 为方便安装 ...

  7. Linux下VTK、ITK的安装及运行 转载

    Linux下VTK.ITK的安装及运行  转载 (2011-08-01 19:42:10) 转载▼ 标签: it   1.安装VTK (1)在www.cmake.org下载cmake-2.4.6.ta ...

  8. pycharm+itk+vtk安装及测试程序运行

    新建一个空项目,关联上python环境 itk安装 进入Settings... 进入Projet的Project Interpreter,右边有"+"号 添加"itk&q ...

  9. ITK:在矢量图像上执行注册

    ITK:在矢量图像上执行注册 内容提要 输出结果 C++实现代码 内容提要 注册具有多成分像素的图像,例如itk :: VectorImage或itk :: Image <itk :: Vect ...

  10. ITK:转换文件格式

    ITK:转换文件格式 内容提要 输出结果 C++实现代码 内容提要 从一种图像文件格式转换为另一种.ITK将通过扩展名自动检测输入和输出文件的文件类型,并且 itk :: ImageFileReade ...

最新文章

  1. PYTHON编程导论群【提问与解惑】数据统计
  2. Windows Phone 几种页面间传递数据的方式
  3. python基础教程_学习笔记14:标准库:一些最爱——re
  4. Windows Server 2008之三设置TCP/IP
  5. Elasticsearch: too many open files
  6. 个人操作系统V0.3(Personal Operating System,缩写为POS)是一种小型的多任务嵌 入式操作系统,用于ARM 公司Cortex-M0 内核的微控制器。
  7. Python打印指定日期日历
  8. 2018年最新Spring Boot视频教程附代码笔记资料(50G)
  9. Linux系统下Nginx支持ipv6
  10. 利用CSS3实现鼠标悬停在图片上图片缓慢缩放的两种方法
  11. 自建网盘教程之:使用可道云搭建私有云网盘,无需数据库,windows操作界面
  12. 微信小程序之tab切换效果
  13. Python数据探索性分析和预处理
  14. Android实现圆形图片 真菜鸟食用
  15. http请求中简单的签名验证
  16. vba宏是什么,如何操作
  17. 自信转运--《奇迹男孩》
  18. Android发送短信SMS的编程
  19. vue 如何实现点击动态更新图形验证码
  20. 10大PPT模板可直接套用助PM正确写好年终总结

热门文章

  1. 【高斯消元】BZOJ3503 [Cqoi2014]和谐矩阵
  2. FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
  3. 【转】打印机硬件发现不了解决办法
  4. hdu1542 矩形面积并(线段树+离散化+扫描线)
  5. 一道经典面试题的不同解法
  6. 服务器端提交form
  7. H5常用代码:适配方案5
  8. LCA+tarjan
  9. 计算机视觉入门和进阶学习
  10. 为Python安装Redis库