本文共 1687 字,大约阅读时间需要 5 分钟。
在医疗图像里面MRI图像存储为nii的时候,三维图像。四维则带上了时间标签。
在这里插入图片描述
都是压缩包,在Python打开时后面要加上.gzimport matplotlibmatplotlib.use('TkAgg')from matplotlib import pylab as pltimport nibabel as nibfrom nibabel import nifti1from nibabel.viewers import OrthoSlicer3Dexample_filename = './training/training/patient001/patient001_4d.nii.gz'img = nib.load(example_filename)print(img)print(img.header['db_name']) # 输出头信息#显示图像width, height, queue ,S= img.dataobj.shapeOrthoSlicer3D(img.dataobj).show()
import numpy as npimport os # 遍历文件夹import nibabel as nib # nii格式一般都会用到这个包import imageio # 转换成图像def nii_to_image(niifile): filenames = os.listdir(filepath) # 读取nii文件夹 print(filenames) slice_trans = [] for f in filenames[2:6]: # 开始读取nii文件 img_path = os.path.join(filepath, f) img = nib.load(img_path) # 读取nii img_fdata = img.get_fdata() fname = f.replace('.nii', '') # 去掉nii的后缀名 img_f_path = os.path.join(imgfile, fname) # 创建nii对应的图像的文件夹 if not os.path.exists(img_f_path): os.mkdir(img_f_path) # 新建文件夹 # 开始转换为图像 (x, y, z) = img.shape for i in range(z): # z是图像的序列 silce = img_fdata[:, :, i] # 选择哪个方向的切片都可以 imageio.imwrite(os.path.join(img_f_path, '{}.png'.format(i)), silce) # 保存图像if __name__ == '__main__': 处理多个文件 filepath1 = './training/training/' filenames2 = os.listdir(filepath1) for i in filenames2: filepath= os.path.join('./training/training/', i) #处理单个文件 #filepath = './training/training/patient001' imgfile = './iamge' print(filepath) nii_to_image(filepath)
转载地址:http://onoen.baihongyu.com/