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

如何在Python中翻转MRI图像以匹配目标取向?

实现MRI图像从图1到图2的翻转操作

对比图1和图2的取向,需要对图像进行左右翻转(沿冠状轴/x轴翻转),同时要同步更新图像的空间定位信息,避免后续处理出现偏差。以下分别用nibabel和SimpleITK实现:

使用nibabel库

import nibabel as nib
import numpy as np

# 加载原始MRI图像
img = nib.load("input_image.nii.gz")
data = img.get_fdata()
affine = img.affine.copy()

# 沿x轴(左右方向)翻转图像数据
flipped_data = np.flip(data, axis=0)

# 更新affine矩阵,修正翻转后的空间定位
affine[0] = -affine[0]
affine[0, 3] = np.max(data.shape[0] * affine[0]) + affine[0, 3]

# 创建新的nibabel图像对象并保存
flipped_img = nib.Nifti1Image(flipped_data, affine)
nib.save(flipped_img, "output_flipped.nii.gz")

说明:

  • 若左右翻转对应其他轴(比如axis=1),可根据图像实际轴定义调整
  • 更新affine是关键步骤,确保翻转后的图像空间坐标正确映射

使用SimpleITK库

import SimpleITK as sitk

# 加载原始MRI图像
img = sitk.ReadImage("input_image.nii.gz")

# 创建翻转过滤器,设置要翻转的轴(这里设为0轴对应左右方向)
flip_filter = sitk.FlipImageFilter()
flip_filter.SetFlipAxes([True, False, False])  # 仅翻转x轴,根据实际情况调整轴参数

# 执行翻转
flipped_img = flip_filter.Execute(img)

# 保存翻转后的图像
sitk.WriteImage(flipped_img, "output_flipped.nii.gz")

说明:

  • SetFlipAxes([True, False, False])中的布尔值对应x、y、z轴,True表示翻转对应轴,可根据图像实际取向调整
  • SimpleITK会自动处理空间信息的更新,无需手动修改方向矩阵

注:如果实际测试中轴对应不对,可以尝试调整翻转的轴参数(比如把axis=0换成axis=1,或调整FlipAxes的参数),根据图像的实际空间编码适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:35:27