pydicom和simpleitk读写dicom图像元信息

一、pydicom

1、读取元信息

import pydicom

img_path = '.\001.dcm'
dataset = pydicom.dcmread(img_path)
# <class 'pydicom.dataelem.DataElement'>
print(dataset.data_element('PixelSpacing'), type(dataset.data_element('PixelSpacing')))
print(dataset[0x00280030], type(dataset[0x00280030]))
# <class 'pydicom.multival.MultiValue'>
print(dataset.PixelSpacing, type(dataset.PixelSpacing))
print(dataset.data_element('PixelSpacing').value, type(dataset.data_element('PixelSpacing').value))

dataset是<class 'pydicom.dataset.FileDataset'>对象

dataset.data_element读取到的是DataElement对象,可以调用.value方法获取其值

dataset.data_element('tagname')等价与dataset[0xtagid]

dataset.tagname直接得到元数据值

dataset.tagname等价于dataset.data_element('tagname').value

2、修改元信息

可以直接对dataset.tagname赋值(注意赋值类型)

import pydicom
       
dataset = pydicom.dcmread('.\001.dcm')                #读取dicom文件
#val = dataset.data_element('Columns').value          #根据TAG获得其值,可以读写所有tag
pixeldata = dataset.pixel_array                       #获得图像数据的矩阵形式,只读
databyte = dataset.PixelData                          #获得图像的byte数据,可直接读写

datanew = pixeldata[0:400, 0:400]                     #截取原图像的一部分
dataset.Rows, dataset.Columns = datanew.shape         #图像矩阵大小的另一种快速读写方法

newArray = np.ones([400, 400])+254                    #新建一个对应大小的图像数据矩阵

data16 = np.int16(newArray)                           #必须转为int16

#dataset.pixel_array.data = data16                    #第一种修改图像数据的方法,直接修改像素值

dataset.PixelData = data16.tobytes()                  #第二种修改图像数据的方法,修改byte值,建议用这种方式

dataset.save_as('.\002.dcm')                         #保存为新dcm文件

二、SimpleITK

img_path = '.\001.dcm'
img = sitk.ReadImage(img_path)
print(img.GetMetaData('0010|0010'), type(img.GetMetaData('0010|0010')))  # str
img.SetMetaData('0010|0010', 'hahaha')
# img.EraseMetaData('0010|0010')  # 删除tag,删除后无法再获取了
print(img.GetMetaData('0010|0010'), type(img.GetMetaData('0010|0010')))

sitk.WriteImage(img, '.\003.dcm')

三、dicom常用tag

DICOM的常用Tag分类和说明_inter_peng的博客-CSDN博客_c++如何四舍五入

参考:

Pydicom+SimpleITK操作DICOM图像数据和TAG_咣咣咣、的博客-CSDN博客_pydicom读取tag

猜你喜欢

转载自blog.csdn.net/qq_41021141/article/details/126484650