python读取dicom图像(SimpleITK和dicom包实现)_愿十四亿神州尽舜尧-CSDN博客_python读取dicom

愿十四亿神州尽舜尧 2018-10-09 22:35:38

14376

收藏 21

分类专栏: 代码 文章标签: python读dicom图像 医学图像读取 SimpleITK dicom

版权

1. 用SimpleITK读取dicom序列:

import SimpleITK as sitkimport numpy as npimg_path='F:\\dataset\\pancreas\\Output\\thick\\original\\1'mask_path='F:\\dataset\\pancreas\\Output\\thick\\groundtruth\\1'reader = sitk.ImageSeriesReader()img_names = reader.GetGDCMSeriesFileNames(img_path)reader.SetFileNames(img_names)image = reader.Execute()image_array = sitk.GetArrayFromImage(image) # z, y, xreader = sitk.ImageSeriesReader()mask_names = reader.GetGDCMSeriesFileNames(mask_path)reader.SetFileNames(mask_names)mask = reader.Execute()mask_array = sitk.GetArrayFromImage(mask) # z, y, x

2. 用dicom读取单张dicom图像并显示:

import dicomimport pylabds=dicom.read_file("F:\\dataset\\pancreas\\Output\\thick\\groundtruth\\1\\FILE0001_seg.dcm")pixel_bytes = ds.PixelData##CT值组成了一个矩阵  pix = ds.pixel_array##读取显示图片  pylab.imshow(ds.pixel_array, cmap=pylab.cm.bone)pylab.show()

如果要对dicom图像中的像素值进行修改,继续执行以下代码:

##修改图片中的元素,不能直接使用data_array,需要转换成PixelData  for n,val in enumerate(ds.pixel_array.flat): # example: zero anything < 300  if val < 300:ds.pixel_array.flat[n]=0  ds.PixelData = ds.pixel_array.tostring()ds.save_as("newfilename.dcm")

3. 此外,用pydicom也可读取dicom图像

(0)

相关推荐