1.ITK存储库包含以下子目录
•ITK/Modules-软件的核心;大多数源代码的位置。
•ITK/Documentation-迁移指南和Doxygen基础结构。
•ITK/Examples-本指南使用的一组简单,文档齐全的示例,说明了重要的ITK概念。
•ITK/Testing-MD5文件的集合,用于与ITK数据服务器链接以下载测试数据。ITK/模块中的测试使用此测试数据来使用CDash生成ITK质量仪表板。(请参阅第226页的10.2节。)
•Insight/Utilities-支持源代码开发的脚本。例如,CTest和Doxygen支持。
•Insight/Wrapping-包装代码,用于在C ++库和各种解释语言之间建立接口(当前支持Python)。
2.ITK/Modules中的源代码目录结构是最重要的。
•ITK/Modules/Core-核心类,宏定义,类型别名和其他对ITK至关重要的软件构造。Core中的类是始终作为ITK的一部分进行编译的唯一类。
•ITK/Modules/ThirdParty—用于实现图像文件I/O和数学算法的各种第三方库。(注意:ITK的数学库基于VXL/VNL软件包9。)
•ITK/Modules/Filtering-图像处理过滤器。
•ITK/Modules/IO—支持读取和写入图像,变换和几何的类。
•ITK/Modules/Bridge-用于与其他分析库或可视化库(例如OpenCV10和VTK11)连接的类。
•ITK/Modules/Registration-用于图像或其他数据结构相互注册的类。
•ITK/Modules/Segmentation-用于图像或其他数据结构分段的类。
•ITK/Modules/Video-用于输入,输出和处理具有时间分量的静态和实时数据的类。
•ITK/Modules/Compatibility—收集与ITK第3版向后兼容的类以及不推荐使用的类-即计划从ITK的未来版本中删除。
•ITK/Modules/Remote-一组分布在主要ITK源存储库之外的模块(大多数模块托管在github.com上),在配置ITK时可以通过CMake下载其源代码。
•ITK/Modules/External-用于放置在开发或未公开模块中的目录。
•ITK/Modules/Numerics-数值模块的集合,包括FEM,优化,统计,神经网络等。
3.系统概述
1)数据表示(Data Representation):itk::Image、itk::Mesh、itk::Histogram、itk::SpatialObject
2)数据处理(Data Processing Pipeline):通过滤波(filters),这可以是多线程和streaming capable来节约内存。
3)IO:read(输入数据),writer输出数据
4)空间对象(Spatial Objects):几何形状使用空间对象层次结构表示(the spatial object hierarchy)
5)配准框架(Registration Framework):灵活的配准框架:图像配准(image registration),多分辨率配准(multiresolution registration),基于PDE的配准(PDE-based registration)和基于有限元方法的配准(finite element method,FEM)。
6)FEM框架:ITK包含一个子系统解决FEM问题,尤其是非刚性配准。FEM工具包包括mesh definition(nodes and elements)(网格模式定义(节点或者元素)),加载,boundary conditions(边界条件)
7)层设置框架(Level Set Framework):创建滤波器的种类集合,通过迭代,有限差分更新求解偏微分方程(partial differential equations),包括:稀疏的水平集求解器,通用的水平集分割过滤器,以及几个特定的子类(基于阈值,Canny和Laplacian的方法)。
8)封装(Wrapping):ITK核心是用C++实现,可以自动生成Python binding 并且可以使用Python创建ITK程序。ITK的封装过程可以处理泛型编程。
4.创建滤波器
• ImageToImageFilter;• UnaryFunctorImageFilter;• BinaryFunctorImageFilter;
• ImageFunction;• MeshToMeshFilter;• LightObject
1)Streaming Large Data
2)Overview of Pipeline Execution
1.确定滤波器管道中需要执行的滤波器;
2.初始化滤波器输出数据对象;
3.确定一个过滤器必须处理的数据量;
4.多线程数据细分;
5.若滤波器无需计算,且用户请求释放数据,即可释放输出数据。
5.创建一个模型
• Top level目录:CMakeLists.txt;itk-module.cmake
• Include目录:头文件(Headers)
• Src目录:模块src目录中带有.cxx扩展名的源文件创建了模块生成的库。
• Test 目录:测试目录中为模块的回归测试
• Wrapping封装目录:实例化模板类的类型;类相关性,必须在给定类之前进行包装。
ITK文档链接: