跳转到主要内容

ITK-DREG 分布式配准框架。

项目描述

itk-dreg

一个用于分布式、大规模图像配准的框架。

概述

ITK分布式配准模块(itk-dreg)提供了一个基于Insight Toolkit(ITK)和dask.distributed库的框架,用于在内存外注册大规模图像。

ITK和其他库(Elastix、ANTS)中的传统图像配准技术需要内存处理,这意味着这些技术在配准执行期间将图像全部加载到内存(RAM)中。同时,大型图像数据集可以占用云上单个图像的数TB数据,远超过可用内存。 itk-dreg将此问题作为一个map-reduce问题来处理,其中图像被连续细分为子图像,进行配准,然后组合成描述性输出。可以连续执行多个itk-dreg配准图,以产生多分辨率图像配准的管道。

itk-dreg提供三个主要组件

  • 描述map-reduce配准问题的概念;
  • 一个用户友好的配准方法,从Dask调度和ITKElastix配准的内存外配准中生成itk.DisplacementFieldTransform
  • 一个开发者框架,用于通过新颖的配准和降维方法扩展 itk-dreg

入门指南

要使用 itk-dreg,克隆 Git 仓库并使用 flit 安装。

> python -m pip install flit
> git clone https://www.github.com/InsightSoftwareConsortium/itk-dreg.git
> cd itk-dreg/src
itk-dreg/src > python -m flit install

提供了一些 Jupyter Notebook 示例来帮助您入门。要在本地运行

itk-dreg/src > python -m flit install --extras
itk-dreg/src > cd ../examples
itk-dreg/examples > jupyter notebook

使用说明

itk_dreg 提供了一个框架,用于将移动图像配准到固定图像上。单次运行的输出是一个 itk.Transform 对象,可以用于将移动图像重新采样到固定图像上。可以通过多个运行链式执行,以在多个图像分辨率和多种配准和降维方法上逐步优化配准。

使用 itk_dreg.register.register_images 来组装和运行分布式配准的任务图。

my_initial_transform = ...

# registration method returns an update to the initial transform

my_registration_schedule = itk_dreg.register_images(
    fixed_chunk_size=(x,y,z),
    initial_transform=my_initial_transform,
    fixed_reader_ctor=my_construct_streaming_reader_method,
    moving_reader_ctor=my_construct_streaming_reader_method,
    block_registration_method=my_block_pair_registration_method_subclass,
    reduce_method=my_postprocess_registration_method_subclass,
    overlap_factors=[0.1,0.1,0.1]
)
my_result = my_registration_schedule.registration_result.compute()

final_transform = itk.CompositeTransform()
final_transform.append_transform(my_initial_transform)
final_transform.append_transform(my_result.transforms.transform)

# we can use the result transform to resample the moving image to fixed image space

interpolator = itk.LinearInterpolateImageFunction.New(my_moving_image)

my_warped_image = itk.resample_image_filter(
    my_moving_image,
    transform=final_transform,
    interpolator=interpolator,
    use_reference_image=True,
    reference_image=my_fixed_image
)

组件

核心组件

itk_dreg 提供以下核心组件

  • itk_dreg.register 定义了调度基础设施和 itk_dreg 配准框架的主要入口点。
  • itk_dreg.base 定义了 itk_dreg 配准框架的常见类型和虚拟接口。在 itk_dreg.base.registration_interface 中的虚拟接口为贡献者提供了一个编写他们自己的配准和降维方法的入口点。
  • itk_dreg.block 定义了在体素和空间子域之间映射的常见方法。

必须安装这些组件才能使用 itk_dreg 配准框架。

扩展组件

itk_dreg 包含了一些常见的实现,以帮助开始图像配准。这些组件作为扩展,不一定需要运行 itk_dreg

  • itk_dreg.itk 提供基于 ITK 的方法,以帮助图像流和 dask 块调度。
  • itk_dreg.elastix 将 ITKElastix 配准例程用于 itk_dreg 中的分布式配准。
  • itk_dreg.reduce_dfield 实现了一种变换-降维方法,可以从 itk_dreg 中的块注册结果估计单个 itk.DeformationFieldTransform
  • itk_dreg.mock 为测试和调试提供了常见框架组件的模拟实现。

未来可能会提供替代的配准和变换降维模块,这些模块可以是 itk_dreg 的组成部分,也可以通过社区分发。

贡献

请参阅 贡献文档 以了解如何开始 itk-dreg 的开发。请将功能请求或错误报告直接发送到 itk-dregGitHub 问题板

许可证

itk-dreg 在 Apache-2.0 宽容许可下分发。

问题和查询

itk-dreg 是 Insight Toolkit 医学图像处理工具生态系统的一部分。我们鼓励开发者在 ITK 讨论论坛 上向 ITK 社区提出问题。对定制或商业开发感兴趣的人应联系 Kitware 以获取更多信息。

致谢

itk-dreg 部分由以下支持开发

支持者