Elastic开源图像配准工具

news/2024/7/10 19:33:35 标签: 开源, python, 图像处理, 图像配准, 可视化

文章目录

  • 前言:图像配准综述
  • 一、常见的图像配准工具: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】图像配准 是一种图像处理技术,用于将多幅图像或图像的不同部分进行对齐,以便在后续分析中进行比较、融合或提取信息。配准的目标是找到一个变换,将不同图像中的相应特征或区域对准,使它们在同一坐标系中重叠。广泛应用于在医学影像、遥感图像、计算机视觉等领域。
在这里插入图片描述

一、常见的图像配准工具: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介绍了几种免费且开源可视化工具:

在这里插入图片描述

二、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)三个参数文件的运算结果
在这里插入图片描述

2.1.1、cmd命令行调用elastix.exe

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

python">(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

pythonelastixexe_64">2.1.2、python程序调用elastix.exe

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

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:将变换参数应用到新的图像上

运算结果:
在这里插入图片描述

2.2.1、cmd命令行调用transformix.exe

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

python">(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"表示使用第一个参数文件配准结果,将其应用到新的图像上。

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

pythontransformixexe_101">2.2.2、python程序调用transformix.exe

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

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

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

在这里插入图片描述

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

在这里插入图片描述


http://www.niftyadmin.cn/n/5057228.html

相关文章

python使用mitmproxy和mitmdump抓包在手机上抓包(三)

现在手机的使用率远超过电脑,所以这篇记录用mitmproxy抓手机包,实现手机流量监控。 环境:win10 64位,Python 3.10.4,雷电模拟器4.0.78,android版本7.1.2(设置-拉至最底部-关于平板电脑&#xf…

通讯网关软件016——利用CommGate X2Access实现OPC数据转储Access

本文介绍利用CommGate X2ACCESS实现从OPC Server读取数据并转储至ACCESS数据库。CommGate X2ACCESS是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现从OPC Server读取数据并转储至ACCESS…

Linux高级应用——web网站服务

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 前言 一.Apache 1.Apache介绍 2.Apache的特…

嵌入式Linux应用开发-基础知识-第七章 具体单板的 LED驱动程序

嵌入式Linux应用开发-基础知识-第七章 具体单板的 LED驱动程序 第七章 具体单板的 LED 驱动程序7.1 怎么写 LED 驱动程序?7.2 AM335X的 LED驱动程序7.2.1 原理图 XXXXXX_AM335X开发板结构为:7.2.2 所涉及的寄存器操作7.2.3 写程序7.2.4 配置内核去掉原有…

身份证合法校验

中国居民身份证校验码算法 步骤如下: 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3&am…

解决craco启动react项目卡死在Starting the development server的问题

现象: 原因:craco.config.ts配置文件有问题 经过排查发现Dev开发模式下不能有splitChunk的配置, 解决办法: 加一个生产模式的判断,开发模式不加载splitChunk的配置,仅在生产模式才加载 判断条件代码&#…

sql执行报错Truncated incorrect time value的解决方法

一、前言 最近修改生产库,需要更新一批数据。 1.首先,执行了这个sql: select count(*) from class_subject where endtime is not null and starttime is not null and round(TIME_TO_SEC(TIMEDIFF(endtime,starttime))/60/60,1)!round(h…

IPsec_SSL VPN身份鉴别过程简要

一、IPsec VPN身份鉴别(参考国密标准《GMT 0022-2014 IPsec VPN技术规范》) IKE第一阶段(主模式) “消息2”由响应方发出,消息中具体包含一个SA载荷(确认所接受的SA提议)、响应方的签名证书和…