You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SimpleITK的图像配准:如何利用final_transform实现CT图像相减

SimpleITK配准后CT图像操作指南

问题解答

1. final_transform的具体内容

final_transform是配准过程输出的空间变换对象,在你的代码中,由于初始变换用的是Euler3DTransform,所以它本质是一个sitk.Euler3DTransform实例,包含了将moving_image对齐到fixed_image所需的所有三维空间变换参数——包括旋转角度、平移量,若有缩放的话也会包含缩放因子。

你可以通过以下代码查看具体参数:

# 获取变换的数值参数(旋转角度、平移量)
print(final_transform.GetParameters())
# 获取变换矩阵
print(final_transform.GetMatrix())

2. 利用final_transform实现CT图像相减

要完成像素级相减,必须先将moving_image变换到与fixed_image完全对齐的空间,再执行减法操作,步骤如下:

  1. 使用sitk.Resample函数,基于final_transform将moving_image重采样到fixed_image的空间坐标系中
  2. 对对齐后的两幅图像执行像素级减法

示例代码:

# 重采样moving_image,使其与fixed_image空间对齐
registered_moving = sitk.Resample(
    moving_image, fixed_image, final_transform,
    sitk.sitkLinear, 0.0, moving_image.GetPixelID()
)

# 执行图像相减(可根据需求调换顺序)
subtracted_img = fixed_image - registered_moving

# 保存相减结果
sitk.WriteImage(subtracted_img, "ct_subtraction_result.mhd")

3. 将图像对齐到参考图像

把其中一幅设为参考图像(即你代码中的fixed_image),变换另一幅图像(moving_image)的核心操作就是上述的sitk.Resample,参数说明:

  • 第一个参数:待变换的图像(moving_image)
  • 第二个参数:参考图像(fixed_image),决定输出图像的尺寸、间距、原点等空间属性
  • 第三个参数:配准得到的变换(final_transform)
  • 第四个参数:插值方式,CT图像推荐用sitk.sitkLinear(线性插值),若处理的是分割标签则用sitk.sitkNearestNeighbor(最近邻插值)
  • 第五个参数:图像外区域的填充值
  • 第六个参数:输出图像的像素类型,建议与原图像保持一致

执行完Resample后,得到的registered_moving就和参考图像fixed_image完全对齐,可直接进行后续像素级操作。


内容的提问来源于stack exchange,提问作者user24819415

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:59:53