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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值