【医学图像处理】之图像读取、存储、转换(SimpleITK)_一只稚嫩的小金毛的博客-CSDN博客

SimpleITK中的图像概念与计算机视觉中的图像差异是非常大的,计算机视觉中的图像只是简简单单的多维矩阵,而SimpleITK中的图像是表示一种真实的物理实体,图像中的每一个像素都表示了是真实物理空间中的一个点,不仅仅有像素值,还有着坐标,间距,方向等概念。
Size:图像在各维度的像素个数
Spacing:图像各维度上像素之间的物理距离(单位一般为mm)
Physical extent:图像在物理空间中的大小,其数值等于Size*Spacing。Origin:图像原点的物理坐标(单位一般为mm,与Spacing保持一致)
Direction:采用方向余弦矩阵,这里是指图像本身坐标系相对于世界坐标系(固定不动的)的角度余弦。

1.加载SimpleITK包

import SimpleITK as sitk

2.读取Dicom序列文件

# read dicom series imagedicom_input_dir = "你的目录路径"print("Reading Dicom directory:", dicom_input_dir)reader = sitk.ImageSeriesReader()dicom_names = reader.GetGDCMSeriesFileNames(dicom_input_dir)reader.SetFileNames(dicom_names)image = reader.Execute()123456

3.读取非Dicom格式文件

# read imageimage = sitk.ReadImage("xxxxx.mha")1

4.获取图像参数信息

# show dicom series image messagesize = image.GetSize()print("Image size:", size)spacing = image.GetSpacing()print("Image spacing:", spacing)direction = image.GetDirection()print("Image direction:", direction)origin = image.GetOrigin()print("Image origin:", origin)12345678

5.存储非dicom格式文件

# write dicom imagesitk.WriteImage(image, "xxxxx.mha")1

6.SimpleITK图像数据转成Numpy矩阵数据

# sitk图像顺序是x,y,z三个方向的大小,numpy矩阵的顺序是z,y,x三个方向的大小,要注意索引位置# sitk image to numpy datanp_array = sitk.GetArrayFromImage(image)print("np_array size:", np_array.shape)123

7.Numpy矩阵数据转成SimpleITK图像数据

# numpy data to sitk imagesitk_image = sitk.GetImageFromArray(np_array)sitk_image.SetOrigin(origin)sitk_image.SetSpacing(spacing)sitk_image.SetDirection(direction)
(0)

相关推荐