(7)医学图像配准综述:SimpleITK + SimpleElastix + Elastix + ITKElastix + PyElastix

本文主要是介绍(7)医学图像配准综述:SimpleITK + SimpleElastix + Elastix + ITKElastix + PyElastix,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、常见的图像配准工具
    • 1.0、ITK + VTK —— 科学界最大与最早的开源免费项目之一
    • 1.1、ITK系列:ITK + SimpleITK + SimpleElastix
    • 1.2、Elastix系列:Elastix + ITKElastix + PyElastix
  • 二、图像配准
    • 2.1、SimpleITK图像配准
    • 2.2、SimpleElastix图像配准
      • 2.2.1、一行代码(配准)
      • 2.2.2、Rigid + affine + bspline(配准)
    • 2.3、Elastix图像配准
    • 2.4、ITKElastix图像配准
      • 2.4.1、一行代码(配准)
      • 2.4.2、rigid + affine + bspline(配准)
    • 2.5、PyElastix图像配准

前言

工具配准的再开发可视化开发的主要需求:
(1)转换编程语言
(2)简化配准流程

简单的本质:调用默认的配准参数(即:对大多数图像都达到较好效果的参数)

  • (1)配准正常:只适用于图像的复杂度不高,对比度明显、前背景的灰度强度明显等等;
  • (2)配准异常:需要针对每个变换模型的参数文件进行调参(较复杂)—— 每个文件的参数最少有50+,且参数之间以及参数文件之间具有一定联系

总结:初学可以,科研不行。

一、常见的图像配准工具

图像配准(Image Registration) 用于将多幅图像或图像的不同部分进行对齐,以便在后续分析中进行比较、融合或提取信息。配准的目标是找到一个变换,将不同图像中的相应特征或区域对准,使它们在同一坐标系中重叠。广泛应用于在医学影像、遥感图像、计算机视觉等领域。
在这里插入图片描述

1.0、ITK + VTK —— 科学界最大与最早的开源免费项目之一

用途支持语言支持机构应用领域
分析工具:ITK(Insight Segmentation and Registration Toolkit)用于多维图像处理、分割和配准C++、Python由美国国家卫生研究院(NIH)、美国国家计算科学研究所(NCSA)科学研究和医学领域(如:CT、MRI)
可视化工具:VTK(Visualization Toolkit)用于3D图像处理、图像建模、体积渲染、可视化 和2D绘图。主C++、部分Python封装最早由美国洛斯阿拉莫斯国家实验室(LANL)发起,现在由Kitware公司维护。医学、生物学、地球科学和工程学等

