如何在 Python 中更改 SimpleITK 图像的方向

How to change the orientation of SimpleITK image in Python

我用 this code 将一系列 dicom 图像读入 python

series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(data_directory)
series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(data_directory, series_IDs[0])
series_reader = sitk.ImageSeriesReader()
series_reader.SetFileNames(series_file_names)
series_reader.LoadPrivateTagsOn()
image3D=series_reader.Execute()
size = image3D.GetSize()

目前,其定位如下:

我需要将方向更改为以下方向:

python中有没有命令可以改变SimpleITK图像的方向?

扩展您的代码以执行此操作我会考虑从您加载的图像构建一个新图像,然后向其添加自定义方向。或者,ITK 在 python 包装中有一个 orientimage 过滤器可用。这不是 simpleitk 但可能会解决你的问题

import SimpleITK as sitk

series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(data_directory)
series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(data_directory, series_IDs[0])
series_reader = sitk.ImageSeriesReader()
series_reader.SetFileNames(series_file_names)
series_reader.LoadPrivateTagsOn()
image3D=series_reader.Execute()
size = image3D.GetSize()

#get image data
image_out = sitk.GetImageFromArray(sitk.GetArrayFromImage(img))

#setup other image characteristics
image_out.SetOrigin(img.GetOrigin())
image_out.SetSpacing(img.GetSpacing())
#set to RAI
image_out.SetDirection(tuple(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0))
sitk.WriteImage(image_out, 'test.mha')

我需要重新定位 NIfTI 图像(扩展名为 .nii 或 .nii.gz 的文件),但上述解决方案对我不起作用。在 SimpleITK 库中进行一些研究后,我找到了对我有用的函数 sitk.DICOMOrient()

根据您的示例进行调整(在 SimpleITK 版本 2.1.1 和 Python 3.7.1 中测试):

# Given a sitk image instance -> img

reoriented = sitk.DICOMOrient(img, 'LPS')

也可以测试方向标签的多个排列, 检查此 doc 以了解标签的含义。