站长资源脚本专栏
读取nii或nii.gz文件中的信息即输出图像操作
简介读取nii或者nii.gz文件中的信息,并且输出图像。import matplotlibfrom matplotlib import pylab as pltimport nibabel as nibfrom nibabel.viewers import OrthoSlicer3Dfile
读取nii或者nii.gz文件中的信息,并且输出图像。
import matplotlib from matplotlib import pylab as plt import nibabel as nib from nibabel.viewers import OrthoSlicer3D file = '' #你的nii或者nii.gz文件路径 img = nib.load(file) print(img) print(img.header['db_name']) #输出nii的头文件 width, height, queue = img.dataobj.shape OrthoSlicer3D(img.dataobj).show() num = 1 for i in range(0, queue, 10): img_arr = img.dataobj[:,:,i] plt.subplot(5,4,num) plt.imshow(img_arr, cmap='gray') num += 1 plt.show()
补充知识:SimpleITK读取医学图像 .nii 数据(2D显示)
【环境】win10 + python3.6 + SimpleITK
nii文件是NIFTI格式的文件,出现的原因是原来一种图像格式是ANALYZE 7.5 format,但是这个图像格式缺少一些信息,比如没有方向信息,病人的左右方位等,如果需要包括额外的信息,就需要一个额外的文件,比如ANALYZE7.5就需要一对<.hdr, .img>文件来保存图像的完整信息。
因此,解决这个问题Data Format Working Group (DFWG) 将图像格式完整的定义为NIFTI(Neuroimaging Informatics Technology Initiative)格式
import SimpleITK as sitk import skimage.io as io def read_img(path): img = sitk.ReadImage(path) data = sitk.GetArrayFromImage(img) return data #显示一个系列图 def show_img(data): for i in range(data.shape[0]): io.imshow(data[i,:,:], cmap = 'gray') print(i) io.show() #单张显示 def show_img(ori_img): io.imshow(ori_img[100], cmap = 'gray') io.show() #window下的文件夹路径 path = 'D:\\datasets\\Naso_GTV\\1\\data.nii.gz' data = read_img(path) show_img(data)
img = sitk.ReadImage(path) #查看图片深度 print(img.GetDepth()) #144 共144张图 #查看Size print(img.GetSize()) #(512,512,144) 像素:512*512, 144张图片
更多的函数自己去发现
以上这篇读取nii或nii.gz文件中的信息即输出图像操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。