通过 Nibabel 加载 Nifti 并使用形状函数
Loading a Nifti through Nibabel and using the shape function
我有一个 nifti 文件 1.nii.gz
现在,我从来没有处理过 nifti 文件。
所以,只要用这个软件打开它,我就意识到 nii.gz 是一种容器,其中包含 3 个二维图片数组 。事实上,如果我滚动鼠标,我可以看到图片中标记为 1 的 "direction" 的 448 张二维图片、"direction" 的 448 张二维图片和 "direction" 的 25 张二维图片3.
在此之后,我打开了 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
是一种医学图像格式,用于存储图像和伴随数据,图像通常是灰度图像,并且它们被作为切片,每个切片具有不同的cross-section body.
他们将所有切片存储在同一个数组中,有时他们在不同的时间获取切片,所以有时他们添加第四个维度 到数组。
因此,要显示图像或对其进行操作,您可以将它们切片并查看其中的图像。
In your case the shape of your data (448,448,25) tells that:
There are 25 images (slices) with dimensions 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()
我有一个 nifti 文件 1.nii.gz
现在,我从来没有处理过 nifti 文件。
所以,只要用这个软件打开它,我就意识到 nii.gz 是一种容器,其中包含 3 个二维图片数组 。事实上,如果我滚动鼠标,我可以看到图片中标记为 1 的 "direction" 的 448 张二维图片、"direction" 的 448 张二维图片和 "direction" 的 25 张二维图片3.
在此之后,我打开了 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
是一种医学图像格式,用于存储图像和伴随数据,图像通常是灰度图像,并且它们被作为切片,每个切片具有不同的cross-section body.
他们将所有切片存储在同一个数组中,有时他们在不同的时间获取切片,所以有时他们添加第四个维度 到数组。
因此,要显示图像或对其进行操作,您可以将它们切片并查看其中的图像。
In your case the shape of your data (448,448,25) tells that:
There are 25 images (slices) with dimensions 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()