gpt4 book ai didi

python - 如何将 dicom 数据集导出到 Excel?

转载 作者:行者123 更新时间:2023-11-30 23:11:24 25 4
gpt4 key购买 nike

我对编码还很陌生,有几个问题。我正在处理一些文件扩展名为“.dcm”的 MRI 图像。我导入了“dicom”模块,它允许我从文件中提取特定参数(例如患者姓名、年龄、扫描类型等)。然后将这些值写入记事本(值以制表符分隔),然后导出到 Excel。

我想添加到脚本中的第一个功能是能够在子文件夹中搜索具有“.dcm”扩展名的文件,并能够在脚本中打开每个文件并提取我需要的信息。截至目前,我只在当前目录中查找“.dcm”文件。如果我使用下面的代码,我可以从子文件夹中获取所有文件名,但是当我尝试使用内置的“dicom.read_file()”方法打开它们时,它显然会给我一个错误,该文件可能会找不到。有没有办法解决这个问题?

my_List= []
for root, dirs, files in os.walk(path):
for names in files:
if names.endswith(".dcm"):
my_List.append(names)

其次,如何提高代码的效率。我有很多重复的语句,特别是当我将值写入记事本时。有更好/更快的方法吗?我还有什么可以改进的地方?

最后,有没有办法直接将我需要的值导出到记事本然后再导出到excel?

for i in range(len(my_List)):     


ds = dicom.read_file(my_List[i])
if ds.SeriesDescription not in Series:

info = {}
info['PatientName']=ds.PatientName

info['SeriesDescription']=ds.SeriesDescription
Series.append(ds.SeriesDescription)
getRepetitionTime(ds)
getEchoTime(ds)
getInversionTime(ds)
getNumberOfAverages(ds)
getSpacingBetweenSlices(ds)
getPercentSampling(ds)
getPercentPhaseFieldOfView(ds)
getAcquisitionMatrix(ds)
getFlipAngle(ds)
getImagesInAcquisition(ds)
getPixelSpacing(ds)
f.write(info['PatientName'])
f.write("\t")
f.write(info['SeriesDescription'])
f.write("\t")
f.write(info['RepetitionTime'])
f.write("\t")
f.write(info['EchoTime'])
f.write("\t")
f.write(info['InversionTime'])
f.write("\t")
f.write(info['NumberOfAverages'])
f.write("\t")
f.write(info['SpacingBetweenSlices'])
f.write("\t")
f.write(info['PercentSampling'])
f.write("\t")
f.write(info['PercentPhaseFieldOfView'])
f.write("\t")
f.write(info['AcquisitionMatrix'])
f.write("\t")
f.write(info['FlipAngle'])
f.write("\t")
f.write(info['ImagesInAcquisition'])
f.write("\t")
f.write(info['PixelSpacing'])
f.write("\n")

最佳答案

可能需要一些调整,因为我没有任何 dcm 文件可供测试,但您可以理解:

import xlsxwriter
import os
import dicom


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()

data = (
["RepetitionTime", ds.get("RepetitionTime", "None")],
["EchoTime", ds.get("EchoTime", "None")],
.
.
.
)

row = 0
col = 0

for name, value in (data):
worksheet.write(row, col, name)
worksheet.write(row, col + 1, value)
row += 1

workbook.close()

关于python - 如何将 dicom 数据集导出到 Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30183028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com