通过 Nibabel 加载 Nifti 并使用形状函数

2023-12-10

我有一个 nifti 文件1.nii.gz

enter image description here

现在,我从来没有处理过 nifti 文件.

因此,只需使用该软件打开它,我就意识到 nii.gz 是一种容器,其中包含3 个二维图片数组。事实上,如果我滚动鼠标,我可以看到图片中标记为 1 的“方向”的 448 个 2d 图片、“方向”2 的 448 个 2d 图片和“方向”3 的 25 个 2d 图片。

之后,我打开 shell,尝试将 nii.gz 与 Nibabel 库一起使用

import nibabel as nib
img = nib.load(1.nii.gz)

但是,如果我输入

img.shape

我得到 (448,448,25) 结果,所以看起来这个 .nii.gz 是一个 3d 矩阵,而不是一个包含 3 个 2d 图片数组的容器。你能解释一下吗?


Nifti是一种医学图像格式,用于存储图像和伴随数据,图像通常是灰度的,并且它们被视为切片,每个切片具有不同的身体横截面。

他们将所有切片存储在同一个数组中,有时他们在不同的时间取切片,所以有时他们会添加第四个维度到数组。

因此,要显示图像或操作它们,您可以对它们进行切片并查看内部的图像。

在您的情况下,数据的形状 (448,448,25) 表明:

25尺寸为 448 x 448 的图像(切片)

import nibabel as nib
import matplotlib.pyplot as plt

# Change the path to your path
path = 'path to img.nii.gz'
Nifti_img  = nib.load(path)
nii_data = my_img.get_fdata()
nii_aff  = my_img.affine
nii_hdr  = my_img.header
print(nii_aff ,'\n',nii_hdr)
print(nii_data.shape)
if(len(nii_data.shape)==3):
   for slice_Number in range(nii_data.shape[2]):
       plt.imshow(nii_data[:,:,slice_Number ])
       plt.show()
if(len(nii_data.shape)==4):
   for frame in range(nii_data.shape[3]):
       for slice_Number in range(nii_data.shape[2]):
           plt.imshow(nii_data[:,:,slice_Number,frame])
           plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Nibabel 加载 Nifti 并使用形状函数 的相关文章

随机推荐