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-dreg
的 GitHub 问题板。
许可证
itk-dreg
在 Apache-2.0 宽容许可下分发。
问题和查询
itk-dreg
是 Insight Toolkit 医学图像处理工具生态系统的一部分。我们鼓励开发者在 ITK 讨论论坛 上向 ITK 社区提出问题。对定制或商业开发感兴趣的人应联系 Kitware 以获取更多信息。
致谢
itk-dreg
部分由以下支持开发
- NIH NIMH BRAIN 创新计划 在奖项 1RF1MH126732 下。