【发布时间】:2018-01-12 20:14:13
【问题描述】:
我正在尝试将 .dcm 文件中的 dicom 标签转换并列出为 excel(使用 python),但某些标签在转换时显示错误(PatientName、PixelSpacing 等)。
一些标签在 excel 文件中显示为“无”,尽管它们包含/显示 Dicom 格式的数据(SliceThickness、SpacingBetweenSlices 等)。我该如何解决这个问题?
此外,我希望输出文件位于不同的文件夹中,而不使用 os.chdir() 命令。我尝试了几种方法,但无法弄清楚。
任何建议将不胜感激。
这是我的代码:
import xlsxwriter
import sys
import dicom
import os.path
root = input("Enter Directory Name: ") path = os.path.join(root, "targetdirectory") i=1
for path, subdirs, files in os.walk(root):
for name in files:
os.rename(os.path.join(path, name), os.path.join(path,'MR000'+ str(i)+'.dcm'))
i=i+1
print (os.path.join(path, name))
dcm_files = [] for root, dirs, files in os.walk(path):
for names in files:
if names.endswith(".dcm"):
dcm_files.append(os.path.join(root, names))
for dcm_file in dcm_files:
ds = dicom.read_file(dcm_file)
workbook = xlsxwriter.Workbook(os.path.basename(dcm_file) + '.xlsx')
worksheet = workbook.add_worksheet()
a = os.getcwd ()
print (a)
data = (
#["PatientName", ds.get("PatientName", "None")],
["PatientID", ds.get("PatientID", "None")],
["PatientBirthDate", ds.get("PatientBirthDate", "None")],
["PatientSex", ds.get("PatientSex", "None")],
["RepetitionTime", ds.get("RepetitionTime", "None")],
["EchoTime", ds.get("EchoTime", "None")],
["Modality", ds.get("Modality", "None")],
["Manufacturer", ds.get("Manufacturer", "None")],
["InstitutionName", ds.get("Institution Name", "None")],
#["ReferringPhysicianName", ds.get("ReferringPhysicianName", "None")],
["StudyDescription", ds.get("StudyDescription", "None")],
["PatientAge", ds.get("PatientAge", "None")],
["SliceThickness", ds.get("SliceThickness(mm)", "None")],
["SpacingBetweenSlices", ds.get("SpacingBetweenSlices", "None")],
["SeriesNumber", ds.get("SeriesNumber", "None")],
#["PixelSpacing", ds.get("PixelSpacing", "None")],
["RequestedProcedureID", ds.get("RequestedProcedureID", "None")],
["Rows", ds.get("Rows", "None")],
["Columns", ds.get("Columns", "None")]
)
row = 0
col = 0
for name, value in (data):
worksheet.write(row, col, name)
worksheet.write(row + 1, col, value)
col += 1
workbook.close()
来自dicom标签的一些数据:
Columns: 256
InstitutionName: UIC MR2
PatientAge: 046Y
PatientBirthDate: 19630503
PatientID: 080524186
PatientName: PEREZ^GUILLERMINA
PatientPosition: HFS
PatientSex: F
PixelSpacing: ['0.9375', '0.9375']
Rows: 256
SliceThickness: 5
SpacingBetweenSlices: 10
StudyID: 586323788
StudyTime: 204546
谢谢。
【问题讨论】:
标签: python excel python-3.x xlsx dicom