利用pydicom
清除某一子目录下所有dicom文件的中涉及患者隐私的数据:
批量修改:
import pydicom as dicom
import glob
import sys, getopt
from pathlib import Path
def clear_dcm(dcm_path):
file_list=glob.glob(dcm_path+r'*.dcm',recursive=True)
ds_list=[(dicom.dcmread(file),file) for file in file_list]
for ds in ds_list:
ds[0].InstitutionName='cccccc'
ds[0].InstitutionAddress=''
ds[0].OperatorName=''
ds[0].ReferrringPhysicianName=''
ds[0].PatientID=''
ds[0].PatientName='anonymous'
ds[0].PatientBirthDate=''
ds[0].save_as(ds[1])
file_dcm = "/Users/***/Test_dcm/"
clear_dcm(file_dcm)
修改单个文件:
filename = "/Users/***/Test_dcm/***_02_0013_0016.dcm"
ds = dicom.dcmread(filename) # 读取dicom文件
ds # 先查看一下
ds.PatientName = '0000'
ds.save_as("1.dcm") # 将修改后文件保存
再次查看是否已经成功
ds
Update:
刚总结好代码没有多久,就在李博士运营的公众号里的一篇推文里介绍有一款专门批量匿名化图像的软件,叫Dicom-Anonymizer 1.1.0. 使用软件来处理,会更便捷、迅速、轻松!
参考资料
利用glob和pydicom清理某一子目录下所有dicom文件的隐私数据
pydicom编辑、删除DICOM文件中病人相关信息
DICOM数据信息解析及Pydicom简单处理
pydicom官方文档