Elastic开源图像配准工具

文章目录

  • 前言:图像配准综述
  • 一、常见的图像配准工具:ITK,SimpleITK,ANTs,Elastix,SimpleElastix
  • 二、Elastix:基于ITK开发的医学图像配准工具
    • 2.1、elastix.exe:计算图像配准的变换参数
      • 2.1.1、cmd命令行调用elastix.exe
      • 2.1.2、python程序调用elastix.exe
    • 2.2、transformix.exe:将变换参数应用到新的图像上
      • 2.2.1、cmd命令行调用transformix.exe
      • 2.2.2、python程序调用transformix.exe
    • 2.3、图形化理解
      • 图一:将配准参数文件配准到(移动图像)中 —— 待转换图像 = 移动图像
      • 图二:将配准参数文件配准到(新的图像)中 —— 待转换图像 ≠ 移动图像

前言:图像配准综述

【Image Registration】图像配准 是一种图像处理技术,用于将多幅图像或图像的不同部分进行对齐,以便在后续分析中进行比较、融合或提取信息。配准的目标是找到一个变换,将不同图像中的相应特征或区域对准,使它们在同一坐标系中重叠。广泛应用于在医学影像、遥感图像、计算机视觉等领域。
Elastic开源图像配准工具_第1张图片

一、常见的图像配准工具:ITK,SimpleITK,ANTs,Elastix,SimpleElastix

常见的医学图像配准工具:ITK,SimpleITK,ANTs,Elastix,SimpleElastix。

  • ITK (Insight Segmentation and Registration Toolkit):是一个开源的C++图像处理库,广泛用于医学图像分割和配准领域。它提供了大量的图像处理算法和数据结构,包括滤波、分割、配准、重建等功能。ITK具有强大的灵活性和可扩展性,可以用于开发复杂的图像处理流程。但由于其是C++库,使用时需要编写C++代码。
  • SimpleITK:是一个基于ITK的高级封装工具,为Python、Java和Tcl等语言提供了简化的接口。它保留了ITK的强大功能,同时提供了更简单易用的接口,特别适合快速原型开发和简单任务的处理。SimpleITK在Python中特别受欢迎,因为它提供了直观的API和丰富的示例,可以轻松进行图像加载、配准、分割等操作。
  • ANTs (Advanced Normalization Tools):是一个广泛用于医学图像配准和处理的开源工具。它主要用于脑部图像处理,包括配准、分割、重建等任务。提供了基于C++的命令行接口,并可以通过ANTsPy(Python的接口)在Python中使用。ANTs在脑部图像配准方面表现出色,尤其是在非线性配准方面。
  • Elastix:是一个基于ITK库开发用于医学图像配准的开源工具。它支持多种配准算法,包括刚性、相似性、仿射和非线性配准,适用于不同类型的图像配准任务。Elastix使用参数文件来配置配准算法和参数设置,用户可以根据需求自定义参数文件。它提供了命令行接口,也可以与Python等语言集成。
  • SimpleElastix:是一个基于Elastix的高级封装工具,为Python、Java和R等语言提供了更简单的接口。它保留了Elastix的功能和灵活性,并提供了更友好的API。SimpleElastix使得在Python中使用Elastix更加方便,可以通过几行代码实现复杂的图像配准任务。
  • PyElastix:是一个Python封装的Elastix库。与SimpleElastix类似,PyElastix提供了更直接的Python接口,使得使用Elastix更加简单。PyElastix的目标是提供简单易用的配准工具,特别适用于在Python中进行图像配准和处理的应用。PyElastix(github源码):基于python封装的Elastix配准工具。可以通过python来调用Elastix

elastix 是一个命令行程序,不做可视化显示。它接收输入的固定和移动图像,并在注册结束时生成输出(结果)图像。
若需要查看结果可以使用外部查看器,Elastix 手册的page-16介绍了几种免费且开源的可视化工具:

Elastic开源图像配准工具_第2张图片

二、Elastix:基于ITK开发的医学图像配准工具

Elastix 官网:https://elastix.lumc.nl/index.php
Elastix 下载:https://elastix.lumc.nl/download.php
Elastix 手册:https://elastix.lumc.nl/download/elastix-5.1.0-manual.pdf

配准原理:计算移动图像与固定图像之间体素的相似性(一一对应关系),得到空间变换参数(配准参数文件),使得移动图像与固定图像进行对齐,实现两幅图像的空间一致性。
备注:
(1)移动图像(配准图像)的位置和几何形状与固定图像存在不同程度的偏移、旋转或缩放等变换。
(2)保持固定图像(参考图像)不变,将移动图像向固定图像进行对齐(配准)。

Elastix图像配准需要两个可执行文件:

  • Elastix.exe(Elastix软件包中的主要工具):计算图像配准的变换参数
    cmd命令行:elastix.exe -f fixed_image.tif -m moving_image.tif -p parameter_file.txt -out output_folder
  • Transformix.exe(Elastix软件包中的辅助工具):将变换参数应用到新的图像上
    cmd命令行:transformix.exe -in input_image.tif -tp parameter_file.txt -out output_folder
  • 支持系列图像配准算法:刚性变换(rigid)、仿射变换(affine)、非刚性变换(bspline)等等
  • 支持处理多种图像格式:tif、dicom、jpg、png等等

