Python 如何获取NIfTi对象中的图像数?(尼巴贝尔)

Python 如何获取NIfTi对象中的图像数?(尼巴贝尔),python,imaging,Python,Imaging,我有一个从dicom文件目录生成的Nifti对象。 看起来Nifti应该知道它能容纳多少帧,但是我能在标题信息中找到的只是形状。问题是,形状有时(num_图像,x,y)有时(x,y,num_图像) 我从Ecat库中找到的唯一相关的nibabel函数。我不熟悉ecat格式,但我希望我的方法适用于任何nii文件。我在尼伯尔图书馆工作 有没有办法检索Nifti文件中的图像数量?我猜您正在查看功能磁共振成像、DTI或ASL数据 假设您的4D nii堆栈称为“data.nii” 只需进入该目录并执行以下操

我有一个从dicom文件目录生成的Nifti对象。 看起来Nifti应该知道它能容纳多少帧,但是我能在标题信息中找到的只是形状。问题是,形状有时(num_图像,x,y)有时(x,y,num_图像)

我从Ecat库中找到的唯一相关的nibabel函数。我不熟悉ecat格式,但我希望我的方法适用于任何nii文件。我在尼伯尔图书馆工作


有没有办法检索Nifti文件中的图像数量?

我猜您正在查看功能磁共振成像、DTI或ASL数据

假设您的4D nii堆栈称为“data.nii”

只需进入该目录并执行以下操作:

mri=nib.load('data.nii')

mri.shape

您看到的第四个元素是卷的数量。您可以这样访问它:
mri.shape[3]
如果您在程序中出于某种目的需要它

这对我来说一直有效。如果您的数据“堆叠”在不一致的方向上,那么您将不得不进行调整


您可以包括基于图像维度的检查。例如,如果您知道您的图像是128x128x128,那么您可以继续获取
mri.shape
中的任何元素,但由于以下几个原因,这种方法不太理想。

My mri.shape返回大小为3的元组:(22512512),没有您所说的第四个元素。有不同类型的nifti文件吗?真奇怪。您是否在某种查看器中打开nii系列并确认了DICOM转换的质量?您如何确认质量?我使用了nibabel库:nibabel.load(nii_路径)