❤️ VTK资源

  • 文档 Documentation:适合新老 VTK 用户的综合资源,其中包括教程、示例和最佳实践,可帮助您充分发挥 VTK 高级算法和渲染技术的全部功能。
  • 教科书 Book:PDF可下载
  • Python示例(代码 + 图解):在 Python 中使用 VTK
    (同理示例:C#、C++、Java)

1.1、ITK系列:ITK + SimpleITK + SimpleElastix

工具特点平台语言特点文档Github教程
ITKITK是科学界最大、最早的开源项目之一开源、免费、跨平台C++开发、支持Python接口、Java绑定访问、TCL简易接口用于 N 维科学图像处理、分割和配准。ITK-DocumentationITK源码ITK-快速入门
SimpleITK基于ITK的封装工具开源、免费、跨平台C++、Python、Java、R、Ruby、C#、Lua和TCLITK的简化编程接口SimpleITK-DocumentationSimpleITK源码Jupyter示例
SimpleElastix基于SimpleITK的扩展工具(现已成为SimpleITK的一部分)开源、免费、跨平台C++、Python、Java、R、Ruby、C#、Lua 和 TCL只需几行代码即可完成配准任务SimpleElastix-DocumentationSimpleElastix源码

1.2、Elastix系列:Elastix + ITKElastix + PyElastix

工具特点平台语言特点文档Github
Elastix基于ITK的命令行工具开源、免费CMD命令行用于刚性和非刚性图像配准Elastix-DocumentationElastix源码
ITKElastix基于ITK+Elastix的封装工具开源、免费为Elastix提供ITK Python、JavaScript 和 WebAssembly 接口ITKElastix网页版应用ITKElastix源码
PyElastixPython封装的Elastix工具开源、免费PyElastix源码

二、图像配准

2.1、SimpleITK图像配准

import SimpleITK as sitk# (1)读取固定图像和移动图像
fixed = sitk.ReadImage(r"F:\other\fixedImage.tif", sitk.sitkFloat32)
moving = sitk.ReadImage(r"F:\other\movingImage.tif", sitk.sitkFloat32)# (2)创建图像配准方法对象
R = sitk.ImageRegistrationMethod()# (3)配置参数(默认参数)
####################################################################################
# 3.1、设置一个初始变换
# R.SetInitialTransform(sitk.TranslationTransform(fixed.GetDimension()))  # 平移变换
# R.SetInitialTransform(sitk.AffineTransform(fixed.GetDimension()))  # 仿射变换
# R.SetInitialTransform(sitk.BSplineTransform(fixed.GetDimension(), 3))  # 平移变换。BSpline阶数=3# 3.2、创建一个复合变换(平移、仿射和插值)
composite_transform = sitk.CompositeTransform(fixed.GetDimension())
composite_transform.AddTransform(sitk.TranslationTransform(fixed.GetDimension()))
composite_transform.AddTransform(sitk.AffineTransform(fixed.GetDimension()))
composite_transform.AddTransform(sitk.BSplineTransform(fixed.GetDimension(), 3))
R.SetInitialTransform(composite_transform)
##################################################################################### (4)开始配准
outTx_result = R.Execute(fixed, moving)# (5)保存结果
sitk.WriteTransform(outTx_result, r'F:\other\displaceMeth1.hdf5')
sitk.WriteImage(sitk.Resample(moving, fixed, outTx_result), r'F:\other\displaceMeth1.tif')

2.2、SimpleElastix图像配准

SimpleElastix是基于SimpleITK的扩展工具(现已成为SimpleITK的一部分
官网源码:SimpleElastix Documentation

2.2.1、一行代码(配准)

import SimpleITK as sitkresultImage = sitk.Elastix(sitk.ReadImage("fixedImage.nii"), sitk.ReadImage("movingImage.nii"))

2.2.2、Rigid + affine + bspline(配准)

import SimpleITK as sitk# (1)SimpleITK实例化
elastixImageFilter = sitk.ElastixImageFilter()# (2)加载图像
elastixImageFilter.SetFixedImage(sitk.ReadImage("fixedImage.nii"))
elastixImageFilter.SetMovingImage(sitk.ReadImage("movingImage.nii"))# (3)配置参数(默认参数)
elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap("rigid"))
# elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap("affine"))
# elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap("bspline"))# (4)开始配准
elastixImageFilter.Execute()# (5)保存结果
sitk.WriteImage(elastixImageFilter.GetResultImage())

2.3、Elastix图像配准

(1)Elastix图像配准:原理 + 源码(详解)
(2)Elastix图像配准:参数文件(配准精度的关键)
(3)Elastix图像配准:2D图像
(4)Elastix图像配准:3D图像
(5)Elastix图像配准:点集配准(局部区域的精度微调)
(6)Elastix图像配准:可视化配准工具

2.4、ITKElastix图像配准

2.4.1、一行代码(配准)

import itkregistered_image, params = itk.elastix_registration_method(itk.imread('fixed_image.mha'), itk.imread('moving_image.mha'))

2.4.2、rigid + affine + bspline(配准)

ITKElastix:Elastix源码

################################
# run ITKElastix on MacOs
################################
from itk import itkElastixRegistrationMethodPython
import itk
from itkwidgets import compare, checkerboard# (1)加载图像
fixed_image = itk.imread('data/CT_2D_head_fixed.mha', itk.F)
moving_image = itk.imread('data/CT_2D_head_moving.mha', itk.F)# (2)配置参数(默认参数)
parameter_object = itk.ParameterObject.New()
default_parameter_map = parameter_object.GetDefaultParameterMap('rigid')
# default_parameter_map = parameter_object.GetDefaultParameterMap('affine')
# default_parameter_map = parameter_object.GetDefaultParameterMap('bspline')
parameter_object.AddParameterMap(default_parameter_map)#####################################################################
# (3)开始配准
# 方法一、调用配准函数
result_image, result_transform_parameters = itk.elastix_registration_method(fixed_image, moving_image, parameter_object=parameter_object, log_to_console=False)# 方法二、加载 Elastix 图像过滤器对象
elastix_object = itk.ElastixRegistrationMethod.New()  # 创建 Elastix 配准方法对象
elastix_object.SetFixedImage(fixed_image)  # 设置固定图像
elastix_object.SetMovingImage(moving_image)  # 设置移动图像
elastix_object.SetParameterObject(parameter_object)  # 设置参数对象(包含配准算法的参数)
elastix_object.SetLogToConsole(False)  # 设置是否在控制台输出日志信息(可选)elastix_object.UpdateLargestPossibleRegion()  # 更新过滤器对象
result_image = elastix_object.GetOutput()  # 获取配准后的图像结果
result_transform_parameters = elastix_object.GetTransformParameterObject()  # 获取配准后的变换参数
###################################################################### (4)可视化结果
checkerboard(fixed_image, result_image, pattern=5)  # 以棋盘形式比较固定图像和配准结果
compare(fixed_image, result_image, link_cmap=True)  # 以对比方式显示固定图像和配准结果

2.5、PyElastix图像配准

import pyelastix# 假设 im1 和 im2 是你的输入图像# 获取默认参数
params = pyelastix.get_default_params()# 设置配准的参数
params.MaximumNumberOfIterations = 200
params.FinalGridSpacingInVoxels = 10# 进行图像配准
im1_deformed, field = pyelastix.register(im1, im2, params)# im1_deformed 是配准后的图像
# field 是配准变换的场(transform field),可用于进一步分析或可视化

这篇关于(7)医学图像配准综述:SimpleITK + SimpleElastix + Elastix + ITKElastix + PyElastix的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681095

相关文章

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

kaggle竞赛宝典 | Mamba模型综述!

本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。 原文链接:Mamba模型综述! 型语言模型(LLMs),成为深度学习的基石。尽管取得了令人瞩目的成就,Transformers仍面临固有的局限性,尤其是在推理时,由于注意力计算的平方复杂度,导致推理过程耗时较长。 最近,一种名为Mamba的新型架构应运而生,其灵感源自经典的状态空间模型,成为构建基础模型的有力替代方案

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。