2.1、elastix.exe:计算图像配准的变换参数

Elastix官网:配准参数文件(案例)
github官网:配准参数文件(案例)

(rigid + affine + bspline)三个参数文件的运算结果
Elastic开源图像配准工具_第3张图片

2.1.1、cmd命令行调用elastix.exe

cmd命令行输入:elastix.exe -f fixed_image.tif -m moving_image.tif -p parameter_file.txt -out output_folder

1)elastix.exe				(输入)elastix.exe的文件路径
(1-f fixed_image.tif			(输入)固定图像的文件路径
(2-m moving_image.tif		(输入)移动图像的文件路径
(3-p parameter_file.txt		(输入)配准参数的文件路径
(4-out output_folder			(输出)保存结果的文件夹路径

> 备注:在参数文件中,以"//"开头的一行可以提供注释。给出参数的顺序的顺序并不重要,但参数只能指定一次。
> 备注:计算需要一定的时间,具体取决于图像的大小和选定的配准算法。
  • (1)支持同时输入多对(固定图像+移动图像),并分别进行一次配准
    elastix.exe -f fixed1.tif -m moving1.tif -f fixed2.tif -m moving2.tif -f fixed3.tif -m moving3.tif -out output -p Rigid.txt
  • (2)支持同时输入多个(参数文本),并按顺序进行多次配准
    elastix.exe -f fixed.tif -m moving.tif -out output -p Rigid.txt -p Affine.txt -p Bspline.txt备注:前一个配准的输出文件TransformParameter0.txt,作为下一个的输入)。
  • (3)支持同时输入多对(固定图像+移动图像),同时输入多个(参数文本),并对多对图像分别进行多次配准(按顺序)
    elastix.exe -f fixed1.tif -m moving1.tif -f fixed2.tif -m moving2.tif -f fixed3.tif -m moving3.tif -out output -p Rigid.txt -p Affine.txt -p Bspline.txt

2.1.2、python程序调用elastix.exe

在Python程序中使用subprocess模块来调用命令行命令,以运行elastix.exe。subprocess模块允许您在Python中启动新进程,并与其进行交互。

import subprocess

# 定义命令行命令
elastix_command = "elastix.exe -f fixed_image.tif -m moving_image.tif -p parameter_file.txt -out output_directory"

# 使用subprocess.run()运行elastix.exe命令
try:
    subprocess.run(elastix_command, shell=True, check=True)
    print("Elastix运行成功!")
except subprocess.CalledProcessError as e:
    print("Elastix运行出错:", e)

2.2、transformix.exe:将变换参数应用到新的图像上

运算结果:
Elastic开源图像配准工具_第4张图片

2.2.1、cmd命令行调用transformix.exe

在cmd命令行中输入以下命令:transformix.exe -in input_image.tif -tp parameter_file.txt -out output_folder

1)transformix.exe			(输入)transformix.exe的文件路径
(2-in input_image.tif		(输入)需要转换图像的文件路径。即:将配准参数应用到该图像上
(3-tp parameter_file.txt		(输入)配准参数的文件路径。
(4-out output_folder			(输出)保存结果的文件夹路径。
备注:
	parameter_file.txt是配准所得的output_folder文件夹中的"TransformParameters.0.txt"
	其中:	"0"表示第一个参数文件配准结果;
			"TransformParameters.0.txt"表示使用第一个参数文件配准结果,将其应用到新的图像上。

备注:计算需要一定的时间,具体取决于图像的大小和选定的配准算法。

2.2.2、python程序调用transformix.exe

在Python程序中使用subprocess模块来调用命令行命令,以运行transformix.exe。subprocess模块允许您在Python中启动新进程,并与其进行交互。

import subprocess

# 定义命令行命令
transformix_command = "transformix.exe -in input_image.mhd -out output_folder -tp parameter_file.txt"

# 使用subprocess.run()运行transformix.exe命令
try:
    subprocess.run(transformix_command , shell=True, check=True)
    print("Transformix运行成功!")
except subprocess.CalledProcessError as e:
    print("Transformix运行出错:", e)

2.3、图形化理解

  • Elastix.exe:固定图像 + 移动图像 + 参数文件 = 配准参数文件
  • Transformix.exe:待转换图像 + 配准参数文件 = 配准图像
  • 详细解读:将固定图像+移动图像通过参数文件进行配准,得到将移动图像配准到固定图像的配准参数文件,然后将其应用在待转换图像上(可以是移动图像或新的图像),待转换图像的长宽高+数据类型需与移动图像相同,最终得到与固定图像的长宽高+数据类型相同的配准图像

图一:将配准参数文件配准到(移动图像)中 —— 待转换图像 = 移动图像

图二:将配准参数文件配准到(新的图像)中 —— 待转换图像 ≠ 移动图像

你可能感兴趣的:(深度学习,3D可视化,开源,python,图像处理,图像配准,可视化)