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毫米。
以上是代码调试结果