1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pydicom和simpleitk读写dicom图像元信息

pydicom和simpleitk读写dicom图像元信息

时间:2019-06-20 12:39:38

相关推荐

pydicom和simpleitk读写dicom图像元信息

一、pydicom

1、读取元信息

import pydicomimg_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 pydicomdataset = pydicom.dcmread('.\001.dcm')#读取dicom文件#val = dataset.data_element('Columns').value#根据TAG获得其值,可以读写所有tagpixeldata = 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'))) # strimg.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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。