gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:46:07 26 4
gpt4 key购买 nike

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

enter image description here

现在,我从未处理过 nifti 文件

所以,只要用这个软件打开它,我就意识到 nii.gz 是一种包含 3 组二维图片的容器。事实上,如果我滚动鼠标,我可以看到 448 张用于“方向”的 2d 图片,在图片中标记为 1,448 张用于“方向”2 的 2d 图片和 25 张用于“方向”3 的 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 是一种医学图像格式,用于存储图像和伴随数据,图像通常是灰度的,并且它们被视为切片,每个切片具有不同的横截面 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()

关于python - 通过 Nibabel 加载 Nifti 并使用形状函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61833375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com