重新排列Nifti文件轴

2024-09-22 20:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些三维nifti文件的尺寸(50,100,50)。我想翻转y轴和z轴,使尺寸为(50,50,100)。执行此操作的最佳方式是什么?如何修改与文件关联的仿射

目前,我正在将nifti文件制作成一个numpy数组,并像这样交换轴

array = np.asanyarray(niiobj.dataobj)
img_after_resample_swapped_array = np.swapaxes(img_after_reample_array, 1, 2)

我对下一步感到困惑。我知道我可以使用函数nib.Nifti1Image将numpy数组制作成nifti对象,但是如何修改仿射以考虑轴的变化呢

谢谢你的帮助


Tags: 文件numpyimg尺寸np方式数组array
1条回答
网友
1楼 · 发布于 2024-09-22 20:20:49

如果使用SimpleTk,则有一个可以看到Y轴和Z轴的PermuteAxes函数。它将适当地保留图像的变换

下面是一个如何执行此操作的示例:

import SimpleITK as sitk

img = sitk.ReadImage("tetra.nii.gz")
print (img.GetDirection())

img2 = sitk.PermuteAxes(img, [0,2,1])
print (img2.GetDirection())

sitk.WriteImage(img2, "permuted.nii.gz")

这是3x3方向矩阵输出:

(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)
(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0)

输入图像具有方向的单位矩阵,对于置换矩阵,Y和Z行交换

以下是PermuteAxesImageFilter和PermuteAxes函数的文档:

https://simpleitk.org/doxygen/latest/html/classitk_1_1simple_1_1PermuteAxesImageFilter.htmlhttps://simpleitk.org/doxygen/latest/html/namespaceitk_1_1simple.html#a892cc754413ba3b60c731aac05dddc65

相关问题 更多 >