nii小记

NIFIT格式主要包含三部分:hdr,ext,img

1.hdr/header

同一个版本的多个nii文件按的数据长度是相同的

header里面有:

---维度:x,y,z,单位是毫米。还有第四个维度(时间)。主要存储四个数字

---voxel size(体素大小):单位毫米的x,y,z大小

---数据类型:有int和double

---Form和转换矩阵:每一个Form都对应一个转换矩阵

2.Extension

可以自己随意定义数据的部分

3.Image

存储3D或4D的图像数据

import os
import random
import nibabel as nib
from nibabel.viewers import OrthoSlicer3D
import torch
nii_path = r'F:\llhh\LH\Graduation_Project\dataset\T1\train'
nii_files_path=[]
for root, dirs, files in os.walk(nii_path):
#root是当前正在遍历的目录的路径。
#dirs是当前目录下所有子目录的名称列表。
#files是当前目录下所有非目录文件的名称列表。
    if len(files) != 0:
        for file in files:
            if file.endswith("gz"):
                nii_files_path.append(os.path.join(root, file))
                #获取gz文件的完整路径
print("nii num:",len(nii_files_path))
random.shuffle(nii_files_path)

data_file = nii_files_path[0]
img = nib.load(data_file)
data = img.get_fdata()
data=torch.from_numpy(data)
data=data.type(torch.FloatTensor)
OrthoSlicer3D(data).show()
# 获取图像的形状
shape = data.shape
print(f"File: {data_file}, Shape: {shape}")#(260, 311, 260)
#shape[0]通常表示图像在x方向上的大小,shape[1]表示在y方向上的大小,shape[2]表示在z方向上的大小。
header = img.header
# 获取空间方向和间距
voxel_sizes = header.get_zooms()
print(f"Voxel sizes: {voxel_sizes}")
#Voxel sizes: (0.7, 0.7, 0.7)
#表示 每个体素在x、y、z方向上的大小分别为0.7毫米。



以上是代码调试结果 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值