最近在处理一套心脏数据,需要将4dnii图像转换成单张的dicom图像进行试验,看了很多博客,发现SimpleITK是一个处理医学图像的很好用的包,里面支持很多医学图像的读取以及处理,以及对图像头信息的查看及修改。
首先,可以用sitk.ReadImage读取4dnii图像,如下:
itk_img = sitk.ReadImage('E:/cardic_data/training/patient009/patient009_4d.nii.gz')#读取nii图像
img = sitk.GetArrayFromImage(itk_img)#获取图像array
print(img.shape)#查看图像形状
#获取图像头信息
keys = itk_img.GetMetaDataKeys()
print(keys)
for key in keys:
print (key,':', itk_img.GetMetaData(key)
读取nii图像ndarray后,就可以numpy及切片将图像保存为单张dicom了:
simpleitk读取图像是按照(t,slice,height,width)读取的 我们可以用numpy转换成想要的形状,便于切片:
img = sitk.GetArrayFromImage(itk_img)
print(img.shape)
img =np.transpose(img,(1,0,2,3))
print(img.shape)
结果:
(35, 10, 256, 208)
(10, 35, 256, 208)
切片并保存:
import pydicom
import numpy as np
import Si