Python 重新排列Nifti文件轴
我有一些三维nifti文件的尺寸(50,100,50)。我想翻转y轴和z轴,使尺寸为(50,50,100)。执行此操作的最佳方式是什么?如何修改与文件关联的仿射 目前,我正在将nifti文件制作成一个numpy数组,并像这样交换轴Python 重新排列Nifti文件轴,python,numpy,nifti,nibabel,nilearn,Python,Numpy,Nifti,Nibabel,Nilearn,我有一些三维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) 我对下一步感到困惑。我知道我可以使
array = np.asanyarray(niiobj.dataobj)
img_after_resample_swapped_array = np.swapaxes(img_after_reample_array, 1, 2)
我对下一步感到困惑。我知道我可以使用函数nib.Nifti1Image
将numpy数组制作成nifti对象,但是如何修改仿射以考虑轴的变化
感谢您的帮助。如果您使用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函数的文档:
如果使用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函数的文档:
你能分享你的数据集样本吗?@BelalHomaidan很遗憾,你没有这样做的自由。有什么我可以回答的吗?不,谢谢,我只是想看一个样本来测试一下,否则我帮不了什么忙。你能分享一下你的数据集样本吗?@BelalHomaidan不幸的是,我无权这么做。有什么我可以回答的吗?不,谢谢,我只是想看一个样品用它来测试,否则我帮不了什么忙。